linux_dsm_epyc7002/include/asm-generic
Andrew Murray 500dd23244 asm-generic: io: Fix ioport_map() for !CONFIG_GENERIC_IOMAP && CONFIG_INDIRECT_PIO
The !CONFIG_GENERIC_IOMAP version of ioport_map uses MMIO_UPPER_LIMIT to
prevent users from making I/O accesses outside the expected I/O range -
however it erroneously treats MMIO_UPPER_LIMIT as a mask which is
contradictory to its other users.

The introduction of CONFIG_INDIRECT_PIO, which subtracts an arbitrary
amount from IO_SPACE_LIMIT to form MMIO_UPPER_LIMIT, results in ioport_map
mangling the given port rather than capping it.

We address this by aligning more closely with the CONFIG_GENERIC_IOMAP
implementation of ioport_map by using the comparison operator and
returning NULL where the port exceeds MMIO_UPPER_LIMIT. Though note that
we preserve the existing behavior of masking with IO_SPACE_LIMIT such that
we don't break existing buggy drivers that somehow rely on this masking.

Fixes: 5745392e0c ("PCI: Apply the new generic I/O management on PCI IO hosts")
Reported-by: Will Deacon <will.deacon@arm.com>
Reviewed-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Andrew Murray <andrew.murray@arm.com>
Signed-off-by: Will Deacon <will.deacon@arm.com>
2018-09-14 09:49:21 +01:00
..
bitops
4level-fixup.h
5level-fixup.h
asm-offsets.h
asm-prototypes.h
atomic64.h
atomic-instrumented.h locking/atomics: Instrument cmpxchg_double*() 2018-07-25 11:53:59 +02:00
atomic-long.h
atomic.h
audit_change_attr.h
audit_dir_write.h
audit_read.h
audit_signal.h
audit_write.h
barrier.h
bitops.h
bitsperlong.h
bug.h include/asm-generic/bug.h: clarify valid uses of WARN() 2018-08-22 10:52:46 -07:00
bugs.h
cache.h
cacheflush.h
checksum.h
cmpxchg-local.h
cmpxchg.h
compat.h
current.h
delay.h
device.h
div64.h
dma-contiguous.h
dma-mapping.h
dma.h
early_ioremap.h
emergency-restart.h
error-injection.h
exec.h
export.h module: use relative references for __ksymtab entries 2018-08-22 10:52:47 -07:00
extable.h
fb.h
fixmap.h
ftrace.h
futex.h
getorder.h
gpio.h
hardirq.h
hugetlb.h
hw_irq.h
ide_iops.h
int-ll64.h
io.h asm-generic: io: Fix ioport_map() for !CONFIG_GENERIC_IOMAP && CONFIG_INDIRECT_PIO 2018-09-14 09:49:21 +01:00
ioctl.h
iomap.h
irq_regs.h
irq_work.h
irq.h
irqflags.h
kdebug.h
kmap_types.h
kprobes.h
kvm_para.h
linkage.h
local64.h
local.h
mcs_spinlock.h
memory_model.h
mm_hooks.h
mm-arch-hooks.h
mmu_context.h
mmu.h
module.h
msi.h
page.h
param.h
parport.h
pci_iomap.h
pci.h
percpu.h
pgalloc.h
pgtable-nop4d-hack.h
pgtable-nop4d.h
pgtable-nopmd.h
pgtable-nopud.h
pgtable.h mm: provide a fallback for PAGE_KERNEL_EXEC for architectures 2018-08-17 16:20:29 -07:00
preempt.h
ptrace.h
qrwlock_types.h
qrwlock.h
qspinlock_types.h
qspinlock.h
resource.h
rwsem.h
seccomp.h
sections.h
segment.h
serial.h
set_memory.h
signal.h
simd.h
sizes.h
spinlock.h
statfs.h
string.h
switch_to.h
syscall.h
syscalls.h
termios-base.h
termios.h
timex.h
tlb.h mm: mmu_notifier fix for tlb_end_vma 2018-08-23 11:55:58 -07:00
tlbflush.h
topology.h
trace_clock.h
uaccess.h
unaligned.h
unistd.h
user.h
vga.h
vmlinux.lds.h vmlinux.lds.h: remove stale <linux/export.h> include 2018-08-22 23:21:44 +09:00
vtime.h
word-at-a-time.h
xor.h