I've done some experimenting with your patch and some more thinking. (BTW, setting the permissions of kipmid_max_busy to 0644 as Greg suggested makes changing the value for testing a lot easier :).
Results are not so good with the system I was working with.
I have a tool that measures latency of individual messages, averaging over a number of messages. It's part of the openipmi library, if you want to grab it.
I'm also pretty sure I know what is going on in general. You are using ipmitool to fetch sensors with a short poll time and your management controller does not implement a useful feature.
The reason that some systems doing this use a lot of CPU and other systems do not has do with the management controller design. Some management controllers implement a UUID and a timestamp on the SDR data. ipmitool will locally cache the data and if the UUID and timestamp are the same it will not fetch the SDRs. Just fetching the sensor values will be very efficient, much like the Get MC ID command. If this is not implemented in the management controller, ipmitool will fetch all the SDRs every time you run it, which is terribly inefficient. I'm guessing that's your situation.
I'm ok with the patch with the feature disabled by default. I'd prefer for it to be disabled by default because I prefer to reward vendors that make our lives better and punish vendors that make our lives worse :).on the user side.
You should run it through checkpatch; there were one or two coding style violations.
I also have a few suggestions for solving this problem outside of this patch:
1. Get your vendor to implement UUIDs and timestamps. This will make
things run more than an order of magnitude faster and more
efficient. Even better than interrupts.
2. If that's not possible, don't use ipmitool. Instead, write a
program with the openipmi library that stays up all the time (so
the SDR fetch is only done once at startup) and dumps the sensors
periodically.
3. If that's not feasible, poll less often and use events to catch
critical changes. Of course, this being IPMI, some vendors don't
properly implement events on their sensors, so that may not work.