* [Qemu-devel] [PATCH for-2.5 0/4] s390x fixes for 2.5-rc3 @ 2015-11-27 10:07 Cornelia Huck 2015-11-27 10:07 ` [Qemu-devel] [PATCH for-2.5 1/4] pc-bios/s390-ccw: build for z900 Cornelia Huck ` (3 more replies) 0 siblings, 4 replies; 7+ messages in thread From: Cornelia Huck @ 2015-11-27 10:07 UTC (permalink / raw) To: qemu-devel; +Cc: Cornelia Huck, borntraeger, jfrei, agraf Last round of s390x fixes for 2.5: - The bios should be built for the first z machine, so that newer instructions don't creep in. - Silence annoying message when running make check. - Fix a problem with the pci iommu exposed by recent changes. Christian Borntraeger (1): pc-bios/s390-ccw: build for z900 Cornelia Huck (2): pc-bios/s390-ccw: rebuild image s390x: no deprecation warning while testing Yi Min Zhao (1): s390x/pci: fix up IOMMU size hw/s390x/s390-pci-bus.c | 26 ++++++++++++++++++++++---- hw/s390x/s390-pci-bus.h | 2 ++ hw/s390x/s390-pci-inst.c | 7 ++++++- hw/s390x/s390-virtio.c | 9 ++++++--- pc-bios/s390-ccw.img | Bin 17760 -> 17760 bytes pc-bios/s390-ccw/Makefile | 2 +- 6 files changed, 37 insertions(+), 9 deletions(-) -- 2.6.3 ^ permalink raw reply [flat|nested] 7+ messages in thread
* [Qemu-devel] [PATCH for-2.5 1/4] pc-bios/s390-ccw: build for z900 2015-11-27 10:07 [Qemu-devel] [PATCH for-2.5 0/4] s390x fixes for 2.5-rc3 Cornelia Huck @ 2015-11-27 10:07 ` Cornelia Huck 2015-11-27 10:07 ` [Qemu-devel] [PATCH for-2.5 2/4] pc-bios/s390-ccw: rebuild image Cornelia Huck ` (2 subsequent siblings) 3 siblings, 0 replies; 7+ messages in thread From: Cornelia Huck @ 2015-11-27 10:07 UTC (permalink / raw) To: qemu-devel; +Cc: Cornelia Huck, borntraeger, jfrei, agraf From: Christian Borntraeger <borntraeger@de.ibm.com> Newer distributions have an architecture level set to z9, z196 or similar - also as default option for the compiler. We should build the bios for z900 to allow it to run with all 64bit CPUs. This will become more important as soon as QEMU/KVM does support CPU models. Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com> Acked-by: Cornelia Huck <cornelia.huck@de.ibm.com> Reviewed-by: David Hildenbrand <dahi@linux.vnet.ibm.com> Reviewed-By: Sascha Silbe <silbe@linux.vnet.ibm.com> Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com> --- pc-bios/s390-ccw/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pc-bios/s390-ccw/Makefile b/pc-bios/s390-ccw/Makefile index 15e4232..11c5dd4 100644 --- a/pc-bios/s390-ccw/Makefile +++ b/pc-bios/s390-ccw/Makefile @@ -10,7 +10,7 @@ $(call set-vpath, $(SRC_PATH)/pc-bios/s390-ccw) .PHONY : all clean build-all OBJECTS = start.o main.o bootmap.o sclp-ascii.o virtio.o -CFLAGS += -fPIE -fno-stack-protector -ffreestanding +CFLAGS += -fPIE -fno-stack-protector -ffreestanding -march=z900 CFLAGS += -fno-delete-null-pointer-checks -msoft-float LDFLAGS += -Wl,-pie -nostdlib -- 2.6.3 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* [Qemu-devel] [PATCH for-2.5 2/4] pc-bios/s390-ccw: rebuild image 2015-11-27 10:07 [Qemu-devel] [PATCH for-2.5 0/4] s390x fixes for 2.5-rc3 Cornelia Huck 2015-11-27 10:07 ` [Qemu-devel] [PATCH for-2.5 1/4] pc-bios/s390-ccw: build for z900 Cornelia Huck @ 2015-11-27 10:07 ` Cornelia Huck 2015-11-27 10:07 ` [Qemu-devel] [PATCH for-2.5 3/4] s390x: no deprecation warning while testing Cornelia Huck 2015-11-27 10:07 ` [Qemu-devel] [PATCH for-2.5 4/4] s390x/pci: fix up IOMMU size Cornelia Huck 3 siblings, 0 replies; 7+ messages in thread From: Cornelia Huck @ 2015-11-27 10:07 UTC (permalink / raw) To: qemu-devel; +Cc: Cornelia Huck, borntraeger, jfrei, agraf Contains: - pc-bios/s390-ccw: build for z900 Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com> --- pc-bios/s390-ccw.img | Bin 17760 -> 17760 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/pc-bios/s390-ccw.img b/pc-bios/s390-ccw.img index e0d9452945668fa74402c2caf942fc6eec1a9701..bd8f21050fd7c396eb0e37213d284fe557caa01e 100644 GIT binary patch literal 17760 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 Zv+%j)j}^Z>m-6_k%|Ukxkh>N={TG%vUitt4 literal 17760 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 aKAs>BpXvB##qS6-Pnij5A2DFbqyGtKI58~% -- 2.6.3 ^ permalink raw reply [flat|nested] 7+ messages in thread
* [Qemu-devel] [PATCH for-2.5 3/4] s390x: no deprecation warning while testing 2015-11-27 10:07 [Qemu-devel] [PATCH for-2.5 0/4] s390x fixes for 2.5-rc3 Cornelia Huck 2015-11-27 10:07 ` [Qemu-devel] [PATCH for-2.5 1/4] pc-bios/s390-ccw: build for z900 Cornelia Huck 2015-11-27 10:07 ` [Qemu-devel] [PATCH for-2.5 2/4] pc-bios/s390-ccw: rebuild image Cornelia Huck @ 2015-11-27 10:07 ` Cornelia Huck 2015-11-27 11:11 ` Christian Borntraeger 2015-11-30 11:49 ` Michael S. Tsirkin 2015-11-27 10:07 ` [Qemu-devel] [PATCH for-2.5 4/4] s390x/pci: fix up IOMMU size Cornelia Huck 3 siblings, 2 replies; 7+ messages in thread From: Cornelia Huck @ 2015-11-27 10:07 UTC (permalink / raw) To: qemu-devel; +Cc: Cornelia Huck, borntraeger, jfrei, agraf 'make check' tries to start all available machines; the deprecation message for the s390-virtio machine is both useless and annoying there. Silence it while testing. Reported-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com> --- hw/s390x/s390-virtio.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/hw/s390x/s390-virtio.c b/hw/s390x/s390-virtio.c index 51dc0a8..ae55760 100644 --- a/hw/s390x/s390-virtio.c +++ b/hw/s390x/s390-virtio.c @@ -33,6 +33,7 @@ #include "hw/virtio/virtio.h" #include "sysemu/kvm.h" #include "exec/address-spaces.h" +#include "sysemu/qtest.h" #include "hw/s390x/s390-virtio-bus.h" #include "hw/s390x/sclp.h" @@ -268,9 +269,11 @@ static void s390_init(MachineState *machine) hwaddr virtio_region_len; hwaddr virtio_region_start; - error_printf("WARNING\n" - "The s390-virtio machine (non-ccw) is deprecated.\n" - "It will be removed in 2.6. Please use s390-ccw-virtio\n"); + if (!qtest_enabled()) { + error_printf("WARNING\n" + "The s390-virtio machine (non-ccw) is deprecated.\n" + "It will be removed in 2.6. Please use s390-ccw-virtio\n"); + } if (machine->ram_slots) { error_report("Memory hotplug not supported by the selected machine."); -- 2.6.3 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [Qemu-devel] [PATCH for-2.5 3/4] s390x: no deprecation warning while testing 2015-11-27 10:07 ` [Qemu-devel] [PATCH for-2.5 3/4] s390x: no deprecation warning while testing Cornelia Huck @ 2015-11-27 11:11 ` Christian Borntraeger 2015-11-30 11:49 ` Michael S. Tsirkin 1 sibling, 0 replies; 7+ messages in thread From: Christian Borntraeger @ 2015-11-27 11:11 UTC (permalink / raw) To: Cornelia Huck, qemu-devel; +Cc: jfrei, agraf On 11/27/2015 11:07 AM, Cornelia Huck wrote: > 'make check' tries to start all available machines; the deprecation > message for the s390-virtio machine is both useless and annoying > there. Silence it while testing. > > Reported-by: Michael S. Tsirkin <mst@redhat.com> > Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com> Acked-by: Christian Borntraeger <borntraeger@de.ibm.com> > --- > hw/s390x/s390-virtio.c | 9 ++++++--- > 1 file changed, 6 insertions(+), 3 deletions(-) > > diff --git a/hw/s390x/s390-virtio.c b/hw/s390x/s390-virtio.c > index 51dc0a8..ae55760 100644 > --- a/hw/s390x/s390-virtio.c > +++ b/hw/s390x/s390-virtio.c > @@ -33,6 +33,7 @@ > #include "hw/virtio/virtio.h" > #include "sysemu/kvm.h" > #include "exec/address-spaces.h" > +#include "sysemu/qtest.h" > > #include "hw/s390x/s390-virtio-bus.h" > #include "hw/s390x/sclp.h" > @@ -268,9 +269,11 @@ static void s390_init(MachineState *machine) > hwaddr virtio_region_len; > hwaddr virtio_region_start; > > - error_printf("WARNING\n" > - "The s390-virtio machine (non-ccw) is deprecated.\n" > - "It will be removed in 2.6. Please use s390-ccw-virtio\n"); > + if (!qtest_enabled()) { > + error_printf("WARNING\n" > + "The s390-virtio machine (non-ccw) is deprecated.\n" > + "It will be removed in 2.6. Please use s390-ccw-virtio\n"); > + } > > if (machine->ram_slots) { > error_report("Memory hotplug not supported by the selected machine."); > ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [Qemu-devel] [PATCH for-2.5 3/4] s390x: no deprecation warning while testing 2015-11-27 10:07 ` [Qemu-devel] [PATCH for-2.5 3/4] s390x: no deprecation warning while testing Cornelia Huck 2015-11-27 11:11 ` Christian Borntraeger @ 2015-11-30 11:49 ` Michael S. Tsirkin 1 sibling, 0 replies; 7+ messages in thread From: Michael S. Tsirkin @ 2015-11-30 11:49 UTC (permalink / raw) To: Cornelia Huck; +Cc: borntraeger, jfrei, qemu-devel, agraf On Fri, Nov 27, 2015 at 11:07:05AM +0100, Cornelia Huck wrote: > 'make check' tries to start all available machines; the deprecation > message for the s390-virtio machine is both useless and annoying > there. Silence it while testing. > > Reported-by: Michael S. Tsirkin <mst@redhat.com> > Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com> Acked-by: Michael S. Tsirkin <mst@redhat.com> > --- > hw/s390x/s390-virtio.c | 9 ++++++--- > 1 file changed, 6 insertions(+), 3 deletions(-) > > diff --git a/hw/s390x/s390-virtio.c b/hw/s390x/s390-virtio.c > index 51dc0a8..ae55760 100644 > --- a/hw/s390x/s390-virtio.c > +++ b/hw/s390x/s390-virtio.c > @@ -33,6 +33,7 @@ > #include "hw/virtio/virtio.h" > #include "sysemu/kvm.h" > #include "exec/address-spaces.h" > +#include "sysemu/qtest.h" > > #include "hw/s390x/s390-virtio-bus.h" > #include "hw/s390x/sclp.h" > @@ -268,9 +269,11 @@ static void s390_init(MachineState *machine) > hwaddr virtio_region_len; > hwaddr virtio_region_start; > > - error_printf("WARNING\n" > - "The s390-virtio machine (non-ccw) is deprecated.\n" > - "It will be removed in 2.6. Please use s390-ccw-virtio\n"); > + if (!qtest_enabled()) { > + error_printf("WARNING\n" > + "The s390-virtio machine (non-ccw) is deprecated.\n" > + "It will be removed in 2.6. Please use s390-ccw-virtio\n"); > + } > > if (machine->ram_slots) { > error_report("Memory hotplug not supported by the selected machine."); > -- > 2.6.3 > ^ permalink raw reply [flat|nested] 7+ messages in thread
* [Qemu-devel] [PATCH for-2.5 4/4] s390x/pci: fix up IOMMU size 2015-11-27 10:07 [Qemu-devel] [PATCH for-2.5 0/4] s390x fixes for 2.5-rc3 Cornelia Huck ` (2 preceding siblings ...) 2015-11-27 10:07 ` [Qemu-devel] [PATCH for-2.5 3/4] s390x: no deprecation warning while testing Cornelia Huck @ 2015-11-27 10:07 ` Cornelia Huck 3 siblings, 0 replies; 7+ messages in thread From: Cornelia Huck @ 2015-11-27 10:07 UTC (permalink / raw) To: qemu-devel; +Cc: Cornelia Huck, borntraeger, jfrei, Yi Min Zhao, agraf From: Yi Min Zhao <zyimin@linux.vnet.ibm.com> Present code uses @size==UINT64_MAX to initialize IOMMU. It infers that it can map any 64-bit IOVA whatsoever. But in fact, the largest DMA range for each PCI Device on s390x is from ZPCI_SDMA_ADDR to ZPCI_EDMA_ADDR. The largest value is returned from hardware, which is to indicate the largest range hardware can support. But the real IOMMU size for specific PCI Device is obtained once qemu intercepts mpcifc instruction that guest is requesting a DMA range for that PCI Device. Therefore, before intercepting mpcifc instruction, qemu cannot be aware of the size of IOMMU region that guest will use. Moreover, iommu replay during device initialization for the whole region in 4k steps takes a very long time. In conclusion, this patch intializes IOMMU region for each PCI Device when intercept mpcifc instruction which is to register DMA range for the PCI Device. And then, destroy IOMMU region when guest wants to deregister IOAT. Signed-off-by: Yi Min Zhao <zyimin@linux.vnet.ibm.com> Reviewed-by: Cornelia Huck <cornelia.huck@de.ibm.com> Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com> --- hw/s390x/s390-pci-bus.c | 26 ++++++++++++++++++++++---- hw/s390x/s390-pci-bus.h | 2 ++ hw/s390x/s390-pci-inst.c | 7 ++++++- 3 files changed, 30 insertions(+), 5 deletions(-) diff --git a/hw/s390x/s390-pci-bus.c b/hw/s390x/s390-pci-bus.c index d5712ae..98c726c 100644 --- a/hw/s390x/s390-pci-bus.c +++ b/hw/s390x/s390-pci-bus.c @@ -308,7 +308,7 @@ static IOMMUTLBEntry s390_translate_iommu(MemoryRegion *iommu, hwaddr addr, { uint64_t pte; uint32_t flags; - S390PCIBusDevice *pbdev = container_of(iommu, S390PCIBusDevice, mr); + S390PCIBusDevice *pbdev = container_of(iommu, S390PCIBusDevice, iommu_mr); S390pciState *s; IOMMUTLBEntry ret = { .target_as = &address_space_memory, @@ -454,14 +454,32 @@ static const MemoryRegionOps s390_msi_ctrl_ops = { .endianness = DEVICE_LITTLE_ENDIAN, }; +void s390_pcihost_iommu_configure(S390PCIBusDevice *pbdev, bool enable) +{ + pbdev->configured = false; + + 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); + } + + pbdev->configured = true; +} + static void s390_pcihost_init_as(S390pciState *s) { int i; + S390PCIBusDevice *pbdev; for (i = 0; i < PCI_SLOT_MAX; i++) { - memory_region_init_iommu(&s->pbdev[i].mr, OBJECT(s), - &s390_iommu_ops, "iommu-s390", UINT64_MAX); - address_space_init(&s->pbdev[i].as, &s->pbdev[i].mr, "iommu-pci"); + pbdev = &s->pbdev[i]; + memory_region_init(&pbdev->mr, OBJECT(s), + "iommu-root-s390", UINT64_MAX); + address_space_init(&pbdev->as, &pbdev->mr, "iommu-pci"); } memory_region_init_io(&s->msix_notify_mr, OBJECT(s), diff --git a/hw/s390x/s390-pci-bus.h b/hw/s390x/s390-pci-bus.h index 464a92e..80345da 100644 --- a/hw/s390x/s390-pci-bus.h +++ b/hw/s390x/s390-pci-bus.h @@ -231,6 +231,7 @@ typedef struct S390PCIBusDevice { AdapterRoutes routes; AddressSpace as; MemoryRegion mr; + MemoryRegion iommu_mr; } S390PCIBusDevice; typedef struct S390pciState { @@ -244,6 +245,7 @@ typedef struct S390pciState { int chsc_sei_nt2_get_event(void *res); int chsc_sei_nt2_have_event(void); void s390_pci_sclp_configure(int configure, SCCB *sccb); +void s390_pcihost_iommu_configure(S390PCIBusDevice *pbdev, bool enable); 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 f9151a9..8c1dc82 100644 --- a/hw/s390x/s390-pci-inst.c +++ b/hw/s390x/s390-pci-inst.c @@ -528,7 +528,7 @@ int rpcit_service_call(S390CPU *cpu, uint8_t r1, uint8_t r2) goto out; } - mr = pci_device_iommu_address_space(pbdev->pdev)->root; + mr = &pbdev->iommu_mr; while (start < end) { entry = mr->iommu_ops->translate(mr, start, 0); @@ -689,6 +689,9 @@ static int reg_ioat(CPUS390XState *env, S390PCIBusDevice *pbdev, ZpciFib fib) pbdev->pba = pba; pbdev->pal = pal; pbdev->g_iota = g_iota; + + s390_pcihost_iommu_configure(pbdev, true); + return 0; } @@ -697,6 +700,8 @@ static void dereg_ioat(S390PCIBusDevice *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.6.3 ^ permalink raw reply related [flat|nested] 7+ messages in thread
end of thread, other threads:[~2015-11-30 11:50 UTC | newest] Thread overview: 7+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2015-11-27 10:07 [Qemu-devel] [PATCH for-2.5 0/4] s390x fixes for 2.5-rc3 Cornelia Huck 2015-11-27 10:07 ` [Qemu-devel] [PATCH for-2.5 1/4] pc-bios/s390-ccw: build for z900 Cornelia Huck 2015-11-27 10:07 ` [Qemu-devel] [PATCH for-2.5 2/4] pc-bios/s390-ccw: rebuild image Cornelia Huck 2015-11-27 10:07 ` [Qemu-devel] [PATCH for-2.5 3/4] s390x: no deprecation warning while testing Cornelia Huck 2015-11-27 11:11 ` Christian Borntraeger 2015-11-30 11:49 ` Michael S. Tsirkin 2015-11-27 10:07 ` [Qemu-devel] [PATCH for-2.5 4/4] s390x/pci: fix up IOMMU size Cornelia Huck
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).