PARAVIRT_SAVE_FLAGS_IRQ_DISABLE composite callsite

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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


[Index of Archives]     [KVM Development]     [Libvirt Development]     [Libvirt Users]     [CentOS Virtualization]     [Netdev]     [Ethernet Bridging]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite Forum]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]

  Powered by Linux