From patchwork Wed Aug 9 20:34:20 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "lan,Tianyu" X-Patchwork-Id: 9892627 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 2F27D60236 for ; Thu, 10 Aug 2017 02:43:41 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 16132289CE for ; Thu, 10 Aug 2017 02:43:41 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 0AFA6289E6; Thu, 10 Aug 2017 02:43:41 +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 A7768289CE for ; Thu, 10 Aug 2017 02:43:40 +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 1dfdQ8-0001ka-80; Thu, 10 Aug 2017 02:42:00 +0000 Received: from mail6.bemta3.messagelabs.com ([195.245.230.39]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dfdQ6-0001hp-No for xen-devel@lists.xen.org; Thu, 10 Aug 2017 02:41:58 +0000 Received: from [85.158.137.68] by server-12.bemta-3.messagelabs.com id 0E/C4-01862-5F7CB895; Thu, 10 Aug 2017 02:41:57 +0000 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrOLMWRWlGSWpSXmKPExsVywNxEW/fr8e5 IgzXbBSyWfFzM4sDocXT3b6YAxijWzLyk/IoE1oz9Xw4zF8zhqfh4cDtTA+Nzzi5GDg4hgQqJ Sa26XYycHBICvBJHls1gBQlLCPhLvO2x7WLkAqroYJTYtu4vI0gNm4C6xInFE8FsEQFpiWufL zOCFDELXGWUOL1tPjNIs7BAksSvW0IgNSwCqhLLu5vYQWxeAVeJbz2bGCF2KUhMefieGcTmBI pP3bKVCcQWEnCRWLd8GuMERt4FjAyrGNWLU4vKUot0LfSSijLTM0pyEzNzdA0NjPVyU4uLE9N TcxKTivWS83M3MQIDgQEIdjBeaHc+xCjJwaQkytvR0B0pxJeUn1KZkVicEV9UmpNafIhRhoND SYK3+xhQTrAoNT21Ii0zBxiSMGkJDh4lEd73IGne4oLE3OLMdIjUKUZdjlcT/n9jEmLJy89Ll RLnXQJSJABSlFGaBzcCFh+XGGWlhHkZgY4S4ilILcrNLEGVf8UozsGoJMz7CWQKT2ZeCdymV0 BHMAEdEeHbCXJESSJCSqqBUc/fwydny+YbMzgUD5v1Vn1iu1HLJctq6qp099eGDssl/VuXvl3 /8oECh8yuN1o/+jcsqj4l8FNLInqzckly1+3VTvur44/xuSevDTf41Za8O6HpoZsgX5U+oyFL SfzDW+VBJdvrVv/qsjZlqm46qd6VoVY71Z2/TvhW0fx5Vn48p8wdd65QYinOSDTUYi4qTgQAT 8zi14oCAAA= X-Env-Sender: tianyu.lan@intel.com X-Msg-Ref: server-13.tower-31.messagelabs.com!1502332914!104778303!1 X-Originating-IP: [192.55.52.43] 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 57915 invoked from network); 10 Aug 2017 02:41:56 -0000 Received: from mga05.intel.com (HELO mga05.intel.com) (192.55.52.43) by server-13.tower-31.messagelabs.com with DHE-RSA-AES256-GCM-SHA384 encrypted SMTP; 10 Aug 2017 02:41:56 -0000 Received: from orsmga004.jf.intel.com ([10.7.209.38]) by fmsmga105.fm.intel.com with ESMTP; 09 Aug 2017 19:41:54 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.41,349,1498546800"; d="scan'208";a="117459464" Received: from sky-ws.sh.intel.com (HELO localhost) ([10.239.48.141]) by orsmga004.jf.intel.com with ESMTP; 09 Aug 2017 19:41:52 -0700 From: Lan Tianyu To: xen-devel@lists.xen.org Date: Wed, 9 Aug 2017 16:34:20 -0400 Message-Id: <1502310866-10450-20-git-send-email-tianyu.lan@intel.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1502310866-10450-1-git-send-email-tianyu.lan@intel.com> References: <1502310866-10450-1-git-send-email-tianyu.lan@intel.com> Cc: Lan Tianyu , kevin.tian@intel.com, wei.liu2@citrix.com, andrew.cooper3@citrix.com, ian.jackson@eu.citrix.com, julien.grall@arm.com, jbeulich@suse.com, Chao Gao Subject: [Xen-devel] [PATCH V2 19/25] x86/vioapic: extend vioapic_get_vector() to support remapping format RTE 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 When IOAPIC RTE is in remapping format, it doesn't contain the vector of interrupt. For this case, the RTE contains an index of interrupt remapping table where the vector of interrupt is stored. This patchs gets the vector through a vIOMMU interface. Signed-off-by: Chao Gao Signed-off-by: Lan Tianyu --- xen/arch/x86/hvm/vioapic.c | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/xen/arch/x86/hvm/vioapic.c b/xen/arch/x86/hvm/vioapic.c index 322f33c..ff0742d 100644 --- a/xen/arch/x86/hvm/vioapic.c +++ b/xen/arch/x86/hvm/vioapic.c @@ -565,11 +565,27 @@ int vioapic_get_vector(const struct domain *d, unsigned int gsi) { unsigned int pin; const struct hvm_vioapic *vioapic = gsi_vioapic(d, gsi, &pin); + struct IO_APIC_route_remap_entry rte = { { vioapic->redirtbl[pin].bits } }; if ( !vioapic ) return -EINVAL; - return vioapic->redirtbl[pin].fields.vector; + if ( rte.format ) + { + int err; + struct irq_remapping_request request; + struct irq_remapping_info info; + + irq_request_ioapic_fill(&request, vioapic->id, rte.val); + /* Currently, only viommu 0 is supported */ + err = viommu_get_irq_info(vioapic->domain, 0, &request, &info); + return !err ? info.vector : -1; + } + else + { + return vioapic->redirtbl[pin].fields.vector; + } + } int vioapic_get_trigger_mode(const struct domain *d, unsigned int gsi)