[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 07/21] pc-bios/s390-ccw: Build a reasonable max_sect
From: |
Cornelia Huck |
Subject: |
[Qemu-devel] [PATCH 07/21] pc-bios/s390-ccw: Build a reasonable max_sectors limit |
Date: |
Fri, 19 May 2017 12:55:46 +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] [PATCH 00/21] s390x changes, Cornelia Huck, 2017/05/19
- [Qemu-devel] [PATCH 02/21] pc-bios/s390-ccw: Move SCSI block factor to outer read, Cornelia Huck, 2017/05/19
- [Qemu-devel] [PATCH 01/21] pc-bios/s390-ccw: Remove duplicate blk_factor adjustment, Cornelia Huck, 2017/05/19
- [Qemu-devel] [PATCH 03/21] pc-bios/s390-ccw: Break up virtio-scsi read into multiples, Cornelia Huck, 2017/05/19
- [Qemu-devel] [PATCH 04/21] pc-bios/s390-ccw: Refactor scsi_inquiry function, Cornelia Huck, 2017/05/19
- [Qemu-devel] [PATCH 07/21] pc-bios/s390-ccw: Build a reasonable max_sectors limit,
Cornelia Huck <=
- [Qemu-devel] [PATCH 06/21] pc-bios/s390-ccw: Get Block Limits VPD device data, Cornelia Huck, 2017/05/19
- [Qemu-devel] [PATCH 05/21] pc-bios/s390-ccw: Get list of supported VPD pages, Cornelia Huck, 2017/05/19
- [Qemu-devel] [PATCH 11/21] s390x/css: realize css_sch_build_schib, Cornelia Huck, 2017/05/19
- [Qemu-devel] [PATCH 12/21] s390x/css: realize css_create_sch, Cornelia Huck, 2017/05/19
- [Qemu-devel] [PATCH 08/21] pc-bios/s390-ccw.img: rebuild image, Cornelia Huck, 2017/05/19
- [Qemu-devel] [PATCH 10/21] s390x/css: add s390-squash-mcss machine option, Cornelia Huck, 2017/05/19
- [Qemu-devel] [PATCH 09/21] linux-headers: update, Cornelia Huck, 2017/05/19
- [Qemu-devel] [PATCH 14/21] vfio/ccw: vfio based subchannel passthrough driver, Cornelia Huck, 2017/05/19
- [Qemu-devel] [PATCH 15/21] vfio/ccw: get io region info, Cornelia Huck, 2017/05/19
- [Qemu-devel] [PATCH 13/21] s390x/css: device support for s390-ccw passthrough, Cornelia Huck, 2017/05/19