line
header image

Interrupt Filtering

by Paolo Pisati

Abstract

With the introduction of fine grained locking in the SMPng project, the FreeBSD kernel went under a major redesign, and many subsystems changed significantly with it. In particular, device driver's interrupt context ("the bottom half") had the necessity to synchronise with process context ("the top half") and share data in a consistent manner without using spl*(). To overcome this problem, a new interrupt model based around interrupt threads was employed, together with a fast interrupt model dedicated to particular driver handlers that don't block on locks (i.e. serial port, clock, etcetc). Unfortunately, even if the interrupt thread model proved to be a reliable solution, its performance was not on par with the pre SMPng era (4.x), and thus others solutions were investigated, with interrupt filtering being one of that.

In this session i will talk about:

Author bio

Paolo Pisati graduated with a Master Degree in Computer Science at the University of Milan in 2003, and now he is a PhD student working in the field of Operating System and doing research on SMP related topics.

He has experience of work inside the FreeBSD kernel, particularly in the FreeBSD network stack: in 2005 he applied (and got chosen) at Summer of Code 2005, and had a chance to work on libalias and ipfw.

As part of his MS thesis, Paolo wrote a firewall encapsulated inside a netgraph node and, just for fun, he wrote a sort of bpf that let him manipulate network packets straight into the kernel.

go back to the schedule