Source-Changes archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

CVS commit: src/sys/arch



Module Name:    src
Committed By:   skrll
Date:           Sun Oct 31 16:23:48 UTC 2021

Modified Files:
        src/sys/arch/aarch64/aarch64: aarch64_machdep.c cpu.c cpufunc.c
            db_machdep.c locore.S
        src/sys/arch/aarch64/include: cpu.h cpufunc.h db_machdep.h
        src/sys/arch/arm/apple: apple_intc.c
        src/sys/arch/arm/arm: cpu_subr.c undefined.c
        src/sys/arch/arm/arm32: arm32_boot.c arm32_machdep.c cpu.c
        src/sys/arch/arm/broadcom: bcm2835_intr.c
        src/sys/arch/arm/cortex: gicv3_its.c gicv3_its.h gtmr.c
        src/sys/arch/arm/include: cpu.h locore.h undefined.h
        src/sys/arch/arm/pic: pic.c
        src/sys/arch/arm/vfp: vfp_init.c

Log Message:
Rework Arm (32bit and 64bit) AP startup so that cpu_hatch doesn't sleep.

The AP initialisation code in cpu_init_secondary_processor will read and
initialise the required system registers and state for the BP to attach
and report.

Rework the interrupt handler code for this new sequence. Thankfully,
this removes a bunch of code for bcm2836mp.

The VFP detection handler on <= armv7 relies on the global undefined
handler being in place until the BP attaches vfp. That is, after the
APs have been spun up.

gicv3_its.c has a serialisation issue which is protected against in
the gicv3_its_cpu_init, which is called from cpu_hatch, with a spin
lock. The serialisation issue needs addressing more completely.

Tested on RPI3, Apple M1, QEMU, and lx2k

Fixes PR port-arm/56264:
   diagnostic assertion "l->l_stat == LSONPROC" failed on RPI3


To generate a diff of this commit:
cvs rdiff -u -r1.62 -r1.63 src/sys/arch/aarch64/aarch64/aarch64_machdep.c
cvs rdiff -u -r1.66 -r1.67 src/sys/arch/aarch64/aarch64/cpu.c
cvs rdiff -u -r1.31 -r1.32 src/sys/arch/aarch64/aarch64/cpufunc.c
cvs rdiff -u -r1.41 -r1.42 src/sys/arch/aarch64/aarch64/db_machdep.c
cvs rdiff -u -r1.81 -r1.82 src/sys/arch/aarch64/aarch64/locore.S
cvs rdiff -u -r1.42 -r1.43 src/sys/arch/aarch64/include/cpu.h
cvs rdiff -u -r1.21 -r1.22 src/sys/arch/aarch64/include/cpufunc.h
cvs rdiff -u -r1.14 -r1.15 src/sys/arch/aarch64/include/db_machdep.h
cvs rdiff -u -r1.3 -r1.4 src/sys/arch/arm/apple/apple_intc.c
cvs rdiff -u -r1.3 -r1.4 src/sys/arch/arm/arm/cpu_subr.c
cvs rdiff -u -r1.71 -r1.72 src/sys/arch/arm/arm/undefined.c
cvs rdiff -u -r1.43 -r1.44 src/sys/arch/arm/arm32/arm32_boot.c
cvs rdiff -u -r1.140 -r1.141 src/sys/arch/arm/arm32/arm32_machdep.c
cvs rdiff -u -r1.151 -r1.152 src/sys/arch/arm/arm32/cpu.c
cvs rdiff -u -r1.41 -r1.42 src/sys/arch/arm/broadcom/bcm2835_intr.c
cvs rdiff -u -r1.32 -r1.33 src/sys/arch/arm/cortex/gicv3_its.c
cvs rdiff -u -r1.7 -r1.8 src/sys/arch/arm/cortex/gicv3_its.h
cvs rdiff -u -r1.45 -r1.46 src/sys/arch/arm/cortex/gtmr.c
cvs rdiff -u -r1.119 -r1.120 src/sys/arch/arm/include/cpu.h
cvs rdiff -u -r1.36 -r1.37 src/sys/arch/arm/include/locore.h
cvs rdiff -u -r1.14 -r1.15 src/sys/arch/arm/include/undefined.h
cvs rdiff -u -r1.72 -r1.73 src/sys/arch/arm/pic/pic.c
cvs rdiff -u -r1.75 -r1.76 src/sys/arch/arm/vfp/vfp_init.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.




Home | Main Index | Thread Index | Old Index