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