mirror of https://github.com/acidanthera/audk.git
ArmPkg/ArmGicDxe: Fix GICv3 interrupt routing mode bug
Setting GICD_IROUTERn.IRM and GICD_IROUTERn.{Aff3,Aff2,Aff1,Aff0} at the same time is nonsensical (see 8.9.13 in the GICv3 spec, which says of GICD_IROUTERn.IRM that "When this bit is set to 1, GICD_IROUTER<n>.{Aff3,Aff2,Aff1,Aff0} are UNKNOWN"). There is also no guarantee that IRM is implemented (see GICD_TYPER.No1N which indicates whether the implementation supports this or not). Let's thus not set this bit, as we want all SPIs to be delivered to the same CPU, and not be broadcast to all of them. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Ming Huang <ming.huang@linaro.org> Acked-by: Marc Zyngier <marc.zyngier@arm.com>
This commit is contained in:
parent
0adc6eae94
commit
b66e38b501
|
@ -469,7 +469,7 @@ GicV3DxeInitialize (
|
|||
for (Index = 0; Index < (mGicNumInterrupts - 32); Index++) {
|
||||
MmioWrite32 (
|
||||
mGicDistributorBase + ARM_GICD_IROUTER + (Index * 8),
|
||||
CpuTarget | ARM_GICD_IROUTER_IRM
|
||||
CpuTarget
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue