On 11.11.2021 18:57, Andrew Cooper wrote: > Function pointers are expensive, and the raw parameter is a constant from all > callers, meaning that it predicts very well with local branch history.
The code change is fine, but I'm having trouble with "all" here: Both functions aren't even static, so while callers in io_apic.c may benefit (perhaps with the exception of ioapic_{read,write}_entry(), depending on whether the compiler views inlining them as warranted), I'm in no way convinced this extends to the callers in VT-d code. Further ISTR clang being quite a bit less aggressive about inlining, so the effects might not be quite as good there even for the call sites in io_apic.c. Can you clarify this for me please? Jan