Commit 603c04e2 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
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"
parents e44baca7 882a2a72
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -10,9 +10,10 @@
#ifndef _PARISC_KPROBES_H
#define _PARISC_KPROBES_H

#include <asm-generic/kprobes.h>

#ifdef CONFIG_KPROBES

#include <asm-generic/kprobes.h>
#include <linux/types.h>
#include <linux/ptrace.h>
#include <linux/notifier.h>
+1 −1
Original line number Diff line number Diff line
@@ -78,7 +78,7 @@ asmlinkage void notrace __hot ftrace_function_trampoline(unsigned long parent,
#endif
}

#ifdef CONFIG_FUNCTION_GRAPH_TRACER
#if defined(CONFIG_DYNAMIC_FTRACE) && defined(CONFIG_FUNCTION_GRAPH_TRACER)
int ftrace_enable_ftrace_graph_caller(void)
{
	static_key_enable(&ftrace_graph_enable.key);
+0 −8
Original line number Diff line number Diff line
@@ -172,7 +172,6 @@ static int __init processor_probe(struct parisc_device *dev)
	p->cpu_num = cpu_info.cpu_num;
	p->cpu_loc = cpu_info.cpu_loc;

	set_cpu_possible(cpuid, true);
	store_cpu_topology(cpuid);

#ifdef CONFIG_SMP
@@ -474,13 +473,6 @@ static struct parisc_driver cpu_driver __refdata = {
 */
void __init processor_init(void)
{
	unsigned int cpu;

	reset_cpu_topology();

	/* reset possible mask. We will mark those which are possible. */
	for_each_possible_cpu(cpu)
		set_cpu_possible(cpu, false);

	register_parisc_driver(&cpu_driver);
}
+6 −8
Original line number Diff line number Diff line
@@ -228,10 +228,8 @@ static int unwind_special(struct unwind_frame_info *info, unsigned long pc, int
#ifdef CONFIG_IRQSTACKS
	extern void * const _call_on_stack;
#endif /* CONFIG_IRQSTACKS */
	void *ptr;

	ptr = dereference_kernel_function_descriptor(&handle_interruption);
	if (pc_is_kernel_fn(pc, ptr)) {
	if (pc_is_kernel_fn(pc, handle_interruption)) {
		struct pt_regs *regs = (struct pt_regs *)(info->sp - frame_size - PT_SZ_ALGN);
		dbg("Unwinding through handle_interruption()\n");
		info->prev_sp = regs->gr[30];
@@ -239,13 +237,13 @@ static int unwind_special(struct unwind_frame_info *info, unsigned long pc, int
		return 1;
	}

	if (pc_is_kernel_fn(pc, ret_from_kernel_thread) ||
	    pc_is_kernel_fn(pc, syscall_exit)) {
	if (pc == (unsigned long)&ret_from_kernel_thread ||
	    pc == (unsigned long)&syscall_exit) {
		info->prev_sp = info->prev_ip = 0;
		return 1;
	}

	if (pc_is_kernel_fn(pc, intr_return)) {
	if (pc == (unsigned long)&intr_return) {
		struct pt_regs *regs;

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

	if (pc_is_kernel_fn(pc, _switch_to) ||
	    pc_is_kernel_fn(pc, _switch_to_ret)) {
	    pc == (unsigned long)&_switch_to_ret) {
		info->prev_sp = info->sp - CALLEE_SAVE_FRAME_SIZE;
		info->prev_ip = *(unsigned long *)(info->prev_sp - RP_OFFSET);
		return 1;
	}

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