Greg Troxel
2012-04-17 20:00:05 UTC
I have some systems where the bnx driver seems to lose mbuf clusters
under heavy load.
Looking at the code, I see bnx_tick called by a callout, and it does
splnet but does not seem to take the KERNEL_LOCK. It seems like the
rule for the rest of the driver is to be at splnet and have the kernel
lock, so this seems wrong.
Are callouts automatically invoked with the big lock? It seems like
they aren't (and shouldn't be) since they can be used in mpsafe code.
under heavy load.
Looking at the code, I see bnx_tick called by a callout, and it does
splnet but does not seem to take the KERNEL_LOCK. It seems like the
rule for the rest of the driver is to be at splnet and have the kernel
lock, so this seems wrong.
Are callouts automatically invoked with the big lock? It seems like
they aren't (and shouldn't be) since they can be used in mpsafe code.