linux/arch/mips/include/asm
Maciej W. Rozycki 03dce59527 MIPS: Fix a preemption issue with thread's FPU defaults
Fix "BUG: using smp_processor_id() in preemptible" reported in accesses
to thread's FPU defaults: the value to initialise FSCR to at program
startup, the FCSR r/w mask and the contents of FIR in full FPU
emulation, removing a regression introduced with 9b26616c [MIPS: Respect
the ISA level in FCSR handling] and f6843626 [MIPS: math-emu: Set FIR
feature flags for full emulation].

Use `boot_cpu_data' to obtain the data from, following the approach that
`cpu_has_*' macros take and avoiding the call to `smp_processor_id' made
in the reference to `current_cpu_data'.  The contents of FSCR have to be
consistent across processors in an SMP system, the settings there must
not change as a thread is migrated across processors.  And the contents
of FIR are guaranteed to be consistent in FPU emulation, by definition.

Signed-off-by: Maciej W. Rozycki <macro@linux-mips.org>
Tested-by: Ezequiel Garcia <ezequiel.garcia@imgtec.com>
Tested-by: Paul Martin <paul.martin@codethink.co.uk>
Cc: Markos Chandras <Markos.Chandras@imgtec.com>
Cc: James Hogan <james.hogan@imgtec.com>
Cc: linux-mips@linux-mips.org
Patchwork: https://patchwork.linux-mips.org/patch/10030/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
2015-05-12 23:15:49 +02:00
..
dec
emma
fw
ip32
lasat
mach-ar7 MIPS: Create a common <asm/mach-generic/war.h> 2015-03-31 11:59:40 +02:00
mach-ath25 MIPS: DMA: Implement platform hook to perform post-DMA cache flushes. 2015-04-01 17:22:01 +02:00
mach-ath79 MIPS: Create a common <asm/mach-generic/war.h> 2015-03-31 11:59:40 +02:00
mach-au1x00 MIPS: Create a common <asm/mach-generic/war.h> 2015-03-31 11:59:40 +02:00
mach-bcm47xx MIPS: BCM47xx: Devices database update for 4.1 (or 4.2?) 2015-04-02 13:54:24 +02:00
mach-bcm63xx Merge branch 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus 2015-04-17 15:50:54 -04:00
mach-bmips MIPS: BMIPS: Move post DMA flush implementation to common header 2015-04-08 23:52:32 +02:00
mach-cavium-octeon Merge branch '4.0-fixes' into mips-for-linux-next 2015-04-13 16:03:32 +02:00
mach-cobalt MIPS: Correct `nofpu' non-functionality 2015-04-08 01:09:49 +02:00
mach-db1x00
mach-dec MIPS: Correct `nofpu' non-functionality 2015-04-08 01:09:49 +02:00
mach-emma2rh MIPS: Create a common <asm/mach-generic/war.h> 2015-03-31 11:59:40 +02:00
mach-generic MIPS: DMA: Allow platforms to override only the post DMA hook 2015-04-08 23:52:33 +02:00
mach-ip22 MIPS: Correct `nofpu' non-functionality 2015-04-08 01:09:49 +02:00
mach-ip27 MIPS: DMA: Implement platform hook to perform post-DMA cache flushes. 2015-04-01 17:22:01 +02:00
mach-ip28
mach-ip32 Merge branch 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus 2015-04-17 15:50:54 -04:00
mach-jazz MIPS: DMA: Implement platform hook to perform post-DMA cache flushes. 2015-04-01 17:22:01 +02:00
mach-jz4740 MIPS: Create a common <asm/mach-generic/war.h> 2015-03-31 11:59:40 +02:00
mach-lantiq MIPS: Create a common <asm/mach-generic/war.h> 2015-03-31 11:59:40 +02:00
mach-lasat MIPS: Create a common <asm/mach-generic/war.h> 2015-03-31 11:59:40 +02:00
mach-loongson This is the bulk of GPIO changes for the v4.1 development 2015-04-18 08:22:10 -04:00
mach-loongson1 MIPS: Create a common <asm/mach-generic/war.h> 2015-03-31 11:59:40 +02:00
mach-malta
mach-netlogic MIPS: Netlogic: Move cores per node out of multi-node.h 2015-04-01 17:21:50 +02:00
mach-paravirt MIPS: Create a common <asm/mach-generic/war.h> 2015-03-31 11:59:40 +02:00
mach-pistachio MIPS: Add support for the IMG Pistachio SoC 2015-03-31 12:04:12 +02:00
mach-pmcs-msp71xx
mach-pnx833x MIPS: Create a common <asm/mach-generic/war.h> 2015-03-31 11:59:40 +02:00
mach-ralink MIPS: Create a common <asm/mach-generic/war.h> 2015-03-31 11:59:40 +02:00
mach-rc32434
mach-rm MIPS: Correct `nofpu' non-functionality 2015-04-08 01:09:49 +02:00
mach-sead3
mach-sibyte
mach-tx39xx MIPS: Create a common <asm/mach-generic/war.h> 2015-03-31 11:59:40 +02:00
mach-tx49xx
mach-vr41xx MIPS: Create a common <asm/mach-generic/war.h> 2015-03-31 11:59:40 +02:00
mips-boards MIPS: SEAD3: New header file sead3-addr.h with hardware addresses. 2015-04-01 17:22:07 +02:00
netlogic MIPS: Netlogic: Add irq mapping and setup for XHCI port 3 2015-04-01 17:21:53 +02:00
octeon Merge branch '4.0-fixes' into mips-for-linux-next 2015-04-13 16:03:32 +02:00
pci MIPS: PCI: Add a hook for IORESOURCE_BUS in pci_controller/bridge_controller 2015-04-01 17:22:16 +02:00
sgi MIPS: Update arch/mips/include/asm/sgi/sgi.h 2015-04-01 17:21:56 +02:00
sibyte
sn
txx9
vr41xx
xtalk
Kbuild
abi.h
addrspace.h
amon.h
arch_hweight.h
asm-eva.h MIPS: asm: asm-eva: Introduce kernel load/store variants 2015-04-10 15:41:43 +02:00
asm-offsets.h
asm.h
asmmacro-32.h Merge branch '4.1-fp' into mips-for-linux-next 2015-04-13 16:01:37 +02:00
asmmacro-64.h
asmmacro.h Revert "MIPS: Don't assume 64-bit FP registers for context switch" 2015-03-27 19:42:48 +01:00
atomic.h
barrier.h
bcache.h
bitops.h MIPS: bitops.h: Avoid inline asm for constant FLS 2015-04-08 01:09:12 +02:00
bmips.h MIPS: BMIPS: Move post DMA flush implementation to common header 2015-04-08 23:52:32 +02:00
bootinfo.h
branch.h MIPS: kernel: mips-r2-to-r6-emul: Add R2 emulator for MIPS R6 2015-02-17 15:37:37 +00:00
break.h
bug.h
bugs.h
cache.h
cacheflush.h MIPS: Fix race condition in lazy cache flushing. 2015-03-25 13:48:00 +01:00
cacheops.h
cdmm.h MIPS, ttyFDC: Add early FDC console support 2015-03-31 12:04:12 +02:00
cevt-r4k.h MIPS: cevt-r4k: Move handle_perf_irq() out of header 2015-03-31 12:04:12 +02:00
checksum.h MIPS: LLVMLinux: Fix an 'inline asm input/output type mismatch' error. 2015-04-01 17:21:47 +02:00
clkdev.h
clock.h
cmp.h
cmpxchg.h MIPS: Fall back to generic implementation of cmpxchg64 on 32-bit platforms 2015-04-01 17:21:25 +02:00
compat-signal.h
compat.h
compiler.h
cop2.h
cpu-features.h Merge branch '4.0-fixes' into mips-for-linux-next 2015-04-13 16:03:32 +02:00
cpu-info.h MIPS: Respect the ISA level in FCSR handling 2015-04-08 01:10:37 +02:00
cpu-type.h MIPS: Add R16000 detection 2015-04-01 17:22:13 +02:00
cpu.h Merge branch '4.0-fixes' into mips-for-linux-next 2015-04-13 16:03:32 +02:00
debug.h
delay.h
device.h
div64.h
dma-coherence.h
dma-mapping.h MIPS: Use bool function return values of true/false not 1/0 2015-04-01 17:22:16 +02:00
dma.h
ds1287.h
dsp.h
edac.h
elf.h MIPS: Fix a preemption issue with thread's FPU defaults 2015-05-12 23:15:49 +02:00
errno.h
eva.h
exec.h
fb.h
fixmap.h
floppy.h
fpregdef.h
fpu.h Merge branch '4.1-fp' into mips-for-linux-next 2015-04-13 16:01:37 +02:00
fpu_emulator.h MIPS: Respect the ISA level in FCSR handling 2015-04-08 01:10:37 +02:00
ftrace.h
futex.h
gio_device.h MIPS: ip22-gio: Remove legacy suspend/resume support 2015-02-20 13:30:55 +01:00
gpio.h
gt64120.h
hardirq.h
hazards.h
highmem.h
hpet.h
hugetlb.h
hw_irq.h
i8259.h
ide.h
idle.h
inst.h
io.h
irq.h MIPS: Read CPU IRQ line that FDC to routed to 2015-03-31 12:04:12 +02:00
irq_cpu.h
irq_gt641xx.h
irq_regs.h
irqflags.h
isadep.h
jazz.h
jazzdma.h
jump_label.h jump_label: Allow asm/jump_label.h to be included in assembly 2015-04-09 09:40:23 +02:00
kdebug.h MIPS: Clear [MSA]FPE CSR.Cause after notify_die() 2015-03-27 21:25:06 +00:00
kexec.h
kgdb.h
kmap_types.h
kprobes.h
kvm_host.h MIPS: KVM: Add MSA exception handling 2015-03-27 21:25:20 +00:00
kvm_para.h
linkage.h
local.h
m48t37.h
maar.h
mc146818-time.h
mc146818rtc.h
mips-cm.h
mips-cpc.h
mips-r2-to-r6-emul.h MIPS: Set `si_code' for SIGFPE signals sent from emulation too 2015-04-08 01:10:19 +02:00
mips_machine.h
mips_mt.h
mipsmtregs.h
mipsprom.h
mipsregs.h MIPS: math-emu: Define IEEE 754-2008 feature control bits 2015-04-08 01:10:31 +02:00
mmu.h
mmu_context.h
mmzone.h
module.h
msa.h
msc01_ic.h
nile4.h
paccess.h
page.h MIPS: Remove prototype for copy_user_page 2015-04-02 13:54:18 +02:00
pci.h MIPS: PCI: Add a hook for IORESOURCE_BUS in pci_controller/bridge_controller 2015-04-01 17:22:16 +02:00
perf_event.h
pgalloc.h
pgtable-32.h MIPS: Add support for XPA. 2015-03-19 17:39:49 +01:00
pgtable-64.h MIPS: Expand __swp_offset() to carry 40 significant bits for 64-bit kernel. 2015-04-01 17:21:59 +02:00
pgtable-bits.h MIPS: Add support for XPA. 2015-03-19 17:39:49 +01:00
pgtable.h Revert "MIPS: Remove race window in page fault handling" 2015-03-25 13:48:00 +01:00
pm-cps.h
pm.h
pmon.h
prefetch.h
processor.h MIPS: MSA: Fix big-endian FPR_IDX implementation 2015-03-27 19:42:48 +01:00
prom.h
ptrace.h MIPS: OCTEON: Save/Restore wider multiply registers in OCTEON III CPUs 2015-02-20 15:28:29 +01:00
r4k-timer.h
r4kcache.h MIPS: r4kcache: Use correct base register for MIPS R6 cache flushes 2015-04-10 15:41:46 +02:00
reboot.h
reg.h
regdef.h
rtlx.h
seccomp.h mips: switch to using asm-generic for seccomp.h 2015-04-17 09:04:10 -04:00
setup.h
sgialib.h
sgiarcs.h
shmparam.h
sigcontext.h
signal.h
sim.h
smp-cps.h
smp-ops.h
smp.h MIPS: SMP: Fix build error. 2015-05-12 09:13:30 +02:00
sni.h
socket.h
sparsemem.h
spinlock.h MIPS: asm: spinlock: Fix addiu instruction for R10000_LLSC_WAR case 2015-04-10 15:41:46 +02:00
spinlock_types.h
spram.h
stackframe.h
stackprotector.h
stacktrace.h
string.h
switch_to.h MIPS: Make use of the ERETNC instruction on MIPS R6 2015-02-17 15:37:37 +00:00
syscall.h
termios.h
thread_info.h Merge branch 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus 2015-04-17 15:50:54 -04:00
time.h
timex.h
tlb.h
tlbdebug.h
tlbflush.h
tlbmisc.h
topology.h
traps.h
txx9irq.h
txx9pio.h
txx9tmr.h
types.h
uaccess.h
uasm.h
unaligned.h
unistd.h
vdso.h
vga.h
vpe.h
war.h
watch.h
wbflush.h