Mikulas Patocka
dd7a738028
alpha: fix memory barriers so that they conform to the specification
...
commit 54505a1e2083fc54cbe8779b97479f969cd30a00 upstream.
The commits cd0e00c106 and 92d7223a74 broke boot on the Alpha Avanti
platform. The patches move memory barriers after a write before the write.
The result is that if there's iowrite followed by ioread, there is no
barrier between them.
The Alpha architecture allows reordering of the accesses to the I/O space,
and the missing barrier between write and read causes hang with serial
port and real time clock.
This patch makes barriers confiorm to the specification.
1. We add mb() before readX_relaxed and writeX_relaxed -
memory-barriers.txt claims that these functions must be ordered w.r.t.
each other. Alpha doesn't order them, so we need an explicit barrier.
2. We add mb() before reads from the I/O space - so that if there's a
write followed by a read, there should be a barrier between them.
Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
Fixes: cd0e00c106 ("alpha: io: reorder barriers to guarantee writeX() and iowriteX() ordering")
Fixes: 92d7223a74 ("alpha: io: reorder barriers to guarantee writeX() and iowriteX() ordering #2 ")
Cc: stable@vger.kernel.org # v4.17+
Acked-by: Ivan Kokshaysky <ink@jurassic.park.msu.ru>
Reviewed-by: Maciej W. Rozycki <macro@linux-mips.org>
Signed-off-by: Matt Turner <mattst88@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2020-06-22 09:05:28 +02:00
..
.gitignore
alpha: .gitignore vmlinux.lds
2009-01-15 16:39:40 -08:00
asm-offsets.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
audit.c
alpha: Enable system-call auditing support.
2014-01-31 09:21:55 -08:00
binfmt_loader.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
bugs.c
alpha: Implement CPU vulnerabilities sysfs functions.
2018-04-07 15:04:04 -07:00
console.c
vgacon: Set VGA struct resource types
2017-12-18 23:07:43 -06:00
core_apecs.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
core_cia.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
core_irongate.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
core_lca.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
core_marvel.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
core_mcpcia.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
core_polaris.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
core_t2.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
core_titan.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
core_tsunami.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
core_wildfire.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
entry.S
alpha: get rid of pointless insn in ret_from_kernel_thread
2018-03-28 08:58:27 -04:00
err_common.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
err_ev6.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
err_ev7.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
err_impl.h
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
err_marvel.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
err_titan.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
es1888.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
gct.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
head.S
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
io.c
alpha: fix memory barriers so that they conform to the specification
2020-06-22 09:05:28 +02:00
irq.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
irq_alpha.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
irq_i8259.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
irq_impl.h
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
irq_pyxis.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
irq_srm.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
machvec_impl.h
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
Makefile
alpha: Implement CPU vulnerabilities sysfs functions.
2018-04-07 15:04:04 -07:00
module.c
alpha: support R_ALPHA_REFLONG relocations for module loading
2017-08-29 12:01:52 -07:00
osf_sys.c
Merge branch 'userns-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/user-namespace
2018-08-24 09:25:39 -07:00
pc873xx.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
pc873xx.h
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
pci-noop.c
alpha: use dma_direct_ops for jensen
2018-05-22 18:10:36 -07:00
pci-sysfs.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
pci.c
alpha: switch pci syscalls to SYSCALL_DEFINE
2018-03-28 08:58:19 -04:00
pci_impl.h
alpha: fix reboot on Avanti platform
2018-01-20 17:01:10 -08:00
pci_iommu.c
alpha: simplify get_arch_dma_ops
2018-05-22 18:10:36 -07:00
perf_event.c
perf: Fix sibling iteration
2018-03-16 20:44:12 +01:00
process.c
alpha: fix crash if pthread_create races with signal delivery
2018-01-20 17:01:16 -08:00
proto.h
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
ptrace.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
rtc.c
alpha: rtc: stop validating rtc_time in .read_time
2018-04-07 15:03:42 -07:00
setup.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
signal.c
signal/alpha: Use send_sig_fault where appropriate
2018-04-25 10:40:58 -05:00
smc37c93x.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
smc37c669.c
alpha: squash lines for immediate return
2017-09-04 12:04:32 -07:00
smp.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
srm_env.c
Replace <asm/uaccess.h> with <linux/uaccess.h> globally
2016-12-24 11:46:01 -08:00
srmcons.c
treewide: setup_timer() -> timer_setup()
2017-11-21 15:57:07 -08:00
sys_alcor.c
License cleanup: add SPDX license identifiers to some files
2017-11-02 10:04:46 -07:00
sys_cabriolet.c
License cleanup: add SPDX license identifiers to some files
2017-11-02 10:04:46 -07:00
sys_dp264.c
License cleanup: add SPDX license identifiers to some files
2017-11-02 10:04:46 -07:00
sys_eb64p.c
License cleanup: add SPDX license identifiers to some files
2017-11-02 10:04:46 -07:00
sys_eiger.c
License cleanup: add SPDX license identifiers to some files
2017-11-02 10:04:46 -07:00
sys_jensen.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
sys_marvel.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
sys_miata.c
License cleanup: add SPDX license identifiers to some files
2017-11-02 10:04:46 -07:00
sys_mikasa.c
License cleanup: add SPDX license identifiers to some files
2017-11-02 10:04:46 -07:00
sys_nautilus.c
alpha: deprecate pci_get_bus_and_slot()
2018-01-20 17:01:04 -08:00
sys_noritake.c
License cleanup: add SPDX license identifiers to some files
2017-11-02 10:04:46 -07:00
sys_rawhide.c
License cleanup: add SPDX license identifiers to some files
2017-11-02 10:04:46 -07:00
sys_ruffian.c
License cleanup: add SPDX license identifiers to some files
2017-11-02 10:04:46 -07:00
sys_rx164.c
License cleanup: add SPDX license identifiers to some files
2017-11-02 10:04:46 -07:00
sys_sable.c
License cleanup: add SPDX license identifiers to some files
2017-11-02 10:04:46 -07:00
sys_sio.c
alpha/PCI: Fix noname IRQ level detection
2018-01-20 16:22:36 -08:00
sys_sx164.c
License cleanup: add SPDX license identifiers to some files
2017-11-02 10:04:46 -07:00
sys_takara.c
License cleanup: add SPDX license identifiers to some files
2017-11-02 10:04:46 -07:00
sys_titan.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
sys_wildfire.c
License cleanup: add SPDX license identifiers to some files
2017-11-02 10:04:46 -07:00
systbls.S
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
time.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
traps.c
signal/alpha: Use force_sig_fault where appropriate
2018-04-25 10:40:59 -05:00
vmlinux.lds.S
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00