From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by mx.groups.io with SMTP id smtpd.web08.7881.1635314698775560109 for ; Tue, 26 Oct 2021 23:04:59 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=vAcE1HSC; spf=pass (domain: intel.com, ip: 192.55.52.120, mailfrom: jenny.huang@intel.com) X-IronPort-AV: E=McAfee;i="6200,9189,10149"; a="228835181" X-IronPort-AV: E=Sophos;i="5.87,186,1631602800"; d="scan'208";a="228835181" Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by fmsmga104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 26 Oct 2021 23:04:55 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.87,186,1631602800"; d="scan'208";a="579398991" Received: from fmsmsx601.amr.corp.intel.com ([10.18.126.81]) by fmsmga002.fm.intel.com with ESMTP; 26 Oct 2021 23:04:55 -0700 Received: from fmsmsx609.amr.corp.intel.com (10.18.126.89) by fmsmsx601.amr.corp.intel.com (10.18.126.81) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.12; Tue, 26 Oct 2021 23:04:55 -0700 Received: from fmsmsx609.amr.corp.intel.com (10.18.126.89) by fmsmsx609.amr.corp.intel.com (10.18.126.89) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.12; Tue, 26 Oct 2021 23:04:54 -0700 Received: from fmsedg602.ED.cps.intel.com (10.1.192.136) by fmsmsx609.amr.corp.intel.com (10.18.126.89) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.12 via Frontend Transport; Tue, 26 Oct 2021 23:04:54 -0700 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (104.47.59.169) by edgegateway.intel.com (192.55.55.71) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2242.12; Tue, 26 Oct 2021 23:04:53 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=PICP69IE8OYfDBM1I5Jvj/V4ST1OVArk2YNznVR3CWJm1nqbOACFK0JJd6rFKiKpaGQZx/pQZBrUh2GZngT358RTSyXFP6TyObOuWovpP3xIycct72G90vO6P82MKbeEIigCycyUG4uqG09aHluOXEEdtOB2//5c3d8nbJRphTadSlPvFZduDa5ihixYG+gaEKSJJN/uLW0z5As8pf+cbGfrtNmgQVhD6rhgJpMf2Tpw1N7ITzy30kzIz0dbOieBm7ZhhGmTvCpFnOMyhrL4k81QlC8mWeTPqE4inYt/poeUyuqyCkcvFUi6nuypqBETC3VvZVNhnwkQEkPEkZ3BaA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=SeacCchBdN6Gqcml9u3J5J24xYgvsTqDi0EEF0Qteaw=; b=ZRBo4Xsm5Z2FUWye0oxTqL7hhPdEicX54beSYrqeuyB1mADXlnBlM5PnQv3bbxSQC5xARmO2gQyWBFtqi/pcB8MTB7KkS3hnumVuFwYGwo1TrFFHVMlRxL4S1DRz0wRLfRESo5lk335KaY8Gpqo7quS1FMIENN3w3KUFLYIoII0ZTj6CwGEZJ8kO3dAuIw2kYG94DpCSWG/XzjGRTypCkFix9omo3d95DNkPUXNFV2X5D2uEN2FY22PPOoUbYzZIRwJVMF7Nhnye3N6yWwwpYDTBhH1HlB/LZxF5FKZQERxn5GHZ17j7JyxoO01rtqWYtbkDcy6vMnSyNrrx7k6UhA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=SeacCchBdN6Gqcml9u3J5J24xYgvsTqDi0EEF0Qteaw=; b=vAcE1HSCpcftx3PJvqSyZ8Fk6JJT+sf5VmEq2q9MmSM2oofx73WQdiLHNRq+4jvuRbuLgtrfq+ZpySE3WcDEkUjTqmoyBVvz4Nao6TKJhd1tlj0d0qIuHwc68QBqH3ZWLW+fjU1SCUVWxokNKecWYZi+r9YfUT/bqgJpBPLh8KM= Received: from DM6PR11MB4627.namprd11.prod.outlook.com (2603:10b6:5:2a2::19) by DM6PR11MB3401.namprd11.prod.outlook.com (2603:10b6:5:56::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4628.18; Wed, 27 Oct 2021 06:04:52 +0000 Received: from DM6PR11MB4627.namprd11.prod.outlook.com ([fe80::7c63:6b0e:874d:50f]) by DM6PR11MB4627.namprd11.prod.outlook.com ([fe80::7c63:6b0e:874d:50f%3]) with mapi id 15.20.4649.014; Wed, 27 Oct 2021 06:04:52 +0000 From: jenny.huang@intel.com To: "devel@edk2.groups.io" , "Sheng, W" CC: "Kowalewski, Robert" , "Ni, Ray" , "Chaganty, Rangasai V" , "Albecki, Mateusz" , "Kolakowski, Jacek" Subject: Re: [edk2-devel] [PATCH v3] IntelSiliconPkg/IntelVTdDxe: Support Multi PCI Root Bus Thread-Topic: [edk2-devel] [PATCH v3] IntelSiliconPkg/IntelVTdDxe: Support Multi PCI Root Bus Thread-Index: AQHXxnTUe+jyGRbvQ0GUeBsMAwE3V6vmY3RA Date: Wed, 27 Oct 2021 06:04:51 +0000 Message-ID: References: <20211021121129.16184-1-w.sheng@intel.com> In-Reply-To: <20211021121129.16184-1-w.sheng@intel.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-version: 11.6.200.16 dlp-reaction: no-action dlp-product: dlpe-windows authentication-results: edk2.groups.io; dkim=none (message not signed) header.d=none;edk2.groups.io; dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 9244da23-dfd3-47f9-56b3-08d9990fb0df x-ms-traffictypediagnostic: DM6PR11MB3401: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:8273; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: ZPX+ma3bsocSzxETEjyjsOvPTzNgazGm5Qcgib/7uov6q6lUYKdBLjiFG+n03Xh8EBx/kwwRaXoyIGBkpssqwf6G4RArPNl1iTopRVkbBb4xT031n8ohxmQj3gDpVB4+gRb+zEW1LW3tdTUJuF2ETpyZchB8wI/ryDEHSvg3G18SszxXdKiJylbqH6kAoDG/uZvH/Aqln5bwMFAQWWTf/nBGNFBL5UXd3hdeVyazrz1r8le7jRkz1s/VZkFw06K3TKc50qoWgku2D+0Sf5XnKx7mnAwvzWFpN4yKQaIEsG3LZUI8g7Nb95FWEjRkHUMf7QlTumEyvg+oBiU1vVkr00qnXGwThL6IZlAaqNuGro5Mz8CwIsJk6wUxIQy35562hGFCJ0AmlIEmztoBtO/TJa4DSiATQUfj3cqatGEQz74ooofpRP0oQWIoE6N96zvVH8hznwiAsZokQMtku72M5NTRJgV1ST8A/gWiVpdsjnN1+7EO8+zji1gwSBH2D+uMTkpcAC3qcoWTi6aLIMwymNjxF6z8uIULkuKdRCuZMXo2Gj95INzhsMVdW0di+0tNgbsGOTmbzT+iBZSrOCRXYGIW6mEYChfzS2XBQSYqRHlzmH6VwgI1C9m6RnQi5fuLbmZbQ7KjdeCYCh+/I7ZnbZmIUereA+HmpS2p1plvm/EuXZ9wliil3rgYkD1k9oo+KR9nFNKkOZS+Z2D1oyyoEeH1DDv2JxUEiqYBhebFGc2Wzkq0+OCqjToQKC9NjpB+M+8Os8pWaWwCzC4+RJmTbF4LxEg1D6TbkNn2uaEWF7Yuf/hrI2ftHjv9i/Wi1RrlVv8uqJDwPuvIF0nz/ErPGA== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM6PR11MB4627.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(6029001)(366004)(66946007)(66476007)(66446008)(66556008)(33656002)(54906003)(64756008)(38100700002)(107886003)(8676002)(6506007)(83380400001)(122000001)(2906002)(55016002)(7696005)(9686003)(52536014)(53546011)(8936002)(110136005)(76116006)(316002)(186003)(966005)(5660300002)(82960400001)(86362001)(71200400001)(6636002)(26005)(38070700005)(4326008)(508600001);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?8jMb929pr5AF7X06EEKH9o4d43TDFZlYcDIJ6J8S3h/iR7HiVRRccG4aPgi7?= =?us-ascii?Q?zW5psc9Nuynk3dEZk6I8Kig3OqgeZrRkWWLP+HOUOHhHIZO45rIHweEDz2tn?= =?us-ascii?Q?1CV49v/Lh4F0g8eqq9UEA+WoG304Njm0SBOYFYpn/nEWrer350lmhcYr0faq?= =?us-ascii?Q?h9MJrHTELexOx4WszMO6eMgenSy3O0gbOKmu6KWhpALyjdqIt7ugX2KiltaE?= =?us-ascii?Q?BI8gTDlf8PBbtGn++9IQQP7iwwkpFmrFRQc2ZvFxZJKphiyJgqdNmcQjr+LA?= =?us-ascii?Q?HYFRlQkDI2EqE7TBrbMHrwwN7LnT1q5eA3uhQuCK9xh/A1yxNidjRGDPoutW?= =?us-ascii?Q?poFNB4VNf5UOIa+HXcSUD5vVSOFMJbnQ1V4XgucT2X+cMsZ/sF75FRR8L0ds?= =?us-ascii?Q?9ID63qYGRmCzN3m69JNED25KvhH4YaN/EexrVPbZhHz4Q6Qh9IYq1lWeYv3/?= =?us-ascii?Q?007H5kjK0F6RYb6RiTfj/l5CuVhksaPEMPhL4Dh7xxz9lI6zUNG/6bGzAYuk?= =?us-ascii?Q?L3TRkmdwu1XzhbnRlPwHTZi+6JVILHfPmII2nyX806z4J+cm3yeiAhTfVM2T?= =?us-ascii?Q?QznMq68yXVGlbB1WwFUWMd5VqRDz1Dj0LmwIk+VoYDqDF3P0jPZtaUnintoZ?= =?us-ascii?Q?Hw3Jn6li63YdyN5y+2cZ01wUWSYlh+NRpCUZMoYwg1Jlywl0+n+L0rqvGFlt?= =?us-ascii?Q?ot1bd5R9Cfcg7EqNDlf1oQuDV3xxxqf3KvuBRVTTWqDVTwEKIy4ebj2Om7bk?= =?us-ascii?Q?ShOFKRUFz6hRWuWI280OB0J1wJwXgj3P+RVtTUjR9mjuBNZYCvc3+T4Vf4dn?= =?us-ascii?Q?Fjr3WQ48P+A8YiWra+6/JFpFdIqNKmKHh7hc/vlpPglqND8KNNrcg/30FPTE?= =?us-ascii?Q?CyZzv4StInLRw0fwqwXbsuMf1x/3YZjZ1UMnLVmWPD1Dth62DaIUsm9YBZN2?= =?us-ascii?Q?7FugkqC/+NAO/OZC1LKQw6gKq3zqNu6BMHCjn82JHqY9byzzR1sOmjqgfJz7?= =?us-ascii?Q?ydpMY1jMM1wLMGIDIsqtVjUhWrvCMXGsn+EuimtwPAb++Lw776CCu8MCYhjl?= =?us-ascii?Q?d31eH8w5kfvjda5z2sqpQu1NrtMSqzdMpiK5qOzjHUjoEDuUrlEQ4ZyrDoa1?= =?us-ascii?Q?4elQzocdpfzc6xVy+t0FNlFG0baDVxkzDZibgMdYEYAs0WtX2Go6ZQIPPxeY?= =?us-ascii?Q?C47dSg/bRhXYgOma8YpGtchcSBiakp94gkdRIiw0hqk7iObXRrP4B4OpqACN?= =?us-ascii?Q?kolzbcJ0ocIkFMxSKFoPIc3qfIlUGPPexdJHeZh1G0r7jqhEELb0QP6Yfvai?= =?us-ascii?Q?0KQqxR5O4yJV4kfWY8yYjqVdhNiHy7+EL7U7DHx6XeWuqHSTD2kgC17WHocb?= =?us-ascii?Q?nOYkwxwE6qrohT+ZWEJpxdY3fs7XBIsNS3PuUo0Av+Qepvi3AO01vrKZlwz7?= =?us-ascii?Q?iARKqHpJwxGRLA1Ee/ei2KJ7LbUAWxulQf3lDQ+gr4sgdZhOA4U1FfGkvIlF?= =?us-ascii?Q?5XioFOQpYM3kWdxAPVPtSVduyf+vE9QEBylCLG216F7Jy1FBxdDL5WbUNQpG?= =?us-ascii?Q?9UTM+liOP/ZJR/06E80oRjahWwnCrcAZNJymYzomvrVcsFTdpOL+b2C2FL+l?= =?us-ascii?Q?CW6AvPQJPV9DOCAiUyO9Rwk=3D?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM6PR11MB4627.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9244da23-dfd3-47f9-56b3-08d9990fb0df X-MS-Exchange-CrossTenant-originalarrivaltime: 27 Oct 2021 06:04:51.9875 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: kmatWzfHfhDu8l6VmS5MSNWvZcqFc5m1eB2ShSCsB+UcZ0Lb4IbBOv9xxApRX0ARQY/rxC2/IRoyi5NK+pVnfg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR11MB3401 Return-Path: jenny.huang@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Reviewed-by: Jenny Huang -----Original Message----- From: devel@edk2.groups.io On Behalf Of Sheng Wei Sent: Thursday, October 21, 2021 5:11 AM To: devel@edk2.groups.io Cc: Kowalewski, Robert ; Huang, Jenny ; Ni, Ray ; Chaganty, Rangasai V ; Albecki, Mateusz ; Kolak= owski, Jacek Subject: [edk2-devel] [PATCH v3] IntelSiliconPkg/IntelVTdDxe: Support Multi= PCI Root Bus Some system may has multi PCI root bus. It needs to use PciRootBridgeIo pr= otocol to get the root bus count. Scan each root bus to get all devices. REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3D3695 Signed-off-by: Robert Kowalewski Signed-off-by: Sheng Wei Cc: Jenny Huang Cc: Ray Ni Cc: Rangasai V Chaganty Cc: Robert Kowalewski Cc: Albecki Mateusz Cc: Kolakowski Jacek --- .../Feature/VTd/IntelVTdDxe/DmaProtection.h | 17 +++++ .../Feature/VTd/IntelVTdDxe/DmarAcpiTable.c | 2 +- .../Feature/VTd/IntelVTdDxe/IntelVTdDxe.inf | 1 + .../Feature/VTd/IntelVTdDxe/PciInfo.c | 72 ++++++++++++++++++= ++++ 4 files changed, 91 insertions(+), 1 deletion(-) diff --git a/Silicon/Intel/IntelSiliconPkg/Feature/VTd/IntelVTdDxe/DmaProte= ction.h b/Silicon/Intel/IntelSiliconPkg/Feature/VTd/IntelVTdDxe/DmaProtecti= on.h index a24fbc37..7dd29a24 100644 --- a/Silicon/Intel/IntelSiliconPkg/Feature/VTd/IntelVTdDxe/DmaProtection.h +++ b/Silicon/Intel/IntelSiliconPkg/Feature/VTd/IntelVTdDxe/DmaProtectio +++ n.h @@ -33,6 +33,7 @@ #include #include #include +#include =20 #include #include @@ -341,6 +342,22 @@ ScanPciBus ( IN SCAN_BUS_FUNC_CALLBACK_FUNC Callback ); =20 +/** + Scan PCI bus and invoke callback function for each PCI devices under all= root bus. + + @param[in] Context The context of the callback function. + @param[in] Segment The segment of the source. + @param[in] Callback The callback function in PCI scan. + + @retval EFI_SUCCESS The PCI devices under the bus are scaned. +**/ +EFI_STATUS +ScanAllPciBus ( + IN VOID *Context, + IN UINT16 Segment, + IN SCAN_BUS_FUNC_CALLBACK_FUNC Callback + ); + /** Dump the PCI device information managed by this VTd engine. =20 diff --git a/Silicon/Intel/IntelSiliconPkg/Feature/VTd/IntelVTdDxe/DmarAcpi= Table.c b/Silicon/Intel/IntelSiliconPkg/Feature/VTd/IntelVTdDxe/DmarAcpiTab= le.c index 2d9b4374..1ee290b7 100644 --- a/Silicon/Intel/IntelSiliconPkg/Feature/VTd/IntelVTdDxe/DmarAcpiTable.c +++ b/Silicon/Intel/IntelSiliconPkg/Feature/VTd/IntelVTdDxe/DmarAcpiTabl +++ e.c @@ -692,7 +692,7 @@ ProcessDhrd ( mVtdUnitInformation[VtdIndex].PciDeviceInfo.IncludeAllFlag =3D TRUE; DEBUG ((DEBUG_INFO," ProcessDhrd: with INCLUDE ALL\n")); =20 - Status =3D ScanPciBus((VOID *)VtdIndex, DmarDrhd->SegmentNumber, 0, Sc= anBusCallbackRegisterPciDevice); + Status =3D ScanAllPciBus((VOID *)VtdIndex, DmarDrhd->SegmentNumber,=20 + ScanBusCallbackRegisterPciDevice); if (EFI_ERROR (Status)) { return Status; } diff --git a/Silicon/Intel/IntelSiliconPkg/Feature/VTd/IntelVTdDxe/IntelVTd= Dxe.inf b/Silicon/Intel/IntelSiliconPkg/Feature/VTd/IntelVTdDxe/IntelVTdDxe= .inf index 220636ad..387f90e3 100644 --- a/Silicon/Intel/IntelSiliconPkg/Feature/VTd/IntelVTdDxe/IntelVTdDxe.inf +++ b/Silicon/Intel/IntelSiliconPkg/Feature/VTd/IntelVTdDxe/IntelVTdDxe. +++ inf @@ -70,6 +70,7 @@ gEfiPciIoProtocolGuid ## CONSUMES gEfiPciEnumerationCompleteProtocolGuid ## CONSUMES gEdkiiPlatformVTdPolicyProtocolGuid ## SOMETIMES_CONSUMES + gEfiPciRootBridgeIoProtocolGuid ## CONSUMES =20 [Pcd] gIntelSiliconPkgTokenSpaceGuid.PcdVTdPolicyPropertyMask ## CONSUMES diff --git a/Silicon/Intel/IntelSiliconPkg/Feature/VTd/IntelVTdDxe/PciInfo.= c b/Silicon/Intel/IntelSiliconPkg/Feature/VTd/IntelVTdDxe/PciInfo.c index 4af376b3..cffb9f61 100644 --- a/Silicon/Intel/IntelSiliconPkg/Feature/VTd/IntelVTdDxe/PciInfo.c +++ b/Silicon/Intel/IntelSiliconPkg/Feature/VTd/IntelVTdDxe/PciInfo.c @@ -279,6 +279,78 @@ ScanPciBus ( return EFI_SUCCESS; } =20 +/** + Scan PCI bus and invoke callback function for each PCI devices under all= root bus. + + @param[in] Context The context of the callback function. + @param[in] Segment The segment of the source. + @param[in] Callback The callback function in PCI scan. + + @retval EFI_SUCCESS The PCI devices under the bus are scaned. +**/ +EFI_STATUS +ScanAllPciBus ( + IN VOID *Context, + IN UINT16 Segment, + IN SCAN_BUS_FUNC_CALLBACK_FUNC Callback + ) +{ + EFI_STATUS Status; + UINTN Index; + UINTN HandleCount; + EFI_HANDLE *HandleBuffer; + EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL *PciRootBridgeIo; + EFI_ACPI_ADDRESS_SPACE_DESCRIPTOR *Descriptors; + + DEBUG ((DEBUG_INFO, "ScanAllPciBus ()\n")); + + Status =3D gBS->LocateHandleBuffer ( + ByProtocol, + &gEfiPciRootBridgeIoProtocolGuid, + NULL, + &HandleCount, + &HandleBuffer + ); + if (EFI_ERROR (Status)) { + // + // If PciRootBridgeIo protocol is not support, scan PCI device from ro= ot bus 0x00. + // + Status =3D ScanPciBus(Context, Segment, 0x00, Callback); + return Status; + } + + DEBUG ((DEBUG_INFO,"Find %d root bridges\n", HandleCount)); + + for (Index =3D 0; Index < HandleCount; Index++) { + Status =3D gBS->HandleProtocol ( + HandleBuffer[Index], + &gEfiPciRootBridgeIoProtocolGuid, + (VOID **) &PciRootBridgeIo + ); + ASSERT_EFI_ERROR (Status); + + Status =3D PciRootBridgeIo->Configuration (PciRootBridgeIo, (VOID **) = &Descriptors); + ASSERT_EFI_ERROR (Status); + + while (Descriptors->Desc !=3D ACPI_END_TAG_DESCRIPTOR) { + if (Descriptors->ResType =3D=3D ACPI_ADDRESS_SPACE_TYPE_BUS) { + break; + } + Descriptors++; + } + + DEBUG ((DEBUG_INFO,"Scan root bridges : %d, Segment : %d, Bus : 0x%02X= \n", Index, PciRootBridgeIo->SegmentNumber, Descriptors->AddrRangeMin)); + Status =3D ScanPciBus(Context, (UINT16) PciRootBridgeIo->SegmentNumber= , (UINT8) Descriptors->AddrRangeMin, Callback); + if (EFI_ERROR (Status)) { + break; + } + } + + FreePool(HandleBuffer); + + return Status; +} + /** Dump the PCI device information managed by this VTd engine. =20 -- 2.16.2.windows.1