When we probe for available, valid GICC's, we only look for those
that are already online and initialized, totally forgetting about
those that are usable but offline. Therefore, check for powered off
GICC's as well, since, during probe, we re-initialize GICC's anyway.
Signed-off-by: Sergiu Moga <sergiu@unikraft.io>
Reviewed-by: Michalis Pappas <michalis@unikraft.io>
Reviewed-by: Razvan Virtan <virtanrazvan@gmail.com>
Approved-by: Razvan Deaconescu <razvand@unikraft.io>
GitHub-Closes: #1120
m.h = (struct acpi_subsdt_hdr *)(madt->entries + off);
if (m.h->type != ACPI_MADT_GICC ||
- !(m.gicc->flags & ACPI_MADT_GICC_FLAGS_EN))
+ (!(m.gicc->flags & ACPI_MADT_GICC_FLAGS_EN) &&
+ !(m.gicc->flags & ACPI_MADT_GICC_FLAGS_ON_CAP)))
continue;
cpu_id = m.gicc->mpidr & CPU_ID_MASK;
#define ACPI_MADT_GICC_FLAGS_EN 0x01
#define ACPI_MADT_GICC_FLAGS_PERF_IRQ_MODE 0x02
#define ACPI_MADT_GICC_FLAGS_VGIC_IRQ_MODE 0x04
+#define ACPI_MADT_GICC_FLAGS_ON_CAP 0x08
struct acpi_madt_gicc {
struct acpi_subsdt_hdr hdr;
__u16 reserved;