| #
796b73f6 |
| 04-Dec-2025 |
Manish Pandey <manish.pandey2@arm.com> |
Merge "fix(gicv3): add an isb between the ICC_SRE_EL2 and ICC_SRE_EL1 writes" into integration
|
| #
d88390a0 |
| 03-Dec-2025 |
Boyan Karatotev <boyan.karatotev@arm.com> |
fix(gicv3): add an isb between the ICC_SRE_EL2 and ICC_SRE_EL1 writes
While ICC_SRE_EL2.SRE is 0, ICC_SRE_EL1.SRE is RAZ/WI. Except for an isb between the two writes, there is nothing to guarantee t
fix(gicv3): add an isb between the ICC_SRE_EL2 and ICC_SRE_EL1 writes
While ICC_SRE_EL2.SRE is 0, ICC_SRE_EL1.SRE is RAZ/WI. Except for an isb between the two writes, there is nothing to guarantee that the ICC_SRE_EL2.SRE write has taken effect by the time the ICC_SRE_EL1.SRE write occurs. Add the isb to guarantee that the write is successful.
Change-Id: Ib84193f49e67ed0a64d6e2c6c71fb99b5b58a211 Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com>
show more ...
|
| #
b32a1111 |
| 26-Aug-2025 |
Govindraj Raja <govindraj.raja@arm.com> |
Merge changes from topic "xlnx_misra_fix_gen_gicv3" into integration
* changes: fix(gicv3): typecast operands to match data type fix(gicv3): add missing curly braces fix(gicv3): fix misra viol
Merge changes from topic "xlnx_misra_fix_gen_gicv3" into integration
* changes: fix(gicv3): typecast operands to match data type fix(gicv3): add missing curly braces fix(gicv3): fix misra violation 12.1 fix(gicv3): match function definition and declaration fix(gicv3): typecast operands to match data type
show more ...
|
| #
77189b03 |
| 04-Jun-2025 |
Saivardhan Thatikonda <saivardhan.thatikonda@amd.com> |
fix(gicv3): typecast operands to match data type
This corrects the MISRA violation C2012-10.1: Operands shall not be of an inappropriate essential type. The condition is explicitly checked against 0
fix(gicv3): typecast operands to match data type
This corrects the MISRA violation C2012-10.1: Operands shall not be of an inappropriate essential type. The condition is explicitly checked against 0U, appending 'U' and typecasting for unsigned comparison.
Change-Id: Icd480587b74c0e0a818498b680666ed43e94fef8 Signed-off-by: Saivardhan Thatikonda <saivardhan.thatikonda@amd.com>
show more ...
|
| #
eaa454ac |
| 17-Mar-2025 |
Saivardhan Thatikonda <saivardhan.thatikonda@amd.com> |
fix(gicv3): typecast operands to match data type
This corrects the MISRA violation C2012-10.3: The value of an expression shall not be assigned to an object with a narrower essential type or of a di
fix(gicv3): typecast operands to match data type
This corrects the MISRA violation C2012-10.3: The value of an expression shall not be assigned to an object with a narrower essential type or of a different essential type category. The condition is explicitly checked against 0U, appending 'U' and typecasting for unsigned comparison.
Change-Id: Id802961c24a57eea7dd928e2278d015a8747a4c5 Signed-off-by: Saivardhan Thatikonda <saivardhan.thatikonda@amd.com>
show more ...
|
| #
862521bb |
| 13-Aug-2024 |
Madhukar Pappireddy <madhukar.pappireddy@arm.com> |
Merge "fix(gicv3): wait rwp when gicr_ctrl.enablelpis from 1 to 0" into integration
|
| #
66668c77 |
| 28-May-2024 |
Peng Fan <peng.fan@nxp.com> |
fix(gicv3): wait rwp when gicr_ctrl.enablelpis from 1 to 0
Per GIC architecture version 3 and version 4, Where the GICR_CTRL.EnableLPIs remains programmable: - Software must observe GICR_CTLR.RWP==0
fix(gicv3): wait rwp when gicr_ctrl.enablelpis from 1 to 0
Per GIC architecture version 3 and version 4, Where the GICR_CTRL.EnableLPIs remains programmable: - Software must observe GICR_CTLR.RWP==0 after clearing GICR_CTLR.EnableLPIs from 1 to 0 before writing GICR_PENDBASER or GICR_PROPBASER, otherwise behavior is UNPREDICTABLE. - Software must observe GICR_CTLR.RWP==0 after clearing GICR_CTLR.EnableLPIs from 1 to 0 before setting GICR_CTLR.EnableLPIs to 1, otherwise behavior is UNPREDICTABLE.
After changing EnableLPIs from 1 to 0, wait RWP got cleared, otherwise setting EnableLPIs from 0 to 1 may fail.
Reviewed-by: Jacky Bai <ping.bai@nxp.com> Tested-by: Clark Wang <xiaoning.wang@nxp.com> Signed-off-by: Peng Fan <peng.fan@nxp.com> Change-Id: I6aaf96dc9984376de9399d0dac8a8504ba095149
show more ...
|
| #
7b02a572 |
| 06-Mar-2024 |
Bipin Ravi <bipin.ravi@arm.com> |
Merge "fix(gic600): workaround for Part 1 of GIC600 erratum 2384374" into integration
|
| #
24a4a0a5 |
| 05-Feb-2024 |
Arvind Ram Prakash <arvind.ramprakash@arm.com> |
fix(gic600): workaround for Part 1 of GIC600 erratum 2384374
GIC600 erratum 2384374 is a Category B erratum. Part 1 is fixed in this patch, and the Part 1 failure mode is described as 'If the packet
fix(gic600): workaround for Part 1 of GIC600 erratum 2384374
GIC600 erratum 2384374 is a Category B erratum. Part 1 is fixed in this patch, and the Part 1 failure mode is described as 'If the packet to be sent is a SET packet, then a higher priority SET may not be sent when it should be until an unblocking event occurs.'
This is handled by calling gicv3_apply_errata_wa_2384374() in the ehf_deactivate_priority() path, so that when EHF restores the priority to the original priority, the interrupt packet buffered in the GIC can be sent.
gicv3_apply_errata_wa_2384374() is the workaround for the Part 2 of erratum 2384374 which flush packets from the GIC buffer and is being used in this patch.
SDEN can be found here: https://developer.arm.com/documentation/sden892601/latest/
Signed-off-by: Arvind Ram Prakash <arvind.ramprakash@arm.com> Change-Id: I4bb6dcf86c94125cbc574e0dc5119abe43e84731
show more ...
|
| #
e790ba99 |
| 09-Feb-2024 |
Madhukar Pappireddy <madhukar.pappireddy@arm.com> |
Merge "refactor(gicv3): introducing is_valid_interrupt, a new helper utility" into integration
|
| #
8d449929 |
| 02-Jan-2024 |
Sona Mathew <sonarebecca.mathew@arm.com> |
refactor(gicv3): introducing is_valid_interrupt, a new helper utility
In gicv3_main.c the function is_sgi_ppi() returns true when its sgi/ppi or false when the interrupt number matches an spi interr
refactor(gicv3): introducing is_valid_interrupt, a new helper utility
In gicv3_main.c the function is_sgi_ppi() returns true when its sgi/ppi or false when the interrupt number matches an spi interrupt. Introducing a new API is_valid_interrupt() which validates if an interrupt number matches SGI/PPI or SPI as a valid interrupt, any other interrupt number is considered invalid and panics.
Change-Id: Idce8f5432a94c8d300b9408cf5b2502c60e13318 Signed-off-by: Sona Mathew <sonarebecca.mathew@arm.com>
show more ...
|
| #
494babe0 |
| 28-Sep-2023 |
Olivier Deprez <olivier.deprez@arm.com> |
Merge changes from topic "mp/fix_interrupt_type" into integration
* changes: refactor(el3-runtime): plat_ic_has_interrupt_type returns bool fix(el3-runtime): leverage generic interrupt controlle
Merge changes from topic "mp/fix_interrupt_type" into integration
* changes: refactor(el3-runtime): plat_ic_has_interrupt_type returns bool fix(el3-runtime): leverage generic interrupt controller helpers fix(gicv3): map generic interrupt type to GICv3 group chore(gicv2): use interrupt group instead of type
show more ...
|
| #
632e5ffe |
| 03-Aug-2023 |
Madhukar Pappireddy <madhukar.pappireddy@arm.com> |
fix(gicv3): map generic interrupt type to GICv3 group
The generic interrupt controller identifies an interrupt based on its type whereas the GIC uses the notion of groups to identify an interrupt.
fix(gicv3): map generic interrupt type to GICv3 group
The generic interrupt controller identifies an interrupt based on its type whereas the GIC uses the notion of groups to identify an interrupt.
Currently, they are used interchangeably in GICv3 driver. It did not cause any functional issues since the matching type and group had the same value for corresponding macros. This patch makes the necessary fixes.
The generic interrupt controller APIs, such as plat_ic_set_interrupt_type map interrupt type to interrupt group supported by the GICv3 IP. Similarly, other generic interrupt controller APIs map interrupt group to interrupt type as needed.
This patch also changes the name of the helper functions to use group rather than type for handling interrupts.
Change-Id: Ie2d88a3260c71e4ab9c8baacde24cc21e551de3d Signed-off-by: Madhukar Pappireddy <madhukar.pappireddy@arm.com>
show more ...
|
| #
c214ced4 |
| 09-May-2023 |
Manish V Badarkhe <manish.badarkhe@arm.com> |
Merge changes from topic "bk/context_refactor" into integration
* changes: fix(gicv3): restore scr_el3 after changing it refactor(cm): make SVE and SME build dependencies logical
|
| #
1d0d5e40 |
| 23-Mar-2023 |
Boyan Karatotev <boyan.karatotev@arm.com> |
fix(gicv3): restore scr_el3 after changing it
EL3's context is poorly defined as it is and polluting it further is not a good idea. Put it back as it was before the function call.
Signed-off-by: Bo
fix(gicv3): restore scr_el3 after changing it
EL3's context is poorly defined as it is and polluting it further is not a good idea. Put it back as it was before the function call.
Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com> Change-Id: I9d13c9517962b501246989fd2126d08410191784
show more ...
|
| #
5a63aed2 |
| 24-Mar-2023 |
Manish Pandey <manish.pandey2@arm.com> |
Merge "fix(gicv3): workaround for NVIDIA erratum T241-FABRIC-4" into integration
|
| #
a02a45df |
| 08-Mar-2023 |
Varun Wadekar <vwadekar@nvidia.com> |
fix(gicv3): workaround for NVIDIA erratum T241-FABRIC-4
The purpose of this patch is to address the T241 erratum T241-FABRIC-4, which causes unexpected behavior in the GIC when multiple transactions
fix(gicv3): workaround for NVIDIA erratum T241-FABRIC-4
The purpose of this patch is to address the T241 erratum T241-FABRIC-4, which causes unexpected behavior in the GIC when multiple transactions are received simultaneously from different sources. This hardware issue impacts NVIDIA server platforms that use more than two T241 chips interconnected. Each chip has support for 320 {E}SPIs.
This issue occurs when multiple packets from different GICs are incorrectly interleaved at the target chip. The erratum text below specifies exactly what can cause multiple transfer packets susceptible to interleaving and GIC state corruption. GIC state corruption can lead to a range of problems, including kernel panics, and unexpected behavior.
Erratum documentation: https://developer.nvidia.com/docs/t241-fabric-4/nvidia-t241-fabric-4-errata.pdf
The workaround is to ensure that MMIO accesses target the GIC on the socket that holds the data, for example SPI ranges owned by the socket’s GIC. This ensures that the GIC will not utilize the inter-socket AXI Stream interface for servicing these GIC MMIO accesses.
This patch updates the functions that use the GICD_In{E} registers to ensure that the accesses are directed to the chip that owns the SPI, instead of using the global alias.
Signed-off-by: Varun Wadekar <vwadekar@nvidia.com> Change-Id: I04e33ba64eb306bd5fdabb56e63cbe273d8cd632
show more ...
|
| #
01617e0b |
| 19-Dec-2022 |
Manish Pandey <manish.pandey2@arm.com> |
Merge "fix(gic): wrap cache enabled assert under plat_can_cmo" into integration
|
| #
78fbb0ec |
| 30-Nov-2022 |
Channagoud kadabi <kadabi@google.com> |
fix(gic): wrap cache enabled assert under plat_can_cmo
with reference to feature 04c730 (feat(cpus): make cache ops conditional), booting with caches in debug recovery means SCTLR_C_BIT will be 0. W
fix(gic): wrap cache enabled assert under plat_can_cmo
with reference to feature 04c730 (feat(cpus): make cache ops conditional), booting with caches in debug recovery means SCTLR_C_BIT will be 0. Wrap the assert for the d-cache enabled check in CONDITIONAL_CMO and plat_can_cmo calls to allow booting with d-cache disabled.
Signed-off-by: Channagoud kadabi <kadabi@google.com> Change-Id: I80153df493d1ec9e5e354c7c2e6a14322d22c446
show more ...
|
| #
b86cbe10 |
| 16-Sep-2022 |
Joanna Farley <joanna.farley@arm.com> |
Merge changes from topic "provencore-spd" into integration
* changes: feat(zynqmp): add support for ProvenCore feat(services): add a SPD for ProvenCore feat(gic): add APIs to raise NS and S-EL
Merge changes from topic "provencore-spd" into integration
* changes: feat(zynqmp): add support for ProvenCore feat(services): add a SPD for ProvenCore feat(gic): add APIs to raise NS and S-EL1 SGIs
show more ...
|
| #
dcb31ff7 |
| 08-Sep-2021 |
Florian Lugou <florian.lugou@provenrun.com> |
feat(gic): add APIs to raise NS and S-EL1 SGIs
This patch adds two helper functions: - plat_ic_raise_ns_sgi to raise a NS SGI - plat_ic_raise_s_el1_sgi to raise a S-EL1 SGI
Signed-off-by: Florian
feat(gic): add APIs to raise NS and S-EL1 SGIs
This patch adds two helper functions: - plat_ic_raise_ns_sgi to raise a NS SGI - plat_ic_raise_s_el1_sgi to raise a S-EL1 SGI
Signed-off-by: Florian Lugou <florian.lugou@provenrun.com> Change-Id: I6f262dd1da1d77fec3f850eb74189e726b8e24da
show more ...
|
| #
84adb051 |
| 21-Jun-2022 |
Manish Pandey <manish.pandey2@arm.com> |
Merge changes from topic "mb/gic600-errata" into integration
* changes: refactor(arm): update BL2 base address refactor(nxp): use DPG0 mask from Arm GICv3 header fix(gic600): implement workaro
Merge changes from topic "mb/gic600-errata" into integration
* changes: refactor(arm): update BL2 base address refactor(nxp): use DPG0 mask from Arm GICv3 header fix(gic600): implement workaround to forward highest priority interrupt
show more ...
|
| #
e1b15b09 |
| 09-May-2022 |
Manish V Badarkhe <Manish.Badarkhe@arm.com> |
fix(gic600): implement workaround to forward highest priority interrupt
If the interrupt being targeted is released from the CPU before the CLEAR command is sent to the CPU then a subsequent SET com
fix(gic600): implement workaround to forward highest priority interrupt
If the interrupt being targeted is released from the CPU before the CLEAR command is sent to the CPU then a subsequent SET command may not be delivered in a finite time. To workaround this, issue an unblocking event by toggling GICR_CTLR.DPG* bits after clearing the cpu group enable (EnableGrp* bits of GIC CPU interface register) This fix is implemented as per the errata 2384374-part 2 workaround mentioned here: https://developer.arm.com/documentation/sden892601/latest/
Change-Id: I13926ceeb7740fa4c05cc5b43170e7ce49598f70 Signed-off-by: Manish V Badarkhe <Manish.Badarkhe@arm.com>
show more ...
|
| #
02950791 |
| 10-Sep-2021 |
André Przywara <andre.przywara@arm.com> |
Merge changes from topic "gic-700-auto" into integration
* changes: feat(arm_fpga): support GICv4 images feat(gicv3): detect GICv4 feature at runtime feat(gicv3): multichip: detect GIC-700 at
Merge changes from topic "gic-700-auto" into integration
* changes: feat(arm_fpga): support GICv4 images feat(gicv3): detect GICv4 feature at runtime feat(gicv3): multichip: detect GIC-700 at runtime refactor(gic): move GIC IIDR numbers refactor(gicv3): rename GIC Clayton to GIC-700
show more ...
|
| #
858f40e3 |
| 18-May-2021 |
Andre Przywara <andre.przywara@arm.com> |
feat(gicv3): detect GICv4 feature at runtime
At the moment we have a GIC_ENABLE_V4_EXTN build time variable to determine whether the GIC interrupt controller is compliant to version 4.0 of the spec
feat(gicv3): detect GICv4 feature at runtime
At the moment we have a GIC_ENABLE_V4_EXTN build time variable to determine whether the GIC interrupt controller is compliant to version 4.0 of the spec or not. This just changes the number of 64K MMIO pages we expect per redistributor.
To support firmware builds which run on variable systems (emulators, fast model or FPGAs), let's make this decision at runtime. The GIC specification provides several architected flags to learn the size of the MMIO frame per redistributor, we use GICR_TYPER[VLPI] here.
Provide a (static inline) function to return the size of each redistributor. We keep the GIC_ENABLE_V4_EXTN build time variable around, but change its meaning to enable this autodetection code. Systems not defining this rely on a "pure" GICv3 (as before), but platforms setting it to "1" can now deal with both configurations.
Change-Id: I9ede4acf058846157a0a9e2ef6103bf07c7655d9 Signed-off-by: Andre Przywara <andre.przywara@arm.com>
show more ...
|