[SeaBIOS] [QEMU] [PATCH v5 0/8] Add Qemu to SeaBIOS LCHS interface

Sam Eiderman posted 8 patches 15 weeks ago
Failed in applying to current master (apply log)
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       |  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      | 582 +++++++++++++++++++++++++++++++++++++++++++++++
11 files changed, 774 insertions(+), 41 deletions(-)

[SeaBIOS] [QEMU] [PATCH v5 0/8] Add Qemu to SeaBIOS LCHS interface

Posted by Sam Eiderman 15 weeks ago
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

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       |  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      | 582 +++++++++++++++++++++++++++++++++++++++++++++++
 11 files changed, 774 insertions(+), 41 deletions(-)

-- 
2.13.3
_______________________________________________
SeaBIOS mailing list -- seabios@seabios.org
To unsubscribe send an email to seabios-leave@seabios.org

Re: [Qemu-devel] [QEMU] [PATCH v5 0/8] Add Qemu to SeaBIOS LCHS interface

Posted by Max Reitz 9 weeks ago
On 26.06.19 14:39, Sam Eiderman 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.

(From a block perspective,) I didn’t find anything too bad, so:

Acked-by: Max Reitz <mreitz@redhat.com>

[SeaBIOS] Re: [QEMU] [PATCH v5 0/8] Add Qemu to SeaBIOS LCHS interface

Posted by Gerd Hoffmann 15 weeks ago
On Wed, Jun 26, 2019 at 03:39:40PM +0300, Sam Eiderman 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

Reviewed-by: Gerd Hoffmann <kraxel@redhat.com>

cheers,
  Gerd
_______________________________________________
SeaBIOS mailing list -- seabios@seabios.org
To unsubscribe send an email to seabios-leave@seabios.org

[SeaBIOS] Re: [QEMU] [PATCH v5 0/8] Add Qemu to SeaBIOS LCHS interface

Posted by Sam Eiderman 14 weeks ago
Thanks Gerd,

Gentle ping on this.

Sam

> On 1 Jul 2019, at 10:41, Gerd Hoffmann <kraxel@redhat.com> wrote:
> 
> On Wed, Jun 26, 2019 at 03:39:40PM +0300, Sam Eiderman 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
> 
> Reviewed-by: Gerd Hoffmann <kraxel@redhat.com>
> 
> cheers,
>  Gerd
> 
_______________________________________________
SeaBIOS mailing list -- seabios@seabios.org
To unsubscribe send an email to seabios-leave@seabios.org

Re: [Qemu-devel] [QEMU] [PATCH v5 0/8] Add Qemu to SeaBIOS LCHS interface

Posted by Sam Eiderman 12 weeks ago
Gentle ping.

Sam

> On 8 Jul 2019, at 20:30, Sam Eiderman <shmuel.eiderman@oracle.com> wrote:
> 
> Thanks Gerd,
> 
> Gentle ping on this.
> 
> Sam
> 
>> On 1 Jul 2019, at 10:41, Gerd Hoffmann <kraxel@redhat.com> wrote:
>> 
>> On Wed, Jun 26, 2019 at 03:39:40PM +0300, Sam Eiderman 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
>> 
>> Reviewed-by: Gerd Hoffmann <kraxel@redhat.com>
>> 
>> cheers,
>> Gerd
>> 
> 


[SeaBIOS] Re: [QEMU] [PATCH v5 0/8] Add Qemu to SeaBIOS LCHS interface

Posted by Kevin Wolf 12 weeks ago
Am 17.07.2019 um 21:03 hat Sam Eiderman geschrieben:
> Gentle ping.

Through which tree is this supposed to go? I feel this is more firmware
interface related than block layer stuff.

Kevin

> > On 8 Jul 2019, at 20:30, Sam Eiderman <shmuel.eiderman@oracle.com> wrote:
> > 
> > Thanks Gerd,
> > 
> > Gentle ping on this.
> > 
> > Sam
> > 
> >> On 1 Jul 2019, at 10:41, Gerd Hoffmann <kraxel@redhat.com> wrote:
> >> 
> >> On Wed, Jun 26, 2019 at 03:39:40PM +0300, Sam Eiderman 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
> >> 
> >> Reviewed-by: Gerd Hoffmann <kraxel@redhat.com>
> >> 
> >> cheers,
> >> Gerd
> >> 
> > 
> 
_______________________________________________
SeaBIOS mailing list -- seabios@seabios.org
To unsubscribe send an email to seabios-leave@seabios.org

[SeaBIOS] Re: [QEMU] [PATCH v5 0/8] Add Qemu to SeaBIOS LCHS interface

Posted by Sam Eiderman 12 weeks ago
Well, this patch introduces 3 command line parameters (“lcyls”, “lheads”, “lsecs”)
to “scsi-hd” “ide-hd” and “virtio-pci-blk” so this somehow has something to do with
block.

This patch also adds fw_cfg interface to send these parameters to SeaBIOS.

"scripts/get_maintainer.pl -f hw/nvram/fw_cfg.c” gives

"Philippe Mathieu-Daudé" <philmd@redhat.com> (supporter:Firmware configur...)
Laszlo Ersek <lersek@redhat.com> (reviewer:Firmware configur...)
Gerd Hoffmann <kraxel@redhat.com> (reviewer:Firmware configur…)

And this was already Reviewed-by Gerd.

How should I proceed?

Sam

> On 17 Jul 2019, at 22:46, Kevin Wolf <kwolf@redhat.com> wrote:
> 
> Am 17.07.2019 um 21:03 hat Sam Eiderman geschrieben:
>> Gentle ping.
> 
> Through which tree is this supposed to go? I feel this is more firmware
> interface related than block layer stuff.
> 
> Kevin
> 
>>> On 8 Jul 2019, at 20:30, Sam Eiderman <shmuel.eiderman@oracle.com> wrote:
>>> 
>>> Thanks Gerd,
>>> 
>>> Gentle ping on this.
>>> 
>>> Sam
>>> 
>>>> On 1 Jul 2019, at 10:41, Gerd Hoffmann <kraxel@redhat.com> wrote:
>>>> 
>>>> On Wed, Jun 26, 2019 at 03:39:40PM +0300, Sam Eiderman 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
>>>> 
>>>> Reviewed-by: Gerd Hoffmann <kraxel@redhat.com>
>>>> 
>>>> cheers,
>>>> Gerd
>>>> 
>>> 
>> 
_______________________________________________
SeaBIOS mailing list -- seabios@seabios.org
To unsubscribe send an email to seabios-leave@seabios.org

Re: [Qemu-devel] [Qemu-block] [QEMU] [PATCH v5 0/8] Add Qemu to SeaBIOS LCHS interface

Posted by John Snow 11 weeks ago

On 7/19/19 6:10 AM, Sam Eiderman wrote:
> Well, this patch introduces 3 command line parameters (“lcyls”, “lheads”, “lsecs”)
> to “scsi-hd” “ide-hd” and “virtio-pci-blk” so this somehow has something to do with
> block.
> 
> This patch also adds fw_cfg interface to send these parameters to SeaBIOS.
> 
> "scripts/get_maintainer.pl -f hw/nvram/fw_cfg.c” gives
> 
> "Philippe Mathieu-Daudé" <philmd@redhat.com> (supporter:Firmware configur...)
> Laszlo Ersek <lersek@redhat.com> (reviewer:Firmware configur...)
> Gerd Hoffmann <kraxel@redhat.com> (reviewer:Firmware configur…)
> 
> And this was already Reviewed-by Gerd.
> 
> How should I proceed?
> 
> Sam
> 

I feel like it would be up to Gerd as the general SeaBIOS point of contact?

--js

[SeaBIOS] Re: [Qemu-block] [QEMU] [PATCH v5 0/8] Add Qemu to SeaBIOS LCHS interface

Posted by John Snow 11 weeks ago

On 7/24/19 8:47 PM, John Snow wrote:
> 
> 
> On 7/19/19 6:10 AM, Sam Eiderman wrote:
>> Well, this patch introduces 3 command line parameters (“lcyls”, “lheads”, “lsecs”)
>> to “scsi-hd” “ide-hd” and “virtio-pci-blk” so this somehow has something to do with
>> block.
>>
>> This patch also adds fw_cfg interface to send these parameters to SeaBIOS.
>>
>> "scripts/get_maintainer.pl -f hw/nvram/fw_cfg.c” gives
>>
>> "Philippe Mathieu-Daudé" <philmd@redhat.com> (supporter:Firmware configur...)
>> Laszlo Ersek <lersek@redhat.com> (reviewer:Firmware configur...)
>> Gerd Hoffmann <kraxel@redhat.com> (reviewer:Firmware configur…)
>>
>> And this was already Reviewed-by Gerd.
>>
>> How should I proceed?
>>
>> Sam
>>
> 
> I feel like it would be up to Gerd as the general SeaBIOS point of contact?
> 

...ah, who is offline for vacation.

We're in freeze right now anyway, so I would think that Gerd and/or
Kevin can work out who ought to stage this for a PR when the tree opens
again.
_______________________________________________
SeaBIOS mailing list -- seabios@seabios.org
To unsubscribe send an email to seabios-leave@seabios.org

[SeaBIOS] Re: [Qemu-block] [QEMU] [PATCH v5 0/8] Add Qemu to SeaBIOS LCHS interface

Posted by Gerd Hoffmann 11 weeks ago
  Hi,

[ just back from summer vacation, wading through my backlog ... ]

> > I feel like it would be up to Gerd as the general SeaBIOS point of contact?
> > 
> 
> ...ah, who is offline for vacation.
> 
> We're in freeze right now anyway, so I would think that Gerd and/or
> Kevin can work out who ought to stage this for a PR when the tree opens
> again.

As this touches alot of block code I've expected it to go via block
tree, therefore I've added my reviewed-by to indicate the fw_cfg /
seabios side of things is fine from my point of view.  seabios patches
are reviewed and ready.

Merging via Phil's fw_cfg tree would make sense too, but Phil probably
wants an ack from the block layer guys in that case.

cheers,
  Gerd
_______________________________________________
SeaBIOS mailing list -- seabios@seabios.org
To unsubscribe send an email to seabios-leave@seabios.org

[SeaBIOS] Re: [Qemu-block] [QEMU] [PATCH v5 0/8] Add Qemu to SeaBIOS LCHS interface

Posted by Laszlo Ersek 11 weeks ago
On 07/25/19 02:50, John Snow wrote:
> 
> 
> On 7/24/19 8:47 PM, John Snow wrote:
>>
>>
>> On 7/19/19 6:10 AM, Sam Eiderman wrote:
>>> Well, this patch introduces 3 command line parameters (“lcyls”, “lheads”, “lsecs”)
>>> to “scsi-hd” “ide-hd” and “virtio-pci-blk” so this somehow has something to do with
>>> block.
>>>
>>> This patch also adds fw_cfg interface to send these parameters to SeaBIOS.
>>>
>>> "scripts/get_maintainer.pl -f hw/nvram/fw_cfg.c” gives
>>>
>>> "Philippe Mathieu-Daudé" <philmd@redhat.com> (supporter:Firmware configur...)
>>> Laszlo Ersek <lersek@redhat.com> (reviewer:Firmware configur...)
>>> Gerd Hoffmann <kraxel@redhat.com> (reviewer:Firmware configur…)
>>>
>>> And this was already Reviewed-by Gerd.
>>>
>>> How should I proceed?
>>>
>>> Sam
>>>
>>
>> I feel like it would be up to Gerd as the general SeaBIOS point of contact?
>>
> 
> ...ah, who is offline for vacation.
> 
> We're in freeze right now anyway, so I would think that Gerd and/or
> Kevin can work out who ought to stage this for a PR when the tree opens
> again.
> 

I think the sole patch in the series that modifies "hw/nvram/fw_cfg.c" is

 [Qemu-devel] [QEMU] [PATCH v5 7/8] bootdevice: FW_CFG interface for LCHS values
  http://mid.mail-archive.com/20190626123948.10199-8-shmuel.eiderman@oracle.com

and neither Phil nor myself seem to be CC'd on it (I've found the message in my list folder only).

Regarding fw_cfg, I only review Phil's fw_cfg patches (so that whenever he posts patches, he can count on my review); other than that, I generally skip fw_cfg patches. And, I totally don't have a tree for collecting such patches.

Now, while Phil does:

  T: git https://github.com/philmd/qemu.git fw_cfg-next

I still don't think that tree would be the best for queueing this series, given the diffstat:

 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       |  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      | 582 +++++++++++++++++++++++++++++++++++++++++++++++
 11 files changed, 774 insertions(+), 41 deletions(-)

Just my two cents.

Thanks
Laszlo
_______________________________________________
SeaBIOS mailing list -- seabios@seabios.org
To unsubscribe send an email to seabios-leave@seabios.org