linux_dsm_epyc7002/arch/powerpc/kernel
Bharat Bhushan 13d543cd79 powerpc: Restore dbcr0 on user space exit
On BookE (Branch taken + Single Step) is as same as Branch Taken
on BookS and in Linux we simulate BookS behavior for BookE as well.
When doing so, in Branch taken handling we want to set DBCR0_IC but
we update the current->thread->dbcr0 and not DBCR0.

Now on 64bit the current->thread.dbcr0 (and other debug registers)
is synchronized ONLY on context switch flow. But after handling
Branch taken in debug exception if we return back to user space
without context switch then single stepping change (DBCR0_ICMP)
does not get written in h/w DBCR0 and Instruction Complete exception
does not happen.

This fixes using ptrace reliably on BookE-PowerPC

lmbench latency test (lat_syscall) Results are (they varies a little
on each run)

1) ./lat_syscall <action> /dev/shm/uImage

action:	Open	read	write	stat	fstat	null
Before:	3.8618	0.2017	0.2851	1.6789	0.2256	0.0856
After:	3.8580	0.2017	0.2851	1.6955	0.2255	0.0856

1) ./lat_syscall -P 2 -N 10 <action> /dev/shm/uImage
action:	Open	read	write	stat	fstat	null
Before:	4.1388	0.2238	0.3066	1.7106	0.2256	0.0856
After:	4.1413	0.2236	0.3062	1.7107	0.2256	0.0856

[ Slightly modified to avoid extra branch in the fast path
  on Book3S and fix build on all non-BookE 64-bit -- BenH
]

Signed-off-by: Bharat Bhushan <bharat.bhushan@freescale.com>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
2013-06-20 17:04:19 +10:00
..
vdso32 powerpc: Add VDSO version of time 2013-04-23 16:05:05 +10:00
vdso64 powerpc: Add VDSO version of time 2013-04-23 16:05:05 +10:00
.gitignore
align.c Disintegrate asm/system.h for PowerPC 2012-03-28 18:30:02 +01:00
asm-offsets.c powerpc: Restore dbcr0 on user space exit 2013-06-20 17:04:19 +10: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
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/85xx: Add AltiVec support for e6500 2013-03-12 15:59:26 -05:00
cpu_setup_pa6t.S
cpu_setup_power.S powerpc: Fix TLB cleanup at boot on POWER8 2013-05-24 18:13:44 +10: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/power8: Fix oprofile and perf 2013-06-10 08:36:19 +10:00
crash_dump.c mm/ppc: use common help functions to free reserved pages 2013-04-29 15:54:30 -07:00
crash.c Disintegrate asm/system.h for PowerPC 2012-03-28 18:30:02 +01:00
dbell.c powerpc: Add accounting for Doorbell interrupts 2013-04-18 15:59:55 +10: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/32bit:Store temporary result in r0 instead of r8 2013-06-01 08:29:27 +10:00
entry_64.S powerpc: Restore dbcr0 on user space exit 2013-06-20 17:04:19 +10:00
epapr_hcalls.S powerpc: Add paravirt idle loop for 64-bit Book-E 2013-03-13 14:19:36 -05:00
epapr_paravirt.c powerpc: define the conditions where the ePAPR idle hcall can be supported 2013-03-26 08:47:27 +11:00
exceptions-64e.S powerpc/booke64: Fix kernel hangs at kernel_dbg_exc 2013-05-14 16:00:19 +10:00
exceptions-64s.S powerpc/power8: Update denormalization handler 2013-06-10 08:36:26 +10:00
fadump.c mm/ppc: use common help functions to free reserved pages 2013-04-29 15:54:30 -07: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: Add FP/VSX and VMX register load functions for transactional memory 2013-02-15 16:58:52 +11: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 powerpc: Fix interrupt range check on debug exception 2013-05-02 10:31:01 +10:00
head_64.S powerpc: Add isync to copy_and_flush 2013-04-26 16:08:17 +10:00
head_booke.h powerpc: Fix interrupt range check on debug exception 2013-05-02 10:31:01 +10:00
head_fsl_booke.S powerpc: Fix interrupt range check on debug exception 2013-05-02 10:31:01 +10:00
hw_breakpoint.c powerpc: Change hardware breakpoint to allow longer ranges 2013-01-29 11:35:08 +11: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: Add paravirt idle loop for 64-bit Book-E 2013-03-13 14:19:36 -05: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: Use generic idle loop 2013-04-08 17:39:27 +02: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/vfio: Enable on PowerNV platform 2013-06-20 16:55:14 +10:00
irq.c powerpc: Remove the unneeded trigger of decrementer interrupt in decrementer_check_overflow 2013-06-20 16:55:10 +10: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: Removed kmalloc returned value cast 2013-04-18 13:03:56 +10:00
kprobes.c powerpc: Move the single step enable code to a generic path 2013-06-20 16:55:09 +10: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 mm/ppc: use common help functions to free reserved pages 2013-04-29 15:54:30 -07:00
l2cr_6xx.S
legacy_serial.c Fix misspellings of "whether" in comments. 2012-11-19 14:31:35 +01:00
lparcfg.c Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc 2013-05-02 10:16:16 -07: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/kexec: Fix kexec when using VMX optimised memcpy 2013-05-14 14:36:23 +10:00
machine_kexec.c powerpc+of: Rename the drivers/of prom_* functions to of_* 2012-11-15 12:56:52 +11:00
Makefile powerpc: Add helper functions for transactional memory context switching 2013-02-15 16:58:52 +11:00
misc_32.S powerpc: Provide __bswapdi2 2013-05-14 16:00:17 +10:00
misc_64.S powerpc: Provide __bswapdi2 2013-05-14 16:00:17 +10: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: remove cast for kmalloc/kzalloc return value 2013-04-18 13:03:56 +10:00
of_platform.c powerpc/eeh: Fix crash when adding a device in a slot with DDW 2013-01-10 17:01:58 +11:00
paca.c powerpc: Move boot_paca into early_setup 2013-02-15 16:54:48 +11:00
pci_32.c powerpc/pci: Support per-aperture memory offset 2013-05-06 13:40:40 +10:00
pci_64.c powerpc: Make radeon 32-bit MSI quirk work on powernv 2013-05-24 18:13:45 +10:00
pci_dn.c powerpc: Make radeon 32-bit MSI quirk work on powernv 2013-05-24 18:13:45 +10:00
pci_of_scan.c POWERPC: drivers: remove __dev* attributes. 2013-01-03 15:57:04 -08:00
pci-common.c powerpc/pci: Check the bus address instead of resource address in pcibios_fixup_resources 2013-06-10 08:36:13 +10:00
pmc.c bug.h: add include of it to various implicit C users 2012-02-29 17:15:08 -05:00
ppc32.h powerpc: switch to generic old sigaction() 2013-02-03 18:16:10 -05:00
ppc_ksyms.c powerpc: Provide __bswapdi2 2013-05-14 16:00:17 +10:00
ppc_save_regs.S
proc_powerpc.c proc: Supply PDE attribute setting accessor functions 2013-05-01 17:29:18 -04:00
process.c powerpc/hw_breakpoints: Add DABRX cpu feature to fix 32-bit regression 2013-06-10 08:36:29 +10:00
prom_init_check.sh powerpc: Relocate prom_init.c on 64bit 2013-01-10 17:00:25 +11:00
prom_init.c powerpc/pseries: Enable PRRN handling 2013-04-26 16:08:26 +10:00
prom_parse.c powerpc: remove non-required uses of include <linux/module.h> 2011-10-31 19:30:44 -04:00
prom.c powerpc/prom: Scan reserved-ranges node for memory reservations 2013-06-20 16:55:11 +10:00
ptrace32.c powerpc: fixing ptrace_get_reg to return an error 2013-04-18 13:03:57 +10:00
ptrace.c powerpc: Syscall hooks for context tracking subsystem 2013-05-14 16:00:19 +10: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: Fix validate_flash buffer overflow issue 2013-05-14 14:36:26 +10:00
rtas_pci.c powerpc/kernel: Cleanup on rtas_pci.c 2013-04-18 13:03:48 +10: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: Bring all threads online prior to migration/hibernation 2013-05-14 14:36:29 +10:00
rtasd.c powerpc/pseries: Add /proc interface to control topology updates 2013-04-26 16:08:26 +10: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: Reduce PTE table memory wastage 2013-04-30 16:00:07 +10:00
setup-common.c powerpc: remove PReP platform 2013-04-18 13:03:53 +10:00
setup.h
signal_32.c powerpc/tm: Fix userspace stack corruption on signal delivery for active transactions 2013-06-01 08:29:23 +10:00
signal_64.c powerpc/tm: Fix userspace stack corruption on signal delivery for active transactions 2013-06-01 08:29:23 +10:00
signal.c powerpc/tm: Fix userspace stack corruption on signal delivery for active transactions 2013-06-01 08:29:23 +10:00
signal.h powerpc/tm: Fix userspace stack corruption on signal delivery for active transactions 2013-06-01 08:29:23 +10:00
smp-tbsync.c POWERPC: drivers: remove __dev* attributes. 2013-01-03 15:57:04 -08:00
smp.c powerpc: Use generic idle loop 2013-04-08 17:39:27 +02: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
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 unify compat fanotify_mark(2), switch to COMPAT_SYSCALL_DEFINE 2013-05-09 13:46:38 -04:00
syscalls.c powerpc: Fix personality handling in ppc64_personality() 2012-08-24 20:26:07 +10:00
sysfs.c powerpc/topology: Fix spurr attribute permission 2013-05-06 15:02:40 +10:00
systbl_chk.c
systbl_chk.sh
systbl.S
tau_6xx.c
time.c powerpc: Use PTR_RET instead of IS_ERR/PTR_ERR 2013-04-18 13:03:48 +10:00
tm.S powerpc: fix compiling CONFIG_PPC_TRANSACTIONAL_MEM when CONFIG_ALTIVEC=n 2013-04-10 08:14:39 +10:00
traps.c powerpc/tm: Abort on emulation and alignment faults 2013-06-01 08:29:22 +10:00
udbg_16550.c
udbg.c powerpc: Add a configuration option for early BootX/OpenFirmware debug 2013-06-20 16:55:12 +10:00
uprobes.c uretprobes/powerpc: Hijack return address 2013-04-13 15:31:56 +02:00
vdso.c powerpc: Add VDSO version of time 2013-04-23 16:05:05 +10:00
vecemu.c
vector.S powerpc: Add FP/VSX and VMX register load functions for transactional memory 2013-02-15 16:58:52 +11: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