[PULL 00/28] IDE patches

Denis V. Lunev posted 28 patches 1 month ago
Only 10 patches received!
There is a newer version of this series
hw/ide/ahci.c             | 148 ++++++++---
hw/ide/cmd646.c           |   2 +-
hw/ide/core.c             | 170 +++++++++---
hw/ide/ide-internal.h     |   7 +-
hw/ide/isa.c              |   2 +-
hw/ide/macio.c            |   2 +-
hw/ide/mmio.c             |   2 +-
hw/ide/piix.c             |   2 +-
hw/ide/sii3112.c          |   6 +-
hw/ide/trace-events       |   3 +
hw/ide/via.c              |   2 +-
include/hw/ide/ide-dma.h  |   3 +-
tests/qtest/ahci-test.c   | 187 ++++++++++++++
tests/qtest/ide-test.c    | 647 ++++++++++++++++++++++++++++++++++++++++++++++
tests/qtest/libqos/ahci.c |  14 +
tests/qtest/libqos/ahci.h |   6 +
16 files changed, 1113 insertions(+), 90 deletions(-)
[PULL 00/28] IDE patches
Posted by Denis V. Lunev 1 month ago
The following changes since commit fe11f459f640cd08f35c21f9d403517951bfd671:

  Merge tag 'fixes-pr-v1' of https://gitlab.com/marcandre.lureau/qemu into staging (2026-08-25 06:48:55 -0700)

are available in the Git repository at:

  https://gitlab.com/dlunev/qemu.git tags/pull-ide-2026-08-26

for you to fetch changes up to dd90d3cd73b9b2b0f27a9e51bfe542b3a510545b:

  tests/qtest/ide-test: cover the UDMA5 identify words (2026-08-26 12:59:19 +0200)

----------------------------------------------------------------
IDE patches

- fix the logical CHS translation a guest selects with INITIALIZE
  DEVICE PARAMETERS: reject a translation the device may not accept
  instead of dying on a division by zero, report the default
  translation in IDENTIFY DEVICE words 1, 3 and 6 and the one in
  effect in words 54 to 58, keep those words in sync when the
  translation changes, migrate both the translation and the SET
  FEATURES 0xCC revert flag, and return the power-on defaults on a
  hardware reset rather than on every reset
- harden the IDE and AHCI state a guest or an incoming migration
  stream can reach: reject an out-of-range PIO transfer window on
  load, refuse a PIO transfer with no command header, clear cur_cmd
  when the command list is unmapped, treat a failed PRDT walk as a
  transfer failure, reject a command header with an invalid FIS
  length, and drain the ports on teardown so that a request cannot
  outlive an unplug
- report ATAPI UDMA5 with a matching standard and cable
- extend the IDE/AHCI qtest coverage for all of the above

Signed-off-by: Denis V. Lunev <den@openvz.org>
CC: John Snow <jsnow@redhat.com>
CC: Philippe Mathieu-Daudé <philmd@oss.qualcomm.com>

----------------------------------------------------------------
Denis V. Lunev (28):
      hw/ide: reject an unsupported CHS translation
      tests/qtest/ide-test: cover a CHS translation with zero sectors
      tests/qtest/libqos/ahci: allow a count and an expected error
      tests/qtest/ahci: cover the sector count of INITIALIZE DEVICE PARAMETERS
      hw/ide: report the default CHS translation in IDENTIFY DEVICE
      hw/ide: name the retired IDENTIFY DEVICE words the device fills in
      hw/ide: factor out the IDENTIFY DEVICE current geometry words
      hw/ide: keep the IDENTIFY DEVICE current geometry in sync
      hw/ide: restore the power-on device state before loading
      hw/ide: migrate the logical CHS translation
      hw/ide: migrate the power-on defaults revert flag
      tests/qtest/ide-test: cover the CHS translation across migration
      tests/qtest/ide-test: cover a rejected CHS translation in the stream
      tests/qtest/ide-test: cover the IDENTIFY DEVICE geometry words
      hw/ide: revert the CHS translation on a hardware reset
      tests/qtest/ide-test: cover the CHS translation across resets
      hw/ide: drop a redundant interrupt from INITIALIZE DEVICE PARAMETERS
      hw/ide: reject an out-of-range PIO transfer window on load
      tests/qtest/ide-test: cover the migrated PIO transfer window
      hw/ide/ahci: refuse a PIO transfer with no command header
      hw/ide/ahci: clear cur_cmd when the command list is unmapped
      tests/qtest/ahci: regression test for a PIO write vs. engine stop
      hw/ide/ahci: treat a failed PRDT walk as a PIO transfer failure
      hw/ide/ahci: reject a command header with an invalid FIS length
      hw/ide/ahci: drain the ports on teardown
      tests/qtest/ahci: regression test for a request outliving an unplug
      hw/ide: report ATAPI UDMA5 with a matching standard and cable
      tests/qtest/ide-test: cover the UDMA5 identify words

 hw/ide/ahci.c             | 148 ++++++++---
 hw/ide/cmd646.c           |   2 +-
 hw/ide/core.c             | 170 +++++++++---
 hw/ide/ide-internal.h     |   7 +-
 hw/ide/isa.c              |   2 +-
 hw/ide/macio.c            |   2 +-
 hw/ide/mmio.c             |   2 +-
 hw/ide/piix.c             |   2 +-
 hw/ide/sii3112.c          |   6 +-
 hw/ide/trace-events       |   3 +
 hw/ide/via.c              |   2 +-
 include/hw/ide/ide-dma.h  |   3 +-
 tests/qtest/ahci-test.c   | 187 ++++++++++++++
 tests/qtest/ide-test.c    | 647 ++++++++++++++++++++++++++++++++++++++++++++++
 tests/qtest/libqos/ahci.c |  14 +
 tests/qtest/libqos/ahci.h |   6 +
 16 files changed, 1113 insertions(+), 90 deletions(-)

-- 
2.53.0

Re: [PULL 00/28] IDE patches
Posted by Michael Tokarev 1 month ago
On 8/26/26 14:15, Denis V. Lunev wrote:

> IDE patches
> 
> - fix the logical CHS translation a guest selects with INITIALIZE
>    DEVICE PARAMETERS: reject a translation the device may not accept
>    instead of dying on a division by zero, report the default
>    translation in IDENTIFY DEVICE words 1, 3 and 6 and the one in
>    effect in words 54 to 58, keep those words in sync when the
>    translation changes, migrate both the translation and the SET
>    FEATURES 0xCC revert flag, and return the power-on defaults on a
>    hardware reset rather than on every reset
> - harden the IDE and AHCI state a guest or an incoming migration
>    stream can reach: reject an out-of-range PIO transfer window on
>    load, refuse a PIO transfer with no command header, clear cur_cmd
>    when the command list is unmapped, treat a failed PRDT walk as a
>    transfer failure, reject a command header with an invalid FIS
>    length, and drain the ports on teardown so that a request cannot
>    outlive an unplug
> - report ATAPI UDMA5 with a matching standard and cable
> - extend the IDE/AHCI qtest coverage for all of the above

> ----------------------------------------------------------------
> Denis V. Lunev (28):
>        hw/ide: reject an unsupported CHS translation
>        tests/qtest/ide-test: cover a CHS translation with zero sectors
>        tests/qtest/libqos/ahci: allow a count and an expected error
>        tests/qtest/ahci: cover the sector count of INITIALIZE DEVICE PARAMETERS
>        hw/ide: report the default CHS translation in IDENTIFY DEVICE
>        hw/ide: name the retired IDENTIFY DEVICE words the device fills in
>        hw/ide: factor out the IDENTIFY DEVICE current geometry words
>        hw/ide: keep the IDENTIFY DEVICE current geometry in sync
>        hw/ide: restore the power-on device state before loading
>        hw/ide: migrate the logical CHS translation
>        hw/ide: migrate the power-on defaults revert flag
>        tests/qtest/ide-test: cover the CHS translation across migration
>        tests/qtest/ide-test: cover a rejected CHS translation in the stream
>        tests/qtest/ide-test: cover the IDENTIFY DEVICE geometry words
>        hw/ide: revert the CHS translation on a hardware reset
>        tests/qtest/ide-test: cover the CHS translation across resets
>        hw/ide: drop a redundant interrupt from INITIALIZE DEVICE PARAMETERS
>        hw/ide: reject an out-of-range PIO transfer window on load
>        tests/qtest/ide-test: cover the migrated PIO transfer window
>        hw/ide/ahci: refuse a PIO transfer with no command header
>        hw/ide/ahci: clear cur_cmd when the command list is unmapped
>        tests/qtest/ahci: regression test for a PIO write vs. engine stop
>        hw/ide/ahci: treat a failed PRDT walk as a PIO transfer failure
>        hw/ide/ahci: reject a command header with an invalid FIS length
>        hw/ide/ahci: drain the ports on teardown
>        tests/qtest/ahci: regression test for a request outliving an unplug
>        hw/ide: report ATAPI UDMA5 with a matching standard and cable
>        tests/qtest/ide-test: cover the UDMA5 identify words

Hi!

Are you sure only two changes from this series should be picked up to the
stable series --

   hw/ide: reject an unsupported CHS translation
   hw/ide: report the default CHS translation in IDENTIFY DEVICE

(I'm also picking up the test case:
   tests/qtest/ide-test: cover a CHS translation with zero sectors)

It feels like, at least,
   hw/ide: reject an out-of-range PIO transfer window on load
(with the test case) should be picked up too.

The ahci fixes seems to be good candidates as well.

Maybe some others?

Thanks,

/mjt
Re: [PULL 00/28] IDE patches
Posted by Richard Henderson 1 month ago
On 8/26/26 04:15, Denis V. Lunev wrote:
> The following changes since commit fe11f459f640cd08f35c21f9d403517951bfd671:
>
>    Merge tag 'fixes-pr-v1' ofhttps://gitlab.com/marcandre.lureau/qemu into staging (2026-08-25 06:48:55 -0700)
>
> are available in the Git repository at:
>
>    https://gitlab.com/dlunev/qemu.git tags/pull-ide-2026-08-26
>
> for you to fetch changes up to dd90d3cd73b9b2b0f27a9e51bfe542b3a510545b:
>
>    tests/qtest/ide-test: cover the UDMA5 identify words (2026-08-26 12:59:19 +0200)
>
> ----------------------------------------------------------------
> IDE patches
>
> - fix the logical CHS translation a guest selects with INITIALIZE
>    DEVICE PARAMETERS: reject a translation the device may not accept
>    instead of dying on a division by zero, report the default
>    translation in IDENTIFY DEVICE words 1, 3 and 6 and the one in
>    effect in words 54 to 58, keep those words in sync when the
>    translation changes, migrate both the translation and the SET
>    FEATURES 0xCC revert flag, and return the power-on defaults on a
>    hardware reset rather than on every reset
> - harden the IDE and AHCI state a guest or an incoming migration
>    stream can reach: reject an out-of-range PIO transfer window on
>    load, refuse a PIO transfer with no command header, clear cur_cmd
>    when the command list is unmapped, treat a failed PRDT walk as a
>    transfer failure, reject a command header with an invalid FIS
>    length, and drain the ports on teardown so that a request cannot
>    outlive an unplug
> - report ATAPI UDMA5 with a matching standard and cable
> - extend the IDE/AHCI qtest coverage for all of the above
>
> Signed-off-by: Denis V. Lunev<den@openvz.org>
> CC: John Snow<jsnow@redhat.com>
> CC: Philippe Mathieu-Daudé<philmd@oss.qualcomm.com>

Applied, thanks.

r~