Skip to content
  • Mark Rutland's avatar
    arm64: cpuinfo: print info for all CPUs · d7a49086
    Mark Rutland authored
    
    
    Currently reading /proc/cpuinfo will result in information being read
    out of the MIDR_EL1 of the current CPU, and the information is not
    associated with any particular logical CPU number.
    
    This is problematic for systems with heterogeneous CPUs (i.e.
    big.LITTLE) where MIDR fields will vary across CPUs, and the output will
    differ depending on the executing CPU.
    
    This patch reorganises the code responsible for /proc/cpuinfo to print
    information per-cpu. In the process, we perform several cleanups:
    
    * Property names are coerced to lower-case (to match "processor" as per
      glibc's expectations).
    * Property names are simplified and made to match the MIDR field names.
    * Revision is changed to hex as with every other field.
    * The meaningless Architecture property is removed.
    * The ripe-for-abuse Machine field is removed.
    
    The features field (a human-readable representation of the hwcaps)
    remains printed once, as this is expected to remain in use as the
    globally support CPU features. To enable the possibility of the addition
    of per-cpu HW feature information later, this is printed before any
    CPU-specific information.
    
    Comments are added to guide userspace developers in the right direction
    (using the hwcaps provided in auxval). Hopefully where userspace
    applications parse /proc/cpuinfo rather than using the readily available
    hwcaps, they limit themselves to reading said first line.
    
    If CPU features differ from each other, the previously installed sanity
    checks will give us some advance notice with warnings and
    TAINT_CPU_OUT_OF_SPEC. If we are lucky, we will never see such systems.
    Rework will be required in many places to support such systems anyway.
    
    Signed-off-by: default avatarMark Rutland <mark.rutland@arm.com>
    Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
    Cc: Catalin Marinas <catalin.marinas@arm.com>
    Cc: Marcus Shawcroft <marcus.shawcroft@arm.com>
    Cc: Peter Maydell <peter.maydell@linaro.org>
    Acked-by: default avatarWill Deacon <will.deacon@arm.com>
    [catalin.marinas@arm.com: remove machine_name as it is no longer reported]
    Signed-off-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
    d7a49086