From patchwork Wed Aug 20 06:53:30 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Knut Omang X-Patchwork-Id: 381551 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id A5B0214013B for ; Wed, 20 Aug 2014 16:54:24 +1000 (EST) Received: from localhost ([::1]:54253 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XJzmo-0002tK-Rx for incoming@patchwork.ozlabs.org; Wed, 20 Aug 2014 02:54:22 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:37928) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XJzmJ-00024z-8g for qemu-devel@nongnu.org; Wed, 20 Aug 2014 02:53:58 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1XJzmB-00033z-Uc for qemu-devel@nongnu.org; Wed, 20 Aug 2014 02:53:51 -0400 Received: from aserp1040.oracle.com ([141.146.126.69]:30616) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XJzmB-00033v-Nr for qemu-devel@nongnu.org; Wed, 20 Aug 2014 02:53:43 -0400 Received: from acsinet21.oracle.com (acsinet21.oracle.com [141.146.126.237]) by aserp1040.oracle.com (Sentrion-MTA-4.3.2/Sentrion-MTA-4.3.2) with ESMTP id s7K6raVl032114 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Wed, 20 Aug 2014 06:53:37 GMT Received: from userz7022.oracle.com (userz7022.oracle.com [156.151.31.86]) by acsinet21.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id s7K6rZ7X000201 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Wed, 20 Aug 2014 06:53:36 GMT Received: from abhmp0013.oracle.com (abhmp0013.oracle.com [141.146.116.19]) by userz7022.oracle.com (8.14.5+Sun/8.14.4) with ESMTP id s7K6rY07021555; Wed, 20 Aug 2014 06:53:35 GMT Received: from [10.175.255.98] (/10.175.255.98) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Tue, 19 Aug 2014 23:53:33 -0700 Message-ID: <1408517610.25437.103.camel@ori.omang.mine.nu> From: Knut Omang To: qemu-devel@nongnu.org Date: Wed, 20 Aug 2014 08:53:30 +0200 X-Mailer: Evolution 3.8.5 (3.8.5-2.fc19) Mime-Version: 1.0 X-Source-IP: acsinet21.oracle.com [141.146.126.237] X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.4.x-2.6.x [generic] X-Received-From: 141.146.126.69 Cc: Marcel Apfelbaum , Alexey Kardashevskiy , Juan Quintela , Markus Armbruster , Gonglei , "Michael S.Tsirkin" , Igor Mammedov , Paolo Bonzini Subject: [Qemu-devel] [PATCH 3/3] ioh3420: Support ARI forwarding X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Enable the PCIe capability bit that indicates that this port is able to support and forward requests to > 8 functions for ARI capable devices. Signed-off-by: Knut Omang --- hw/pci-bridge/ioh3420.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/hw/pci-bridge/ioh3420.c b/hw/pci-bridge/ioh3420.c index 8f6c8b0..c14ea6b 100644 --- a/hw/pci-bridge/ioh3420.c +++ b/hw/pci-bridge/ioh3420.c @@ -92,8 +92,10 @@ static void ioh3420_reset(DeviceState *qdev) static int ioh3420_initfn(PCIDevice *d) { + PCIBridge* br = PCI_BRIDGE(d); PCIEPort *p = PCIE_PORT(d); PCIESlot *s = PCIE_SLOT(d); + uint8_t *exp_cap; int rc; char tmp[100]; sprintf(tmp, "pcie_port.%d", s->slot); @@ -121,6 +123,10 @@ static int ioh3420_initfn(PCIDevice *d) if (rc < 0) { goto err_msi; } + /* Support ARI forwarding */ + exp_cap = d->config + d->exp.exp_cap; + pci_word_test_and_set_mask(exp_cap + PCI_EXP_DEVCAP2, PCI_EXP_DEVCAP2_ARI); + pcie_cap_deverr_init(d); pcie_cap_slot_init(d, s->slot); pcie_chassis_create(s->chassis); @@ -151,6 +157,7 @@ err_bridge: static void ioh3420_exitfn(PCIDevice *d) { PCIESlot *s = PCIE_SLOT(d); + PCIBridge* br = PCI_BRIDGE(d); pcie_aer_exit(d); pcie_chassis_del_slot(s);