Message ID | 20240123014758.12718-1-huangpei@loongson.cn (mailing list archive) |
---|---|
State | Accepted |
Commit | abcabb9e30a1f9a69c76776f8abffc31c377b542 |
Headers | show |
Series | [1/2] MIPS: reserve exception vector space ONLY ONCE | expand |
On Tue, Jan 23, 2024 at 09:47:57AM +0800, Huang Pei wrote: > "cpu_probe" is called both by BP and APs, but reserving exception vector > (like 0x0-0x1000) called by "cpu_probe" need once and calling on APs is > too late since memblock is unavailable at that time. > > So, reserve exception vector ONLY by BP. > > Suggested-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de> > Signed-off-by: Huang Pei <huangpei@loongson.cn> > --- > arch/mips/kernel/traps.c | 8 +++++++- > 1 file changed, 7 insertions(+), 1 deletion(-) > > diff --git a/arch/mips/kernel/traps.c b/arch/mips/kernel/traps.c > index 246c6a6b0261..5b778995d448 100644 > --- a/arch/mips/kernel/traps.c > +++ b/arch/mips/kernel/traps.c > @@ -2007,7 +2007,13 @@ unsigned long vi_handlers[64]; > > void reserve_exception_space(phys_addr_t addr, unsigned long size) > { > - memblock_reserve(addr, size); > + /* > + * reserve exception space on CPUs other than CPU0 > + * is too late, since memblock is unavailable when APs > + * up > + */ > + if (smp_processor_id() == 0) > + memblock_reserve(addr, size); > } > > void __init *set_except_vector(int n, void *addr) > -- > 2.30.2 applied to mips-fixes. Thomas.
diff --git a/arch/mips/kernel/traps.c b/arch/mips/kernel/traps.c index 246c6a6b0261..5b778995d448 100644 --- a/arch/mips/kernel/traps.c +++ b/arch/mips/kernel/traps.c @@ -2007,7 +2007,13 @@ unsigned long vi_handlers[64]; void reserve_exception_space(phys_addr_t addr, unsigned long size) { - memblock_reserve(addr, size); + /* + * reserve exception space on CPUs other than CPU0 + * is too late, since memblock is unavailable when APs + * up + */ + if (smp_processor_id() == 0) + memblock_reserve(addr, size); } void __init *set_except_vector(int n, void *addr)
"cpu_probe" is called both by BP and APs, but reserving exception vector (like 0x0-0x1000) called by "cpu_probe" need once and calling on APs is too late since memblock is unavailable at that time. So, reserve exception vector ONLY by BP. Suggested-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de> Signed-off-by: Huang Pei <huangpei@loongson.cn> --- arch/mips/kernel/traps.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-)