Shift the ITS processor ID after reading it.

When using the processor ID value we mask off the low and high bits that
should be zero. Unfortunatly we don't shift the ID value so it won't be
affected. Add the shift when reading the ID as this will need to align
with the address based target value.

MFC after:	2 weeks
Sponsored by:	DARPA, AFRL
This commit is contained in:
Andrew Turner 2020-01-30 18:49:19 +00:00
parent 10dd04d39f
commit 9c7eb5ca62
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=357304

View File

@ -685,7 +685,8 @@ its_init_cpu(device_t dev, struct gicv3_its_softc *sc)
target = vtophys(rman_get_virtual(&rpcpu->res));
} else {
/* This ITS wants the unique processor number */
target = GICR_TYPER_CPUNUM(gic_r_read_8(gicv3, GICR_TYPER));
target = GICR_TYPER_CPUNUM(gic_r_read_8(gicv3, GICR_TYPER)) <<
CMD_TARGET_SHIFT;
}
sc->sc_its_cols[cpuid]->col_target = target;