[PATCH v3 20/30] drivers/arm: Implement acpi_fill_madt
Simon Glass
sjg at chromium.org
Mon Sep 16 17:41:15 CEST 2024
Hi Patrick,
On Thu, 12 Sept 2024 at 00:31, Patrick Rudolph
<patrick.rudolph at 9elements.com> wrote:
>
> On Thu, Sep 12, 2024 at 2:58 AM Simon Glass <sjg at chromium.org> wrote:
> >
> > Hi Patrick,
> >
> > On Wed, 11 Sept 2024 at 00:25, Patrick Rudolph
> > <patrick.rudolph at 9elements.com> wrote:
> > >
> > > Fill the MADT table in the GIC driver and armv8 CPU driver to
> > > drop SoC specific code. While the GIC only needs devicetree
> > > data, the CPU driver needs additional information stored in
> > > the cpu_plat struct.
> > >
> > > While on it update the only board making use of the existing
> > > drivers and writing ACPI MADT in mainboard code.
> > >
> > > TEST: Booted on QEMU sbsa using driver model generated MADT.
> > > Signed-off-by: Patrick Rudolph <patrick.rudolph at 9elements.com>
> > > Cc: Simon Glass <sjg at chromium.org>
> > > ---
> > > arch/arm/lib/acpi_table.c | 1 +
> > > arch/arm/lib/gic-v3-its.c | 89 ++++++++++++++++++++++++++++++++++++++-
> > > drivers/cpu/armv8_cpu.c | 27 ++++++++++++
> > > include/cpu.h | 27 +++++++++++-
> > > 4 files changed, 141 insertions(+), 3 deletions(-)
> >
> > Reviewed-by: Simon Glass <sjg at chromium.org>
> >
> > Are the GIC values available by probing, or are they just 'known', and
> > dependent on the compatible string?
> Sorry I don't get that question.
>
> The "arm_gic_v3_its" and "arm_gic_v3" driver uses existing DT
> properties and should work with all existing boards.
>
> The madt_gicc entries are board specific. Besides the mpidr all of
> them can be 0.
> Those entries currently do not have matching DT properties in the CPU
> node that could be used.
> Some of those entries are present in the GIC node, but there's no
> direct association between CPU nodes and GIC nodes.
If they are board-specific then they should depend on the board
compatible-string, assuming they cannot be read from the devicetree.
The properties should be set in the driver, though.
This might be the sort of situation where the GIC binding leaves out
stuff and Linux fills it in from internal data? Or perhaps Linux just
doesn't care about these features of the GIC?
Regards,
Simon
More information about the U-Boot
mailing list