[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 07/21] pc-bios/s390-ccw: Build a reasonable max_secto
From: |
Cornelia Huck |
Subject: |
[Qemu-devel] [PULL 07/21] pc-bios/s390-ccw: Build a reasonable max_sectors limit |
Date: |
Tue, 23 May 2017 13:12:52 +0200 |
From: Eric Farman <address@hidden>
Now that we've read all the possible limits that have been defined for
a virtio-scsi controller and the disk we're booting from, it's possible
that we are STILL going to exceed the limits of the host device.
For example, a "-device scsi-generic" device does not support the
Block Limits VPD page.
So, let's fallback to something that seems to work for most boot
configurations if larger values were specified (including if nothing
was explicitly specified, and we took default values).
Signed-off-by: Eric Farman <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Cornelia Huck <address@hidden>
---
pc-bios/s390-ccw/virtio-scsi.c | 9 +++++++++
pc-bios/s390-ccw/virtio-scsi.h | 2 ++
2 files changed, 11 insertions(+)
diff --git a/pc-bios/s390-ccw/virtio-scsi.c b/pc-bios/s390-ccw/virtio-scsi.c
index b722f25ad7..f61ecf0205 100644
--- a/pc-bios/s390-ccw/virtio-scsi.c
+++ b/pc-bios/s390-ccw/virtio-scsi.c
@@ -399,6 +399,15 @@ void virtio_scsi_setup(VDev *vdev)
vdev->max_transfer = evpd_bl->max_transfer;
}
+ /*
+ * The host sg driver will often be unhappy with particularly large
+ * I/Os that exceed the block iovec limits. Let's enforce something
+ * reasonable, despite what the device configuration tells us.
+ */
+
+ vdev->max_transfer = MIN_NON_ZERO(VIRTIO_SCSI_MAX_SECTORS,
+ vdev->max_transfer);
+
if (!scsi_read_capacity(vdev, data, data_size)) {
virtio_scsi_verify_response(&resp, "virtio-scsi:setup:read_capacity");
}
diff --git a/pc-bios/s390-ccw/virtio-scsi.h b/pc-bios/s390-ccw/virtio-scsi.h
index f50b38b18b..4c4f4bbc31 100644
--- a/pc-bios/s390-ccw/virtio-scsi.h
+++ b/pc-bios/s390-ccw/virtio-scsi.h
@@ -19,6 +19,8 @@
#define VIRTIO_SCSI_CDB_SIZE SCSI_DEFAULT_CDB_SIZE
#define VIRTIO_SCSI_SENSE_SIZE SCSI_DEFAULT_SENSE_SIZE
+#define VIRTIO_SCSI_MAX_SECTORS 2048
+
/* command-specific response values */
#define VIRTIO_SCSI_S_OK 0x00
#define VIRTIO_SCSI_S_BAD_TARGET 0x03
--
2.13.0
- [Qemu-devel] [PULL 00/21] s390x patches, Cornelia Huck, 2017/05/23
- [Qemu-devel] [PULL 01/21] pc-bios/s390-ccw: Remove duplicate blk_factor adjustment, Cornelia Huck, 2017/05/23
- [Qemu-devel] [PULL 02/21] pc-bios/s390-ccw: Move SCSI block factor to outer read, Cornelia Huck, 2017/05/23
- [Qemu-devel] [PULL 04/21] pc-bios/s390-ccw: Refactor scsi_inquiry function, Cornelia Huck, 2017/05/23
- [Qemu-devel] [PULL 05/21] pc-bios/s390-ccw: Get list of supported VPD pages, Cornelia Huck, 2017/05/23
- [Qemu-devel] [PULL 06/21] pc-bios/s390-ccw: Get Block Limits VPD device data, Cornelia Huck, 2017/05/23
- [Qemu-devel] [PULL 07/21] pc-bios/s390-ccw: Build a reasonable max_sectors limit,
Cornelia Huck <=
- [Qemu-devel] [PULL 03/21] pc-bios/s390-ccw: Break up virtio-scsi read into multiples, Cornelia Huck, 2017/05/23
- [Qemu-devel] [PULL 08/21] pc-bios/s390-ccw.img: rebuild image, Cornelia Huck, 2017/05/23
- [Qemu-devel] [PULL 09/21] linux-headers: update, Cornelia Huck, 2017/05/23
- [Qemu-devel] [PULL 10/21] s390x/css: add s390-squash-mcss machine option, Cornelia Huck, 2017/05/23
- [Qemu-devel] [PULL 13/21] s390x/css: device support for s390-ccw passthrough, Cornelia Huck, 2017/05/23
- [Qemu-devel] [PULL 12/21] s390x/css: realize css_create_sch, Cornelia Huck, 2017/05/23
- [Qemu-devel] [PULL 14/21] vfio/ccw: vfio based subchannel passthrough driver, Cornelia Huck, 2017/05/23
- [Qemu-devel] [PULL 11/21] s390x/css: realize css_sch_build_schib, Cornelia Huck, 2017/05/23
- [Qemu-devel] [PULL 20/21] MAINTAINERS: Add vfio-ccw maintainer, Cornelia Huck, 2017/05/23
- [Qemu-devel] [PULL 16/21] vfio/ccw: get irqs info and set the eventfd fd, Cornelia Huck, 2017/05/23