HomeFreeBSD

Simplify startup of secondary cores and store MPIDR register to pcpu.

Description

Simplify startup of secondary cores and store MPIDR register to pcpu.

  • record MPIDR for all started cores in pcpu, they will be used as link between physical locality of given core, ID in external description (FDT or ACPI) and cupid.
  • because of above, cpuid can (and should) be freely assigned, only boot CPU must have cpuid 0. Simplify startup code according this.

Please note that pure cpuid is not sufficient instrument to hold any
information about core or cluster topology, nor to determistically iterate
over subpart of cores in CPU (iterate over all cores in single cluster for
example). Situation is more complicated by fact that PSCI can reject start
of core without reporting error (because power budget for example), or by
fact that is possible that we booted on non-first core in cluster (thus with
cpuid 0 assigned to random core).

Given cores topology should be exhibited to other parts of system
(for example to scheduler for big.little or multicluster systems) by using
smp_topo interface.

Differential Revision: https://reviews.freebsd.org/D13863

Details

Provenance
mmelAuthored on
Differential Revision
D13863: Simplify and cleanup startup code for secondary cores.
Parents
rS368369: Add basic support for Freescale LX2160A SoC.
Branches
Unknown
Tags
Unknown