[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-block] [QEMU] [PATCH v4 7/8] bootdevice: FW_CFG interface for
From: |
Gerd Hoffmann |
Subject: |
Re: [Qemu-block] [QEMU] [PATCH v4 7/8] bootdevice: FW_CFG interface for LCHS values |
Date: |
Thu, 20 Jun 2019 07:48:28 +0200 |
User-agent: |
NeoMutt/20180716 |
On Wed, Jun 19, 2019 at 12:29:04PM +0300, Sam Eiderman wrote:
> Using fw_cfg, supply logical CHS values directly from QEMU to the BIOS.
>
> 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 report - SeaBIOS, for large enough disks - will
> use LBA translation, which will report 63 SPT instead.
>
> In addition we cannot force SeaBIOS to rely on physical geometries at
> all. A virtio-blk-pci virtual disk with 255 phyiscal heads cannot
> report more than 16 physical heads when moved to an IDE controller,
> since the ATA spec allows a maximum of 16 heads - this is an artifact of
> virtualization.
>
> By supplying the logical geometries directly we are able to support such
> "exotic" disks.
>
> We serialize this information in a similar way to the "bootorder"
> interface.
> The new fw_cfg entry is "bios-geometry".
>
> Reviewed-by: Karl Heubaum <address@hidden>
> Reviewed-by: Arbel Moshe <address@hidden>
> Signed-off-by: Sam Eiderman <address@hidden>
> ---
> bootdevice.c | 32 ++++++++++++++++++++++++++++++++
> hw/nvram/fw_cfg.c | 14 +++++++++++---
> include/sysemu/sysemu.h | 1 +
> 3 files changed, 44 insertions(+), 3 deletions(-)
>
> diff --git a/bootdevice.c b/bootdevice.c
> index 2b12fb85a4..b034ad7bdc 100644
> --- a/bootdevice.c
> +++ b/bootdevice.c
> @@ -405,3 +405,35 @@ void del_boot_device_lchs(DeviceState *dev, const char
> *suffix)
> }
> }
> }
> +
> +/* Serialized as: (device name\0 + lchs struct) x devices */
Comment is outdated.
> + if (!mc->legacy_fw_cfg_order) {
> + buf = get_boot_devices_lchs_list(&len);
> + ptr = fw_cfg_modify_file(s, "bios-geometry", (uint8_t *)buf, len);
Can fw_cfg_modify_file handle buf == NULL?
cheers,
Gerd
- [Qemu-block] [QEMU] [PATCH v4 0/8] Add Qemu to SeaBIOS LCHS interface, Sam Eiderman, 2019/06/19
- [Qemu-block] [QEMU] [PATCH v4 2/8] block: Support providing LCHS from user, Sam Eiderman, 2019/06/19
- [Qemu-block] [QEMU] [PATCH v4 3/8] bootdevice: Add interface to gather LCHS, Sam Eiderman, 2019/06/19
- [Qemu-block] [QEMU] [PATCH v4 1/8] block: Refactor macros - fix tabbing, Sam Eiderman, 2019/06/19
- [Qemu-block] [QEMU] [PATCH v4 5/8] bootdevice: Gather LCHS from all relevant devices, Sam Eiderman, 2019/06/19
- [Qemu-block] [QEMU] [PATCH v4 8/8] hd-geo-test: Add tests for lchs override, Sam Eiderman, 2019/06/19
- [Qemu-block] [QEMU] [PATCH v4 6/8] bootdevice: Refactor get_boot_devices_list, Sam Eiderman, 2019/06/19
- [Qemu-block] [QEMU] [PATCH v4 4/8] scsi: Propagate unrealize() callback to scsi-hd, Sam Eiderman, 2019/06/19
- [Qemu-block] [QEMU] [PATCH v4 7/8] bootdevice: FW_CFG interface for LCHS values, Sam Eiderman, 2019/06/19
- Re: [Qemu-block] [QEMU] [PATCH v4 7/8] bootdevice: FW_CFG interface for LCHS values,
Gerd Hoffmann <=
- Re: [Qemu-block] [SeaBIOS] [QEMU] [PATCH v4 0/8] Add Qemu to SeaBIOS LCHS interface, no-reply, 2019/06/19
- Re: [Qemu-block] [SeaBIOS] [QEMU] [PATCH v4 0/8] Add Qemu to SeaBIOS LCHS interface, no-reply, 2019/06/19
- Re: [Qemu-block] [SeaBIOS] [QEMU] [PATCH v4 0/8] Add Qemu to SeaBIOS LCHS interface, no-reply, 2019/06/19