linux/arch
Helge Deller 527a1d1ede parisc: Fix crash due alternative coding for NP iopdir_fdc bit
According to the found documentation, data cache flushes and sync
instructions are needed on the PCX-U+ (PA8200, e.g. C200/C240)
platforms, while PCX-W (PA8500, e.g. C360) platforms aparently don't
need those flushes when changing the IO PDIR data structures.

We have no documentation for PCX-W+ (PA8600) and PCX-W2 (PA8700) CPUs,
but Carlo Pisani reported that his C3600 machine (PA8600, PCX-W+) fails
when the fdc instructions were removed. His firmware didn't set the NIOP
bit, so one may assume it's a firmware bug since other C3750 machines
had the bit set.

Even if documentation (as mentioned above) states that PCX-W (PA8500,
e.g.  J5000) does not need fdc flushes, Sven could show that an Adaptec
29320A PCI-X SCSI controller reliably failed on a dd command during the
first five minutes in his J5000 when fdc flushes were missing.

Going forward, we will now NOT replace the fdc and sync assembler
instructions by NOPS if:
a) the NP iopdir_fdc bit was set by firmware, or
b) we find a CPU up to and including a PCX-W+ (PA8600).

This fixes the HPMC crashes on a C240 and C36XX machines. For other
machines we rely on the firmware to set the bit when needed.

In case one finds HPMC issues, people could try to boot their machines
with the "no-alternatives" kernel option to turn off any alternative
patching.

Reported-by: Sven Schnelle <svens@stackframe.org>
Reported-by: Carlo Pisani <carlojpisani@gmail.com>
Tested-by: Sven Schnelle <svens@stackframe.org>
Fixes: 3847dab774 ("parisc: Add alternative coding infrastructure")
Signed-off-by: Helge Deller <deller@gmx.de>
Cc: stable@vger.kernel.org # 5.0+
2019-06-06 14:25:22 +02:00
..
alpha alpha: move arch/alpha/defconfig to arch/alpha/configs/defconfig 2019-05-18 11:49:55 +09:00
arc asm-generic: kill <asm/segment.h> and improve nommu generic uaccess helpers 2019-05-16 11:26:37 -07:00
arm Merge branch 'timers-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2019-05-19 11:11:20 -07:00
arm64 Merge branch 'irq-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2019-05-19 10:58:45 -07:00
c6x asm-generic: kill <asm/segment.h> and improve nommu generic uaccess helpers 2019-05-16 11:26:37 -07:00
csky arch: remove dangling asm-generic wrappers 2019-05-18 11:49:52 +09:00
h8300 arch: remove dangling asm-generic wrappers 2019-05-18 11:49:52 +09:00
hexagon asm-generic: kill <asm/segment.h> and improve nommu generic uaccess helpers 2019-05-16 11:26:37 -07:00
ia64 ia64: require -Wl,--hash-style=sysv 2019-05-18 11:29:01 +09:00
m68k Merge branch 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs 2019-05-17 09:46:31 -07:00
microblaze Merge branch 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs 2019-05-17 09:46:31 -07:00
mips Kbuild updates for v5.2 (2nd) 2019-05-19 11:53:58 -07:00
nds32 arch: remove dangling asm-generic wrappers 2019-05-18 11:49:52 +09:00
nios2 asm-generic: kill <asm/segment.h> and improve nommu generic uaccess helpers 2019-05-16 11:26:37 -07:00
openrisc asm-generic: kill <asm/segment.h> and improve nommu generic uaccess helpers 2019-05-16 11:26:37 -07:00
parisc parisc: Fix crash due alternative coding for NP iopdir_fdc bit 2019-06-06 14:25:22 +02:00
powerpc Merge branch 'akpm' (patches from Andrew) 2019-05-19 12:15:32 -07:00
riscv Kbuild updates for v5.2 (2nd) 2019-05-19 11:53:58 -07:00
s390 * ARM: support for SVE and Pointer Authentication in guests, PMU improvements 2019-05-17 10:33:30 -07:00
sh treewide: prefix header search paths with $(srctree)/ 2019-05-18 11:49:57 +09:00
sparc Merge branch 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs 2019-05-17 09:46:31 -07:00
um Merge branch 'core-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2019-05-19 10:23:24 -07:00
unicore32 Merge branch 'core-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2019-05-19 10:23:24 -07:00
x86 Kbuild updates for v5.2 (2nd) 2019-05-19 11:53:58 -07:00
xtensa treewide: prefix header search paths with $(srctree)/ 2019-05-18 11:49:57 +09:00
.gitignore
Kconfig Merge branch 'timers-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2019-05-16 11:00:20 -07:00