kernel_optimize_test/arch/powerpc/kernel
Michael Ellerman a2ceff5e55 [POWERPC] Fix missed hardware breakpoints across multiple threads
There is a bug in the powerpc DABR (data access breakpoint) handling,
which can result in us missing breakpoints if several threads are trying
to break on the same address.

The circumstances are that do_page_fault() calls do_dabr(), this clears
the DABR (sets it to 0) and sets up the signal which will report to
userspace that the DABR was hit. The do_signal() code will restore the DABR
value on the way out to userspace.

If we reschedule before calling do_signal(), __switch_to() will check the
cached DABR value and compare it to the new thread's value, if they match
we don't set the DABR in hardware.

So if two threads have the same DABR value, and we schedule from one to
the other after taking the interrupt for the first thread hitting the DABR,
the second thread will run without the DABR set in hardware.

The cleanest fix is to move the cache update into set_dabr(), that way we
can't forget to do it.

Reported-by: Jan Kratochvil <jan.kratochvil@redhat.com>
Signed-off-by: Michael Ellerman <michael@ellerman.id.au>
Signed-off-by: Paul Mackerras <paulus@samba.org>
2008-03-28 22:51:02 +11:00
..
vdso32 [POWERPC] vdso: Fixes for cache block sizes 2007-11-20 13:56:31 +11:00
vdso64 [POWERPC] vdso: Fixes for cache block sizes 2007-11-20 13:56:31 +11:00
align.c
asm-offsets.c Fix compilation of powerpc asm-offsets.c with old gcc 2008-02-07 14:54:45 -08:00
audit.c
btext.c [POWERPC] Use for_each macros in arch/powerpc/kernel 2008-01-17 14:56:55 +11:00
clock.c
compat_audit.c
cpu_setup_6xx.S Spelling fix: explicitly 2007-10-19 23:22:55 +02:00
cpu_setup_44x.S [POWERPC] 4xx: Fix 440grx setup function to call 440A fixup 2007-12-23 13:27:37 -06:00
cpu_setup_pa6t.S
cpu_setup_ppc970.S
cputable.c [POWERPC} Add oprofile support for e300 2008-02-05 23:37:58 -06:00
crash_dump.c
crash.c [POWERPC] kdump shutdown hook support 2008-01-25 22:52:50 +11:00
dma_64.c iommu sg: powerpc: convert iommu to use the IOMMU helper 2008-02-05 09:44:11 -08:00
entry_32.S [POWERPC] Avoid unpaired stwcx. on some processors 2007-11-13 16:22:43 +11:00
entry_64.S [POWERPC] Add 1TB workaround for PA6T 2007-10-17 22:30:09 +10:00
firmware.c
fpu.S
head_8xx.S [POWERPC] 8xx: fix swap 2008-03-07 08:42:28 -06:00
head_32.S [POWERPC] Fix swapper_pg_dir size when CONFIG_PTE_64BIT=y on FSL_BOOKE 2007-12-06 13:11:04 -06:00
head_40x.S [POWERPC] Fix swapper_pg_dir size when CONFIG_PTE_64BIT=y on FSL_BOOKE 2007-12-06 13:11:04 -06:00
head_44x.S [POWERPC] Reworking machine check handling and Fix 440/440A 2007-12-23 13:11:59 -06:00
head_64.S [POWERPC] Provide a way to protect 4k subpages when using 64k pages 2008-01-24 10:06:01 +11:00
head_booke.h [POWERPC] Reworking machine check handling and Fix 440/440A 2007-12-23 13:11:59 -06:00
head_fsl_booke.S [POWERPC] 85xx: Respect KERNELBASE, PAGE_OFFSET, and PHYSICAL_START on e500 2008-01-23 19:34:36 -06:00
ibmebus.c [POWERPC] Make ibmebus use of_(un)register_driver 2008-01-25 22:52:50 +11:00
idle_6xx.S
idle_power4.S
idle.c [POWERPC] Fix sysctl table check failure on PowerMac 2007-11-08 14:15:30 +11:00
init_task.c
io.c
iomap.c
iommu.c iommu sg: powerpc: remove DMA 4GB boundary protection 2008-02-05 09:44:11 -08:00
irq.c Spelling fix: explicitly 2007-10-19 23:22:55 +02:00
isa-bridge.c [POWERPC] pci_controller->arch_data really is a struct device_node * 2007-12-11 13:42:37 +11:00
kprobes.c [POWERPC] Kill sparse warnings in kprobes 2008-02-20 13:33:37 +11:00
l2cr_6xx.S Convert files to UTF-8 and some cleanups 2007-10-19 23:21:04 +02:00
legacy_serial.c [POWERPC] Fix legacy serial search for opb bus ports 2008-02-06 16:30:00 +11:00
lparcfg.c [POWERPC] lparcfg: Remove useless buffer allocation 2007-12-11 13:41:28 +11:00
machine_kexec_32.c
machine_kexec_64.c
machine_kexec.c Use extended crashkernel command line on ppc64 2007-10-19 11:53:51 -07:00
Makefile [POWERPC] Remove generated files on make clean 2008-02-14 22:11:02 +11:00
misc_32.S [POWERPC] Add __ucmpdi2 for 64-bit comparisons in 32-bit kernels 2008-03-13 09:39:55 +11:00
misc_64.S [POWERPC] kernel_execve is identical in 32 and 64 bit 2007-12-11 13:34:39 +11:00
misc.S [POWERPC] Make setjmp/longjmp code usable outside of xmon 2008-01-25 22:52:50 +11:00
module_32.c [POWERPC] Optimize counting distinct entries in the relocation sections 2007-12-21 15:05:58 +11:00
module_64.c [POWERPC] Optimize counting distinct entries in the relocation sections 2007-12-21 15:05:58 +11:00
msi.c
nvram_64.c
of_device.c [POWERPC] Use <linux/of_{platform, device}.h> and not <asm/...> variants. 2008-01-17 14:58:57 +11:00
of_platform.c [POWERPC] arch/powerpc/kernel: Use for_each_child_of_node 2008-01-17 14:57:20 +11:00
paca.c
pci_32.c [POWERPC] Remove update_bridge_resource 2008-01-23 19:32:30 -06:00
pci_64.c [POWERPC] Always hookup PHB IO resource even when empty 2008-01-25 22:52:53 +11:00
pci_dn.c [POWERPC] iSeries: eliminate pci_dn bussubno 2008-01-17 14:57:05 +11:00
pci-common.c [POWERPC] Fix bogus test for unassigned PCI resources 2008-03-13 10:09:27 +11:00
pmc.c [POWERPC] Made FSL Book-E PMC support more generic 2008-02-05 23:34:14 -06:00
ppc32.h
ppc_ksyms.c [POWERPC] Export empty_zero_page 2008-03-13 10:09:28 +11:00
proc_ppc64.c
process.c [POWERPC] Fix missed hardware breakpoints across multiple threads 2008-03-28 22:51:02 +11:00
prom_init.c [POWERPC] Efika: prune fixups and make them more carefull 2008-01-26 15:32:18 -07:00
prom_parse.c [POWERPC] Add of_translate_dma_address 2007-12-11 15:43:35 +11:00
prom.c [POWERPC] Fix dt_mem_next_cell() to read the full address 2008-02-20 13:33:37 +11:00
ptrace32.c [POWERPC] Use regset code for compat PTRACE_*REGS* calls 2008-02-07 20:40:21 +11:00
ptrace.c [POWERPC] user_regset PTRACE_SETREGS regression fix 2008-03-20 10:10:56 +11:00
rio.c [POWERPC] Move RapidIO support code from arch/ppc 2008-01-23 19:35:15 -06:00
rtas_flash.c Slab API: remove useless ctor parameter and reorder parameters 2007-10-17 08:42:45 -07:00
rtas_pci.c [POWERPC] arch/powerpc/kernel: Use for_each_child_of_node 2008-01-17 14:57:20 +11:00
rtas-proc.c
rtas-rtc.c
rtas.c Revert "[POWERPC] Fix RTAS os-term usage on kernel panic" 2007-12-03 09:39:45 +11:00
semaphore.c
setup_32.c [POWERPC] Only call ppc_md.setup_arch() if it is provided 2007-10-11 20:39:36 +10:00
setup_64.c [POWERPC] Fix cache line vs. block size confusion 2007-11-08 14:15:30 +11:00
setup-common.c [POWERPC] Cleanup SMT thread handling 2007-12-03 13:56:25 +11:00
setup.h
signal_32.c [POWERPC] arch/powerpc: Remove duplicate includes 2007-12-20 17:13:50 +11:00
signal_64.c [POWERPC] Implement logging of unhandled signals 2007-10-12 14:05:18 +10:00
signal.c [POWERPC] Implement logging of unhandled signals 2007-10-12 14:05:18 +10:00
signal.h
smp-tbsync.c
smp.c [POWERPC] Make smp_send_stop() handle panic and xmon reboot 2008-01-25 22:52:50 +11:00
softemu8xx.c [POWERPC] 8xx: Move softemu8xx.c from arch/ppc 2007-10-04 11:02:54 -05:00
suspend.c
swsusp_32.S [POWERPC] Make altivec code in swsusp_32.S depend on CONFIG_ALTIVEC 2007-11-08 14:15:34 +11:00
swsusp_64.c
swsusp_asm64.S
swsusp.c
sys_ppc32.c remove include/asm-*/ipc.h 2007-10-17 08:42:55 -07:00
syscalls.c remove include/asm-*/ipc.h 2007-10-17 08:42:55 -07:00
sysfs.c remove __attribute_used__ 2008-01-28 23:21:18 +01:00
systbl_chk.c [POWERPC] Fix a couple of copyright symbols 2008-01-25 22:52:50 +11:00
systbl_chk.sh [POWERPC] Fix a couple of copyright symbols 2008-01-25 22:52:50 +11:00
systbl.S [POWERPC] Align the sys_call_table 2007-10-11 14:36:47 +10:00
tau_6xx.c
time.c taskstats scaled time cleanup 2008-02-06 10:41:00 -08:00
traps.c [POWERPC] Fix compilation for CONFIG_DEBUGGER=n and CONFIG_KEXEC=y 2008-02-07 11:40:18 +11:00
udbg_16550.c [POWERPC] 4xx: Add early udbg support for 40x processors 2007-12-23 13:13:03 -06:00
udbg.c [POWERPC] 4xx: Add early udbg support for 40x processors 2007-12-23 13:13:03 -06:00
vdso.c [POWERPC] vdso_do_func_patch{32,64}() must be __init 2008-02-14 22:11:02 +11:00
vecemu.c
vector.S
vio.c [POWERPC] iSeries: Fix section mismatch in viodsasd 2008-02-06 16:30:00 +11:00
vmlinux.lds.S all archs: consolidate init and exit sections in vmlinux.lds.h 2008-01-28 23:21:17 +01:00