yield() in i2c non-happy paths hits BUG under -rt patch

Leon Woestenberg
2009-11-07T19:01:59Z

Hello Jean, Ben, -i2c and -rt devs,

during testing the Linux PREEMP_RT work (step-by-step being merged
with mainline) together with I2C functionality I hit the fact that the
I2C
subsystem uses yield() in some of the non-happy code paths (mostly
during chip / address probing etc).

My (embedded) system was running a low-priority real-time work on the
generic workqueue which tried to blink a LED using an I2C I/O
multiplexer
when I hit the BUG where this real-time task ran into the yield() of
try_address().

Grepping through the I2C subsystem code there where more yield()
sprinkled in, without it being clear to me why they are there.

Can those yield()s please be removed, and if they are needed for some
reason (??) be replaced with something equivalent?

I am no longer with this particular project, I do not have the
defconfig and kernel logs at my disposal.

Regards,
--
Leon