qemu-arm
[Top][All Lists]
Advanced

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

Re: [PATCH 07/12] hw/ssi: Check for duplicate addresses


From: Philippe Mathieu-Daudé
Subject: Re: [PATCH 07/12] hw/ssi: Check for duplicate addresses
Date: Tue, 30 May 2023 23:05:38 +0200
User-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:102.0) Gecko/20100101 Thunderbird/102.11.0

On 8/5/23 09:58, Cédric Le Goater wrote:
This to avoid address conflicts on the same SSI bus. Adapt machines
using multiple devices on the same bus to avoid breakage.

Cc: "Edgar E. Iglesias" <edgar.iglesias@gmail.com>
Cc: Alistair Francis <alistair@alistair23.me>
Signed-off-by: Cédric Le Goater <clg@kaod.org>
---
  hw/arm/stellaris.c                  |  4 +++-
  hw/arm/xilinx_zynq.c                |  1 +
  hw/arm/xlnx-versal-virt.c           |  1 +
  hw/arm/xlnx-zcu102.c                |  2 ++
  hw/microblaze/petalogix_ml605_mmu.c |  1 +
  hw/ssi/ssi.c                        | 20 ++++++++++++++++++++
  6 files changed, 28 insertions(+), 1 deletion(-)


diff --git a/hw/ssi/ssi.c b/hw/ssi/ssi.c
index a25e064417..685b7678e0 100644
--- a/hw/ssi/ssi.c
+++ b/hw/ssi/ssi.c
@@ -42,10 +42,30 @@ DeviceState *ssi_get_cs(SSIBus *bus, int addr)
      return NULL;
  }
+static bool ssi_bus_check_address(BusState *b, DeviceState *dev, Error **errp)
+{
+    SSIPeripheral *s = SSI_PERIPHERAL(dev);
+
+    if (ssi_get_cs(SSI_BUS(b), s->addr)) {
+        error_setg(errp, "addr '0x%x' already in use", s->addr);

We could return "... in use by a $MODEL device".

  DeviceState *d = ssi_get_cs(SSI_BUS(b), s->addr);
  if (d) {
      "... in use by a %s device", ..., object_get_typename(OBJECT(d)));
  }

Anyhow,
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>

+        return false;
+    }
+
+    return true;
+}





reply via email to

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