• Mark Rutland's avatar
    arm64: add function to get a cpu's MADT GICC table · e0013aed
    Mark Rutland authored
    Currently the ACPI parking protocol code needs to parse each CPU's MADT
    GICC table to extract the mailbox address and so on. Each time we parse
    a GICC table, we call back to the parking protocol code to parse it.
    
    This has been fine so far, but we're about to have more code that needs
    to extract data from the GICC tables, and adding a callback for each
    user is going to get unwieldy.
    
    Instead, this patch ensures that we stash a copy of each CPU's GICC
    table at boot time, such that anything needing to parse it can later
    request it. This will allow for other parsers of GICC, and for
    simplification to the ACPI parking protocol code. Note that we must
    store a copy, rather than a pointer, since the core ACPI code
    temporarily maps/unmaps tables while iterating over them.
    
    Since we parse the MADT before we know how many CPUs we have (and hence
    before we setup the percpu areas), we must use an NR_CPUS sized array.
    Signed-off-by: default avatarMark Rutland <mark.rutland@arm.com>
    Reviewed-by: default avatarLorenzo Pieralisi <lorenzo.pieralisi@arm.com>
    Tested-by: default avatarJeremy Linton <jeremy.linton@arm.com>
    Cc: Catalin Marinas <catalin.marinas@arm.com>
    Cc: Will Deacon <will.deacon@arm.com>
    Signed-off-by: default avatarWill Deacon <will.deacon@arm.com>
    e0013aed
smp.c 21.8 KB