s390x/pci: separate s390_pcihost_iommu_configure function
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 <zyimin@linux.vnet.ibm.com> Reviewed-by: Pierre Morel <pmorel@linux.vnet.ibm.com> Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com>
This commit is contained in:
parent
8f5cb69313
commit
715838881f
@ -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;
|
||||
}
|
||||
|
||||
|
@ -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);
|
||||
|
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user