Gentle ping On Wed, Sep 11, 2019 at 5:36 PM Sam Eiderman <sam...@google.com> wrote: > > Gentle ping > > On Tue, Aug 27, 2019, 11:24 Sam Eiderman <sam...@google.com> wrote: >> >> v1: >> >> Non-standard logical geometries break under QEMU. >> >> A virtual disk which contains an operating system which depends on >> logical geometries (consistent values being reported from BIOS INT13 >> AH=08) will most likely break under QEMU/SeaBIOS if it has non-standard >> logical geometries - for example 56 SPT (sectors per track). >> No matter what QEMU will guess - SeaBIOS, for large enough disks - will >> use LBA translation, which will report 63 SPT instead. >> >> In addition we can not enforce SeaBIOS to rely on phyiscal geometries at >> all. A virtio-blk-pci virtual disk with 255 phyiscal heads can not >> report more than 16 physical heads when moved to an IDE controller, the >> ATA spec allows a maximum of 16 heads - this is an artifact of >> virtualization. >> >> By supplying the logical geometies directly we are able to support such >> "exotic" disks. >> >> We will use fw_cfg to do just that. >> >> v2: >> >> Fix missing parenthesis check in >> "hd-geo-test: Add tests for lchs override" >> >> v3: >> >> * Rename fw_cfg key to "bios-geometry". >> * Remove "extendible" interface. >> * Add cpu_to_le32 fix as Laszlo suggested or big endian hosts >> * Fix last qtest commit - automatic docker tester for some reason does not >> have qemu-img set >> >> v4: >> >> * Change fw_cfg interface from mixed textual/binary to textual only >> >> v5: >> >> * Fix line > 80 chars in tests/hd-geo-test.c >> >> v6: >> >> * Small fixes for issues pointed by Max >> * (&conf->conf)->lcyls to conf->conf.lcyls and so on >> * Remove scsi_unrealize from everything other than scsi-hd >> * Add proper include to sysemu.h >> * scsi_device_unrealize() after scsi_device_purge_requests() >> >> Sam Eiderman (8): >> block: Refactor macros - fix tabbing >> block: Support providing LCHS from user >> bootdevice: Add interface to gather LCHS >> scsi: Propagate unrealize() callback to scsi-hd >> bootdevice: Gather LCHS from all relevant devices >> bootdevice: Refactor get_boot_devices_list >> bootdevice: FW_CFG interface for LCHS values >> hd-geo-test: Add tests for lchs override >> >> bootdevice.c | 148 ++++++++-- >> hw/block/virtio-blk.c | 6 + >> hw/ide/qdev.c | 7 +- >> hw/nvram/fw_cfg.c | 14 +- >> hw/scsi/scsi-bus.c | 16 ++ >> hw/scsi/scsi-disk.c | 12 + >> include/hw/block/block.h | 22 +- >> include/hw/scsi/scsi.h | 1 + >> include/sysemu/sysemu.h | 4 + >> tests/Makefile.include | 2 +- >> tests/hd-geo-test.c | 582 +++++++++++++++++++++++++++++++++++++++ >> 11 files changed, 773 insertions(+), 41 deletions(-) >> >> -- >> 2.23.0.187.g17f5b7556c-goog >>