Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 16 Feb 2016 06:57:30 +0000
From:      "sepherosa_gmail.com (Sepherosa Ziehau)" <phabric-noreply@FreeBSD.org>
To:        freebsd-virtualization@freebsd.org
Subject:   [Differential] [Request, 10 lines] D5291: hyperv/vmbus: Select an IDT vector has lower priority than LAPIC timer and IPIs vectors
Message-ID:  <differential-rev-PHID-DREV-q2orxi263ufg2lnfudid-req@FreeBSD.org>

next in thread | raw e-mail | index | archive | help

--b1_14f3b7eff087f610780eba0cb39fefd3
Content-Type: text/plain; charset = "utf-8"
Content-Transfer-Encoding: 8bit

sepherosa_gmail.com created this revision.
sepherosa_gmail.com added reviewers: adrian, delphij, royger, decui_microsoft.com, honzhan_microsoft.com, howard0su_gmail.com.
sepherosa_gmail.com added a subscriber: freebsd-virtualization-list.

REVISION SUMMARY
  Better and simple solution is to do the same things as XEN'a EVTCHN, but that will require us to have a hyperv specific file always reside in kernel.
  
  Inspired by a discussion w/ Dexuan

REVISION DETAIL
  https://reviews.freebsd.org/D5291

AFFECTED FILES
  sys/dev/hyperv/vmbus/hv_vmbus_drv_freebsd.c

CHANGE DETAILS
  diff --git a/sys/dev/hyperv/vmbus/hv_vmbus_drv_freebsd.c b/sys/dev/hyperv/vmbus/hv_vmbus_drv_freebsd.c
  --- a/sys/dev/hyperv/vmbus/hv_vmbus_drv_freebsd.c
  +++ b/sys/dev/hyperv/vmbus/hv_vmbus_drv_freebsd.c
  @@ -382,8 +382,12 @@
   #ifdef HYPERV
   extern inthand_t IDTVEC(rsvd), IDTVEC(hv_vmbus_callback);
   
  +#define VMBUS_IDT_START	IDT_DTRACE_RET 
  +#define VMBUS_IDT_END	APIC_TIMER_INT
  +
   /**
    * @brief Find a free IDT slot and setup the interrupt handler.
  + * range: (VMBUS_IDT_START, VMBUS_IDT_END)
    */
   static int
   vmbus_vector_alloc(void)
  @@ -397,8 +401,8 @@
   	 * as vmbus channel callback vector. We install 'hv_vmbus_callback'
   	 * handler at that vector and use it to interrupt vcpus.
   	 */
  -	vector = APIC_SPURIOUS_INT;
  -	while (--vector >= APIC_IPI_INTS) {
  +	vector = VMBUS_IDT_END;
  +	while (--vector > VMBUS_IDT_START) {
   		ip = &idt[vector];
   		func = ((long)ip->gd_hioffset << 16 | ip->gd_looffset);
   		if (func == (uintptr_t)&IDTVEC(rsvd)) {
  @@ -428,7 +432,7 @@
   	if (vector == 0)
   		return;
   
  -        KASSERT(vector >= APIC_IPI_INTS && vector < APIC_SPURIOUS_INT,
  +        KASSERT(vector > VMBUS_IDT_START && vector < VMBUS_IDT_END,
               ("invalid vector %d", vector));
   
           ip = &idt[vector];

EMAIL PREFERENCES
  https://reviews.freebsd.org/settings/panel/emailpreferences/

To: sepherosa_gmail.com, adrian, delphij, royger, decui_microsoft.com, honzhan_microsoft.com, howard0su_gmail.com
Cc: freebsd-virtualization-list

--b1_14f3b7eff087f610780eba0cb39fefd3
Content-Type: text/x-patch; charset=utf-8; name="D5291.13341.patch"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="D5291.13341.patch"

ZGlmZiAtLWdpdCBhL3N5cy9kZXYvaHlwZXJ2L3ZtYnVzL2h2X3ZtYnVzX2Rydl9mcmVlYnNkLmMg
Yi9zeXMvZGV2L2h5cGVydi92bWJ1cy9odl92bWJ1c19kcnZfZnJlZWJzZC5jCi0tLSBhL3N5cy9k
ZXYvaHlwZXJ2L3ZtYnVzL2h2X3ZtYnVzX2Rydl9mcmVlYnNkLmMKKysrIGIvc3lzL2Rldi9oeXBl
cnYvdm1idXMvaHZfdm1idXNfZHJ2X2ZyZWVic2QuYwpAQCAtMzgyLDggKzM4MiwxMiBAQAogI2lm
ZGVmIEhZUEVSVgogZXh0ZXJuIGludGhhbmRfdCBJRFRWRUMocnN2ZCksIElEVFZFQyhodl92bWJ1
c19jYWxsYmFjayk7CiAKKyNkZWZpbmUgVk1CVVNfSURUX1NUQVJUCUlEVF9EVFJBQ0VfUkVUIAor
I2RlZmluZSBWTUJVU19JRFRfRU5ECUFQSUNfVElNRVJfSU5UCisKIC8qKgogICogQGJyaWVmIEZp
bmQgYSBmcmVlIElEVCBzbG90IGFuZCBzZXR1cCB0aGUgaW50ZXJydXB0IGhhbmRsZXIuCisgKiBy
YW5nZTogKFZNQlVTX0lEVF9TVEFSVCwgVk1CVVNfSURUX0VORCkKICAqLwogc3RhdGljIGludAog
dm1idXNfdmVjdG9yX2FsbG9jKHZvaWQpCkBAIC0zOTcsOCArNDAxLDggQEAKIAkgKiBhcyB2bWJ1
cyBjaGFubmVsIGNhbGxiYWNrIHZlY3Rvci4gV2UgaW5zdGFsbCAnaHZfdm1idXNfY2FsbGJhY2sn
CiAJICogaGFuZGxlciBhdCB0aGF0IHZlY3RvciBhbmQgdXNlIGl0IHRvIGludGVycnVwdCB2Y3B1
cy4KIAkgKi8KLQl2ZWN0b3IgPSBBUElDX1NQVVJJT1VTX0lOVDsKLQl3aGlsZSAoLS12ZWN0b3Ig
Pj0gQVBJQ19JUElfSU5UUykgeworCXZlY3RvciA9IFZNQlVTX0lEVF9FTkQ7CisJd2hpbGUgKC0t
dmVjdG9yID4gVk1CVVNfSURUX1NUQVJUKSB7CiAJCWlwID0gJmlkdFt2ZWN0b3JdOwogCQlmdW5j
ID0gKChsb25nKWlwLT5nZF9oaW9mZnNldCA8PCAxNiB8IGlwLT5nZF9sb29mZnNldCk7CiAJCWlm
IChmdW5jID09ICh1aW50cHRyX3QpJklEVFZFQyhyc3ZkKSkgewpAQCAtNDI4LDcgKzQzMiw3IEBA
CiAJaWYgKHZlY3RvciA9PSAwKQogCQlyZXR1cm47CiAKLSAgICAgICAgS0FTU0VSVCh2ZWN0b3Ig
Pj0gQVBJQ19JUElfSU5UUyAmJiB2ZWN0b3IgPCBBUElDX1NQVVJJT1VTX0lOVCwKKyAgICAgICAg
S0FTU0VSVCh2ZWN0b3IgPiBWTUJVU19JRFRfU1RBUlQgJiYgdmVjdG9yIDwgVk1CVVNfSURUX0VO
RCwKICAgICAgICAgICAgICgiaW52YWxpZCB2ZWN0b3IgJWQiLCB2ZWN0b3IpKTsKIAogICAgICAg
ICBpcCA9ICZpZHRbdmVjdG9yXTsKCg==


--b1_14f3b7eff087f610780eba0cb39fefd3--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?differential-rev-PHID-DREV-q2orxi263ufg2lnfudid-req>