From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=2607:f8b0:4001:c0b::241; helo=mail-it0-x241.google.com; envelope-from=ard.biesheuvel@linaro.org; receiver=edk2-devel@lists.01.org Received: from mail-it0-x241.google.com (mail-it0-x241.google.com [IPv6:2607:f8b0:4001:c0b::241]) (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 3D516202E5356 for ; Wed, 27 Jun 2018 00:33:21 -0700 (PDT) Received: by mail-it0-x241.google.com with SMTP id p17-v6so1051280itc.2 for ; Wed, 27 Jun 2018 00:33:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=WeJgMgUlvGBPTAhnLs5J3+Prk56D+mmHXTRGE8eC5X8=; b=UR597MqtKvHwmXEd+2OjGeg2yDKAAc0xpjWk17UAT49hx7ZjQe9MRlFbMj0/ZpAP8B nOxGyK351Bw5QdABqc5goly+1rAP1u6Yr1Op4pm7bqjZKiTxvQGOv7ATBOXI7Sz0JpmB UVynp4mbvpPtGIRsTCX1q5WS7atl29fFxBHhk= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=WeJgMgUlvGBPTAhnLs5J3+Prk56D+mmHXTRGE8eC5X8=; b=BLTDP8cx9seCWFirkkLl4bxA7X+v41VHcTfGIa6RKGq1CvIL6cPYN02bWTCu00AtxA sKt/jSHJUwH7WQQcbTf13TI6MrfvM+SYuRk3Q8qSMoCxwrkNEvB8qIPy/9heC4OvzKHn SgdgNJ4DfqnsW3HJ1b9q8CgGFyLxR0Kq0fPzKoc9L7Oo4HqFWKZeKNmaF1mcVA1Gic5I pJQ+840DGo7FSBKLnSaeaBfPPZy+PNB57TLtaXK/I8xTh5OpuTOnjvmJnvCHOoookCmW 5NPkYzfG7oCYkzjo0rlnOAfBZJAc/IN1cdVvYyukbeRM5FDPByL2x9xeAboOOb9uGBGC jX1g== X-Gm-Message-State: APt69E03oYZqJQX0P4TQ0wRW+mLHmpLR0mX6vSh5ywQYmbWsg0Qbk3bt TKPYBbRyPq1KluAY5oB0/wUaiXC82te4taj6D6hn5A== X-Google-Smtp-Source: AAOMgpe0VZLW2W0Z6CVzUAfLxhCHbNEDYwuAfz/nrkQNPZIrGIkU/gjzrwNQVMvBi8+eB+ajz9uyYQ0255yWZopMIpQ= X-Received: by 2002:a02:6001:: with SMTP id i1-v6mr4090613jac.5.1530084800341; Wed, 27 Jun 2018 00:33:20 -0700 (PDT) MIME-Version: 1.0 Received: by 2002:a6b:bbc7:0:0:0:0:0 with HTTP; Wed, 27 Jun 2018 00:33:19 -0700 (PDT) In-Reply-To: <20180627070443.42886-5-ming.huang@linaro.org> References: <20180627070443.42886-1-ming.huang@linaro.org> <20180627070443.42886-5-ming.huang@linaro.org> From: Ard Biesheuvel Date: Wed, 27 Jun 2018 09:33:19 +0200 Message-ID: To: Ming Huang Cc: Leif Lindholm , linaro-uefi , "edk2-devel@lists.01.org" , Graeme Gregory , guoheyi@huawei.com, wanghuiqiang , huangming , Jason Zhang , huangdaode@hisilicon.com, John Garry , Heyi Guo Subject: Re: [PATCH edk2-platforms v1 4/6] Hisilicon/D05: Add PlatformMiscDxe driver X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.26 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 Jun 2018 07:33:21 -0000 Content-Type: text/plain; charset="UTF-8" On 27 June 2018 at 09:04, Ming Huang wrote: > Fix the issue of onboard Nic not work kerenl with AMD GPU and > NVME SSD in board. The GPU don't support 64 MSI, so need to > allocate INTx, but the default interrupt number 255 is invalid, > so Change all the PCI Device interrupt number to 0. > Could you please try to explain in more detail what the problem is you are solving, and why you think it should be solved in the firmware? What does '64 MSI' mean? And where does the default of 255 come from? > Contributed-under: TianoCore Contribution Agreement 1.1 > Signed-off-by: Ming Huang > Signed-off-by: Heyi Guo > --- > Platform/Hisilicon/D05/D05.dsc | 1 + > Platform/Hisilicon/D05/D05.fdf | 1 + > Platform/Hisilicon/D05/Drivers/PlatformMiscDxe/PlatformMiscDxe.c | 99 ++++++++++++++++++++ > Platform/Hisilicon/D05/Drivers/PlatformMiscDxe/PlatformMiscDxe.inf | 47 ++++++++++ > 4 files changed, 148 insertions(+) > > diff --git a/Platform/Hisilicon/D05/D05.dsc b/Platform/Hisilicon/D05/D05.dsc > index b6e1a9d98a..0e6d5912a0 100644 > --- a/Platform/Hisilicon/D05/D05.dsc > +++ b/Platform/Hisilicon/D05/D05.dsc > @@ -629,6 +629,7 @@ > > > Silicon/Hisilicon/Drivers/Smbios/ProcessorSubClassDxe/ProcessorSubClassDxe.inf > + Platform/Hisilicon/D05/Drivers/PlatformMiscDxe/PlatformMiscDxe.inf > > # > # Memory test > diff --git a/Platform/Hisilicon/D05/D05.fdf b/Platform/Hisilicon/D05/D05.fdf > index 37d9cc0c18..32374e245e 100644 > --- a/Platform/Hisilicon/D05/D05.fdf > +++ b/Platform/Hisilicon/D05/D05.fdf > @@ -358,6 +358,7 @@ READ_LOCK_STATUS = TRUE > INF MdeModulePkg/Universal/PCD/Pei/Pcd.inf > INF IntelFrameworkModulePkg/Universal/StatusCode/Pei/StatusCodePei.inf > INF Platform/Hisilicon/D05/EarlyConfigPeim/EarlyConfigPeimD05.inf > + INF Platform/Hisilicon/D05/Drivers/PlatformMiscDxe/PlatformMiscDxe.inf > > INF MdeModulePkg/Core/DxeIplPeim/DxeIpl.inf > > diff --git a/Platform/Hisilicon/D05/Drivers/PlatformMiscDxe/PlatformMiscDxe.c b/Platform/Hisilicon/D05/Drivers/PlatformMiscDxe/PlatformMiscDxe.c > new file mode 100644 > index 0000000000..8519b7139d > --- /dev/null > +++ b/Platform/Hisilicon/D05/Drivers/PlatformMiscDxe/PlatformMiscDxe.c > @@ -0,0 +1,99 @@ > +/** @file > +* > +* Copyright (c) 2018, Hisilicon Limited. All rights reserved. > +* Copyright (c) 2016, 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 > + > +VOID > +SetIntLine ( > + ) > +{ > + EFI_STATUS Status; > + UINTN HandleIndex; > + EFI_HANDLE *HandleBuffer; > + UINTN HandleCount; > + EFI_PCI_IO_PROTOCOL *PciIo; > + UINT8 INTLine; > + UINTN Segment; > + UINTN Bus; > + UINTN Device; > + UINTN Fun; > + > + Status = gBS->LocateHandleBuffer ( > + ByProtocol, > + &gEfiPciIoProtocolGuid, > + NULL, > + &HandleCount, > + &HandleBuffer > + ); > + if (EFI_ERROR (Status)) { > + DEBUG ((DEBUG_ERROR, " Locate gEfiPciIoProtocol Failed.\n")); > + gBS->FreePool ((VOID *)HandleBuffer); > + return; > + } > + > + for (HandleIndex = 0; HandleIndex < HandleCount; HandleIndex++) { > + Status = gBS->HandleProtocol ( > + HandleBuffer[HandleIndex], > + &gEfiPciIoProtocolGuid, > + (VOID **)&PciIo > + ); > + if (EFI_ERROR (Status)) { > + continue; > + } > + > + INTLine = 0; > + (VOID)PciIo->Pci.Write ( > + PciIo, > + EfiPciIoWidthUint8, > + PCI_INT_LINE_OFFSET, > + 1, > + &INTLine); > + (VOID)PciIo->GetLocation (PciIo, &Segment, &Bus, &Device, &Fun); > + DEBUG ((DEBUG_INFO, "Set BDF(%x-%x-%x) IntLine to 0\n", Bus, Device, Fun)); > + } > + > + gBS->FreePool ((VOID *)HandleBuffer); > + return; > +} > + > +EFI_STATUS > +EFIAPI > +PlatformMiscDxeEntry ( > + IN EFI_HANDLE ImageHandle, > + IN EFI_SYSTEM_TABLE *SystemTable > + ) > +{ > + EFI_STATUS Status; > + EFI_EVENT Event; > + > + Status = gBS->CreateEventEx ( > + EVT_NOTIFY_SIGNAL, > + TPL_CALLBACK, > + SetIntLine, > + NULL, > + &gEfiEventReadyToBootGuid, > + &Event > + ); > + if (EFI_ERROR (Status)) { > + DEBUG ((DEBUG_ERROR, "Create event for SetIntLine, %r!\n", Status)); > + } > + > + return EFI_SUCCESS; > +} > + > diff --git a/Platform/Hisilicon/D05/Drivers/PlatformMiscDxe/PlatformMiscDxe.inf b/Platform/Hisilicon/D05/Drivers/PlatformMiscDxe/PlatformMiscDxe.inf > new file mode 100644 > index 0000000000..0b365e7a53 > --- /dev/null > +++ b/Platform/Hisilicon/D05/Drivers/PlatformMiscDxe/PlatformMiscDxe.inf > @@ -0,0 +1,47 @@ > +#/** @file > +# > +# Copyright (c) 2018, Hisilicon Limited. All rights reserved. > +# Copyright (c) 2016, 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 = PlatformMiscDxe > + FILE_GUID = a48f7a09-253f-468b-87c6-caf78baf47bb > + MODULE_TYPE = DXE_DRIVER > + VERSION_STRING = 1.0 > + ENTRY_POINT = PlatformMiscDxeEntry > + > +[Sources.common] > + PlatformMiscDxe.c > + > +[Packages] > + MdeModulePkg/MdeModulePkg.dec > + MdePkg/MdePkg.dec > + Silicon/Hisilicon/HisiPkg.dec > + > +[Guids] > + gEfiEventReadyToBootGuid > + > +[Protocols] > + gEfiPciIoProtocolGuid > + > +[LibraryClasses] > + BaseLib > + DebugLib > + UefiBootServicesTableLib > + UefiDriverEntryPoint > + > +[FixedPcd] > + > +[Depex] > + TRUE > -- > 2.17.0 >