On Wed, 25 Nov 2020 12:06:46 +0100 Thomas Huth <th...@redhat.com> wrote:
> Newer versions of the QEMU guest agent will provide the CCW address > of devices on s390x. Store this information in the qemuAgentDiskInfo > so that we can use this later. > > We also map the CSSID 0 from the guest to the value 0xfe on the host, > see https://www.qemu.org/docs/master/system/s390x/css.html for details. > > Signed-off-by: Thomas Huth <th...@redhat.com> > --- > src/qemu/qemu_agent.c | 11 +++++++++++ > src/qemu/qemu_agent.h | 2 ++ > 2 files changed, 13 insertions(+) > (...) > @@ -1916,6 +1917,16 @@ qemuAgentGetFSInfoFillDisks(virJSONValuePtr jsondisks, > GET_DISK_ADDR(pci, &disk->pci_controller.bus, "bus"); > GET_DISK_ADDR(pci, &disk->pci_controller.slot, "slot"); > GET_DISK_ADDR(pci, &disk->pci_controller.function, "function"); > + > + if ((ccw = virJSONValueObjectGet(jsondisk, "ccw-address"))) { > + disk->has_ccw_address = true; > + GET_DISK_ADDR(ccw, &disk->ccw_addr.cssid, "cssid"); > + if (disk->ccw_addr.cssid == 0) /* Guest CSSID 0 is 0xfe on host > */ > + disk->ccw_addr.cssid = 0xfe; This will be true for any guest that doesn't support MCSS-E. I don't see any MCSS-E enablement coming up in the foreseeable future (in fact, I get the impression that this feature is rather dead, and QEMU remains the only implementation anyway), so this should be fine. > + GET_DISK_ADDR(ccw, &disk->ccw_addr.ssid, "ssid"); > + GET_DISK_ADDR(ccw, &disk->ccw_addr.devno, "devno"); > + } > + > #undef GET_DISK_ADDR > } > (...)