From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wm0-x22a.google.com (mail-wm0-x22a.google.com [IPv6:2a00:1450:400c:c09::22a]) (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 34AFC1A1E08 for ; Fri, 2 Sep 2016 11:16:06 -0700 (PDT) Received: by mail-wm0-x22a.google.com with SMTP id w2so41348669wmd.0 for ; Fri, 02 Sep 2016 11:16:06 -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; bh=AnwhO/ztgXh98ihBzaUu/h2e4oS2J9X/JOKKBSQaEyI=; b=Qkf6tQS4gdo0NgfaI43wCS9p5Hti13JjJ34RK5IXNFBINHbLRj3incUnKWeWTIReJj YSko/msydP1AjEOwkzFNt3WGrWZHsWH5V8Xp2yOZ8JuVr52wgY5lVdIhVSjhC/bjL1o3 sHBi4pKFf3Bk4+GrJ0SLXR/UK5uB3eMgboE4I= 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; bh=AnwhO/ztgXh98ihBzaUu/h2e4oS2J9X/JOKKBSQaEyI=; b=N/bGfdhqngjlt77ckCaX6VtF/qqylKzRhP8z2dgFNMrtJLuK86jcZ/qON8gBxlkZXZ p4jbYDkDv27nIFhs7LNsK7EQJal3r1RR+2S+ACQMZu+V26kqOl2vRfu6yhQzFgBP6Baf uidsRkH2xJOmh+BPd3v9l2avvF9LTNXP6RDwa9ipqU0SVHGVYkUetlwPVslmclixAnpL fmto07dwQ7HqtxLXZaCAmS5d/N9KV6pg6DsJf9wD7FXc+PPYsQS3BpanB0B5/sujc8Dk U7UAUuAWrJWM8l0NxIz/m6Z254kugGU8N/+wWxp5eXgG+JsNanbDKT2jDOAIh67B+xIZ 3GKQ== X-Gm-Message-State: AE9vXwNjLx7CVxYumLwLcaTYPbbaWfeNYwb75UkkzuTwH8/8I0JFbINYxDgZ0eBif/tjjxFZ X-Received: by 10.28.141.76 with SMTP id p73mr4347275wmd.118.1472840164562; Fri, 02 Sep 2016 11:16:04 -0700 (PDT) Received: from localhost.localdomain ([160.165.63.90]) by smtp.gmail.com with ESMTPSA id id1sm11559152wjb.21.2016.09.02.11.16.02 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 02 Sep 2016 11:16:03 -0700 (PDT) From: Ard Biesheuvel To: edk2-devel@lists.01.org Cc: lersek@redhat.com, Ard Biesheuvel Date: Fri, 2 Sep 2016 19:15:53 +0100 Message-Id: <1472840159-28957-1-git-send-email-ard.biesheuvel@linaro.org> X-Mailer: git-send-email 2.7.4 Subject: [PATCH v3 0/6] ArmVirtQemu: move to generic PciHostBridgeDxe 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: Fri, 02 Sep 2016 18:16:06 -0000 Now that Laszlo's virtio-gpu-pci series has removed the last remaining obstacle, we can get rid of the special PciHostBridgeDxe implementation in ArmVirtPkg, and move to the generic one. On AArch64, this will allow us to perform DMA above 4GB without bounce buffering, and use 64-bit MMIO BARs allocated above 4 GB. Changes since v2: - use legacy ACPI id (0x0A03) rather than PCIe (0x0A08) - disable DMA above 4 GB, this requires fixes in the PciHostBridgeDxe driver and in many PCI drivers in the EDK2 - set EFI_PCI_HOST_BRIDGE_MEM64_DECODE only if the MMIO64 region has non-zero size - minor tweaks - add Laszlo's acks to the remaining patches, all patches are acked now Branch can be found here: https://git.linaro.org/people/ard.biesheuvel/uefi-next.git/shortlog/refs/heads/qemu-pci Changes since v1: - new patch #2 to move the IoTranslation discovery to FdtPciPcdProducerLib, which is a cleaner approach since other drivers (i.e., ArmPciCpuIo2Dxe) depend on it as well - add support for ARM, i.e., disable the 64-bit range in that case, since we cannot access 64-bit MMIO BARs if they are allocated there - use statically allocated PCI_ROOT_BRIDGE[] array of size 1 - enable support for ISA and VGA I/O range decoding - various other minor fixes based on Laszlo's review comments - added ref links and Laszlo's acks where appropriate, i.e., where given and where the version of the patch in this series does not deviate substantially from the suggested version on which the preliminary ack was based Patch #1 removes the linux,pci-probe-only override which does more harm than good now that we switched to virtio-gpu-pci, which does not expose a raw framebuffer. Patch #2 extends FdtPciPcdProducerLib so that it also sets PcdPciIoTranslation, which is required for the FdtPciHostBridgeLib implementation this series introduces, but also for ArmPciCpuIo2Dxe, which produces EFI_CPU_IO2_PROTOCOL on which the generic PciHostBridgeDxe depends as well. Patch #3 implements PciHostBridgeLib for platforms exposing a PCI host bridge using a pci-host-ecam-generic DT node. The initial version is based on the ArmVirtPkg implementation of PciHostBridgeDxe, so it does not support 64-bit MMIO BARs allocated above 4 GB, but it does support DMA above 4 GB without bounce buffering. Patch #4 switches to the generic PciHostBridgeDxe, with no change in functionality other than support for DMA above 4 GB without bounce buffering. Patch #5 adds support for allocating 64-bit MMIO BARs above 4 GB. Patch #6 removes the now obsolete PciHostBridgeDxe from ArmVirtPkg. Ard Biesheuvel (6): ArmVirtPkg/PciHostBridgeDxe: don't set linux,pci-probe-only DT property ArmVirtPkg/FdtPciPcdProducerLib: add handling of PcdPciIoTranslation ArmVirtPkg: implement FdtPciHostBridgeLib ArmVirtPkg/ArmVirtQemu: switch to generic PciHostBridgeDxe ArmVirtPkg/FdtPciHostBridgeLib: add MMIO64 support ArmVirtPkg: remove now unused PciHostBridgeDxe ArmVirtPkg/ArmVirtQemu.dsc | 10 +- ArmVirtPkg/ArmVirtQemuFvMain.fdf.inc | 3 +- ArmVirtPkg/ArmVirtQemuKernel.dsc | 10 +- ArmVirtPkg/Library/FdtPciHostBridgeLib/FdtPciHostBridgeLib.c | 436 ++++ ArmVirtPkg/Library/FdtPciHostBridgeLib/FdtPciHostBridgeLib.inf | 57 + ArmVirtPkg/Library/FdtPciPcdProducerLib/FdtPciPcdProducerLib.c | 108 +- ArmVirtPkg/Library/FdtPciPcdProducerLib/FdtPciPcdProducerLib.inf | 2 + ArmVirtPkg/PciHostBridgeDxe/PciHostBridge.c | 1496 -------------- ArmVirtPkg/PciHostBridgeDxe/PciHostBridge.h | 499 ----- ArmVirtPkg/PciHostBridgeDxe/PciHostBridgeDxe.inf | 64 - ArmVirtPkg/PciHostBridgeDxe/PciRootBridgeIo.c | 2144 -------------------- 11 files changed, 613 insertions(+), 4216 deletions(-) create mode 100644 ArmVirtPkg/Library/FdtPciHostBridgeLib/FdtPciHostBridgeLib.c create mode 100644 ArmVirtPkg/Library/FdtPciHostBridgeLib/FdtPciHostBridgeLib.inf delete mode 100644 ArmVirtPkg/PciHostBridgeDxe/PciHostBridge.c delete mode 100644 ArmVirtPkg/PciHostBridgeDxe/PciHostBridge.h delete mode 100644 ArmVirtPkg/PciHostBridgeDxe/PciHostBridgeDxe.inf delete mode 100644 ArmVirtPkg/PciHostBridgeDxe/PciRootBridgeIo.c -- 2.7.4