qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
To: "Philippe Mathieu-Daudé" <f4bug@amsat.org>,
	qemu-devel@nongnu.org, laurent@vivier.eu
Subject: Re: [PATCH 00/20] nubus: bus, device, bridge, IRQ and address space improvements
Date: Sun, 12 Sep 2021 17:56:37 +0100	[thread overview]
Message-ID: <5a4fe371-96aa-85f4-cee9-1f39b12de067@ilande.co.uk> (raw)
In-Reply-To: <65a6ebbf-5f5a-8a47-ff68-b48c9079bf01@amsat.org>

On 12/09/2021 16:47, Philippe Mathieu-Daudé wrote:

> On 9/12/21 9:48 AM, Mark Cave-Ayland wrote:
>> 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[,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.

Thanks for the review so far :)

> Some questions:
> 
> - TYPE_NUBUS_BRIDGE is not abstract. So far, beside
>    TYPE_MAC_NUBUS_BRIDGE, no other code use it. Could it
>    be use as it? If so, shouldn't the code in
>    mac_nubus_bridge_init() be moved to nubus_bridge_realize(),
>    creating the slot alias regions generically using the
>    slot range from slot_available_mask or using another
>    property?

Not yet, but Nubus was available on non-Apple machines. Given that TYPE_NUBUS_BRIDGE 
and TYPE_MAC_NUBUS_BRIDGE are already there, it seems a shame to prevent anyone who 
wanted to experiment with Nubus in other ways by hard-coding in the Macintosh 
restrictions.

> - Why is "slot-available-mask" a bridge device property and
>    not a bus one?

Architecturally a Nubus always has 16 slots with 1 IRQ per slot (you can compare this 
with PCI always having 32 slots with 4 possible IRQs per slot). In the Macintosh 
design Apple restricted the available address space by mapping a partial address 
range onto the CPU bus, so I'd argue that this is an implementation property of the 
bridge. And of course device properties already exist which helps make things easier 
too :)


ATB,

Mark.


      reply	other threads:[~2021-09-12 16:57 UTC|newest]

Thread overview: 47+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-09-12  7:48 [PATCH 00/20] nubus: bus, device, bridge, IRQ and address space improvements Mark Cave-Ayland
2021-09-12  7:48 ` [PATCH 01/20] nubus-device: rename slot_nb variable to slot Mark Cave-Ayland
2021-09-12 15:09   ` Philippe Mathieu-Daudé
2021-09-12  7:48 ` [PATCH 02/20] nubus-device: expose separate super slot memory region Mark Cave-Ayland
2021-09-12 15:50   ` Philippe Mathieu-Daudé
2021-09-12 17:20     ` Mark Cave-Ayland
2021-09-12 17:31       ` Philippe Mathieu-Daudé
2021-09-12  7:48 ` [PATCH 03/20] nubus-device: add device slot parameter Mark Cave-Ayland
2021-09-12 15:15   ` Philippe Mathieu-Daudé
2021-09-12 16:43     ` Mark Cave-Ayland
2021-09-12  7:48 ` [PATCH 04/20] nubus: use bitmap to manage available slots Mark Cave-Ayland
2021-09-12 17:48   ` Philippe Mathieu-Daudé
2021-09-14 20:27     ` Mark Cave-Ayland
2021-09-12  7:48 ` [PATCH 05/20] nubus: move slot bitmap checks from NubusDevice realize() to BusClass check_address() Mark Cave-Ayland
2021-09-12  7:49 ` [PATCH 06/20] nubus: implement BusClass get_dev_path() Mark Cave-Ayland
2021-09-12 15:16   ` Philippe Mathieu-Daudé
2021-09-12  7:49 ` [PATCH 07/20] nubus: add trace-events for unassigned slot accesses Mark Cave-Ayland
2021-09-12 15:18   ` Philippe Mathieu-Daudé
2021-09-12 16:45     ` Mark Cave-Ayland
2021-09-12  7:49 ` [PATCH 08/20] nubus: generate bus error when attempting to access empty slots Mark Cave-Ayland
2021-09-12 15:19   ` Philippe Mathieu-Daudé
2021-09-12  7:49 ` [PATCH 09/20] macfb: don't register declaration ROM Mark Cave-Ayland
2021-09-12  7:49 ` [PATCH 10/20] nubus-device: remove nubus_register_rom() and nubus_register_format_block() Mark Cave-Ayland
2021-09-12  7:49 ` [PATCH 11/20] nubus-device: add romfile property for loading declaration ROMs Mark Cave-Ayland
2021-09-12 17:39   ` Philippe Mathieu-Daudé
2021-09-14 20:23     ` Mark Cave-Ayland
2021-09-15  8:16       ` Mark Cave-Ayland
2021-09-12  7:49 ` [PATCH 12/20] nubus: move nubus to its own 32-bit address space Mark Cave-Ayland
2021-09-12 15:22   ` Philippe Mathieu-Daudé
2021-09-12  7:49 ` [PATCH 13/20] nubus-bridge: introduce separate NubusBridge structure Mark Cave-Ayland
2021-09-12 15:23   ` Philippe Mathieu-Daudé
2021-09-12  7:49 ` [PATCH 14/20] mac-nubus-bridge: rename MacNubusState to MacNubusBridge Mark Cave-Ayland
2021-09-12 15:23   ` Philippe Mathieu-Daudé
2021-09-12  7:49 ` [PATCH 15/20] nubus: move NubusBus from mac-nubus-bridge to nubus-bridge Mark Cave-Ayland
2021-09-12 15:25   ` Philippe Mathieu-Daudé
2021-09-12  7:49 ` [PATCH 16/20] nubus-bridge: embed the NubusBus object directly within nubus-bridge Mark Cave-Ayland
2021-09-12 15:26   ` Philippe Mathieu-Daudé
2021-09-12 17:43   ` Philippe Mathieu-Daudé
2021-09-14 20:26     ` Mark Cave-Ayland
2021-09-12  7:49 ` [PATCH 17/20] nubus-bridge: make slot_available_mask a qdev property Mark Cave-Ayland
2021-09-12  7:49 ` [PATCH 18/20] nubus: add support for slot IRQs Mark Cave-Ayland
2021-09-12 16:00   ` Philippe Mathieu-Daudé
2021-09-12 17:05     ` Mark Cave-Ayland
2021-09-12  7:49 ` [PATCH 19/20] q800: wire up nubus IRQs Mark Cave-Ayland
2021-09-12  7:49 ` [PATCH 20/20] q800: configure nubus available slots for Quadra 800 Mark Cave-Ayland
2021-09-12 15:47 ` [PATCH 00/20] nubus: bus, device, bridge, IRQ and address space improvements Philippe Mathieu-Daudé
2021-09-12 16:56   ` Mark Cave-Ayland [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=5a4fe371-96aa-85f4-cee9-1f39b12de067@ilande.co.uk \
    --to=mark.cave-ayland@ilande.co.uk \
    --cc=f4bug@amsat.org \
    --cc=laurent@vivier.eu \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).