[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v6 00/20] nubus: bus, device, bridge, IRQ and address space i
From: |
Laurent Vivier |
Subject: |
Re: [PATCH v6 00/20] nubus: bus, device, bridge, IRQ and address space improvements |
Date: |
Wed, 29 Sep 2021 10:51:34 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.11.0 |
Le 24/09/2021 à 09:37, Mark Cave-Ayland a écrit :
> 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>
>
>
> v6:
> - Rebase onto master
> - Add extra R-B tags from Laurent and Philippe
> - Use int for ctz32() result in patches 4 and 5
> - Change slot_available_mask to uint16_t in patches 4 and 17
> - Fix typo in commit message for patch 4
>
> v5:
> - Rebase onto master
> - Add R-B tags from Laurent
> - Introduce NUBUS_FIRST_SLOT/NUBUS_LAST_SLOT and
> MAC_NUBUS_FIRST_SLOT/MAC_NUBUS_LAST_SLOT
> and fix up NUBUS_SUPER_SLOT_NB/NUBUS_SLOT_NB in patch 4
> - Fix super slot offset calculation in patch 4
> - Squash original patch 3 ("nubus-device: add device slot parameter") into
> patch 4
> ("nubus: use bitmap to manage available slots")
> - Add new patch 1 ("nubus: add comment indicating reference documents")
> containing
> documentation references
> - Drop "nubus->slot_available_mask = MAKE_64BIT_MASK(0, 16);" from
> nubus_init() in patch 17
>
> v4:
> - Rebase onto master
> - Pass &error_abort to memory_region_init_rom() in patch 11
> - Change warn_error() to error_setg() and tweak message in patch 11
>
> 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: add comment indicating reference documents
> nubus-device: rename slot_nb variable to slot
> nubus-device: expose separate super slot memory region
> 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 | 26 +++-
> hw/nubus/mac-nubus-bridge.c | 34 ++++-
> hw/nubus/nubus-bridge.c | 23 ++-
> hw/nubus/nubus-bus.c | 120 ++++++++++++---
> hw/nubus/nubus-device.c | 227 ++++++++--------------------
> hw/nubus/trace-events | 7 +
> hw/nubus/trace.h | 1 +
> include/hw/nubus/mac-nubus-bridge.h | 13 +-
> include/hw/nubus/nubus.h | 49 +++---
> meson.build | 1 +
> 11 files changed, 278 insertions(+), 229 deletions(-)
> create mode 100644 hw/nubus/trace-events
> create mode 100644 hw/nubus/trace.h
>
Applied to my q800-for-6.2 branch
Thanks,
Laurent
- [PATCH v6 11/20] nubus-device: add romfile property for loading declaration ROMs, (continued)
- [PATCH v6 11/20] nubus-device: add romfile property for loading declaration ROMs, Mark Cave-Ayland, 2021/09/24
- [PATCH v6 12/20] nubus: move nubus to its own 32-bit address space, Mark Cave-Ayland, 2021/09/24
- [PATCH v6 13/20] nubus-bridge: introduce separate NubusBridge structure, Mark Cave-Ayland, 2021/09/24
- [PATCH v6 14/20] mac-nubus-bridge: rename MacNubusState to MacNubusBridge, Mark Cave-Ayland, 2021/09/24
- [PATCH v6 15/20] nubus: move NubusBus from mac-nubus-bridge to nubus-bridge, Mark Cave-Ayland, 2021/09/24
- [PATCH v6 16/20] nubus-bridge: embed the NubusBus object directly within nubus-bridge, Mark Cave-Ayland, 2021/09/24
- [PATCH v6 17/20] nubus-bridge: make slot_available_mask a qdev property, Mark Cave-Ayland, 2021/09/24
- [PATCH v6 18/20] nubus: add support for slot IRQs, Mark Cave-Ayland, 2021/09/24
- [PATCH v6 19/20] q800: wire up nubus IRQs, Mark Cave-Ayland, 2021/09/24
- [PATCH v6 20/20] q800: configure nubus available slots for Quadra 800, Mark Cave-Ayland, 2021/09/24
- Re: [PATCH v6 00/20] nubus: bus, device, bridge, IRQ and address space improvements,
Laurent Vivier <=