|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v2 2/4] xen/arm: its: separate ITS and host LPI quirk scopes
Hi Michal, Thanks for the follow-up. On Fri, Jul 31, 2026 at 10:24:47AM +0200, Orzel, Michal wrote: > > > On 28-May-26 02:25, Mykola Kvach wrote: > > From: Mykola Kvach <mykola_kvach@xxxxxxxx> > > > > ITS quirks can impose restrictions on memory accessed by the ITS itself and > > on shared host LPI/Redistributor state. These scopes are not identical, so > > a single global ITS quirk state makes the host LPI policy depend implicitly > > on the quirks seen while initializing host ITSes. > > > > Add per-ITS quirk_flags to struct host_its and keep a separate > > host_lpi_flags state in the LPI code. The quirk table now records the > > ITS-private and host LPI scopes explicitly through its_flags and lpi_flags. > > The R-Car Gen4 quirk applies the same memory-related restrictions to both > > scopes, preserving the existing behavior without relying on an implicit > > aggregation step. > > > > This also removes the old assumption that all host ITSes must expose the > > same quirk state. Host LPI restrictions are accumulated only from quirk > > entries that explicitly set lpi_flags. > > > > Use per-ITS quirk_flags for GITS_CBASER, GITS_BASER<n> and ITT allocations. > > Use host_lpi_flags directly in gic-v3-lpi.c for GICR_PROPBASER and > > GICR_PENDBASER setup. Memory-related quirk bits are named GICV3_QUIRK_MEM_* > > and are translated by shared gicv3_mem_get_*() helpers. > > > > Signed-off-by: Mykola Kvach <mykola_kvach@xxxxxxxx> > I already gave R-b for this patch but noticed two issues: > > [...] > > > > > -static void gicv3_its_enable_quirks(struct host_its *hw_its) > > +static void __init gicv3_its_collect_quirks(struct host_its *hw_its) > The only caller of gicv3_its_collect_quirks() is > gicv3_its_init_single_its(), which stays non-init until patch 4/4. > Please annotate the caller here as well. I plan to replace the first patch, whose release fix is now upstream, with the initialization-order follow-up discussed with Julien. It will prepare all ITSes and collect their quirks, initialize host LPI state, and then activate the ITSes. I'll put the __init annotations on the ITS preparation and activation functions, and gicv3_its_init(), in that replacement patch. This will make the quirk collector's caller init-only before the quirk-scope changes are introduced. > > [...] > > > @@ -157,6 +164,7 @@ int gicv3_lpi_init_rdist(void __iomem * rdist_base); > > /* Initialize the host structures for LPIs and the host ITSes. */ > > int gicv3_lpi_init_host_lpis(unsigned int host_lpi_bits); > > int gicv3_its_init(void); > > +void __init gicv3_lpi_update_host_flags(uint32_t flags); > Please, do not add __init here for a prototype. I'll also remove __init from the gicv3_lpi_update_host_flags() prototype and keep it on the definition. Best regards, Mykola
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |