1
linux/arch/x86/include/asm
Suresh Siddha 1adcaafe74 x86, pat: Allow ISA memory range uncacheable mapping requests
Max Vozeler reported:
>  Bug 13877 -  bogl-term broken with CONFIG_X86_PAT=y, works with =n
>
>  strace of bogl-term:
>  814   mmap2(NULL, 65536, PROT_READ|PROT_WRITE, MAP_SHARED, 4, 0)
>				 = -1 EAGAIN (Resource temporarily unavailable)
>  814   write(2, "bogl: mmaping /dev/fb0: Resource temporarily unavailable\n",
>	       57) = 57

PAT code maps the ISA memory range as WB in the PAT attribute, so that
fixed range MTRR registers define the actual memory type (UC/WC/WT etc).

But the upper level is_new_memtype_allowed() API checks are failing,
as the request here is for UC and the return tracked type is WB (Tracked type is
WB as MTRR type for this legacy range potentially will be different for each
4k page).

Fix is_new_memtype_allowed() by always succeeding the ISA address range
checks, as the null PAT (WB) and def MTRR fixed range register settings
satisfy the memory type needs of the applications that map the ISA address
range.

Reported-and-Tested-by: Max Vozeler <xam@debian.org>
Signed-off-by: Suresh Siddha <suresh.b.siddha@intel.com>
Signed-off-by: Venkatesh Pallipadi <venkatesh.pallipadi@intel.com>
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2009-08-17 14:12:44 -07:00
..
uv x86: Fix UV BAU destination subnode id 2009-08-15 11:58:02 +02:00
visws
xen
a.out-core.h
a.out.h
acpi.h ACPI: #define acpi_disabled 1 for CONFIG_ACPI=n 2009-06-12 20:50:39 -04:00
aes.h
agp.h
alternative-asm.h
alternative.h x86: clean up alternative.h 2009-04-28 17:42:08 +02:00
amd_iommu_types.h Merge branches 'amd-iommu/fixes', 'amd-iommu/debug', 'amd-iommu/suspend-resume' and 'amd-iommu/extended-allocator' into amd-iommu/2.6.31 2009-05-28 18:23:56 +02:00
amd_iommu.h amd-iommu: disable IOMMU hardware on shutdown 2009-06-15 15:20:40 +02:00
apic.h Merge branch 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2009-06-10 16:15:14 -07:00
apicdef.h x86: display extended apic registers with print_local_APIC and cpu_debug code 2009-05-11 14:37:36 +02:00
apicnum.h
apm.h
asm.h
atomic_32.h x86: atomic64: Inline atomic64_read() again 2009-07-04 11:45:00 +02:00
atomic_64.h x86: atomic64: Code atomic(64)_read and atomic(64)_set in C not CPP 2009-07-03 14:42:39 +02:00
atomic.h
auxvec.h
bios_ebda.h
bitops.h
bitsperlong.h asm-generic: introduce asm/bitsperlong.h 2009-06-11 21:02:14 +02:00
boot.h x86, setup: correct include file in <asm/boot.h> 2009-06-25 15:16:06 -07:00
bootparam.h x86: add extension fields for bootloader type and version 2009-05-11 17:45:06 -07:00
bug.h
bugs.h
byteorder.h
cache.h
cacheflush.h
calgary.h
calling.h
checksum_32.h
checksum_64.h
checksum.h
cmpxchg_32.h
cmpxchg_64.h
cmpxchg.h
compat.h
cpu_debug.h x86: cpu_debug: Remove model information to reduce encoding-decoding 2009-06-07 12:22:56 +02:00
cpu.h
cpufeature.h Merge branch 'kvm-updates/2.6.31' of git://git.kernel.org/pub/scm/virt/kvm/kvm 2009-06-11 10:03:30 -07:00
cpumask.h
cputime.h
current.h
debugreg.h
delay.h
desc_defs.h
desc.h x86: de-assembler-ize asm/desc.h 2009-06-17 21:35:10 -07:00
device.h
div64.h
dma-mapping.h dma-mapping: x86: use asm-generic/dma-mapping-common.h 2009-06-18 13:03:58 -07:00
dma.h
dmi.h
do_timer.h
ds.h
dwarf2.h
e820.h
edac.h
efi.h x86: Make 64-bit efi_ioremap use ioremap on MMIO regions 2009-08-03 13:34:25 -07:00
elf.h
emergency-restart.h
entry_arch.h Merge branch 'linus' into x86/mce3 2009-06-11 23:31:52 +02:00
errno.h
fb.h
fcntl.h
fixmap.h x86: Fix fixmap page order for FIX_TEXT_POKE0,1 2009-07-03 14:34:09 +02:00
floppy.h
frame.h
ftrace.h
futex.h
gart.h
genapic.h
geode.h
gpio.h
hardirq.h Merge branch 'linus' into x86/mce3 2009-06-11 23:31:52 +02:00
highmem.h
hpet.h
hugetlb.h
hw_irq.h Merge branch 'linus' into x86/mce3 2009-06-11 23:31:52 +02:00
hypertransport.h
hypervisor.h
i387.h Merge branch 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2009-06-10 16:15:14 -07:00
i8253.h
i8259.h
ia32_unistd.h
ia32.h
idle.h
init.h
io_32.h
io_64.h
io_apic.h x86/pci: insert ioapic resource before assigning unassigned resources 2009-07-10 13:03:14 -07:00
io.h
ioctl.h
ioctls.h
iomap.h x86: added 'ifndef _ASM_X86_IOMAP_H' to iomap.h 2009-04-30 19:26:11 +02:00
iommu.h Intel IOMMU Pass Through Support 2009-04-29 06:54:34 +01:00
ipcbuf.h
ipi.h
irq_regs.h
irq_remapping.h x86: x2apic, IR: Clean up X86_X2APIC and INTR_REMAP config checks 2009-04-21 09:08:25 +02:00
irq_vectors.h Merge branch 'linus' into x86/mce3 2009-06-11 23:31:52 +02:00
irq.h
irqflags.h x86: fix assembly constraints in native_save_fl() 2009-08-03 16:36:17 -07:00
ist.h
k8.h x86: k8 convert node_to_k8_nb_misc() from a macro to an inline function 2009-04-15 12:12:36 +02:00
Kbuild
kdebug.h
kexec.h
kgdb.h
kmap_types.h kmap_types: make most arches use generic header file 2009-06-16 19:47:51 -07:00
kmemcheck.h kmemcheck: add the kmemcheck core 2009-06-13 15:37:30 +02:00
kprobes.h
kvm_host.h KVM: VMX: Rename rmode.active to rmode.vm86_active 2009-06-10 11:49:00 +03:00
kvm_para.h
kvm_x86_emulate.h KVM: Deal with interrupt shadow state for emulated instructions 2009-06-10 11:48:54 +03:00
kvm.h KVM: Enable MSI-X for KVM assigned device 2009-06-10 11:48:23 +03:00
ldt.h
lguest_hcall.h lguest: update commentry 2009-07-30 16:03:46 +09:30
lguest.h lguest: fix comment style 2009-07-30 16:03:45 +09:30
linkage.h
local.h
mach_timer.h
mach_traps.h
math_emu.h
mc146818rtc.h
mca_dma.h
mca.h
mce.h x86, mce: mce.h cleanup 2009-06-16 16:56:10 -07:00
microcode.h x86: microcode: use smp_call_function_single instead of set_cpus_allowed, cleanup of synchronization logic 2009-05-12 10:36:44 +02:00
mman.h asm-generic: rename termios.h, signal.h and mman.h 2009-06-11 21:01:52 +02:00
mmconfig.h
mmu_context.h
mmu.h
mmx.h
mmzone_32.h
mmzone_64.h
mmzone.h
module.h
mpspec_def.h
mpspec.h x86: enable_update_mptable should be a macro 2009-05-28 01:59:05 +02:00
msgbuf.h
msidef.h
msr-index.h x86: Remove double declaration of MSR_P6_EVNTSEL0 and MSR_P6_EVNTSEL1 2009-07-01 15:23:43 +02:00
msr.h x86: msr.h linux/types.h is only required for __KERNEL__ 2009-06-17 18:56:01 +02:00
mtrr.h
mutex_32.h
mutex_64.h
mutex.h
nmi.h x86: Remove unused function lapic_watchdog_ok() 2009-07-03 14:34:31 +02:00
nops.h
numa_32.h
numa_64.h x86, mm: Fix node_possible_map logic 2009-05-18 09:21:04 +02:00
numa.h
numaq.h
olpc.h
page_32_types.h x86: page_types.h unification of declarations 2009-04-14 11:44:45 +02:00
page_32.h
page_64_types.h x86, 64-bit: Clean up user address masking 2009-06-20 15:40:00 -07:00
page_64.h
page_types.h x86: page_types.h unification of declarations 2009-04-14 11:44:45 +02:00
page.h asm-generic: rename page.h and uaccess.h 2009-06-11 21:02:17 +02:00
param.h
paravirt.h Merge branch 'x86-xen-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2009-06-10 16:16:27 -07:00
parport.h
pat.h
pci_64.h
pci_x86.h Revert "PCI: use ACPI _CRS data by default" 2009-06-24 16:23:03 -07:00
pci-direct.h
pci-functions.h
pci.h Fix pci_unmap_addr() et al on i386. 2009-07-01 11:19:29 -07:00
percpu.h x86: fix pageattr handling for lpage percpu allocator and re-enable it 2009-06-22 11:56:24 +09:00
perf_counter.h perf_counter, x86: Add mmap counter read support 2009-06-25 21:39:06 +02:00
pgalloc.h mm: Pass virtual address to [__]p{te,ud,md}_free_tlb() 2009-07-27 12:10:38 -07:00
pgtable_32_types.h module: merge module_alloc() finally 2009-06-12 21:47:03 +09:30
pgtable_32.h x86: Add NMI types for kmap_atomic, fix 2009-06-15 17:20:03 +02:00
pgtable_64_types.h x86: 46 bit physical address support on 64 bits 2009-05-05 19:10:18 -07:00
pgtable_64.h x86, 64-bit: Clean up user address masking 2009-06-20 15:40:00 -07:00
pgtable_types.h x86: make _PAGE_HIDDEN conditional 2009-06-15 15:49:19 +02:00
pgtable-2level_types.h
pgtable-2level.h
pgtable-3level_types.h
pgtable-3level.h
pgtable.h x86, pat: Allow ISA memory range uncacheable mapping requests 2009-08-17 14:12:44 -07:00
poll.h
posix_types_32.h
posix_types_64.h
posix_types.h
prctl.h
processor-cyrix.h
processor-flags.h
processor.h Merge branch 'tracing-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2009-06-10 19:53:40 -07:00
proto.h x86: fix power-of-2 round_up/round_down macros 2009-07-02 12:05:10 -07:00
ptrace-abi.h
ptrace.h Merge branch 'tracing-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2009-06-10 19:53:40 -07:00
pvclock-abi.h
pvclock.h
rdc321x_defs.h
reboot_fixups.h
reboot.h
required-features.h
resource.h
resume-trace.h
rio.h
rtc.h
rwlock.h
rwsem.h
scatterlist.h
seccomp_32.h
seccomp_64.h
seccomp.h
sections.h
segment.h
sembuf.h
serial.h
setup_arch.h
setup.h
shmbuf.h
shmparam.h
sigcontext32.h
sigcontext.h x86: add linux kernel support for YMM state 2009-04-12 13:08:56 +02:00
sigframe.h
siginfo.h
signal.h asm-generic: rename termios.h, signal.h and mman.h 2009-06-11 21:01:52 +02:00
smp.h x86: read apic ID in the !acpi_lapic case 2009-05-12 12:22:06 +02:00
smpboot_hooks.h
socket.h
sockios.h
sparsemem.h x86: 46 bit physical address support on 64 bits 2009-05-05 19:10:18 -07:00
spinlock_types.h
spinlock.h memory barrier: adding smp_mb__after_lock 2009-07-09 17:06:58 -07:00
srat.h
stackprotector.h
stacktrace.h perf_counter: Ignore the nmi call frames in the x86-64 backtraces 2009-07-01 22:37:23 +02:00
stat.h
statfs.h
string_32.h x86: add hooks for kmemcheck 2009-06-15 12:40:02 +02:00
string_64.h x86: add hooks for kmemcheck 2009-06-15 12:40:02 +02:00
string.h
suspend_32.h
suspend_64.h
suspend.h
svm.h KVM: Fix unneeded instruction skipping during task switching. 2009-06-10 11:48:38 +03:00
swab.h
swiotlb.h
sync_bitops.h
sys_ia32.h
syscall.h
syscalls.h x86: clean up declarations and variables 2009-04-12 15:20:16 +02:00
system_64.h
system.h
tce.h
termbits.h
termios.h x86: fix ktermios-termio conversion 2009-06-11 08:50:59 -07:00
thread_info.h sched: INIT_PREEMPT_COUNT 2009-07-10 14:24:05 -07:00
time.h
timer.h sched, x86: Fix cpufreq + sched_clock() TSC scaling 2009-06-17 16:03:54 +02:00
timex.h time: move PIT_TICK_RATE to linux/timex.h 2009-06-16 19:47:27 -07:00
tlb.h
tlbflush.h x86: make zap_low_mapping could be used early 2009-06-12 13:50:24 +03:00
topology.h sched: Don't export sched_mc_power_savings on multi-socket single core system 2009-05-11 23:57:56 +02:00
trampoline.h
traps.h Merge branch 'x86-xen-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2009-06-10 16:16:27 -07:00
tsc.h
types.h asm-generic: introduce asm/bitsperlong.h 2009-06-11 21:02:14 +02:00
uaccess_32.h
uaccess_64.h x86: Fix movq immediate operand constraints in uaccess_64.h 2009-07-20 20:46:17 -07:00
uaccess.h x86: Fix movq immediate operand constraints in uaccess.h 2009-07-20 23:27:39 -07:00
ucontext.h
unaligned.h
unistd_32.h Merge branch 'core/signal' into perfcounters/core 2009-04-30 21:16:49 +02:00
unistd_64.h Merge branch 'core/signal' into perfcounters/core 2009-04-30 21:16:49 +02:00
unistd.h
user32.h
user_32.h
user_64.h
user.h
vdso.h
vga.h
vgtod.h
virtext.h
vm86.h
vmi_time.h
vmi.h
vmware.h
vmx.h KVM: Add VT-x machine check support 2009-06-10 12:27:08 +03:00
vsyscall.h
xcr.h
xor_32.h
xor_64.h
xor.h x86: add hooks for kmemcheck 2009-06-15 12:40:02 +02:00
xsave.h x86: add linux kernel support for YMM state 2009-04-12 13:08:56 +02:00