irqchip/gic-v3-its: Check that all RDs have the same property table
If booting with LPIs enabled, all the redistributors must have the exact same property table. No ifs, no buts. Tested-by: Jeremy Linton <jeremy.linton@arm.com> Tested-by: Bhupesh Sharma <bhsharma@redhat.com> Tested-by: Lei Zhang <zhang.lei@jp.fujitsu.com> Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
This commit is contained in:
parent
c6e2ccb66d
commit
f842ca8e9c
|
@ -2029,6 +2029,15 @@ static void its_cpu_init_lpis(void)
|
||||||
val = readl_relaxed(rbase + GICR_CTLR);
|
val = readl_relaxed(rbase + GICR_CTLR);
|
||||||
if ((gic_rdists->flags & RDIST_FLAGS_RD_TABLES_PREALLOCATED) &&
|
if ((gic_rdists->flags & RDIST_FLAGS_RD_TABLES_PREALLOCATED) &&
|
||||||
(val & GICR_CTLR_ENABLE_LPIS)) {
|
(val & GICR_CTLR_ENABLE_LPIS)) {
|
||||||
|
/*
|
||||||
|
* Check that we get the same property table on all
|
||||||
|
* RDs. If we don't, this is hopeless.
|
||||||
|
*/
|
||||||
|
paddr = gicr_read_propbaser(rbase + GICR_PROPBASER);
|
||||||
|
paddr &= GENMASK_ULL(51, 12);
|
||||||
|
if (WARN_ON(gic_rdists->prop_table_pa != paddr))
|
||||||
|
add_taint(TAINT_CRAP, LOCKDEP_STILL_OK);
|
||||||
|
|
||||||
paddr = gicr_read_pendbaser(rbase + GICR_PENDBASER);
|
paddr = gicr_read_pendbaser(rbase + GICR_PENDBASER);
|
||||||
paddr &= GENMASK_ULL(51, 16);
|
paddr &= GENMASK_ULL(51, 16);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue