git: kernel - Spread IPIs out to more priority levels

Matthew Dillon dillon at crater.dragonflybsd.org
Sun Mar 26 23:43:17 PDT 2017


commit f240042b9f9bcfdacd70499659fcc5f55d5e49ab
Author: Matthew Dillon <dillon at apollo.backplane.com>
Date:   Sun Mar 26 23:35:55 2017 -0700

    kernel - Spread IPIs out to more priority levels
    
    * Due to the brandamaged way the LAPIC queues received IPIs, each
      priority level (the top 4 bits of the 8 bit vector) has a 2-entry
      FIFO.  Bring in comments from FreeBSD on how this works.
    
    * Change our IPI vectors which previously used 2 priority levels to now
      use 3 priority levels.  Each source is generally limited by an atomic
      op to avoid multi-queueing and hopefully that means the above LAPIC hw
      queue will never refuse to accept an IPI.
    
      IPIQ and TIMER use group 1
    
      INVLTLB (and INVLPG) uses group 2
    
      SNIFF, CPUSTOP, and SPURIOUSINT use group 3
    
    * Reduces the number of vectors available per cpu by 16, but shouldn't
      present that big a problem.

Summary of changes:
 sys/platform/pc64/apic/ioapic_abi.c      |  6 +++-
 sys/platform/pc64/include/intr_machdep.h | 58 ++++++++++++++------------------
 sys/platform/pc64/x86_64/msi.c           |  8 +++--
 3 files changed, 37 insertions(+), 35 deletions(-)

http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/f240042b9f9bcfdacd70499659fcc5f55d5e49ab


-- 
DragonFly BSD source repository



More information about the Commits mailing list