Skip to content

Commit 603c04e

Browse files
committed
Merge tag 'parisc-for-6.8-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux
Pull parisc architecture fixes from Helge Deller: "Fixes CPU hotplug, the parisc stack unwinder and two possible build errors in kprobes and ftrace area: - Fix CPU hotplug - Fix unaligned accesses and faults in stack unwinder - Fix potential build errors by always including asm-generic/kprobes.h - Fix build bug by add missing CONFIG_DYNAMIC_FTRACE check" * tag 'parisc-for-6.8-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux: parisc: Fix stack unwinder parisc/kprobes: always include asm-generic/kprobes.h parisc/ftrace: add missing CONFIG_DYNAMIC_FTRACE check Revert "parisc: Only list existing CPUs in cpu_possible_mask"
2 parents e44baca + 882a2a7 commit 603c04e

File tree

4 files changed

+9
-18
lines changed

4 files changed

+9
-18
lines changed

arch/parisc/include/asm/kprobes.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,10 @@
1010
#ifndef _PARISC_KPROBES_H
1111
#define _PARISC_KPROBES_H
1212

13+
#include <asm-generic/kprobes.h>
14+
1315
#ifdef CONFIG_KPROBES
1416

15-
#include <asm-generic/kprobes.h>
1617
#include <linux/types.h>
1718
#include <linux/ptrace.h>
1819
#include <linux/notifier.h>

arch/parisc/kernel/ftrace.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ asmlinkage void notrace __hot ftrace_function_trampoline(unsigned long parent,
7878
#endif
7979
}
8080

81-
#ifdef CONFIG_FUNCTION_GRAPH_TRACER
81+
#if defined(CONFIG_DYNAMIC_FTRACE) && defined(CONFIG_FUNCTION_GRAPH_TRACER)
8282
int ftrace_enable_ftrace_graph_caller(void)
8383
{
8484
static_key_enable(&ftrace_graph_enable.key);

arch/parisc/kernel/processor.c

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,6 @@ static int __init processor_probe(struct parisc_device *dev)
172172
p->cpu_num = cpu_info.cpu_num;
173173
p->cpu_loc = cpu_info.cpu_loc;
174174

175-
set_cpu_possible(cpuid, true);
176175
store_cpu_topology(cpuid);
177176

178177
#ifdef CONFIG_SMP
@@ -474,13 +473,6 @@ static struct parisc_driver cpu_driver __refdata = {
474473
*/
475474
void __init processor_init(void)
476475
{
477-
unsigned int cpu;
478-
479476
reset_cpu_topology();
480-
481-
/* reset possible mask. We will mark those which are possible. */
482-
for_each_possible_cpu(cpu)
483-
set_cpu_possible(cpu, false);
484-
485477
register_parisc_driver(&cpu_driver);
486478
}

arch/parisc/kernel/unwind.c

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -228,24 +228,22 @@ static int unwind_special(struct unwind_frame_info *info, unsigned long pc, int
228228
#ifdef CONFIG_IRQSTACKS
229229
extern void * const _call_on_stack;
230230
#endif /* CONFIG_IRQSTACKS */
231-
void *ptr;
232231

233-
ptr = dereference_kernel_function_descriptor(&handle_interruption);
234-
if (pc_is_kernel_fn(pc, ptr)) {
232+
if (pc_is_kernel_fn(pc, handle_interruption)) {
235233
struct pt_regs *regs = (struct pt_regs *)(info->sp - frame_size - PT_SZ_ALGN);
236234
dbg("Unwinding through handle_interruption()\n");
237235
info->prev_sp = regs->gr[30];
238236
info->prev_ip = regs->iaoq[0];
239237
return 1;
240238
}
241239

242-
if (pc_is_kernel_fn(pc, ret_from_kernel_thread) ||
243-
pc_is_kernel_fn(pc, syscall_exit)) {
240+
if (pc == (unsigned long)&ret_from_kernel_thread ||
241+
pc == (unsigned long)&syscall_exit) {
244242
info->prev_sp = info->prev_ip = 0;
245243
return 1;
246244
}
247245

248-
if (pc_is_kernel_fn(pc, intr_return)) {
246+
if (pc == (unsigned long)&intr_return) {
249247
struct pt_regs *regs;
250248

251249
dbg("Found intr_return()\n");
@@ -257,14 +255,14 @@ static int unwind_special(struct unwind_frame_info *info, unsigned long pc, int
257255
}
258256

259257
if (pc_is_kernel_fn(pc, _switch_to) ||
260-
pc_is_kernel_fn(pc, _switch_to_ret)) {
258+
pc == (unsigned long)&_switch_to_ret) {
261259
info->prev_sp = info->sp - CALLEE_SAVE_FRAME_SIZE;
262260
info->prev_ip = *(unsigned long *)(info->prev_sp - RP_OFFSET);
263261
return 1;
264262
}
265263

266264
#ifdef CONFIG_IRQSTACKS
267-
if (pc_is_kernel_fn(pc, _call_on_stack)) {
265+
if (pc == (unsigned long)&_call_on_stack) {
268266
info->prev_sp = *(unsigned long *)(info->sp - FRAME_SIZE - REG_SZ);
269267
info->prev_ip = *(unsigned long *)(info->sp - FRAME_SIZE - RP_OFFSET);
270268
return 1;

0 commit comments

Comments
 (0)