Rusty Russell wrote:
> Originally it was just 24 bytes vs 12 bytes, it's probably less now.
> But as I said, it's *really* popular. I don't have the numbers on me,
> but it's almost worth making it the default and implementing cli / sti
> in terms of save & restore 8)
Do you mean statically or dynamically popular. I did a quick look at
the static usage in a PAE kernel:
(site id -> count)
1391 patch sites:
82 -> 126 - pmd_val
29 -> 117 - restore_fl
91 -> 103 - save_fl+irq_disable
57 -> 97 - apic_write
28 -> 90 - save_fl
35 -> 85 - read_msr
...
so you're right, safe_fl+irq_disable is very common in the static
count. Each safe_fl+irq_disable site is 18 bytes vs 10 each for save_fl
and irq_disable on their own, so not fusing them would cost about 200
bytes of kernel text. If we set the clobber for irq_disable to none,
then there would be no need to explicitly save/restore %eax over it.
The upside for removing it would be:
* simpler having a 1:1 relationship between pv_ops functions and
call site types
* better patched code for less work - separate callsites can be
patched by the generic patcher, but the combined callsite type
will always need special casing
Well, that's it really, simpler. I just had a bug as a result of its
special type, and from the comments in vmi.c it doesn't seem too popular
over there either.
J
_______________________________________________
Virtualization mailing list
[email protected]
https://lists.osdl.org/mailman/listinfo/virtualization