From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=209.132.183.28; helo=mx1.redhat.com; envelope-from=lersek@redhat.com; receiver=edk2-devel@lists.01.org Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 2D14A21168211 for ; Fri, 12 Oct 2018 01:08:39 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 43B993001910; Fri, 12 Oct 2018 08:08:38 +0000 (UTC) Received: from lacos-laptop-7.usersys.redhat.com (ovpn-120-87.rdu2.redhat.com [10.10.120.87]) by smtp.corp.redhat.com (Postfix) with ESMTP id 70AB7705BA; Fri, 12 Oct 2018 08:08:34 +0000 (UTC) To: Ard Biesheuvel , Ming Huang Cc: Leif Lindholm , linaro-uefi , "edk2-devel@lists.01.org" , Graeme Gregory , "Kinney, Michael D" , guoheyi@huawei.com, wanghuiqiang , huangming , Jason Zhang , huangdaode@hisilicon.com, John Garry , Xinliang Liu , zhangfeng56@huawei.com References: <20180831132710.23055-1-ming.huang@linaro.org> <20180831132710.23055-22-ming.huang@linaro.org> From: Laszlo Ersek Message-ID: Date: Fri, 12 Oct 2018 10:08:33 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.9.1 MIME-Version: 1.0 In-Reply-To: X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.47]); Fri, 12 Oct 2018 08:08:38 +0000 (UTC) Subject: Re: [PATCH edk2-platforms v5 21/28] Platform/Hisilicon/D06: Add PciHostBridgeLib X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 12 Oct 2018 08:08:40 -0000 Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit On 10/12/18 09:29, Ard Biesheuvel wrote: > Hello all, > > While grepping through the code in edk2-platforms, I noticed an issue > with this commit. Apologies for not spotting it earlier. > > On 31 August 2018 at 15:27, Ming Huang wrote: >> PciHostBridgeLib which is need by PciHostBridgeDxe, provide >> root bridges and deal with resource conflict. >> >> Contributed-under: TianoCore Contribution Agreement 1.1 >> Signed-off-by: Ming Huang >> Reviewed-by: Leif Lindholm >> --- >> Platform/Hisilicon/D06/D06.dsc | 2 +- >> Platform/Hisilicon/D06/Library/PciHostBridgeLib/PciHostBridgeLib.inf | 36 ++ >> Platform/Hisilicon/D06/Library/PciHostBridgeLib/PciHostBridgeLib.c | 635 ++++++++++++++++++++ >> 3 files changed, 672 insertions(+), 1 deletion(-) >> >> diff --git a/Platform/Hisilicon/D06/D06.dsc b/Platform/Hisilicon/D06/D06.dsc >> index 2659cb7e37..83dcbab6c4 100644 >> --- a/Platform/Hisilicon/D06/D06.dsc >> +++ b/Platform/Hisilicon/D06/D06.dsc >> @@ -419,7 +419,7 @@ >> >> PciSegmentLib|MdePkg/Library/BasePciSegmentLibPci/BasePciSegmentLibPci.inf >> PciLib|MdePkg/Library/BasePciLibPciExpress/BasePciLibPciExpress.inf >> - PciHostBridgeLib|MdeModulePkg/Library/PciHostBridgeLibNull/PciHostBridgeLibNull.inf >> + PciHostBridgeLib|Platform/Hisilicon/D06/Library/PciHostBridgeLib/PciHostBridgeLib.inf >> } >> >> MdeModulePkg/Bus/Pci/PciBusDxe/PciBusDxe.inf >> diff --git a/Platform/Hisilicon/D06/Library/PciHostBridgeLib/PciHostBridgeLib.inf b/Platform/Hisilicon/D06/Library/PciHostBridgeLib/PciHostBridgeLib.inf >> new file mode 100644 >> index 0000000000..8a998681a3 >> --- /dev/null >> +++ b/Platform/Hisilicon/D06/Library/PciHostBridgeLib/PciHostBridgeLib.inf >> @@ -0,0 +1,36 @@ >> +## @file >> +# >> +# Copyright (c) 2018, Hisilicon Limited. All rights reserved.
>> +# Copyright (c) 2018, Linaro Limited. All rights reserved.
>> +# >> +# This program and the accompanying materials >> +# are licensed and made available under the terms and conditions of the BSD License >> +# which accompanies this distribution. The full text of the license may be found at >> +# http://opensource.org/licenses/bsd-license.php >> +# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, >> +# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. >> +# >> +# >> +## >> + >> +[Defines] >> + INF_VERSION = 0x0001001A >> + BASE_NAME = PciHostBridgeLib >> + FILE_GUID = 61b7276a-fc67-11e5-82fd-47ea9896dd5d >> + MODULE_TYPE = DXE_DRIVER >> + VERSION_STRING = 1.0 >> + LIBRARY_CLASS = PciHostBridgeLib|DXE_DRIVER >> + >> +[Sources] >> + PciHostBridgeLib.c >> + >> +[Packages] >> + MdeModulePkg/MdeModulePkg.dec >> + MdePkg/MdePkg.dec >> + >> +[LibraryClasses] >> + BaseLib >> + DebugLib >> + DevicePathLib >> + MemoryAllocationLib >> + UefiBootServicesTableLib >> diff --git a/Platform/Hisilicon/D06/Library/PciHostBridgeLib/PciHostBridgeLib.c b/Platform/Hisilicon/D06/Library/PciHostBridgeLib/PciHostBridgeLib.c >> new file mode 100644 >> index 0000000000..d1a436d9bc >> --- /dev/null >> +++ b/Platform/Hisilicon/D06/Library/PciHostBridgeLib/PciHostBridgeLib.c >> @@ -0,0 +1,635 @@ >> +/** @file >> + >> + Copyright (c) 2018, Hisilicon Limited. All rights reserved.
>> + Copyright (c) 2018, Linaro Limited. All rights reserved.
>> + >> + This program and the accompanying materials >> + are licensed and made available under the terms and conditions of the BSD License >> + which accompanies this distribution. The full text of the license may be found at >> + http://opensource.org/licenses/bsd-license.php >> + >> + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, >> + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. >> + >> +**/ >> +#include >> +#include >> +#include >> +#include >> +#include >> +#include >> +#include >> + >> +#define ENUM_HB_NUM 8 >> + >> +#define EFI_PCI_SUPPORT (EFI_PCI_ATTRIBUTE_ISA_MOTHERBOARD_IO | \ >> + EFI_PCI_ATTRIBUTE_IDE_SECONDARY_IO | \ >> + EFI_PCI_ATTRIBUTE_IDE_PRIMARY_IO | \ >> + EFI_PCI_ATTRIBUTE_ISA_IO_16 | \ >> + EFI_PCI_ATTRIBUTE_VGA_MEMORY | \ >> + EFI_PCI_ATTRIBUTE_VGA_IO_16 | \ >> + EFI_PCI_ATTRIBUTE_VGA_PALETTE_IO_16) >> + >> +#define EFI_PCI_ATTRIBUTE EFI_PCI_SUPPORT >> + >> +#pragma pack(1) >> +typedef struct { >> + ACPI_HID_DEVICE_PATH AcpiDevicePath; >> + EFI_DEVICE_PATH_PROTOCOL EndDevicePath; >> +} EFI_PCI_ROOT_BRIDGE_DEVICE_PATH; >> +#pragma pack () >> + >> +STATIC EFI_PCI_ROOT_BRIDGE_DEVICE_PATH mEfiPciRootBridgeDevicePath [ENUM_HB_NUM] = { >> +//Host Bridge 0 >> + { >> + { >> + { >> + ACPI_DEVICE_PATH, >> + ACPI_DP, >> + { >> + (UINT8)sizeof (ACPI_HID_DEVICE_PATH), >> + (UINT8)(sizeof (ACPI_HID_DEVICE_PATH) >> 8) >> + } >> + }, >> + EISA_PNP_ID(0x0A03), // PCI >> + 0 > ... >> +//Host Bridge 2 > ... >> + EISA_PNP_ID(0x0A04), // PCI >> + 0 > .. >> +//Host Bridge 4 > ... >> + EISA_PNP_ID(0x0A05), // PCI >> + 0 > ... >> +//Host Bridge 5 > ... >> + EISA_PNP_ID(0x0A06), // PCI >> + 0 > ... >> +//Host Bridge 6 > ... >> + EISA_PNP_ID(0x0A07), // PCI >> + 0 > ... >> +//Host Bridge 8 > ... >> + EISA_PNP_ID(0x0A08), // PCI >> + 0 > ... >> +//Host Bridge 10 > ... >> + EISA_PNP_ID(0x0A09), // PCI >> + 0 > ... >> +//Host Bridge 11 > ... >> + EISA_PNP_ID(0x0A0A), // PCI >> + 0 > > This is *not* how it works. You cannot invent your own ACPI HIDs like > that. If you have multiple instances of a device, you increment the > UID. I agree. > Please synchronize these definitions with the HIDs/UIDs used in the > DSDT/SSDT for PCIe. And please make sure all host bridges are > accounted for. I agree again; this is the cleanest approach, by the book. ( In order to be completely honest, I have to point out that we're currently cutting some corners on the PciRoot() / PcieRoot() difference, in ArmVirtQemu. (Which translates to a PNPID difference, between 0x0A03 / 0x0A08.) Please refer to the following discussions (search them for "EISA_PNP_ID"): - http://mid.mail-archive.com/8ba58ec8-9360-4805-c9a5-b9d5c193fdb0@redhat.com - http://mid.mail-archive.com/b87c8a0e-e4c9-f9d3-3d53-f7bb1e27cc1c@redhat.com - http://mid.mail-archive.com/1472840159-28957-4-git-send-email-ard.biesheuvel@linaro.org (and this was pushed ultimately) ) Thanks Laszlo