From patchwork Fri Sep 22 03:02:03 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "lan,Tianyu" X-Patchwork-Id: 9965597 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 DC106600C5 for ; Fri, 22 Sep 2017 09:12:23 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id D6EB928501 for ; Fri, 22 Sep 2017 09:12:23 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id CBA3D2891D; Fri, 22 Sep 2017 09:12:23 +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 76F5A28501 for ; Fri, 22 Sep 2017 09:12:23 +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 1dvJz1-0004sa-K6; Fri, 22 Sep 2017 09:10:51 +0000 Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dvJz1-0004ql-3y for xen-devel@lists.xen.org; Fri, 22 Sep 2017 09:10:51 +0000 Received: from [85.158.143.35] (using TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384 (256 bits)) by server-2.bemta-6.messagelabs.com id 49/93-20972-A93D4C95; Fri, 22 Sep 2017 09:10:50 +0000 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrDLMWRWlGSWpSXmKPExsVywNwkVnfG5SO RBs8vslks+biYxYHR4+ju30wBjFGsmXlJ+RUJrBl7nx5nKrjMXbHs4lP2BsbDnF2MXBxCAtMZ JfonzWfrYuTkkBDglTiybAYrhO0vcXDFEWaIog5GifffD4AVsQmoS5xYPJERxBYRkJa49vkyI 0gRs8BmJolV886ygCSEBZIk/r68B9bAIqAqseZID1gDr4CrxO7b59khNihITHn4nhnE5gSK/+ rbzgRiCwm4SLQu3c80gZF3ASPDKkaN4tSistQiXSMDvaSizPSMktzEzBxdQwMzvdzU4uLE9NS cxKRiveT83E2MwJBgAIIdjL+WBRxilORgUhLlfX/+SKQQX1J+SmVGYnFGfFFpTmrxIUYZDg4l Cd72S0A5waLU9NSKtMwcYHDCpCU4eJREeO+BpHmLCxJzizPTIVKnGHU5Om7e/cMkxJKXn5cqJ c67GKRIAKQoozQPbgQsUi4xykoJ8zICHSXEU5BalJtZgir/ilGcg1FJmHclyBSezLwSuE2vgI 5gAjqifDXYESWJCCmpBkaX9teX+oLjpB0lD57YOGkny7oT3S/nb5+yoOVjsNGFAhM5ES599sO Hf+x6uV63/JbrXhbLxSc+hxQdfn7L8tlWD3YG+YCef6+nXTwTXNnyfX/33+lqJ1789QxhWDaJ pSUzTeQSt9jxYC8JpX9Tb+83CxFwTnvyPbPjZQbf7IdrFrPs3H2e0Wm3EktxRqKhFnNRcSIAd Kmkno8CAAA= X-Env-Sender: tianyu.lan@intel.com X-Msg-Ref: server-2.tower-21.messagelabs.com!1506071446!70177707!1 X-Originating-IP: [192.55.52.93] X-SpamReason: No, hits=0.0 required=7.0 tests=sa_preprocessor: VHJ1c3RlZCBJUDogMTkyLjU1LjUyLjkzID0+IDMyNDY2NQ==\n X-StarScan-Received: X-StarScan-Version: 9.4.45; banners=-,-,- X-VirusChecked: Checked Received: (qmail 7334 invoked from network); 22 Sep 2017 09:10:47 -0000 Received: from mga11.intel.com (HELO mga11.intel.com) (192.55.52.93) by server-2.tower-21.messagelabs.com with DHE-RSA-AES256-GCM-SHA384 encrypted SMTP; 22 Sep 2017 09:10:47 -0000 Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by fmsmga102.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 22 Sep 2017 02:10:45 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.42,427,1500966000"; d="scan'208";a="154792292" Received: from sky-ws.sh.intel.com (HELO localhost) ([10.239.48.141]) by fmsmga006.fm.intel.com with ESMTP; 22 Sep 2017 02:10:43 -0700 From: Lan Tianyu To: xen-devel@lists.xen.org Date: Thu, 21 Sep 2017 23:02:03 -0400 Message-Id: <1506049330-11196-23-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 22/29] 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 | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/xen/arch/x86/hvm/vioapic.c b/xen/arch/x86/hvm/vioapic.c index 5d0d1cd..9e47ef4 100644 --- a/xen/arch/x86/hvm/vioapic.c +++ b/xen/arch/x86/hvm/vioapic.c @@ -561,11 +561,25 @@ 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 arch_irq_remapping_request request; if ( !vioapic ) return -EINVAL; - return vioapic->redirtbl[pin].fields.vector; + irq_request_ioapic_fill(&request, vioapic->id, vioapic->redirtbl[pin].bits); + if ( viommu_check_irq_remapping(vioapic->domain, &request) ) + { + int err; + struct arch_irq_remapping_info info; + + err = viommu_get_irq_info(vioapic->domain, &request, &info); + return !err ? info.vector : err; + } + else + { + return vioapic->redirtbl[pin].fields.vector; + } + } int vioapic_get_trigger_mode(const struct domain *d, unsigned int gsi)