All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v3 00/20] nubus: bus, device, bridge, IRQ and address space improvements
@ 2021-09-16 10:05 Mark Cave-Ayland
  2021-09-16 10:05 ` [PATCH v3 01/20] nubus-device: rename slot_nb variable to slot Mark Cave-Ayland
                   ` (19 more replies)
  0 siblings, 20 replies; 34+ messages in thread
From: Mark Cave-Ayland @ 2021-09-16 10:05 UTC (permalink / raw)
  To: qemu-devel, laurent

This patchset is the next set of changes required to boot MacOS on the q800 machine. The
main aim of these patches is to improve the Nubus support so that devices can be plugged
into the Nubus from the command line i.e.

    -device nubus-macfb[,slot=num][,romfile=decl.rom]

At the moment the only device that can be plugged into the Nubus is the macfb framebuffer
however with these changes it is possible to take a ROM from a real Nubus card and
attempt to use it in QEMU, and also allow for future interfaces such as virtio.

Patches 1 to 6 move the logic which manages bus addresses from the NubusDevice into
the NubusBus itself, including the introduction of a bitmap to manage available
slots on the bus.

Patches 7 and 8 change the handling for unassigned (empty) slots to generate a bus
fault and add trace events to allow logging of empty slot accesses during Nubus
enumeration.

Patches 9 to 11 remove the existing stubs for generating the format block (the epilogue
of the Nubus device embedded ROM consisting of metadata and a checksum) and replace them
with a romfile device property to allow the entire Nubus ROM to be loaded from a file
into the ROM area, similar to a PCI option ROM.

Patch 12 moves the Nubus into its own separate address space whilst patches 13 to 17
update the NubusBridge (and MacNubusBridge) devices to allow machines to map the
required slots from the Nubus address space using sysbus_mmio_map().

Finally patches 18 to 20 add support for Nubus IRQs and wire them up appropriately for
the q800 machine through VIA2, which is required for the next set of macfb updates.

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


v3:
- Rebase onto master
- Add Phil's R-B for patch 7
- Move NUBUS_FIRST_SLOT/NUBUS_LAST_SLOT check to end of nubus_device_realize() in patch 4
- Use BIT() macro in patches 4 and 20

v2:
- Rebase onto master
- Tweak the cover letter by adding the optional slot parameter in the -device example
- Add R-B tags from Phil
- Document the increase in max_access_size in patch 7
- Change the maximum declaration ROM size to 128KiB using (128 * KiB) in patch 11
- use MAKE_64BIT_MASK() in patches 4 and 16


Mark Cave-Ayland (20):
  nubus-device: rename slot_nb variable to slot
  nubus-device: expose separate super slot memory region
  nubus-device: add device slot parameter
  nubus: use bitmap to manage available slots
  nubus: move slot bitmap checks from NubusDevice realize() to BusClass
    check_address()
  nubus: implement BusClass get_dev_path()
  nubus: add trace-events for empty slot accesses
  nubus: generate bus error when attempting to access empty slots
  macfb: don't register declaration ROM
  nubus-device: remove nubus_register_rom() and
    nubus_register_format_block()
  nubus-device: add romfile property for loading declaration ROMs
  nubus: move nubus to its own 32-bit address space
  nubus-bridge: introduce separate NubusBridge structure
  mac-nubus-bridge: rename MacNubusState to MacNubusBridge
  nubus: move NubusBus from mac-nubus-bridge to nubus-bridge
  nubus-bridge: embed the NubusBus object directly within nubus-bridge
  nubus-bridge: make slot_available_mask a qdev property
  nubus: add support for slot IRQs
  q800: wire up nubus IRQs
  q800: configure nubus available slots for Quadra 800

 hw/display/macfb.c                  |   6 -
 hw/m68k/q800.c                      |  24 ++-
 hw/nubus/mac-nubus-bridge.c         |  28 +++-
 hw/nubus/nubus-bridge.c             |  23 ++-
 hw/nubus/nubus-bus.c                | 117 +++++++++++---
 hw/nubus/nubus-device.c             | 226 ++++++++--------------------
 hw/nubus/trace-events               |   7 +
 hw/nubus/trace.h                    |   1 +
 include/hw/nubus/mac-nubus-bridge.h |   9 +-
 include/hw/nubus/nubus.h            |  48 +++---
 meson.build                         |   1 +
 11 files changed, 264 insertions(+), 226 deletions(-)
 create mode 100644 hw/nubus/trace-events
 create mode 100644 hw/nubus/trace.h

-- 
2.20.1



^ permalink raw reply	[flat|nested] 34+ messages in thread

end of thread, other threads:[~2021-09-21  7:26 UTC | newest]

Thread overview: 34+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-09-16 10:05 [PATCH v3 00/20] nubus: bus, device, bridge, IRQ and address space improvements Mark Cave-Ayland
2021-09-16 10:05 ` [PATCH v3 01/20] nubus-device: rename slot_nb variable to slot Mark Cave-Ayland
2021-09-16 10:05 ` [PATCH v3 02/20] nubus-device: expose separate super slot memory region Mark Cave-Ayland
2021-09-16 10:05 ` [PATCH v3 03/20] nubus-device: add device slot parameter Mark Cave-Ayland
2021-09-16 10:05 ` [PATCH v3 04/20] nubus: use bitmap to manage available slots Mark Cave-Ayland
2021-09-16 10:36   ` Philippe Mathieu-Daudé
2021-09-16 10:05 ` [PATCH v3 05/20] nubus: move slot bitmap checks from NubusDevice realize() to BusClass check_address() Mark Cave-Ayland
2021-09-16 10:37   ` Philippe Mathieu-Daudé
2021-09-16 10:05 ` [PATCH v3 06/20] nubus: implement BusClass get_dev_path() Mark Cave-Ayland
2021-09-16 10:05 ` [PATCH v3 07/20] nubus: add trace-events for empty slot accesses Mark Cave-Ayland
2021-09-16 10:05 ` [PATCH v3 08/20] nubus: generate bus error when attempting to access empty slots Mark Cave-Ayland
2021-09-16 10:05 ` [PATCH v3 09/20] macfb: don't register declaration ROM Mark Cave-Ayland
2021-09-16 10:05 ` [PATCH v3 10/20] nubus-device: remove nubus_register_rom() and nubus_register_format_block() Mark Cave-Ayland
2021-09-19 21:10   ` Philippe Mathieu-Daudé
2021-09-21  7:24     ` Mark Cave-Ayland
2021-09-16 10:05 ` [PATCH v3 11/20] nubus-device: add romfile property for loading declaration ROMs Mark Cave-Ayland
2021-09-16 11:05   ` Philippe Mathieu-Daudé
2021-09-16 13:06     ` Markus Armbruster
2021-09-16 14:19       ` Mark Cave-Ayland
2021-09-17  9:53         ` Markus Armbruster
2021-09-16 10:05 ` [PATCH v3 12/20] nubus: move nubus to its own 32-bit address space Mark Cave-Ayland
2021-09-16 12:48   ` BALATON Zoltan
2021-09-16 14:00     ` Mark Cave-Ayland
2021-09-16 16:50       ` BALATON Zoltan
2021-09-16 10:05 ` [PATCH v3 13/20] nubus-bridge: introduce separate NubusBridge structure Mark Cave-Ayland
2021-09-16 10:05 ` [PATCH v3 14/20] mac-nubus-bridge: rename MacNubusState to MacNubusBridge Mark Cave-Ayland
2021-09-16 10:05 ` [PATCH v3 15/20] nubus: move NubusBus from mac-nubus-bridge to nubus-bridge Mark Cave-Ayland
2021-09-16 10:05 ` [PATCH v3 16/20] nubus-bridge: embed the NubusBus object directly within nubus-bridge Mark Cave-Ayland
2021-09-16 10:05 ` [PATCH v3 17/20] nubus-bridge: make slot_available_mask a qdev property Mark Cave-Ayland
2021-09-16 10:05 ` [PATCH v3 18/20] nubus: add support for slot IRQs Mark Cave-Ayland
2021-09-16 10:05 ` [PATCH v3 19/20] q800: wire up nubus IRQs Mark Cave-Ayland
2021-09-19 21:13   ` Philippe Mathieu-Daudé
2021-09-16 10:05 ` [PATCH v3 20/20] q800: configure nubus available slots for Quadra 800 Mark Cave-Ayland
2021-09-19 21:14   ` Philippe Mathieu-Daudé

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.