qemu-commits
[Top][All Lists]
Advanced

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

[Qemu-commits] [qemu/qemu] 78255c: hw/arm/virt: Check for attempt to use


From: Richard Henderson
Subject: [Qemu-commits] [qemu/qemu] 78255c: hw/arm/virt: Check for attempt to use TrustZone wi...
Date: Thu, 21 Apr 2022 09:24:15 -0700

  Branch: refs/heads/master
  Home:   https://github.com/qemu/qemu
  Commit: 78255ce392dc8596f9886476ad1e5c3c67f1c10a
      
https://github.com/qemu/qemu/commit/78255ce392dc8596f9886476ad1e5c3c67f1c10a
  Author: Peter Maydell <peter.maydell@linaro.org>
  Date:   2022-04-21 (Thu, 21 Apr 2022)

  Changed paths:
    M hw/arm/virt.c

  Log Message:
  -----------
  hw/arm/virt: Check for attempt to use TrustZone with KVM or HVF

It's not possible to provide the guest with the Security extensions
(TrustZone) when using KVM or HVF, because the hardware
virtualization extensions don't permit running EL3 guest code.
However, we weren't checking for this combination, with the result
that QEMU would assert if you tried it:

$ qemu-system-aarch64 -enable-kvm -machine virt,secure=on -cpu host -display 
none
Unexpected error in object_property_find_err() at ../../qom/object.c:1304:
qemu-system-aarch64: Property 'host-arm-cpu.secure-memory' not found
Aborted

Check for this combination of options and report an error, in the
same way we already do for attempts to give a KVM or HVF guest the
Virtualization or MTE extensions. Now we will report:

qemu-system-aarch64: mach-virt: KVM does not support providing Security 
extensions (TrustZone) to the guest CPU

Resolves: https://gitlab.com/qemu-project/qemu/-/issues/961
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: 20220404155301.566542-1-peter.maydell@linaro.org


  Commit: 09fc50cdce522cfed21bfd2a08b575c9f1a3c30b
      
https://github.com/qemu/qemu/commit/09fc50cdce522cfed21bfd2a08b575c9f1a3c30b
  Author: Edgar E. Iglesias <edgar.iglesias@amd.com>
  Date:   2022-04-21 (Thu, 21 Apr 2022)

  Changed paths:
    M hw/timer/cadence_ttc.c
    A include/hw/timer/cadence_ttc.h

  Log Message:
  -----------
  timer: cadence_ttc: Break out header file to allow embedding

Break out header file to allow embedding of the the TTC.

Signed-off-by: Edgar E. Iglesias <edgar.iglesias@amd.com>
Reviewed-by: Alistair Francis <alistair.francis@wdc.com>
Reviewed-by: Luc Michel <luc@lmichel.fr>
Reviewed-by: Francisco Iglesias <frasse.iglesias@gmail.com>
Message-id: 20220331222017.2914409-2-edgar.iglesias@gmail.com
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>


  Commit: 51af6231ad344c64069faad630d0889b9723ed3a
      
https://github.com/qemu/qemu/commit/51af6231ad344c64069faad630d0889b9723ed3a
  Author: Edgar E. Iglesias <edgar.iglesias@amd.com>
  Date:   2022-04-21 (Thu, 21 Apr 2022)

  Changed paths:
    M hw/arm/xlnx-zynqmp.c
    M include/hw/arm/xlnx-zynqmp.h

  Log Message:
  -----------
  hw/arm/xlnx-zynqmp: Connect 4 TTC timers

Connect the 4 TTC timers on the ZynqMP.

Signed-off-by: Edgar E. Iglesias <edgar.iglesias@amd.com>
Reviewed-by: Alistair Francis <alistair.francis@wdc.com>
Reviewed-by: Luc Michel <luc@lmichel.fr>
Reviewed-by: Francisco Iglesias <frasse.iglesias@gmail.com>
Message-id: 20220331222017.2914409-3-edgar.iglesias@gmail.com
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>


  Commit: 8779d00c4e337a9e0d85c9abf456e3c713fad808
      
https://github.com/qemu/qemu/commit/8779d00c4e337a9e0d85c9abf456e3c713fad808
  Author: Edgar E. Iglesias <edgar.iglesias@amd.com>
  Date:   2022-04-21 (Thu, 21 Apr 2022)

  Changed paths:
    M hw/arm/xlnx-versal.c
    M include/hw/arm/xlnx-versal.h

  Log Message:
  -----------
  hw/arm: versal: Create an APU CPU Cluster

Create an APU CPU Cluster. This is in preparation to add the RPU.

Signed-off-by: Edgar E. Iglesias <edgar.iglesias@amd.com>
Reviewed-by: Francisco Iglesias <francisco.iglesias@amd.com>
Message-id: 20220406174303.2022038-2-edgar.iglesias@xilinx.com
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>


  Commit: 67a645a35110f300144ae844cbf839762abcd98d
      
https://github.com/qemu/qemu/commit/67a645a35110f300144ae844cbf839762abcd98d
  Author: Edgar E. Iglesias <edgar.iglesias@amd.com>
  Date:   2022-04-21 (Thu, 21 Apr 2022)

  Changed paths:
    M hw/arm/xlnx-versal-virt.c
    M hw/arm/xlnx-versal.c
    M include/hw/arm/xlnx-versal.h

  Log Message:
  -----------
  hw/arm: versal: Add the Cortex-R5Fs

Add the Cortex-R5Fs of the Versal RPU (Real-time Processing Unit)
subsystem.

Signed-off-by: Edgar E. Iglesias <edgar.iglesias@amd.com>
Reviewed-by: Francisco Iglesias <francisco.iglesias@amd.com>
Message-id: 20220406174303.2022038-3-edgar.iglesias@xilinx.com
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>


  Commit: 369e5cb0c948b65e0845ca3394e25d757dd93206
      
https://github.com/qemu/qemu/commit/369e5cb0c948b65e0845ca3394e25d757dd93206
  Author: Edgar E. Iglesias <edgar.iglesias@amd.com>
  Date:   2022-04-21 (Thu, 21 Apr 2022)

  Changed paths:
    M hw/misc/meson.build
    A hw/misc/xlnx-versal-crl.c
    A include/hw/misc/xlnx-versal-crl.h

  Log Message:
  -----------
  hw/misc: Add a model of the Xilinx Versal CRL

Add a model of the Xilinx Versal CRL.

Signed-off-by: Edgar E. Iglesias <edgar.iglesias@amd.com>
Reviewed-by: Frederic Konrad <fkonrad@amd.com>
Reviewed-by: Francisco Iglesias <francisco.iglesias@amd.com>
Message-id: 20220406174303.2022038-4-edgar.iglesias@xilinx.com
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>


  Commit: d6ccfc7e6734383926fccfdb92df238761cb9423
      
https://github.com/qemu/qemu/commit/d6ccfc7e6734383926fccfdb92df238761cb9423
  Author: Edgar E. Iglesias <edgar.iglesias@amd.com>
  Date:   2022-04-21 (Thu, 21 Apr 2022)

  Changed paths:
    M hw/arm/xlnx-versal.c
    M include/hw/arm/xlnx-versal.h

  Log Message:
  -----------
  hw/arm: versal: Connect the CRL

Connect the CRL (Clock Reset LPD) to the Versal SoC.

Signed-off-by: Edgar E. Iglesias <edgar.iglesias@amd.com>
Reviewed-by: Frederic Konrad <fkonrad@amd.com>
Reviewed-by: Francisco Iglesias <francisco.iglesias@amd.com>
Message-id: 20220406174303.2022038-5-edgar.iglesias@xilinx.com
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>


  Commit: 2bd84b6818c790508a65ec34e268295c3cb9315f
      
https://github.com/qemu/qemu/commit/2bd84b6818c790508a65ec34e268295c3cb9315f
  Author: Peter Maydell <peter.maydell@linaro.org>
  Date:   2022-04-21 (Thu, 21 Apr 2022)

  Changed paths:
    M hw/arm/exynos4210.c
    M include/hw/arm/exynos4210.h

  Log Message:
  -----------
  hw/arm/exynos4210: Use TYPE_OR_IRQ instead of custom OR-gate device

The Exynos4210 SoC device currently uses a custom device
"exynos4210.irq_gate" to model the OR gate that feeds each CPU's IRQ
line.  We have a standard TYPE_OR_IRQ device for this now, so use
that instead.

(This is a migration compatibility break, but that is OK for this
machine type.)

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: 20220404154658.565020-2-peter.maydell@linaro.org


  Commit: 019eafddd085352b1e0c758ffb8ef532bedb8512
      
https://github.com/qemu/qemu/commit/019eafddd085352b1e0c758ffb8ef532bedb8512
  Author: Peter Maydell <peter.maydell@linaro.org>
  Date:   2022-04-21 (Thu, 21 Apr 2022)

  Changed paths:
    M hw/intc/exynos4210_gic.c

  Log Message:
  -----------
  hw/intc/exynos4210_gic: Remove unused TYPE_EXYNOS4210_IRQ_GATE

Now we have removed the only use of TYPE_EXYNOS4210_IRQ_GATE we can
delete the device entirely.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Francisco Iglesias <frasse.iglesias@gmail.com>
Message-id: 20220404154658.565020-3-peter.maydell@linaro.org


  Commit: 5b2417288e9bdd437685725cd432692ed8f104e4
      
https://github.com/qemu/qemu/commit/5b2417288e9bdd437685725cd432692ed8f104e4
  Author: Peter Maydell <peter.maydell@linaro.org>
  Date:   2022-04-21 (Thu, 21 Apr 2022)

  Changed paths:
    M hw/arm/exynos4210.c
    M include/hw/arm/exynos4210.h

  Log Message:
  -----------
  hw/arm/exynos4210: Put a9mpcore device into state struct

The exynos4210 SoC mostly creates its child devices as if it were
board code.  This includes the a9mpcore object.  Switch that to a
new-style "embedded in the state struct" creation, because in the
next commit we're going to want to refer to the object again further
down in the exynos4210_realize() function.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: 20220404154658.565020-4-peter.maydell@linaro.org


  Commit: c9d4940a9be2065d9d124f9963cbacea881b892c
      
https://github.com/qemu/qemu/commit/c9d4940a9be2065d9d124f9963cbacea881b892c
  Author: Peter Maydell <peter.maydell@linaro.org>
  Date:   2022-04-21 (Thu, 21 Apr 2022)

  Changed paths:
    M hw/arm/exynos4210.c
    M include/hw/arm/exynos4210.h

  Log Message:
  -----------
  hw/arm/exynos4210: Drop int_gic_irq[] from Exynos4210Irq struct

The only time we use the int_gic_irq[] array in the Exynos4210Irq
struct is in the exynos4210_realize() function: we initialize it with
the GPIO inputs of the a9mpcore device, and then a bit later on we
connect those to the outputs of the internal combiner.  Now that the
a9mpcore object is easily accessible as s->a9mpcore we can make the
connection directly from one device to the other without going via
this array.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: 20220404154658.565020-5-peter.maydell@linaro.org


  Commit: 771dee52c09ec40791a3e8651c395e6aa097c664
      
https://github.com/qemu/qemu/commit/771dee52c09ec40791a3e8651c395e6aa097c664
  Author: Peter Maydell <peter.maydell@linaro.org>
  Date:   2022-04-21 (Thu, 21 Apr 2022)

  Changed paths:
    M hw/arm/exynos4210.c
    M hw/intc/exynos4210_gic.c
    M include/hw/arm/exynos4210.h

  Log Message:
  -----------
  hw/arm/exynos4210: Coalesce board_irqs and irq_table

The exynos4210 code currently has two very similar arrays of IRQs:

 * board_irqs is a field of the Exynos4210Irq struct which is filled
   in by exynos4210_init_board_irqs() with the appropriate qemu_irqs
   for each IRQ the board/SoC can assert
 * irq_table is a set of qemu_irqs pointed to from the
   Exynos4210State struct.  It's allocated in exynos4210_init_irq,
   and the only behaviour these irqs have is that they pass on the
   level to the equivalent board_irqs[] irq

The extra indirection through irq_table is unnecessary, so coalesce
these into a single irq_table[] array as a direct field in
Exynos4210State which exynos4210_init_board_irqs() fills in.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: 20220404154658.565020-6-peter.maydell@linaro.org


  Commit: 44068eabe0826c24096ddc2431ae9a03a7321a83
      
https://github.com/qemu/qemu/commit/44068eabe0826c24096ddc2431ae9a03a7321a83
  Author: Peter Maydell <peter.maydell@linaro.org>
  Date:   2022-04-21 (Thu, 21 Apr 2022)

  Changed paths:
    M hw/intc/exynos4210_gic.c

  Log Message:
  -----------
  hw/arm/exynos4210: Fix code style nit in combiner_grp_to_gic_id[]

Fix a missing set of spaces around '-' in the definition of
combiner_grp_to_gic_id[]. We're about to move this code, so
fix the style issue first to keep checkpatch happy with the
code-motion patch.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: 20220404154658.565020-7-peter.maydell@linaro.org


  Commit: 93afe073df30944191a1fe2a7fd4f0456e231720
      
https://github.com/qemu/qemu/commit/93afe073df30944191a1fe2a7fd4f0456e231720
  Author: Peter Maydell <peter.maydell@linaro.org>
  Date:   2022-04-21 (Thu, 21 Apr 2022)

  Changed paths:
    M hw/arm/exynos4210.c
    M hw/intc/exynos4210_gic.c
    M include/hw/arm/exynos4210.h

  Log Message:
  -----------
  hw/arm/exynos4210: Move exynos4210_init_board_irqs() into exynos4210.c

The function exynos4210_init_board_irqs() currently lives in
exynos4210_gic.c, but it isn't really part of the exynos4210.gic
device -- it is a function that implements (some of) the wiring up of
interrupts between the SoC's GIC and combiner components.  This means
it fits better in exynos4210.c, which is the SoC-level code.  Move it
there. Similarly, exynos4210_git_irq() is used almost only in the
SoC-level code, so move it too.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: 20220404154658.565020-8-peter.maydell@linaro.org


  Commit: 78cb12a92c5466b792224e1f4c3e061d233d383b
      
https://github.com/qemu/qemu/commit/78cb12a92c5466b792224e1f4c3e061d233d383b
  Author: Peter Maydell <peter.maydell@linaro.org>
  Date:   2022-04-21 (Thu, 21 Apr 2022)

  Changed paths:
    M MAINTAINERS
    M hw/arm/exynos4210.c
    M hw/intc/exynos4210_gic.c
    M include/hw/arm/exynos4210.h
    A include/hw/intc/exynos4210_gic.h

  Log Message:
  -----------
  hw/arm/exynos4210: Put external GIC into state struct

Switch the creation of the external GIC to the new-style "embedded in
state struct" approach, so we can easily refer to the object
elsewhere during realize.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: 20220404154658.565020-9-peter.maydell@linaro.org


  Commit: 38c2b905d3beb27a056f7f53bcf7d9bce487e89d
      
https://github.com/qemu/qemu/commit/38c2b905d3beb27a056f7f53bcf7d9bce487e89d
  Author: Peter Maydell <peter.maydell@linaro.org>
  Date:   2022-04-21 (Thu, 21 Apr 2022)

  Changed paths:
    M hw/arm/exynos4210.c
    M include/hw/arm/exynos4210.h

  Log Message:
  -----------
  hw/arm/exynos4210: Drop ext_gic_irq[] from Exynos4210Irq struct

The only time we use the ext_gic_irq[] array in the Exynos4210Irq
struct is during realize of the SoC -- we initialize it with the
input IRQs of the external GIC device, and then connect those to
outputs of other devices further on in realize (including in the
exynos4210_init_board_irqs() function).  Now that the ext_gic object
is easily accessible as s->ext_gic we can make the connections
directly from one device to the other without going via this array.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: 20220404154658.565020-10-peter.maydell@linaro.org


  Commit: 03a46e00813ae8bd0243457b12d48fd8d2d4d350
      
https://github.com/qemu/qemu/commit/03a46e00813ae8bd0243457b12d48fd8d2d4d350
  Author: Peter Maydell <peter.maydell@linaro.org>
  Date:   2022-04-21 (Thu, 21 Apr 2022)

  Changed paths:
    M hw/arm/exynos4210.c
    M hw/intc/exynos4210_combiner.c
    M include/hw/arm/exynos4210.h

  Log Message:
  -----------
  hw/arm/exynos4210: Move exynos4210_combiner_get_gpioin() into exynos4210.c

The function exynos4210_combiner_get_gpioin() currently lives in
exynos4210_combiner.c, but it isn't really part of the combiner
device itself -- it is a function that implements the wiring up of
some interrupt sources to multiple combiner inputs.  Move it to live
with the other SoC-level code in exynos4210.c, along with a few
macros previously defined in exynos4210.h which are now used only
in exynos4210.c.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: 20220404154658.565020-11-peter.maydell@linaro.org


  Commit: b17b54a63d1071b862361d31c7d20ad7a620c182
      
https://github.com/qemu/qemu/commit/b17b54a63d1071b862361d31c7d20ad7a620c182
  Author: Peter Maydell <peter.maydell@linaro.org>
  Date:   2022-04-21 (Thu, 21 Apr 2022)

  Changed paths:
    M include/hw/arm/exynos4210.h

  Log Message:
  -----------
  hw/arm/exynos4210: Delete unused macro definitions

Delete a couple of #defines which are never used.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: 20220404154658.565020-12-peter.maydell@linaro.org


  Commit: 7582d930dad3331bfdd7a4e1fe5d2080051d10d9
      
https://github.com/qemu/qemu/commit/7582d930dad3331bfdd7a4e1fe5d2080051d10d9
  Author: Peter Maydell <peter.maydell@linaro.org>
  Date:   2022-04-21 (Thu, 21 Apr 2022)

  Changed paths:
    M hw/arm/exynos4210.c
    M include/hw/arm/exynos4210.h

  Log Message:
  -----------
  hw/arm/exynos4210: Use TYPE_SPLIT_IRQ in exynos4210_init_board_irqs()

In exynos4210_init_board_irqs(), use the TYPE_SPLIT_IRQ device
instead of qemu_irq_split().

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: 20220404154658.565020-13-peter.maydell@linaro.org


  Commit: 0dee4daca37e1547b4b2a24d5a2318d5e5a5af89
      
https://github.com/qemu/qemu/commit/0dee4daca37e1547b4b2a24d5a2318d5e5a5af89
  Author: Peter Maydell <peter.maydell@linaro.org>
  Date:   2022-04-21 (Thu, 21 Apr 2022)

  Changed paths:
    M hw/arm/exynos4210.c

  Log Message:
  -----------
  hw/arm/exynos4210: Fill in irq_table[] for internal-combiner-only IRQ lines

In exynos4210_init_board_irqs(), the loop that handles IRQ lines that
are in a range that applies to the internal combiner only creates a
splitter for those interrupts which go to both the internal combiner
and to the external GIC, but it does nothing at all for the
interrupts which don't go to the external GIC, leaving the
irq_table[] array element empty for those.  (This will result in
those interrupts simply being lost, not in a QEMU crash.)

I don't have a reliable datasheet for this SoC, but since we do wire
up one interrupt line in this category (the HDMI I2C device on
interrupt 16,1), this seems like it must be a bug in the existing
QEMU code.  Fill in the irq_table[] entries where we're not splitting
the IRQ to both the internal combiner and the external GIC with the
IRQ line of the internal combiner.  (That is, these IRQ lines go to
just one device, not multiple.)

This bug didn't have any visible guest effects because the only
implemented device that was affected was the HDMI I2C controller,
and we never connect any I2C devices to that bus.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: 20220404154658.565020-14-peter.maydell@linaro.org


  Commit: 1c6f3feeb3ceec6f5359515f931b3ab7b2c17457
      
https://github.com/qemu/qemu/commit/1c6f3feeb3ceec6f5359515f931b3ab7b2c17457
  Author: Peter Maydell <peter.maydell@linaro.org>
  Date:   2022-04-21 (Thu, 21 Apr 2022)

  Changed paths:
    M hw/arm/exynos4210.c

  Log Message:
  -----------
  hw/arm/exynos4210: Connect MCT_G0 and MCT_G1 to both combiners

Currently for the interrupts MCT_G0 and MCT_G1 which are
the only ones in the input range of the external combiner
and which are also wired to the external GIC, we connect
them only to the internal combiner and the external GIC.
This seems likely to be a bug, as all other interrupts
which are in the input range of both combiners are
connected to both combiners. (The fact that the code in
exynos4210_combiner_get_gpioin() is also trying to wire
up these inputs on both combiners also suggests this.)

Wire these interrupts up to both combiners, like the rest.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: 20220404154658.565020-15-peter.maydell@linaro.org


  Commit: 76124b4cb23f9efdd0746e057eeb64c9d48bbead
      
https://github.com/qemu/qemu/commit/76124b4cb23f9efdd0746e057eeb64c9d48bbead
  Author: Peter Maydell <peter.maydell@linaro.org>
  Date:   2022-04-21 (Thu, 21 Apr 2022)

  Changed paths:
    M hw/arm/exynos4210.c
    M include/hw/arm/exynos4210.h

  Log Message:
  -----------
  hw/arm/exynos4210: Don't connect multiple lines to external GIC inputs

The combiner_grp_to_gic_id[] array includes the EXT_GIC_ID_MCT_G0
and EXT_GIC_ID_MCT_G1 multiple times. This means that we will
connect multiple IRQs up to the same external GIC input, which
is not permitted. We do the same thing in the code in
exynos4210_init_board_irqs() because the conditionals selecting
an irq_id in the first loop match multiple interrupt IDs.

Overall we do this for interrupt IDs
(1, 4), (12, 4), (35, 4), (51, 4), (53, 4) for EXT_GIC_ID_MCT_G0
and
(1, 5), (12, 5), (35, 5), (51, 5), (53, 5) for EXT_GIC_ID_MCT_G1

These correspond to the cases for the multi-core timer that we are
wiring up to multiple inputs on the combiner in
exynos4210_combiner_get_gpioin().  That code already deals with all
these interrupt IDs being the same input source, so we don't need to
connect the external GIC interrupt for any of them except the first
(1, 4) and (1, 5). Remove the array entries and conditionals which
were incorrectly causing us to wire up extra lines.

This bug didn't cause any visible effects, because we only connect
up a device to the "primary" ID values (1, 4) and (1, 5), so the
extra lines would never be set to a level.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: 20220404154658.565020-16-peter.maydell@linaro.org


  Commit: 76621953c9966bab33ea99a39e47130169bec389
      
https://github.com/qemu/qemu/commit/76621953c9966bab33ea99a39e47130169bec389
  Author: Peter Maydell <peter.maydell@linaro.org>
  Date:   2022-04-21 (Thu, 21 Apr 2022)

  Changed paths:
    M hw/arm/exynos4210.c
    M include/hw/arm/exynos4210.h

  Log Message:
  -----------
  hw/arm/exynos4210: Fold combiner splits into exynos4210_init_board_irqs()

At this point, the function exynos4210_init_board_irqs() splits input
IRQ lines to connect them to the input combiner, output combiner and
external GIC.  The function exynos4210_combiner_get_gpioin() splits
some of the combiner input lines further to connect them to multiple
different inputs on the combiner.

Because (unlike qemu_irq_split()) the TYPE_SPLIT_IRQ device has a
configurable number of outputs, we can do all this in one place, by
making exynos4210_init_board_irqs() add extra outputs to the splitter
device when it must be connected to more than one input on each
combiner.

We do this with a new data structure, the combinermap, which is an
array each of whose elements is a list of the interrupt IDs on the
combiner which must be tied together.  As we loop through each
interrupt ID, if we find that it is the first one in one of these
lists, we configure the splitter device with eonugh extra outputs and
wire them up to the other interrupt IDs in the list.

Conveniently, for all the cases where this is necessary, the
lowest-numbered interrupt ID in each group is in the range of the
external combiner, so we only need to code for this in the first of
the two loops in exynos4210_init_board_irqs().

The old code in exynos4210_combiner_get_gpioin() which is being
deleted here had several problems which don't exist in the new code
in its handling of the multi-core timer interrupts:
 (1) the case labels specified bits 4 ... 8, but bit '8' doesn't
     exist; these should have been 4 ... 7
 (2) it used the input irq[EXYNOS4210_COMBINER_GET_IRQ_NUM(1, bit + 4)]
     multiple times as the input of several different splitters,
     which isn't allowed
 (3) in an apparent cut-and-paste error, the cases for all the
     multi-core timer inputs used "bit + 4" even though the
     bit range for the case was (intended to be) 4 ... 7, which
     meant it was looking at non-existent bits 8 ... 11.
None of these exist in the new code.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: 20220404154658.565020-17-peter.maydell@linaro.org


  Commit: cebef07df5c0cfb284f7e5e69cde1ae509fb6ada
      
https://github.com/qemu/qemu/commit/cebef07df5c0cfb284f7e5e69cde1ae509fb6ada
  Author: Peter Maydell <peter.maydell@linaro.org>
  Date:   2022-04-21 (Thu, 21 Apr 2022)

  Changed paths:
    M hw/arm/exynos4210.c
    M hw/intc/exynos4210_combiner.c
    M include/hw/arm/exynos4210.h
    A include/hw/intc/exynos4210_combiner.h

  Log Message:
  -----------
  hw/arm/exynos4210: Put combiners into state struct

Switch the creation of the combiner devices to the new-style
"embedded in state struct" approach, so we can easily refer
to the object elsewhere during realize.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: 20220404154658.565020-18-peter.maydell@linaro.org


  Commit: f37fc537fc1f129ca94ec5e29f4c98f3724d7929
      
https://github.com/qemu/qemu/commit/f37fc537fc1f129ca94ec5e29f4c98f3724d7929
  Author: Peter Maydell <peter.maydell@linaro.org>
  Date:   2022-04-21 (Thu, 21 Apr 2022)

  Changed paths:
    M hw/arm/exynos4210.c
    M include/hw/arm/exynos4210.h

  Log Message:
  -----------
  hw/arm/exynos4210: Drop Exynos4210Irq struct

The only time we use the int_combiner_irq[] and ext_combiner_irq[]
arrays in the Exynos4210Irq struct is during realize of the SoC -- we
initialize them with the input IRQs of the combiner devices, and then
connect those to outputs of other devices in
exynos4210_init_board_irqs().  Now that the combiner objects are
easily accessible as s->int_combiner and s->ext_combiner we can make
the connections directly from one device to the other without going
via these arrays.

Since these are the only two remaining elements of Exynos4210Irq,
we can remove that struct entirely.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: 20220404154658.565020-19-peter.maydell@linaro.org


  Commit: d5c3eb50afac631d41daec7c09a959fa06304fce
      
https://github.com/qemu/qemu/commit/d5c3eb50afac631d41daec7c09a959fa06304fce
  Author: Zongyuan Li <zongyuan.li@smartx.com>
  Date:   2022-04-21 (Thu, 21 Apr 2022)

  Changed paths:
    M hw/arm/realview.c

  Log Message:
  -----------
  hw/arm/realview: replace 'qemu_split_irq' with 'TYPE_SPLIT_IRQ'

Signed-off-by: Zongyuan Li <zongyuan.li@smartx.com>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Message-id: 20220324181557.203805-2-zongyuan.li@smartx.com
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>


  Commit: d0a030d80165d0b20b0687dab8f99056eee68352
      
https://github.com/qemu/qemu/commit/d0a030d80165d0b20b0687dab8f99056eee68352
  Author: Zongyuan Li <zongyuan.li@smartx.com>
  Date:   2022-04-21 (Thu, 21 Apr 2022)

  Changed paths:
    M hw/arm/stellaris.c

  Log Message:
  -----------
  hw/arm/stellaris: replace 'qemu_split_irq' with 'TYPE_SPLIT_IRQ'

Signed-off-by: Zongyuan Li <zongyuan.li@smartx.com>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Message-id: 20220324181557.203805-3-zongyuan.li@smartx.com
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>


  Commit: 0ebfc997d29c3789b9bd41fe53fc198c2fd550da
      
https://github.com/qemu/qemu/commit/0ebfc997d29c3789b9bd41fe53fc198c2fd550da
  Author: Zongyuan Li <zongyuan.li@smartx.com>
  Date:   2022-04-21 (Thu, 21 Apr 2022)

  Changed paths:
    M hw/core/irq.c
    M include/hw/irq.h

  Log Message:
  -----------
  hw/core/irq: remove unused 'qemu_irq_split' function

Signed-off-by: Zongyuan Li <zongyuan.li@smartx.com>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Message-id: 20220324181557.203805-5-zongyuan.li@smartx.com
Resolves: https://gitlab.com/qemu-project/qemu/-/issues/811
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>


  Commit: 011301736bd238ed91864a4c305616a78f9056ed
      
https://github.com/qemu/qemu/commit/011301736bd238ed91864a4c305616a78f9056ed
  Author: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
  Date:   2022-04-21 (Thu, 21 Apr 2022)

  Changed paths:
    M docs/system/arm/virt.rst

  Log Message:
  -----------
  hw/arm/virt: impact of gic-version on max CPUs

Describe that the gic-version influences the maximum number of CPUs.

Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
Message-id: 20220413231456.35811-1-heinrich.schuchardt@canonical.com
[PMM: minor punctuation tweaks]
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>


  Commit: c3e9e73a8323cc61386c3067715ba4e44ea95a0f
      
https://github.com/qemu/qemu/commit/c3e9e73a8323cc61386c3067715ba4e44ea95a0f
  Author: Hao Wu <wuhaotsh@google.com>
  Date:   2022-04-21 (Thu, 21 Apr 2022)

  Changed paths:
    M include/hw/misc/npcm7xx_gcr.h

  Log Message:
  -----------
  hw/misc: Add PWRON STRAP bit fields in GCR module

Similar to the Aspeed code in include/misc/aspeed_scu.h, we define
the PWRON STRAP fields in their corresponding module for NPCM7XX.

Signed-off-by: Hao Wu <wuhaotsh@google.com>
Reviewed-by: Patrick Venture <venture@google.com>
Message-id: 20220411165842.3912945-2-wuhaotsh@google.com
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>


  Commit: 5b415dd61bdbf61fb4be0e9f1a7172b8bce682c6
      
https://github.com/qemu/qemu/commit/5b415dd61bdbf61fb4be0e9f1a7172b8bce682c6
  Author: Hao Wu <wuhaotsh@google.com>
  Date:   2022-04-21 (Thu, 21 Apr 2022)

  Changed paths:
    M hw/arm/npcm7xx_boards.c

  Log Message:
  -----------
  hw/arm: Use bit fields for NPCM7XX PWRON STRAPs

This patch uses the defined fields to describe PWRON STRAPs for
better readability.

Signed-off-by: Hao Wu <wuhaotsh@google.com>
Reviewed-by: Patrick Venture <venture@google.com>
Message-id: 20220411165842.3912945-3-wuhaotsh@google.com
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>


  Commit: 401d46789410e88e9e90d76a11f46e8e9f358d55
      
https://github.com/qemu/qemu/commit/401d46789410e88e9e90d76a11f46e8e9f358d55
  Author: Richard Henderson <richard.henderson@linaro.org>
  Date:   2022-04-21 (Thu, 21 Apr 2022)

  Changed paths:
    M MAINTAINERS
    M docs/system/arm/virt.rst
    M hw/arm/exynos4210.c
    M hw/arm/npcm7xx_boards.c
    M hw/arm/realview.c
    M hw/arm/stellaris.c
    M hw/arm/virt.c
    M hw/arm/xlnx-versal-virt.c
    M hw/arm/xlnx-versal.c
    M hw/arm/xlnx-zynqmp.c
    M hw/core/irq.c
    M hw/intc/exynos4210_combiner.c
    M hw/intc/exynos4210_gic.c
    M hw/misc/meson.build
    A hw/misc/xlnx-versal-crl.c
    M hw/timer/cadence_ttc.c
    M include/hw/arm/exynos4210.h
    M include/hw/arm/xlnx-versal.h
    M include/hw/arm/xlnx-zynqmp.h
    A include/hw/intc/exynos4210_combiner.h
    A include/hw/intc/exynos4210_gic.h
    M include/hw/irq.h
    M include/hw/misc/npcm7xx_gcr.h
    A include/hw/misc/xlnx-versal-crl.h
    A include/hw/timer/cadence_ttc.h

  Log Message:
  -----------
  Merge tag 'pull-target-arm-20220421' of 
https://git.linaro.org/people/pmaydell/qemu-arm into staging

target-arm queue:
 * hw/arm/virt: Check for attempt to use TrustZone with KVM or HVF
 * versal: Add the Cortex-R5s in the Real-Time Processing Unit (RPU) subsystem
 * versal: model enough of the Clock/Reset Low-power domain (CRL) to allow 
control of the Cortex-R5s
 * xlnx-zynqmp: Connect 4 TTC timers
 * exynos4210: Refactor GIC/combiner code to stop using qemu_split_irq
 * realview: replace 'qemu_split_irq' with 'TYPE_SPLIT_IRQ'
 * stellaris: replace 'qemu_split_irq' with 'TYPE_SPLIT_IRQ'
 * hw/core/irq: remove unused 'qemu_irq_split' function
 * npcm7xx: use symbolic constants for PWRON STRAP bit fields
 * virt: document impact of gic-version on max CPUs

# -----BEGIN PGP SIGNATURE-----
#
# iQJNBAABCAA3FiEE4aXFk81BneKOgxXPPCUl7RQ2DN4FAmJhPSUZHHBldGVyLm1h
# eWRlbGxAbGluYXJvLm9yZwAKCRA8JSXtFDYM3hAsD/4qzZK6LFL4kFH6E4z3tWIn
# ErHrfPGUt/SEfHLP+stQP/loFgkR1SNzcrIZ/HiDCB/W+IqQKuP+tHin2lMhO1tR
# KM6suUO1In2hoxfzimVta4F4GVN8ifY69qUYhaRxcBYSUpRXDNFJGsRIeT5JeUMd
# SArZUifRs7JUo25rIkg5Y+YZE37dmiA5gcuswtoLPa/UlDVqRxihLnItySmeutsc
# /Y8d/iym/ydlhvtL1OUt1KKYeg4ykrPzJCfvopsT2xgkwwB0PYci8//fa5IrRVlp
# Uw6yDssZrDIcXfVz88rdriILaszicCv8lOhTH6I74oXCatiyvi4BEzW8uGqVS8wt
# ff+AaKvGqb5t4GKKhCdpL2NzDwKBGWZHuruACs9IfvMkz62HE12Vr99qAKdQ3s93
# QnFIyUKg90mGkvKy8336zX3hnWjPH8wTASOXbNrgnt6GVLkqwy9ibug5kS+n77eJ
# BnkE5p3OfMVJ5a4o+iZbbDJKfzhNUHDSMIBbG1jRNzax1RgxOBtHFSqP5jmbpm+S
# agyr8h+Md0Tx1dwZKxdCGyvcbSZiG2WxRnci3dyT4MqYY1t1GEpOfcs1EN+CYKwG
# iuezZzJopjOFGaXQaB3OvbvCKxuroHKG61SmDmx+5OkfAxhrqe4ulwYij4jhsyhH
# t8zGzDOKLakv3li90xCX/w==
# =Rke9
# -----END PGP SIGNATURE-----
# gpg: Signature made Thu 21 Apr 2022 04:16:53 AM PDT
# gpg:                using RSA key E1A5C593CD419DE28E8315CF3C2525ED14360CDE
# gpg:                issuer "peter.maydell@linaro.org"
# gpg: Good signature from "Peter Maydell <peter.maydell@linaro.org>" [full]
# gpg:                 aka "Peter Maydell <pmaydell@gmail.com>" [full]
# gpg:                 aka "Peter Maydell <pmaydell@chiark.greenend.org.uk>" 
[full]

* tag 'pull-target-arm-20220421' of 
https://git.linaro.org/people/pmaydell/qemu-arm: (31 commits)
  hw/arm: Use bit fields for NPCM7XX PWRON STRAPs
  hw/misc: Add PWRON STRAP bit fields in GCR module
  hw/arm/virt: impact of gic-version on max CPUs
  hw/core/irq: remove unused 'qemu_irq_split' function
  hw/arm/stellaris: replace 'qemu_split_irq' with 'TYPE_SPLIT_IRQ'
  hw/arm/realview: replace 'qemu_split_irq' with 'TYPE_SPLIT_IRQ'
  hw/arm/exynos4210: Drop Exynos4210Irq struct
  hw/arm/exynos4210: Put combiners into state struct
  hw/arm/exynos4210: Fold combiner splits into exynos4210_init_board_irqs()
  hw/arm/exynos4210: Don't connect multiple lines to external GIC inputs
  hw/arm/exynos4210: Connect MCT_G0 and MCT_G1 to both combiners
  hw/arm/exynos4210: Fill in irq_table[] for internal-combiner-only IRQ lines
  hw/arm/exynos4210: Use TYPE_SPLIT_IRQ in exynos4210_init_board_irqs()
  hw/arm/exynos4210: Delete unused macro definitions
  hw/arm/exynos4210: Move exynos4210_combiner_get_gpioin() into exynos4210.c
  hw/arm/exynos4210: Drop ext_gic_irq[] from Exynos4210Irq struct
  hw/arm/exynos4210: Put external GIC into state struct
  hw/arm/exynos4210: Move exynos4210_init_board_irqs() into exynos4210.c
  hw/arm/exynos4210: Fix code style nit in combiner_grp_to_gic_id[]
  hw/arm/exynos4210: Coalesce board_irqs and irq_table
  ...

Signed-off-by: Richard Henderson <richard.henderson@linaro.org>


Compare: https://github.com/qemu/qemu/compare/b1efff6bf031...401d46789410



reply via email to

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