The ig4 driver was ported from DragonFly where the following
issues were found in the original driver:
- Some machine BIOSes use the I2C bus and leave it in a state that causes interrupts to not work properly due to a pending interrupt having been latched.
- Refactor the code a bit to clear pending interrupts when I2C is enabled. This fixes the primary problem.
- Also fix a possible race condition in the interrupt handler where the interrupt was being cleared after reading the status instead of before.
I didn't experience those issues myself, but I received one user report
recently that sounded like it could've been caused by this issue.
It would be great to get this fix into 11.0-RELEASE before the code freeze
in two weeks from now.
Links to the original patch (thanks to @pfg for bringing this to my attention):
http://freshbsd.org/commit/dfbsd/2010e26953b9dc96ac7986666ce25b0fbe38f1ca
http://gitweb.dragonflybsd.org/dragonfly.git/commit/2010e26953b9dc96ac7986666ce25b0fbe38f1ca