[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-block] [QEMU] [PATCH 0/8] Add Qemu to SeaBIOS LCHS interface
From: |
Sam Eiderman |
Subject: |
[Qemu-block] [QEMU] [PATCH 0/8] Add Qemu to SeaBIOS LCHS interface |
Date: |
Wed, 12 Jun 2019 12:42:29 +0300 |
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.
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 | 158 ++++++++++---
hw/block/virtio-blk.c | 6 +
hw/ide/qdev.c | 7 +-
hw/nvram/fw_cfg.c | 14 +-
hw/scsi/scsi-bus.c | 15 ++
hw/scsi/scsi-disk.c | 14 ++
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 | 565 +++++++++++++++++++++++++++++++++++++++++++++++
11 files changed, 767 insertions(+), 41 deletions(-)
--
2.13.3
- [Qemu-block] [QEMU] [PATCH 0/8] Add Qemu to SeaBIOS LCHS interface,
Sam Eiderman <=
- [Qemu-block] [QEMU] [PATCH 1/8] block: Refactor macros - fix tabbing, Sam Eiderman, 2019/06/12
- [Qemu-block] [QEMU] [PATCH 2/8] block: Support providing LCHS from user, Sam Eiderman, 2019/06/12
- [Qemu-block] [QEMU] [PATCH 3/8] bootdevice: Add interface to gather LCHS, Sam Eiderman, 2019/06/12
- [Qemu-block] [QEMU] [PATCH 4/8] scsi: Propagate unrealize() callback to scsi-hd, Sam Eiderman, 2019/06/12
- [Qemu-block] [QEMU] [PATCH 5/8] bootdevice: Gather LCHS from all relevant devices, Sam Eiderman, 2019/06/12
- [Qemu-block] [QEMU] [PATCH 6/8] bootdevice: Refactor get_boot_devices_list, Sam Eiderman, 2019/06/12
- [Qemu-block] [QEMU] [PATCH 7/8] bootdevice: FW_CFG interface for LCHS values, Sam Eiderman, 2019/06/12
- [Qemu-block] [QEMU] [PATCH 8/8] hd-geo-test: Add tests for lchs override, Sam Eiderman, 2019/06/12