Loading arch/parisc/kernel/process.c +24 −3 Original line number Diff line number Diff line Loading @@ -38,6 +38,7 @@ #include <linux/rcupdate.h> #include <linux/random.h> #include <linux/nmi.h> #include <linux/sched/hotplug.h> #include <asm/io.h> #include <asm/asm-offsets.h> Loading @@ -46,6 +47,7 @@ #include <asm/pdc_chassis.h> #include <asm/unwind.h> #include <asm/sections.h> #include <asm/cacheflush.h> #define COMMAND_GLOBAL F_EXTEND(0xfffe0030) #define CMD_RESET 5 /* reset any module */ Loading Loading @@ -158,10 +160,29 @@ void release_thread(struct task_struct *dead_task) int running_on_qemu __ro_after_init; EXPORT_SYMBOL(running_on_qemu); void __cpuidle arch_cpu_idle_dead(void) /* * Called from the idle thread for the CPU which has been shutdown. */ void arch_cpu_idle_dead(void) { /* nop on real hardware, qemu will offline CPU. */ asm volatile("or %%r31,%%r31,%%r31\n":::); #ifdef CONFIG_HOTPLUG_CPU idle_task_exit(); local_irq_disable(); /* Tell __cpu_die() that this CPU is now safe to dispose of. */ (void)cpu_report_death(); /* Ensure that the cache lines are written out. */ flush_cache_all_local(); flush_tlb_all_local(NULL); /* Let PDC firmware put CPU into firmware idle loop. */ __pdc_cpu_rendezvous(); pr_warn("PDC does not provide rendezvous function.\n"); #endif while (1); } void __cpuidle arch_cpu_idle(void) Loading Loading
arch/parisc/kernel/process.c +24 −3 Original line number Diff line number Diff line Loading @@ -38,6 +38,7 @@ #include <linux/rcupdate.h> #include <linux/random.h> #include <linux/nmi.h> #include <linux/sched/hotplug.h> #include <asm/io.h> #include <asm/asm-offsets.h> Loading @@ -46,6 +47,7 @@ #include <asm/pdc_chassis.h> #include <asm/unwind.h> #include <asm/sections.h> #include <asm/cacheflush.h> #define COMMAND_GLOBAL F_EXTEND(0xfffe0030) #define CMD_RESET 5 /* reset any module */ Loading Loading @@ -158,10 +160,29 @@ void release_thread(struct task_struct *dead_task) int running_on_qemu __ro_after_init; EXPORT_SYMBOL(running_on_qemu); void __cpuidle arch_cpu_idle_dead(void) /* * Called from the idle thread for the CPU which has been shutdown. */ void arch_cpu_idle_dead(void) { /* nop on real hardware, qemu will offline CPU. */ asm volatile("or %%r31,%%r31,%%r31\n":::); #ifdef CONFIG_HOTPLUG_CPU idle_task_exit(); local_irq_disable(); /* Tell __cpu_die() that this CPU is now safe to dispose of. */ (void)cpu_report_death(); /* Ensure that the cache lines are written out. */ flush_cache_all_local(); flush_tlb_all_local(NULL); /* Let PDC firmware put CPU into firmware idle loop. */ __pdc_cpu_rendezvous(); pr_warn("PDC does not provide rendezvous function.\n"); #endif while (1); } void __cpuidle arch_cpu_idle(void) Loading