git: hyperv/vmbus: Complete vmbus initialization; interrupt cputimer is enabled

Sepherosa Ziehau sephe at crater.dragonflybsd.org
Wed Jun 15 19:13:59 PDT 2016


commit e3c41896e9aa173644cc1e67e218562bae1ea69f
Author: Sepherosa Ziehau <sephe at dragonflybsd.org>
Date:   Mon Jun 13 09:58:01 2016 +0800

    hyperv/vmbus: Complete vmbus initialization; interrupt cputimer is enabled
    
    Most of the bits are obtained from FreeBSD.  However, The interrupt bits
    are reworked:
    - Since the vmbus message/event interrupt works in the same fashion as
      MSI-X, we just allocate MSI-X for them, instead of allocating IDT
      vector, rolling vmbus own interrupt vector and turning the interrupt
      handling inside-out.  The standard and generic bus APIs are used to
      allocate and setup per-cpu vmbus interrupt.
    - Interrupt cputimer reuses the current per-cpu interrupt timer code.
    - AutoEOI is not used, since we reuse the per-cpu interrupt timer IDT
      vector and MSI IDT vector.  After a brief discussion w/ Dexuan Cui,
      I concluded that AutoEOI probably does not provide noticible performance
      improvement but will introduce extra code complexity.  We leave it off
      for now.
    
    Obtained-from: FreeBSD (mostly)

Summary of changes:
 .../hyperv_var.h => include/hyperv_busdma.h}       |  26 +-
 sys/dev/virtual/hyperv/vmbus/Makefile              |   7 +-
 sys/dev/virtual/hyperv/vmbus/hyperv.c              |  94 ++
 .../hyperv/vmbus/{hyperv_var.h => hyperv_busdma.c} |  51 +-
 .../vmbus/{hyperv_var.h => hyperv_machdep.h}       |  16 +-
 sys/dev/virtual/hyperv/vmbus/hyperv_var.h          |   4 +-
 sys/dev/virtual/hyperv/vmbus/vmbus.c               | 966 ++++++++++++++++++++-
 sys/dev/virtual/hyperv/vmbus/vmbus_reg.h           | 129 +++
 sys/dev/virtual/hyperv/vmbus/vmbus_var.h           | 103 +++
 .../{hyperv_var.h => x86_64/hyperv_machdep.c}      |  29 +-
 sys/platform/pc64/include/msi_machdep.h            |   3 +
 sys/platform/pc64/x86_64/msi.c                     |   1 -
 sys/sys/systimer.h                                 |   2 +
 13 files changed, 1382 insertions(+), 49 deletions(-)
 copy sys/dev/virtual/hyperv/{vmbus/hyperv_var.h => include/hyperv_busdma.h} (71%)
 copy sys/dev/virtual/hyperv/vmbus/{hyperv_var.h => hyperv_busdma.c} (57%)
 copy sys/dev/virtual/hyperv/vmbus/{hyperv_var.h => hyperv_machdep.h} (82%)
 create mode 100644 sys/dev/virtual/hyperv/vmbus/vmbus_reg.h
 create mode 100644 sys/dev/virtual/hyperv/vmbus/vmbus_var.h
 copy sys/dev/virtual/hyperv/vmbus/{hyperv_var.h => x86_64/hyperv_machdep.c} (71%)

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


-- 
DragonFly BSD source repository



More information about the Commits mailing list