diff mbox

[1/4] pci: Split pcie_host_mmcfg_map()

Message ID 1420560191-48029-2-git-send-email-agraf@suse.de
State New
Headers show

Commit Message

Alexander Graf Jan. 6, 2015, 4:03 p.m. UTC
The mmcfg space is a memory region that allows access to PCI config space
in the PCIe world. To maintain abstraction layers, I would like to expose
the mmcfg space as a sysbus mmio region rather than have it mapped straight
into the system's memory address space though.

So this patch splits the initialization of the mmcfg space from the actual
mapping, allowing us to only have an mmfg memory region without the map.

Signed-off-by: Alexander Graf <agraf@suse.de>
---
 hw/pci/pcie_host.c         | 9 +++++++--
 include/hw/pci/pcie_host.h | 1 +
 2 files changed, 8 insertions(+), 2 deletions(-)

Comments

Claudio Fontana Jan. 12, 2015, 4:28 p.m. UTC | #1
On 06.01.2015 17:03, Alexander Graf wrote:
> The mmcfg space is a memory region that allows access to PCI config space
> in the PCIe world. To maintain abstraction layers, I would like to expose
> the mmcfg space as a sysbus mmio region rather than have it mapped straight
> into the system's memory address space though.
> 
> So this patch splits the initialization of the mmcfg space from the actual
> mapping, allowing us to only have an mmfg memory region without the map.
> 
> Signed-off-by: Alexander Graf <agraf@suse.de>
> ---
>  hw/pci/pcie_host.c         | 9 +++++++--
>  include/hw/pci/pcie_host.h | 1 +
>  2 files changed, 8 insertions(+), 2 deletions(-)
> 
> diff --git a/hw/pci/pcie_host.c b/hw/pci/pcie_host.c
> index 3db038f..dfb4a2b 100644
> --- a/hw/pci/pcie_host.c
> +++ b/hw/pci/pcie_host.c
> @@ -98,8 +98,7 @@ void pcie_host_mmcfg_unmap(PCIExpressHost *e)
>      }
>  }
>  
> -void pcie_host_mmcfg_map(PCIExpressHost *e, hwaddr addr,
> -                         uint32_t size)
> +void pcie_host_mmcfg_init(PCIExpressHost *e, uint32_t size)
>  {
>      assert(!(size & (size - 1)));       /* power of 2 */
>      assert(size >= PCIE_MMCFG_SIZE_MIN);
> @@ -107,6 +106,12 @@ void pcie_host_mmcfg_map(PCIExpressHost *e, hwaddr addr,
>      e->size = size;
>      memory_region_init_io(&e->mmio, OBJECT(e), &pcie_mmcfg_ops, e,
>                            "pcie-mmcfg", e->size);
> +}
> +
> +void pcie_host_mmcfg_map(PCIExpressHost *e, hwaddr addr,
> +                         uint32_t size)
> +{
> +    pcie_host_mmcfg_init(e, size);
>      e->base_addr = addr;
>      memory_region_add_subregion(get_system_memory(), e->base_addr, &e->mmio);
>  }
> diff --git a/include/hw/pci/pcie_host.h b/include/hw/pci/pcie_host.h
> index ff44ef6..4d23c80 100644
> --- a/include/hw/pci/pcie_host.h
> +++ b/include/hw/pci/pcie_host.h
> @@ -50,6 +50,7 @@ struct PCIExpressHost {
>  };
>  
>  void pcie_host_mmcfg_unmap(PCIExpressHost *e);
> +void pcie_host_mmcfg_init(PCIExpressHost *e, uint32_t size);
>  void pcie_host_mmcfg_map(PCIExpressHost *e, hwaddr addr, uint32_t size);
>  void pcie_host_mmcfg_update(PCIExpressHost *e,
>                              int enable,
> 

Fine for me.

Reviewed-by: Claudio Fontana <claudio.fontana@huawei.com>
diff mbox

Patch

diff --git a/hw/pci/pcie_host.c b/hw/pci/pcie_host.c
index 3db038f..dfb4a2b 100644
--- a/hw/pci/pcie_host.c
+++ b/hw/pci/pcie_host.c
@@ -98,8 +98,7 @@  void pcie_host_mmcfg_unmap(PCIExpressHost *e)
     }
 }
 
-void pcie_host_mmcfg_map(PCIExpressHost *e, hwaddr addr,
-                         uint32_t size)
+void pcie_host_mmcfg_init(PCIExpressHost *e, uint32_t size)
 {
     assert(!(size & (size - 1)));       /* power of 2 */
     assert(size >= PCIE_MMCFG_SIZE_MIN);
@@ -107,6 +106,12 @@  void pcie_host_mmcfg_map(PCIExpressHost *e, hwaddr addr,
     e->size = size;
     memory_region_init_io(&e->mmio, OBJECT(e), &pcie_mmcfg_ops, e,
                           "pcie-mmcfg", e->size);
+}
+
+void pcie_host_mmcfg_map(PCIExpressHost *e, hwaddr addr,
+                         uint32_t size)
+{
+    pcie_host_mmcfg_init(e, size);
     e->base_addr = addr;
     memory_region_add_subregion(get_system_memory(), e->base_addr, &e->mmio);
 }
diff --git a/include/hw/pci/pcie_host.h b/include/hw/pci/pcie_host.h
index ff44ef6..4d23c80 100644
--- a/include/hw/pci/pcie_host.h
+++ b/include/hw/pci/pcie_host.h
@@ -50,6 +50,7 @@  struct PCIExpressHost {
 };
 
 void pcie_host_mmcfg_unmap(PCIExpressHost *e);
+void pcie_host_mmcfg_init(PCIExpressHost *e, uint32_t size);
 void pcie_host_mmcfg_map(PCIExpressHost *e, hwaddr addr, uint32_t size);
 void pcie_host_mmcfg_update(PCIExpressHost *e,
                             int enable,