From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wm0-x233.google.com (mail-wm0-x233.google.com [IPv6:2a00:1450:400c:c09::233]) (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 E70B61A1E4F for ; Wed, 31 Aug 2016 10:59:49 -0700 (PDT) Received: by mail-wm0-x233.google.com with SMTP id w2so42008140wmd.0 for ; Wed, 31 Aug 2016 10:59:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=9LK+0RCT8Oab4RKZfvYiPBAQ1uGG14Xf+9elQxWpg40=; b=RUp3NX2jMKWiIA/+sCcgaN0gEmBfaOiQNPnCUU+1Ko/1W+7ogtn74n+UD4trCzDy0P e75+h4SpKJ3GqNpSF670obrXjxlBHxAdHIOiit9gjJOXV1c32/+yEuE7/O+bnPiUwd2y 078Aj4cskQGpSo2rczSuklPHLQcQCbPDMDpSE= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=9LK+0RCT8Oab4RKZfvYiPBAQ1uGG14Xf+9elQxWpg40=; b=c0YMQFGBuxm1s9Bf2j+PtRPpD0qVuHvrtKN5MOBPqETbpRgbXTY8/SI+5jwkJanW9m wbj+RgN4NJ8tRcwLQ+qVPHBv8w9XM9KMk5Zw7ZvKiG2jAkoXIfdKgWELiKCLPb69vp9a GPylgyyfvSwUBS++hgta5hmU2O+62QUuDenrL/athvjIpgwD3aYW07wlk3g9S4iRMaEN 5L0Xv0SCm7R+hRumb7QzhiadTX+AThB67BiuYTFS8+a6V7GVaX7rOaMvH5UQLgTROHMm shF2sof8yomoxhWjEmP2aAWKez7EFeKSQsDjS/eztJfqq4PsXBTBO9jKDyE162w2ornP Li4w== X-Gm-Message-State: AE9vXwMwLQz95IrGe/EWk6StwDiu25O240Km+xYeKmjpqA/eiJjiF06nSC3Z66Q/dAJELfjX X-Received: by 10.28.35.86 with SMTP id j83mr10607344wmj.18.1472666388406; Wed, 31 Aug 2016 10:59:48 -0700 (PDT) Received: from localhost.localdomain ([105.151.173.94]) by smtp.gmail.com with ESMTPSA id d62sm10118417wmd.7.2016.08.31.10.59.45 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Wed, 31 Aug 2016 10:59:47 -0700 (PDT) From: Ard Biesheuvel To: edk2-devel@lists.01.org, lersek@redhat.com Cc: leif.lindholm@linaro.org, Ard Biesheuvel Date: Wed, 31 Aug 2016 18:59:34 +0100 Message-Id: <1472666379-25426-2-git-send-email-ard.biesheuvel@linaro.org> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1472666379-25426-1-git-send-email-ard.biesheuvel@linaro.org> References: <1472666379-25426-1-git-send-email-ard.biesheuvel@linaro.org> Subject: [PATCH v2 1/6] ArmVirtPkg/PciHostBridgeDxe: don't set linux, pci-probe-only DT property X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 31 Aug 2016 17:59:50 -0000 Setting the linux,pci-probe-only was intended to align OSes booting via DT with OSes booting via ACPI in the way they honor the PCI configuration performed by the firmware. However, ACPI on arm64 does not currently honor the firmware's PCI configuration, and the linux,pci-probe-only completely prevents any PCI reconfiguration from occurring under the OS, including what is needed to support PCI hotplug. Since the primary use case was OS access to the GOP framebuffer (which breaks when the framebuffer BAR is moved when the OS reconfigures the PCI), we can undo this change now that ArmVirtQemu has moved to a GOP implementation that does not expose a raw framebuffer in the first place. This effectively reverts commit 8b816c624dd4 ("ArmVirtPkg/VirtFdtDxe: set /chosen/linux,pci-probe-only to 1 in DTB") Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ard Biesheuvel Reviewed-by: Laszlo Ersek Ref: https://tianocore.acgmultimedia.com/show_bug.cgi?id=65 --- ArmVirtPkg/PciHostBridgeDxe/PciHostBridge.c | 38 -------------------- 1 file changed, 38 deletions(-) diff --git a/ArmVirtPkg/PciHostBridgeDxe/PciHostBridge.c b/ArmVirtPkg/PciHostBridgeDxe/PciHostBridge.c index 5063782bb392..669c90355889 100644 --- a/ArmVirtPkg/PciHostBridgeDxe/PciHostBridge.c +++ b/ArmVirtPkg/PciHostBridgeDxe/PciHostBridge.c @@ -79,42 +79,6 @@ PCI_HOST_BRIDGE_INSTANCE mPciHostBridgeInstanceTemplate = { // Implementation // -STATIC -VOID -SetLinuxPciProbeOnlyProperty ( - IN FDT_CLIENT_PROTOCOL *FdtClient - ) -{ - INT32 Node; - UINT32 Tmp; - EFI_STATUS Status; - - if (!FeaturePcdGet (PcdPureAcpiBoot)) { - // - // Set the /chosen/linux,pci-probe-only property to 1, so that the PCI - // setup we will perform in the firmware is honored by the Linux OS, - // rather than torn down and done from scratch. This is generally a more - // sensible approach, and aligns with what ACPI based OSes do typically. - // - // In case we are exposing an emulated VGA PCI device to the guest, which - // may subsequently get exposed via the Graphics Output protocol and - // driven as an efifb by Linux, we need this setting to prevent the - // framebuffer from becoming unresponsive. - // - Status = FdtClient->GetOrInsertChosenNode (FdtClient, &Node); - - if (!EFI_ERROR (Status)) { - Tmp = SwapBytes32 (1); - Status = FdtClient->SetNodeProperty (FdtClient, Node, - "linux,pci-probe-only", &Tmp, sizeof (Tmp)); - } - if (EFI_ERROR (Status)) { - DEBUG ((EFI_D_WARN, - "Failed to set /chosen/linux,pci-probe-only property\n")); - } - } -} - // // We expect the "ranges" property of "pci-host-ecam-generic" to consist of // records like this. @@ -293,8 +257,6 @@ ProcessPciHost ( // ASSERT (PcdGet64 (PcdPciExpressBaseAddress) == ConfigBase); - SetLinuxPciProbeOnlyProperty (FdtClient); - DEBUG ((EFI_D_INFO, "%a: Config[0x%Lx+0x%Lx) Bus[0x%x..0x%x] " "Io[0x%Lx+0x%Lx)@0x%Lx Mem[0x%Lx+0x%Lx)@0x%Lx\n", __FUNCTION__, ConfigBase, ConfigSize, *BusMin, *BusMax, *IoBase, *IoSize, *IoTranslation, *MmioBase, -- 2.7.4