From patchwork Fri Sep 22 03:01:58 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "lan,Tianyu" X-Patchwork-Id: 9965575 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id C29A7600C5 for ; Fri, 22 Sep 2017 09:12:08 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id BC7FB29701 for ; Fri, 22 Sep 2017 09:12:08 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id B13D229806; Fri, 22 Sep 2017 09:12:08 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.7 required=2.0 tests=BAYES_00, DATE_IN_PAST_06_12, RCVD_IN_DNSWL_MED autolearn=ham version=3.3.1 Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 66B7129701 for ; Fri, 22 Sep 2017 09:12:08 +0000 (UTC) Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dvJyh-0004Rf-II; Fri, 22 Sep 2017 09:10:31 +0000 Received: from mail6.bemta3.messagelabs.com ([195.245.230.39]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dvJyg-0004QF-SY for xen-devel@lists.xen.org; Fri, 22 Sep 2017 09:10:30 +0000 Received: from [85.158.137.68] by server-9.bemta-3.messagelabs.com id AE/64-02044-683D4C95; Fri, 22 Sep 2017 09:10:30 +0000 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrJLMWRWlGSWpSXmKPExsXS1tYhr9ty+Ui kQc86HoslHxezODB6HN39mymAMYo1My8pvyKBNeNc/2TGgr98Fd92XWNtYJzE08XIySEkUClx 8P5WdhBbQoBX4siyGawQdoDEubbpbF2MXEA1HYwSj469YwFJsAmoS5xYPJERxBYRkJa49vkyI 0gRs8BmJom5a2aBFQkLREgsOLSGuYuRg4NFQFVi1skUkDCvgKtEf/NzqGUKElMevmcGsTmB4r /6tjNBHOQi0bp0P9MERt4FjAyrGNWLU4vKUot0DfWSijLTM0pyEzNzdA0NjPVyU4uLE9NTcxK TivWS83M3MQKDgQEIdjAu/+h0iFGSg0lJlPf9+SORQnxJ+SmVGYnFGfFFpTmpxYcYZTg4lCR4 /S4B5QSLUtNTK9Iyc4BhCZOW4OBREuFNBEnzFhck5hZnpkOkTjHqcnTcvPuHSYglLz8vVUqcV w+kSACkKKM0D24ELEYuMcpKCfMyAh0lxFOQWpSbWYIq/4pRnINRSZg3G2QKT2ZeCdymV0BHMA EdUb4a7IiSRISUVAOjp9+iyj6L4wdnfDnz1sbw+szk3dkHAna5xBod+6d81Z01v1+h980WNbO 7L+c84Zw3+4uvorphhUcET2tg/rlqVuX9s0OlSxtk8icI8W+W601eOOXZom8JkYoul1TnX/Uy TTjYx5f9ZqtP3NIPCx6GJnM27T2rvHJ72ESdnWK8X/mq84w+HXRTYinOSDTUYi4qTgQA/SP/7 IwCAAA= X-Env-Sender: tianyu.lan@intel.com X-Msg-Ref: server-14.tower-31.messagelabs.com!1506071420!115859819!2 X-Originating-IP: [134.134.136.31] X-SpamReason: No, hits=0.8 required=7.0 tests=DATE_IN_PAST_06_12 X-StarScan-Received: X-StarScan-Version: 9.4.45; banners=-,-,- X-VirusChecked: Checked Received: (qmail 35640 invoked from network); 22 Sep 2017 09:10:27 -0000 Received: from mga06.intel.com (HELO mga06.intel.com) (134.134.136.31) by server-14.tower-31.messagelabs.com with DHE-RSA-AES256-GCM-SHA384 encrypted SMTP; 22 Sep 2017 09:10:27 -0000 Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by orsmga104.jf.intel.com with ESMTP; 22 Sep 2017 02:10:27 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos; i="5.42,427,1500966000"; d="scan'208"; a="1222293502" Received: from sky-ws.sh.intel.com (HELO localhost) ([10.239.48.141]) by fmsmga002.fm.intel.com with ESMTP; 22 Sep 2017 02:10:24 -0700 From: Lan Tianyu To: xen-devel@lists.xen.org Date: Thu, 21 Sep 2017 23:01:58 -0400 Message-Id: <1506049330-11196-18-git-send-email-tianyu.lan@intel.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1506049330-11196-1-git-send-email-tianyu.lan@intel.com> References: <1506049330-11196-1-git-send-email-tianyu.lan@intel.com> Cc: Lan Tianyu , kevin.tian@intel.com, sstabellini@kernel.org, wei.liu2@citrix.com, George.Dunlap@eu.citrix.com, andrew.cooper3@citrix.com, ian.jackson@eu.citrix.com, tim@xen.org, jbeulich@suse.com, roger.pau@citrix.com, Chao Gao Subject: [Xen-devel] [PATCH V3 17/29] x86/vvtd: add a helper function to decide the interrupt format X-BeenThere: xen-devel@lists.xen.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" X-Virus-Scanned: ClamAV using ClamSMTP From: Chao Gao Different platform may use different method to distinguish remapping format interrupt and normal format interrupt. Intel uses one bit in IOAPIC RTE or MSI address register to indicate the interrupt is remapping format. vvtd will handle all the interrupts when .check_irq_remapping() return true. Signed-off-by: Chao Gao Signed-off-by: Lan Tianyu --- xen/drivers/passthrough/vtd/vvtd.c | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/xen/drivers/passthrough/vtd/vvtd.c b/xen/drivers/passthrough/vtd/vvtd.c index 5e22ace..bd1cadd 100644 --- a/xen/drivers/passthrough/vtd/vvtd.c +++ b/xen/drivers/passthrough/vtd/vvtd.c @@ -536,6 +536,28 @@ static int vvtd_get_irq_info(struct domain *d, return 0; } +/* Probe whether the interrupt request is an remapping format */ +static bool vvtd_is_remapping(struct domain *d, + struct arch_irq_remapping_request *irq) +{ + if ( irq->type == VIOMMU_REQUEST_IRQ_APIC ) + { + struct IO_APIC_route_remap_entry rte = { .val = irq->msg.rte }; + + return rte.format; + } + else if ( irq->type == VIOMMU_REQUEST_IRQ_MSI ) + { + struct msi_msg_remap_entry msi_msg = + { .address_lo = { .val = irq->msg.msi.addr } }; + + return msi_msg.address_lo.format; + } + ASSERT_UNREACHABLE(); + + return 0; +} + static void vvtd_reset(struct vvtd *vvtd, uint64_t capability) { uint64_t cap = cap_set_num_fault_regs(1ULL) | @@ -607,7 +629,8 @@ struct viommu_ops vvtd_hvm_vmx_ops = { .create = vvtd_create, .destroy = vvtd_destroy, .handle_irq_request = vvtd_handle_irq_request, - .get_irq_info = vvtd_get_irq_info + .get_irq_info = vvtd_get_irq_info, + .check_irq_remapping = vvtd_is_remapping }; static int vvtd_register(void)