Page MenuHomeFreeBSD

D44037.diff
No OneTemporary

D44037.diff

diff --git a/sys/arm64/arm64/gicv3_its.c b/sys/arm64/arm64/gicv3_its.c
--- a/sys/arm64/arm64/gicv3_its.c
+++ b/sys/arm64/arm64/gicv3_its.c
@@ -45,6 +45,7 @@
#include <sys/malloc.h>
#include <sys/module.h>
#include <sys/mutex.h>
+#include <sys/physmem.h>
#include <sys/proc.h>
#include <sys/taskqueue.h>
#include <sys/tree.h>
@@ -827,8 +828,18 @@
/* Make sure the GIC has seen everything */
dsb(sy);
+ } else {
+ KASSERT(sc->sc_pend_base[cpuid] == 0,
+ ("PREALLOC too soon cpuid %d", cpuid));
+ tmp = gic_r_read_8(gicv3, GICR_PENDBASER);
+ tmp &= GICR_PENDBASER_PA_MASK;
+ if (!physmem_excluded(tmp, LPI_PENDTAB_SIZE))
+ panic("gicv3 PENDBASER on cpu %d needs to reuse 0x%#lx, but not reserved\n",
+ cpuid, tmp);
+ sc->sc_pend_base[cpuid] = PHYS_TO_DMAP(tmp);
}
+
if (bootverbose)
device_printf(gicv3, "using %sPENDBASE of %#lx on cpu %d\n",
(sc->sc_its_flags & ITS_FLAGS_LPI_PREALLOC) ? "pre-existing " : "",

File Metadata

Mime Type
text/plain
Expires
Thu, Nov 7, 5:35 PM (22 h, 16 s)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
14517696
Default Alt Text
D44037.diff (958 B)

Event Timeline