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 Disintegrate asm/system.h for PowerPC 2012-03-28 18:30:02 +01:00
asm-offsets.c powerpc: Define ppr in thread_struct 2013-01-10 17:01:08 +11:00
audit.c
btext.c powerpc: various straight conversions from module.h --> export.h 2011-10-31 19:30:44 -04:00
cacheinfo.c cpu: convert 'cpu' and 'machinecheck' sysdev_class to a regular subsystem 2011-12-21 14:29:42 -08:00
cacheinfo.h
clock.c powerpc: various straight conversions from module.h --> export.h 2011-10-31 19:30:44 -04:00
compat_audit.c
cpu_setup_6xx.S powerpc: Fix some 6xx/7xxx CPU setup functions 2011-02-07 12:57:11 +11:00
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 powerpc, KVM: Split HVMODE_206 cpu feature bit into separate HV and architecture bits 2011-07-12 13:16:58 +03:00
cputable.c powerpc: Add POWER8 architected mode to cputable 2012-11-15 15:02:00 +11:00
crash_dump.c powerpc: Rename mapping based RELOCATABLE to DYNAMIC_MEMSTART for BookE 2011-12-20 10:20:19 -05:00
crash.c Disintegrate asm/system.h for PowerPC 2012-03-28 18:30:02 +01:00
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 powerpc: fix implicit use of cache.h in kernel/firmware.c 2011-10-31 19:30:41 -04:00
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 powerpc: Call do_page_fault() with interrupts off 2012-03-09 10:55:08 +11:00
head_32.S powerpc: Call do_page_fault() with interrupts off 2012-03-09 10:55:08 +11:00
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 KVM: PPC: booke: category E.HV (GS-mode) support 2012-04-08 12:51:19 +03:00
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_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
idle.c powerpc: Remove no longer used ppc_md.idle_loop() 2012-11-15 13:00:20 +11:00
io-workarounds.c POWERPC: drivers: remove __dev* attributes. 2013-01-03 15:57:04 -08:00
io.c powerpc: various straight conversions from module.h --> export.h 2011-10-31 19:30:44 -04:00
iomap.c powerpc: switch to GENERIC_PCI_IOMAP 2011-11-28 21:13:18 +02:00
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 powerpc: Fix build breakage in jump_label.c 2011-11-16 14:25:19 +11:00
kgdb.c powerpc/kgdb: Restore current_thread_info properly 2012-08-24 20:26:06 +10:00
kprobes.c Disintegrate asm/system.h for PowerPC 2012-03-28 18:30:02 +01:00
kvm_emul.S KVM: PPC: Not optimizing MSR_CE and MSR_ME with paravirt. 2012-05-30 11:43:11 +02:00
kvm.c KVM: PPC: use definitions in epapr header for hcalls 2012-10-05 23:38:36 +02:00
l2cr_6xx.S Fix common misspellings 2011-03-31 11:26:23 -03:00
legacy_serial.c Fix misspellings of "whether" in comments. 2012-11-19 14:31:35 +01:00
lparcfg.c Disintegrate asm/system.h for PowerPC 2012-03-28 18:30:02 +01:00
machine_kexec_32.c treewide: convert uses of ATTRIB_NORETURN to __noreturn 2012-01-12 20:13:03 -08:00
machine_kexec_64.c powerpc+of: Rename the drivers/of prom_* functions to of_* 2012-11-15 12:56:52 +11:00
machine_kexec.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_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
misc.S powerpc: switch to generic sys_execve()/kernel_execve() 2012-09-30 23:35:51 -04:00
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
module.c powerpc: remove non-required uses of include <linux/module.h> 2011-10-31 19:30:44 -04:00
msi.c
nvram_64.c powerpc/nvram: Generalize code for OS partitions in NVRAM 2011-03-04 18:19:04 +11:00
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_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
pci-common.c POWERPC: drivers: remove __dev* attributes. 2013-01-03 15:57:04 -08:00
pmc.c bug.h: add include of it to various implicit C users 2012-02-29 17:15:08 -05:00
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 Fix common misspellings 2011-03-31 11:26:23 -03:00
proc_powerpc.c
process.c powerpc: Define ppr in thread_struct 2013-01-10 17:01:08 +11:00
prom_init_check.sh powerpc: Relocate prom_init.c on 64bit 2013-01-10 17:00:25 +11:00
prom_init.c powerpc: Remove RELOC() macro 2013-01-10 17:00:28 +11:00
prom_parse.c powerpc: remove non-required uses of include <linux/module.h> 2011-10-31 19:30:44 -04:00
prom.c Merge branch 'dt' into next 2012-11-15 15:02:44 +11:00
ptrace32.c powerpc: Remove old powerpc specific ptrace getregs/setregs calls 2012-04-30 15:37:28 +10:00
ptrace.c powerpc/ptrace: Enable hardware breakpoint upon re-registering 2012-11-15 13:01:13 +11:00
reloc_32.S powerpc: Process dynamic relocations for kernel 2011-12-20 10:21:08 -05:00
reloc_64.S
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
rtas-proc.c
rtas-rtc.c powerpc/rtas-rtc: remove sideeffects of printk_ratelimit 2011-06-29 15:30:43 +10:00
rtas.c powerpc+of: Remove the pSeries_reconfig.h file 2012-11-15 12:56:55 +11:00
rtasd.c powerpc/pseries: Cancel RTAS event scan before firmware flash 2011-11-25 14:11:29 +11:00
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
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
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
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
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 Disintegrate asm/system.h for PowerPC 2012-03-28 18:30:02 +01:00
stacktrace.c powerpc: various straight conversions from module.h --> export.h 2011-10-31 19:30:44 -04:00
suspend.c
swsusp_32.S Fix common misspellings 2011-03-31 11:26:23 -03:00
swsusp_64.c Disintegrate asm/system.h for PowerPC 2012-03-28 18:30:02 +01:00
swsusp_asm64.S
swsusp_booke.S
swsusp.c Disintegrate asm/system.h for PowerPC 2012-03-28 18:30:02 +01:00
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_chk.c
systbl_chk.sh
systbl.S
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_16550.c powerpc: Add early debug for WSP platforms 2011-05-06 13:32:41 +10:00
udbg.c powerpc/udbg: Remove unused udbg_read() 2012-11-15 12:59:33 +11:00
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