I've been working on a driver too because the busy waits in the drivers that
are out there can hold a CPU for too long. I've measured as much as 120ms.
First I tried sleeping in the driver until the very next jiffy. I found that
my driver became unreliable under high CPU load because the scheduling delays
were too long. I even managed wedge the BMC on one of my test systems in a
way I can't seem to fix. :)
What I finally settled on was using the timer interrupt. This seems to work
well both in terms of being nice to the rest of the system (I register a
shared irq handler only while I need it) and being reliable even under high
load. So, just consider it a suggestion. I'd like to see your driver
included too. It's certainly more complete than mine. You must have access
to more documentation than I do.
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to firstname.lastname@example.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/