qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH 04/20] nubus: use bitmap to manage available slots


From: Mark Cave-Ayland
Subject: Re: [PATCH 04/20] nubus: use bitmap to manage available slots
Date: Tue, 14 Sep 2021 21:27:05 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.14.0

On 12/09/2021 18:48, Philippe Mathieu-Daudé wrote:

On 9/12/21 9:48 AM, Mark Cave-Ayland wrote:
Convert nubus_device_realize() to use a bitmap to manage available slots to 
allow
for future Nubus devices to be plugged into arbitrary slots from the command 
line.

Update mac_nubus_bridge_init() to only allow slots 0x9 to 0xe on a Macintosh
machines as documented in "Desigining Cards and Drivers for the Macintosh 
Family".

Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
---
  hw/nubus/mac-nubus-bridge.c |  3 +++
  hw/nubus/nubus-bus.c        |  2 +-
  hw/nubus/nubus-device.c     | 33 +++++++++++++++++++++++++++------
  include/hw/nubus/nubus.h    |  4 ++--
  4 files changed, 33 insertions(+), 9 deletions(-)

diff --git a/hw/nubus/mac-nubus-bridge.c b/hw/nubus/mac-nubus-bridge.c
index 7c329300b8..6e78f4c0b3 100644
--- a/hw/nubus/mac-nubus-bridge.c
+++ b/hw/nubus/mac-nubus-bridge.c
@@ -18,6 +18,9 @@ static void mac_nubus_bridge_init(Object *obj)
s->bus = NUBUS_BUS(qbus_create(TYPE_NUBUS_BUS, DEVICE(s), NULL)); + /* Macintosh only has slots 0x9 to 0xe available */
+    s->bus->slot_available_mask = 0x7e00;

So MAKE_64BIT_MASK(9, 6),

      sysbus_init_mmio(sbd, &s->bus->super_slot_io);
      sysbus_init_mmio(sbd, &s->bus->slot_io);
  }
diff --git a/hw/nubus/nubus-bus.c b/hw/nubus/nubus-bus.c
index 5c13452308..f6d3655f51 100644
--- a/hw/nubus/nubus-bus.c
+++ b/hw/nubus/nubus-bus.c
@@ -84,7 +84,7 @@ static void nubus_init(Object *obj)
                            nubus, "nubus-slots",
                            NUBUS_SLOT_NB * NUBUS_SLOT_SIZE);
- nubus->current_slot = NUBUS_FIRST_SLOT;
+    nubus->slot_available_mask = 0xffff;

and MAKE_64BIT_MASK(0, 16)?

  }

I'll convert these over to use MAKE_64BIT_MASK too :)


ATB,

Mark.



reply via email to

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