linux/arch/powerpc/kernel
Haren Myneni 44e9309f1f powerpc: Implement PPR save/restore
[PATCH 6/6] powerpc: Implement PPR save/restore

When the task enters in to kernel space, the user defined priority (PPR)
will be saved in to PACA at the beginning of first level exception
vector and then copy from PACA to thread_info in second level vector.
PPR will be restored from thread_info before exits the kernel space.

P7/P8 temporarily raises the thread priority to higher level during
exception until the program executes HMT_* calls. But it will not modify
PPR register. So we save PPR value whenever some register is available
to use and then calls HMT_MEDIUM to increase the priority. This feature
supports on P7 or later processors.

We save/ restore PPR for all exception vectors except system call entry.
GLIBC will be saving / restore for system calls. So the default PPR
value (3) will be set for the system call exit when the task returned
to the user space.

Signed-off-by: Haren Myneni <haren@us.ibm.com>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
2013-01-10 17:01:13 +11:00
..
vdso32 powerpc: Add VDSO version of getcpu 2012-07-11 14:18:40 +10:00
vdso64 powerpc: Add VDSO version of getcpu 2012-07-11 14:18:40 +10:00
.gitignore
align.c
asm-offsets.c powerpc: Define ppr in thread_struct 2013-01-10 17:01:08 +11:00
audit.c
btext.c
cacheinfo.c
cacheinfo.h
clock.c
compat_audit.c
cpu_setup_6xx.S
cpu_setup_44x.S
cpu_setup_a2.S powerpc: Enforce usage of RA 0-R31 where possible 2012-07-10 19:18:35 +10:00
cpu_setup_fsl_booke.S powerpc/booke: Add CPU_FTR_EMB_HV check for e5500. 2012-09-12 14:57:09 -05:00
cpu_setup_pa6t.S
cpu_setup_power.S powerpc: Setup relocation on exceptions for bare metal systems 2012-11-15 15:08:06 +11:00
cpu_setup_ppc970.S
cputable.c powerpc: Add POWER8 architected mode to cputable 2012-11-15 15:02:00 +11:00
crash.c
crash_dump.c
dbell.c powerpc: Define differences between doorbells on book3e and book3s 2013-01-10 15:09:05 +11:00
dma-iommu.c powerpc/dma-iommu: Fix IOMMU window check 2012-08-24 20:26:07 +10:00
dma-swiotlb.c powerpc/swiotlb: Enable at early stage and disable if not necessary 2012-09-12 14:57:09 -05:00
dma.c powerpc/kernel: Remove uses of abs_to_virt() and virt_to_abs() 2012-09-05 15:19:30 +10:00
entry_32.S powerpc: Fix MAX_STACK_TRACE_ENTRIES too low warning for ppc32 2013-01-10 17:00:34 +11:00
entry_64.S powerpc: Implement PPR save/restore 2013-01-10 17:01:13 +11:00
epapr_hcalls.S KVM: PPC: ev_idle hcall support for e500 guests 2012-10-05 23:38:37 +02:00
epapr_paravirt.c KVM: PPC: ev_idle hcall support for e500 guests 2012-10-05 23:38:37 +02:00
exceptions-64e.S powerpc: Move branch instruction from ACCOUNT_CPU_USER_ENTRY to caller 2013-01-10 17:00:59 +11:00
exceptions-64s.S powerpc: Implement PPR save/restore 2013-01-10 17:01:13 +11:00
fadump.c powerpc: Change memory_limit from phys_addr_t to unsigned long long 2012-09-07 11:44:30 +10:00
firmware.c
fpu.S powerpc: Enforce usage of R0-R31 where possible 2012-07-10 19:18:30 +10:00
fsl_booke_entry_mapping.S
ftrace.c powerpc/ftrace: Trace function graph entry before updating index 2012-07-27 11:42:34 +10:00
head_8xx.S
head_32.S
head_40x.S powerpc: Enable the Watchdog vector for 405 2013-01-10 14:43:46 +11:00
head_44x.S Merge branch 'next' of git://git.kernel.org/pub/scm/virt/kvm/kvm 2012-05-24 16:17:30 -07:00
head_64.S powerpc/kexec: Add kexec "hold" support for Book3e processors 2013-01-10 17:00:39 +11:00
head_booke.h
head_fsl_booke.S powepc/booke: Separate out E.HV check and ivor setup code. 2012-09-12 14:57:08 -05:00
hw_breakpoint.c powerpc: Dynamically calculate the dabrx based on kernel/user/hypervisor 2012-09-10 09:59:13 +10:00
ibmebus.c powerpc: Remove all includes of <asm/abs_addr.h> 2012-09-05 15:19:33 +10:00
idle.c powerpc: Remove no longer used ppc_md.idle_loop() 2012-11-15 13:00:20 +11:00
idle_6xx.S powerpc: Use CURRENT_THREAD_INFO instead of open coded assembly 2012-07-11 14:18:22 +10:00
idle_book3e.S powerpc: Use CURRENT_THREAD_INFO instead of open coded assembly 2012-07-11 14:18:22 +10:00
idle_e500.S powerpc: Use CURRENT_THREAD_INFO instead of open coded assembly 2012-07-11 14:18:22 +10:00
idle_power4.S powerpc: Use CURRENT_THREAD_INFO instead of open coded assembly 2012-07-11 14:18:22 +10:00
idle_power7.S powerpc/powernv: Always go into nap mode when CPU is offline 2012-09-05 16:05:20 +10:00
io-workarounds.c POWERPC: drivers: remove __dev* attributes. 2013-01-03 15:57:04 -08:00
io.c
iomap.c
iommu.c powerpc/iommu: Use bitmap library 2012-11-15 13:01:04 +11:00
irq.c powerpc: Add code to handle soft-disabled doorbells on server 2013-01-10 15:09:07 +11:00
isa-bridge.c POWERPC: drivers: remove __dev* attributes. 2013-01-03 15:57:04 -08:00
jump_label.c
kgdb.c powerpc/kgdb: Restore current_thread_info properly 2012-08-24 20:26:06 +10:00
kprobes.c
kvm.c KVM: PPC: use definitions in epapr header for hcalls 2012-10-05 23:38:36 +02:00
kvm_emul.S KVM: PPC: Not optimizing MSR_CE and MSR_ME with paravirt. 2012-05-30 11:43:11 +02:00
l2cr_6xx.S
legacy_serial.c Fix misspellings of "whether" in comments. 2012-11-19 14:31:35 +01:00
lparcfg.c
machine_kexec.c powerpc+of: Rename the drivers/of prom_* functions to of_* 2012-11-15 12:56:52 +11:00
machine_kexec_32.c
machine_kexec_64.c powerpc+of: Rename the drivers/of prom_* functions to of_* 2012-11-15 12:56:52 +11:00
Makefile powerpc: Build kernel with -mcmodel=medium 2013-01-10 17:00:31 +11:00
misc.S powerpc: switch to generic sys_execve()/kernel_execve() 2012-09-30 23:35:51 -04:00
misc_32.S powerpc: split ret_from_fork 2012-09-30 23:31:19 -04:00
misc_64.S powerpc: split ret_from_fork 2012-09-30 23:31:19 -04:00
module.c
module_32.c powerpc: Fix kernel panic during kernel module load 2012-06-08 19:59:08 +10:00
module_64.c powerpc: Build kernel with -mcmodel=medium 2013-01-10 17:00:31 +11:00
msi.c
nvram_64.c
of_platform.c POWERPC: drivers: remove __dev* attributes. 2013-01-03 15:57:04 -08:00
paca.c powerpc: Initialise paca.data_offset with poison 2012-09-10 09:35:27 +10:00
pci-common.c POWERPC: drivers: remove __dev* attributes. 2013-01-03 15:57:04 -08:00
pci_32.c POWERPC: drivers: remove __dev* attributes. 2013-01-03 15:57:04 -08:00
pci_64.c POWERPC: drivers: remove __dev* attributes. 2013-01-03 15:57:04 -08:00
pci_dn.c POWERPC: drivers: remove __dev* attributes. 2013-01-03 15:57:04 -08:00
pci_of_scan.c POWERPC: drivers: remove __dev* attributes. 2013-01-03 15:57:04 -08:00
pmc.c
ppc32.h compat: move compat_siginfo_t definition to asm/compat.h 2012-10-06 03:05:16 +09:00
ppc_ksyms.c Merge remote-tracking branch 'master' into queue 2012-10-29 19:15:32 -02:00
ppc_save_regs.S
proc_powerpc.c
process.c powerpc: Define ppr in thread_struct 2013-01-10 17:01:08 +11:00
prom.c Merge branch 'dt' into next 2012-11-15 15:02:44 +11:00
prom_init.c powerpc: Remove RELOC() macro 2013-01-10 17:00:28 +11:00
prom_init_check.sh powerpc: Relocate prom_init.c on 64bit 2013-01-10 17:00:25 +11:00
prom_parse.c
ptrace.c powerpc/ptrace: Enable hardware breakpoint upon re-registering 2012-11-15 13:01:13 +11:00
ptrace32.c powerpc: Remove old powerpc specific ptrace getregs/setregs calls 2012-04-30 15:37:28 +10:00
reloc_32.S
reloc_64.S
rtas-proc.c
rtas-rtc.c
rtas.c powerpc+of: Remove the pSeries_reconfig.h file 2012-11-15 12:56:55 +11:00
rtas_flash.c powerpc/rtas_flash: Eliminate possible double free 2012-11-15 13:00:11 +11:00
rtas_pci.c POWERPC: drivers: remove __dev* attributes. 2013-01-03 15:57:04 -08:00
rtasd.c
setup-common.c powerpc/watchdog: move booke watchdog param related code to setup-common.c 2012-07-11 07:44:03 -05:00
setup.h
setup_32.c powerpc/watchdog: move booke watchdog param related code to setup-common.c 2012-07-11 07:44:03 -05:00
setup_64.c powerpc: Make load_hander handle upto 64k offset 2012-11-15 15:08:03 +11:00
signal.c uprobes/powerpc: Don't clear TIF_UPROBE in do_notify_resume() 2012-11-03 17:15:10 +01:00
signal.h powerpc: get rid of restore_sigmask() 2012-06-01 12:58:51 -04:00
signal_32.c Uninclude linux/freezer.h 2012-10-01 09:58:18 -04:00
signal_64.c Fix misspellings of "whether" in comments. 2012-11-19 14:31:35 +01:00
smp-tbsync.c POWERPC: drivers: remove __dev* attributes. 2013-01-03 15:57:04 -08:00
smp.c POWERPC: drivers: remove __dev* attributes. 2013-01-03 15:57:04 -08:00
softemu8xx.c
stacktrace.c
suspend.c
swsusp.c
swsusp_32.S
swsusp_64.c
swsusp_asm64.S
swsusp_booke.S
sys_ppc32.c compat: generic compat_sys_sched_rr_get_interval() implementation 2012-12-17 17:15:18 -08:00
syscalls.c powerpc: Fix personality handling in ppc64_personality() 2012-08-24 20:26:07 +10:00
sysfs.c numa: convert static memory to dynamically allocated memory for per node device 2012-12-11 17:22:23 -08:00
systbl.S
systbl_chk.c
systbl_chk.sh
tau_6xx.c
time.c powerpc/vdso: Remove redundant locking in update_vsyscall_tz() 2013-01-03 16:45:51 +11:00
traps.c powerpc: Enable the Watchdog vector for 405 2013-01-10 14:43:46 +11:00
udbg.c powerpc/udbg: Remove unused udbg_read() 2012-11-15 12:59:33 +11:00
udbg_16550.c
uprobes.c uprobes/powerpc: Do not use arch_uprobe_*_step() helpers 2012-11-03 17:15:12 +01:00
vdso.c powerpc: Restore VDSO information on critical exception om BookE 2012-09-07 09:48:49 +10:00
vecemu.c
vector.S powerpc: Optimise enable_kernel_altivec 2012-04-30 15:37:17 +10:00
vio.c POWERPC: drivers: remove __dev* attributes. 2013-01-03 15:57:04 -08:00
vmlinux.lds.S powerpc: Relocate prom_init.c on 64bit 2013-01-10 17:00:25 +11:00