From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=2607:f8b0:4864:20::142; helo=mail-it1-x142.google.com; envelope-from=ming.huang@linaro.org; receiver=edk2-devel@lists.01.org Received: from mail-it1-x142.google.com (mail-it1-x142.google.com [IPv6:2607:f8b0:4864:20::142]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id DF28F2117D27A for ; Fri, 26 Oct 2018 01:18:45 -0700 (PDT) Received: by mail-it1-x142.google.com with SMTP id 74-v6so652050itw.1 for ; Fri, 26 Oct 2018 01:18:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=huWOA5PRi9AF5kOZsCAiSWDFdAIp2FyrwHGtPn8s/hc=; b=TS2YSgGUIdCf1xmqvTzTCoAu4FIs+NgUhQ2+g9KsXxKRb5MmD55Y/8Cw9m2I/u+Ape K0LI32tEWqG89ePBKc32eJsdzTjiFX8kpnVX3dgJZXJy49p1b4pNYFnzhZe2k9/U3F0x I3iQdRFxDvVebWeikemPAr+2f7xZepvxa8O2E= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:cc:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=huWOA5PRi9AF5kOZsCAiSWDFdAIp2FyrwHGtPn8s/hc=; b=ZOp22RgUUllmVKidZ/qIGCtl96EmyUZvw9YNIAuDT2UQ8cHeph3JPOKNx1np8iujAw zg0/lhgP/7enzHLHnRataIr9rw3LZ+eVFqxS3FTP08XrkSZBgc7sFCZJlK2Ee/mQqlDi ZOT1DeTZt/7el/I82UwH+nqHnAg9D+K+SVz5teIMrGELtGVEO7pr0KuA46gSepcDPPdS cDtGDMlwDpeeQW5KJgRodnPcbZe4Ml8KN9camhT5wpNfMo0k1Y/QgxG6Bh68JVuY+4Hh AhO0yP/y+OpAlqG2QQQNjP1V+wTr6qgsLa3iFzBvz6HsP7Ff7+OFS/k5RwLcSFRAJpLZ gbfw== X-Gm-Message-State: AGRZ1gIawgK1nUEu2X0cnuU137fiNYCREDCtVQ78FrWJ4eWnD9rr8HVv wMRoNt0HtGLmalzeSfKsxLuN2A== X-Google-Smtp-Source: AJdET5c5v+LuqJbdCRWba0Iq+co2dmcnYvI68FYQGcZ2iuLj5ArF4j8N3GZCnyKEJ+Sp6QQI5DLH1Q== X-Received: by 2002:a02:4ec4:: with SMTP id r187-v6mr1905239jaa.38.1540541924711; Fri, 26 Oct 2018 01:18:44 -0700 (PDT) Received: from [10.13.0.122] ([64.64.108.201]) by smtp.gmail.com with ESMTPSA id w134-v6sm1628846itc.12.2018.10.26.01.18.31 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 26 Oct 2018 01:18:43 -0700 (PDT) To: Laszlo Ersek , Ard Biesheuvel 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: Ming Huang Message-ID: <84939887-b3d3-f1c8-48fc-a1902133ead9@linaro.org> Date: Fri, 26 Oct 2018 16:18:23 +0800 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:60.0) Gecko/20100101 Thunderbird/60.0 MIME-Version: 1.0 In-Reply-To: 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, 26 Oct 2018 08:18:46 -0000 Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit Hi Ard & Laszlo, Sorry for delay reply. Should all host bridges use EISA_PNP_ID(0x0A03)? Ming On 10/12/2018 4:08 PM, Laszlo Ersek wrote: > 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 >