[PATCH 0/5] cmd646: move device-specific BMDMA registers to separate memory region

Mark Cave-Ayland posted 5 patches 10 months, 2 weeks ago
hw/alpha/dp264.c        |   4 +-
hw/ide/cmd646.c         | 122 ++++++++++++++++++++++++++++++----------
hw/sparc64/sun4u.c      |   4 +-
include/hw/ide/cmd646.h |  42 ++++++++++++++
4 files changed, 139 insertions(+), 33 deletions(-)
create mode 100644 include/hw/ide/cmd646.h
[PATCH 0/5] cmd646: move device-specific BMDMA registers to separate memory region
Posted by Mark Cave-Ayland 10 months, 2 weeks ago
This series follows on from a comment I made on Bernhard's PCI IDE tidy-up series [1]
that it should be possible to further consolidate the BMDMA registers into the PCI
IDE device with some minor rework to the CMD646 device.

It does this by moving the CMD646 device-specific BMDMA registers to a separate
memory region, and then aliasing the device-specific BMDMA registers from 
the existing BMDMAState memory region. With this in place it should be fairly
trivial to extend the consolidation implementation in [1].

Before "info mtree" output:
    0000000000008200-000000000000820f (prio 1, i/o): cmd646-bmdma
      0000000000008200-0000000000008203 (prio 0, i/o): cmd646-bmdma-bus
      0000000000008204-0000000000008207 (prio 0, i/o): cmd646-bmdma-ioport
      0000000000008208-000000000000820b (prio 0, i/o): cmd646-bmdma-bus
      000000000000820c-000000000000820f (prio 0, i/o): cmd646-bmdma-ioport

After "info mtree" output:
    0000000000008200-000000000000820f (prio 1, i/o): cmd646-bmdma
      0000000000008200-0000000000008203 (prio 0, i/o): cmd646-bmdma-bus
        0000000000008201-0000000000008201 (prio 0, i/o): alias cmd646-bmdma[1] @cmd646-bmdma 0000000000000001-0000000000000001
        0000000000008203-0000000000008203 (prio 0, i/o): alias cmd646-bmdma[3] @cmd646-bmdma 0000000000000003-0000000000000003
      0000000000008204-0000000000008207 (prio 0, i/o): cmd646-bmdma-ioport
      0000000000008208-000000000000820b (prio 0, i/o): cmd646-bmdma-bus
        0000000000008209-0000000000008209 (prio 0, i/o): alias cmd646-bmdma[1] @cmd646-bmdma 0000000000000001-0000000000000001
        000000000000820b-000000000000820b (prio 0, i/o): alias cmd646-bmdma[3] @cmd646-bmdma 0000000000000003-0000000000000003
      000000000000820c-000000000000820f (prio 0, i/o): cmd646-bmdma-ioport

The series was tested by confirming that breakpoints on the CMD646-specific
BMDMA registers were being hit and that my test Debian install ISO still
boots under qemu-system-sparc64.

Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>

[1] https://patchew.org/QEMU/20230422150728.176512-1-shentey@gmail.com/


Mark Cave-Ayland (5):
  cmd646: checkpatch fixes
  cmd646: create separate header and QOM type for CMD646_IDE
  cmd646: use TYPE_CMD646_IDE instead of hardcoded "cmd646-ide" string
  cmd646: rename cmd646_bmdma_ops to bmdma_ops
  cmd646: move device-specific BMDMA registers to separate memory region

 hw/alpha/dp264.c        |   4 +-
 hw/ide/cmd646.c         | 122 ++++++++++++++++++++++++++++++----------
 hw/sparc64/sun4u.c      |   4 +-
 include/hw/ide/cmd646.h |  42 ++++++++++++++
 4 files changed, 139 insertions(+), 33 deletions(-)
 create mode 100644 include/hw/ide/cmd646.h

-- 
2.30.2