The problem that malc saw with sb16 was a major think-o on my part with the whole interface. We can't re-use the const sub-arrays of the original MemoryRegionPortio array because they have the wrong offset for the MemoryRegion to which it is attached -- the lookup in find_portio fails. We must adjust the offsets of the old_portio array to be based against the MemoryRegion.
Which means we can easily eliminate the major complaint that came with the previous round of comments -- the double PORTIO_END_OF_LIST and the explicit marking of the ranges. All we require of users is that the array be sorted by offset. The entire patch set is at git://repo.or.cz/qemu/rth.git mem-api-isa and is of course based on git://git.kernel.org/pub/scm/virt/kvm/qemu-kvm.git memory/master Avi, the first two patches are fixes for compile errors in your tree. They probably ought to be squashed when next you rebase. Malc, I tested sb16 vs the xtc-play you provided. However I failed to test the gus changes; the xtc-play program could not recognize the device with "--device gus" before or after the patch set. Should I be using another set of command-line options for that? r~ Richard Henderson (16): fixup: merge with last sm501 patch fixup: merge with last arm_sysctl patch isa: Tidy support code for isabus_get_fw_dev_path. isa: Add isa_register_portio_list(). fdc: Convert to isa_register_portio_list. gus: Convert to isa_register_portio_list. m48t59: Convert to isa_register_ioport. rtc: Convert to isa_register_ioport. ne2000: Convert to isa_register_ioport. parallel: Convert to isa_register_portio_list. sb16: Convert to isa_register_portio_list. vga: Convert to isa_register_portio_list. pc: Convert port92 to isa_register_ioport. vmport: Convert to isa_register_ioport. ide: Convert to isa_register_portio_list. isa: Remove isa_init_ioport_range and isa_init_ioport. hw/arm_sysctl.c | 1 - hw/devices.h | 4 +- hw/fdc.c | 34 ++---------------- hw/gus.c | 39 ++++++++++----------- hw/ide/core.c | 30 ++++++++++------ hw/ide/internal.h | 3 +- hw/ide/isa.c | 4 +-- hw/ide/piix.c | 7 ++-- hw/ide/via.c | 7 ++-- hw/isa-bus.c | 99 +++++++++++++++++++++++++++++++++++++++++------------ hw/isa.h | 38 ++++++++++++++++---- hw/m48t59.c | 15 ++++++-- hw/mc146818rtc.c | 15 ++++++-- hw/ne2000-isa.c | 5 +-- hw/parallel.c | 47 +++++++++++++++---------- hw/pc.c | 16 +++++++-- hw/sb16.c | 32 +++++++---------- hw/vga-isa.c | 10 ----- hw/vga.c | 55 +++++++++++++++-------------- hw/vmport.c | 16 +++++++-- memory.c | 8 ++-- 21 files changed, 287 insertions(+), 198 deletions(-) -- 1.7.4.4