[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 14/20] s390x/pci: separate s390_pcihost_iommu_configu
From: |
Cornelia Huck |
Subject: |
[Qemu-devel] [PULL 14/20] s390x/pci: separate s390_pcihost_iommu_configure function |
Date: |
Tue, 17 May 2016 16:46:11 +0200 |
From: Yi Min Zhao <address@hidden>
Split s390_pcihost_iommu_configure() into separate functions for
configuring and deconfiguring in order to make the code more readable.
Signed-off-by: Yi Min Zhao <address@hidden>
Reviewed-by: Pierre Morel <address@hidden>
Signed-off-by: Cornelia Huck <address@hidden>
---
hw/s390x/s390-pci-bus.c | 21 ++++++++++++---------
hw/s390x/s390-pci-bus.h | 3 ++-
hw/s390x/s390-pci-inst.c | 5 ++---
3 files changed, 16 insertions(+), 13 deletions(-)
diff --git a/hw/s390x/s390-pci-bus.c b/hw/s390x/s390-pci-bus.c
index c749d00..b934fc8 100644
--- a/hw/s390x/s390-pci-bus.c
+++ b/hw/s390x/s390-pci-bus.c
@@ -478,19 +478,22 @@ static const MemoryRegionOps s390_msi_ctrl_ops = {
.endianness = DEVICE_LITTLE_ENDIAN,
};
-void s390_pcihost_iommu_configure(S390PCIBusDevice *pbdev, bool enable)
+void s390_pci_iommu_enable(S390PCIBusDevice *pbdev)
{
pbdev->configured = false;
+ uint64_t size = pbdev->pal - pbdev->pba + 1;
- if (enable) {
- uint64_t size = pbdev->pal - pbdev->pba + 1;
- memory_region_init_iommu(&pbdev->iommu_mr, OBJECT(&pbdev->mr),
- &s390_iommu_ops, "iommu-s390", size);
- memory_region_add_subregion(&pbdev->mr, pbdev->pba, &pbdev->iommu_mr);
- } else {
- memory_region_del_subregion(&pbdev->mr, &pbdev->iommu_mr);
- }
+ memory_region_init_iommu(&pbdev->iommu_mr, OBJECT(&pbdev->mr),
+ &s390_iommu_ops, "iommu-s390", size);
+ memory_region_add_subregion(&pbdev->mr, pbdev->pba, &pbdev->iommu_mr);
+ pbdev->configured = true;
+}
+void s390_pci_iommu_disable(S390PCIBusDevice *pbdev)
+{
+ pbdev->configured = false;
+ memory_region_del_subregion(&pbdev->mr, &pbdev->iommu_mr);
+ object_unparent(OBJECT(&pbdev->iommu_mr));
pbdev->configured = true;
}
diff --git a/hw/s390x/s390-pci-bus.h b/hw/s390x/s390-pci-bus.h
index d6e17d2..426f690 100644
--- a/hw/s390x/s390-pci-bus.h
+++ b/hw/s390x/s390-pci-bus.h
@@ -249,7 +249,8 @@ int chsc_sei_nt2_get_event(void *res);
int chsc_sei_nt2_have_event(void);
void s390_pci_sclp_configure(SCCB *sccb);
void s390_pci_sclp_deconfigure(SCCB *sccb);
-void s390_pcihost_iommu_configure(S390PCIBusDevice *pbdev, bool enable);
+void s390_pci_iommu_enable(S390PCIBusDevice *pbdev);
+void s390_pci_iommu_disable(S390PCIBusDevice *pbdev);
S390PCIBusDevice *s390_pci_find_dev_by_idx(uint32_t idx);
S390PCIBusDevice *s390_pci_find_dev_by_fh(uint32_t fh);
S390PCIBusDevice *s390_pci_find_dev_by_fid(uint32_t fid);
diff --git a/hw/s390x/s390-pci-inst.c b/hw/s390x/s390-pci-inst.c
index 90d9fda..eb03f48 100644
--- a/hw/s390x/s390-pci-inst.c
+++ b/hw/s390x/s390-pci-inst.c
@@ -705,18 +705,17 @@ static int reg_ioat(CPUS390XState *env, S390PCIBusDevice
*pbdev, ZpciFib fib)
pbdev->pal = pal;
pbdev->g_iota = g_iota;
- s390_pcihost_iommu_configure(pbdev, true);
+ s390_pci_iommu_enable(pbdev);
return 0;
}
static void dereg_ioat(S390PCIBusDevice *pbdev)
{
+ s390_pci_iommu_disable(pbdev);
pbdev->pba = 0;
pbdev->pal = 0;
pbdev->g_iota = 0;
-
- s390_pcihost_iommu_configure(pbdev, false);
}
int mpcifc_service_call(S390CPU *cpu, uint8_t r1, uint64_t fiba, uint8_t ar)
--
2.8.2
- [Qemu-devel] [PULL 00/20] First round of s390x patches for 2.7, Cornelia Huck, 2016/05/17
- [Qemu-devel] [PULL 12/20] s390x/pci: fix reg_irqs(), Cornelia Huck, 2016/05/17
- [Qemu-devel] [PULL 04/20] s390x/ipl: Add type and length checks for IplParameterBlock values, Cornelia Huck, 2016/05/17
- [Qemu-devel] [PULL 01/20] s390x: add compat machine for 2.7, Cornelia Huck, 2016/05/17
- [Qemu-devel] [PULL 13/20] s390x/pci: separate s390_sclp_configure function, Cornelia Huck, 2016/05/17
- [Qemu-devel] [PULL 14/20] s390x/pci: separate s390_pcihost_iommu_configure function,
Cornelia Huck <=
- [Qemu-devel] [PULL 07/20] pc-bios/s390-ccw: Get device address via diag 308/6, Cornelia Huck, 2016/05/17
- [Qemu-devel] [PULL 18/20] s390x/pci: enhance mpcifc_service_call, Cornelia Huck, 2016/05/17
- [Qemu-devel] [PULL 19/20] s390x/pci: add length checking for pci sclp handlers, Cornelia Huck, 2016/05/17
- [Qemu-devel] [PULL 05/20] s390x/ipl: Provide ipl parameter block, Cornelia Huck, 2016/05/17
- [Qemu-devel] [PULL 20/20] s390x/pci: remove whitespace, Cornelia Huck, 2016/05/17
- [Qemu-devel] [PULL 06/20] s390x/ipl: Add ssid field to IplParameterBlock, Cornelia Huck, 2016/05/17
- [Qemu-devel] [PULL 10/20] hw/char: QOM'ify sclpconsole-lm.c, Cornelia Huck, 2016/05/17
- [Qemu-devel] [PULL 15/20] s390x/pci: export pci_dereg_ioat and pci_dereg_irqs, Cornelia Huck, 2016/05/17
- [Qemu-devel] [PULL 09/20] s390x/ipl: Remove redundant usage of gr7, Cornelia Huck, 2016/05/17