qemu-devel
[Top][All Lists]
Advanced

[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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]