From owner-freebsd-virtualization@freebsd.org Tue Feb 16 06:57:30 2016 Return-Path: Delivered-To: freebsd-virtualization@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 8B98DAA902F for ; Tue, 16 Feb 2016 06:57:30 +0000 (UTC) (envelope-from daemon-user@freebsd.org) Received: from phabric-backend.rbsd.freebsd.org (unknown [IPv6:2607:fc50:2000:101::1bb:73]) by mx1.freebsd.org (Postfix) with ESMTP id 776771CF6 for ; Tue, 16 Feb 2016 06:57:30 +0000 (UTC) (envelope-from daemon-user@freebsd.org) Received: by phabric-backend.rbsd.freebsd.org (Postfix, from userid 1346) id 6FFB73320050; Tue, 16 Feb 2016 06:57:30 +0000 (UTC) Date: Tue, 16 Feb 2016 06:57:30 +0000 To: freebsd-virtualization@freebsd.org From: "sepherosa_gmail.com (Sepherosa Ziehau)" Reply-to: D5291+333+9e687f0ec04aca99@reviews.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: X-Priority: 3 X-Phabricator-Sent-This-Message: Yes X-Mail-Transport-Agent: MetaMTA X-Auto-Response-Suppress: All X-Phabricator-Mail-Tags: , , , Thread-Topic: D5291: hyperv/vmbus: Select an IDT vector has lower priority than LAPIC timer and IPIs vectors X-Herald-Rules: none X-Phabricator-To: X-Phabricator-To: X-Phabricator-To: X-Phabricator-To: X-Phabricator-To: X-Phabricator-To: X-Phabricator-To: X-Phabricator-Cc: Precedence: bulk Thread-Index: M2VhMjA1ZWQ4ODNjZTIxMmJiYjJmZGJiYWNk MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="b1_14f3b7eff087f610780eba0cb39fefd3" X-BeenThere: freebsd-virtualization@freebsd.org X-Mailman-Version: 2.1.20 List-Id: "Discussion of various virtualization techniques FreeBSD supports." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 16 Feb 2016 06:57:30 -0000 --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--