From dcb8c10d7a3dbdea4c80cb92163919b328a2e81f Mon Sep 17 00:00:00 2001 From: Hirokazu Takata Date: Fri, 28 Nov 2008 02:46:48 +0900 Subject: [PATCH] --- yaml --- r: 143519 b: refs/heads/master c: fe4e719d82c4052751d2287de4bd18bd04e93685 h: refs/heads/master i: 143517: 9ca2b9ea011988dee538327ee317553f3c80650c 143515: fdae07864854f333434ebef6622d34b9c5dd3e39 143511: 9897a25ee668fab50b2e22f37c78701afd38dbe0 143503: 35a9ab02c110c7b126d9338fac8e7bf94d84829b 143487: 3139489015f421d332c6dd1e32d25dbb1f9631fe v: v3 --- [refs] | 2 +- trunk/Documentation/kernel-parameters.txt | 40 ++-- .../asm-m32r => arch/m32r/include/asm}/Kbuild | 0 .../m32r/include/asm}/addrspace.h | 0 .../m32r/include/asm}/assembler.h | 0 .../m32r/include/asm}/atomic.h | 0 .../m32r/include/asm}/auxvec.h | 0 .../m32r/include/asm}/bitops.h | 0 .../asm-m32r => arch/m32r/include/asm}/bug.h | 0 .../asm-m32r => arch/m32r/include/asm}/bugs.h | 0 .../m32r/include/asm}/byteorder.h | 0 .../m32r/include/asm}/cache.h | 0 .../m32r/include/asm}/cachectl.h | 0 .../m32r/include/asm}/cacheflush.h | 0 .../m32r/include/asm}/checksum.h | 0 .../m32r/include/asm}/cputime.h | 0 .../m32r/include/asm}/current.h | 0 .../m32r/include/asm}/delay.h | 0 .../m32r/include/asm}/device.h | 0 .../m32r/include/asm}/div64.h | 0 .../asm-m32r => arch/m32r/include/asm}/dma.h | 0 .../asm-m32r => arch/m32r/include/asm}/elf.h | 0 .../m32r/include/asm}/emergency-restart.h | 0 .../m32r/include/asm}/errno.h | 0 .../asm-m32r => arch/m32r/include/asm}/fb.h | 0 .../m32r/include/asm}/fcntl.h | 0 .../asm-m32r => arch/m32r/include/asm}/flat.h | 0 .../m32r/include/asm}/futex.h | 0 .../m32r/include/asm}/hardirq.h | 0 .../m32r/include/asm}/hw_irq.h | 0 .../asm-m32r => arch/m32r/include/asm}/io.h | 0 .../m32r/include/asm}/ioctl.h | 0 .../m32r/include/asm}/ioctls.h | 0 .../m32r/include/asm}/ipcbuf.h | 0 .../asm-m32r => arch/m32r/include/asm}/irq.h | 0 .../m32r/include/asm}/irq_regs.h | 0 .../m32r/include/asm}/kdebug.h | 0 .../m32r/include/asm}/kmap_types.h | 0 .../m32r/include/asm}/linkage.h | 0 .../m32r/include/asm}/local.h | 0 .../m32r/include/asm}/m32102.h | 0 .../m32r/include/asm}/m32104ut/m32104ut_pld.h | 0 .../m32r/include/asm}/m32700ut/m32700ut_lan.h | 0 .../m32r/include/asm}/m32700ut/m32700ut_lcd.h | 0 .../m32r/include/asm}/m32700ut/m32700ut_pld.h | 0 .../asm-m32r => arch/m32r/include/asm}/m32r.h | 0 .../m32r/include/asm}/m32r_mp_fpga.h | 0 .../m32r/include/asm}/mappi2/mappi2_pld.h | 0 .../m32r/include/asm}/mappi3/mappi3_pld.h | 0 .../m32r/include/asm}/mc146818rtc.h | 0 .../asm-m32r => arch/m32r/include/asm}/mman.h | 0 .../asm-m32r => arch/m32r/include/asm}/mmu.h | 0 .../m32r/include/asm}/mmu_context.h | 0 .../m32r/include/asm}/mmzone.h | 0 .../m32r/include/asm}/module.h | 0 .../m32r/include/asm}/msgbuf.h | 0 .../m32r/include/asm}/mutex.h | 0 .../m32r/include/asm}/opsput/opsput_lan.h | 0 .../m32r/include/asm}/opsput/opsput_lcd.h | 0 .../m32r/include/asm}/opsput/opsput_pld.h | 0 .../asm-m32r => arch/m32r/include/asm}/page.h | 0 .../m32r/include/asm}/param.h | 0 .../asm-m32r => arch/m32r/include/asm}/pci.h | 0 .../m32r/include/asm}/percpu.h | 0 .../m32r/include/asm}/pgalloc.h | 0 .../m32r/include/asm}/pgtable-2level.h | 0 .../m32r/include/asm}/pgtable.h | 0 .../asm-m32r => arch/m32r/include/asm}/poll.h | 0 .../m32r/include/asm}/posix_types.h | 0 .../m32r/include/asm}/processor.h | 0 .../m32r/include/asm}/ptrace.h | 0 .../m32r/include/asm}/resource.h | 0 .../asm-m32r => arch/m32r/include/asm}/rtc.h | 0 .../m32r/include/asm}/s1d13806.h | 0 .../m32r/include/asm}/scatterlist.h | 0 .../m32r/include/asm}/sections.h | 0 .../m32r/include/asm}/segment.h | 0 .../m32r/include/asm}/sembuf.h | 0 .../m32r/include/asm}/serial.h | 0 .../m32r/include/asm}/setup.h | 0 .../m32r/include/asm}/shmbuf.h | 0 .../m32r/include/asm}/shmparam.h | 0 .../m32r/include/asm}/sigcontext.h | 0 .../m32r/include/asm}/siginfo.h | 0 .../m32r/include/asm}/signal.h | 0 .../asm-m32r => arch/m32r/include/asm}/smp.h | 0 .../m32r/include/asm}/socket.h | 0 .../m32r/include/asm}/sockios.h | 0 .../m32r/include/asm}/spinlock.h | 0 .../m32r/include/asm}/spinlock_types.h | 0 .../asm-m32r => arch/m32r/include/asm}/stat.h | 0 .../m32r/include/asm}/statfs.h | 0 .../m32r/include/asm}/string.h | 0 .../m32r/include/asm}/syscall.h | 0 .../m32r/include/asm}/system.h | 0 .../m32r/include/asm}/termbits.h | 0 .../m32r/include/asm}/termios.h | 0 .../m32r/include/asm}/thread_info.h | 0 .../m32r/include/asm}/timex.h | 0 .../asm-m32r => arch/m32r/include/asm}/tlb.h | 0 .../m32r/include/asm}/tlbflush.h | 0 .../m32r/include/asm}/topology.h | 0 .../m32r/include/asm}/types.h | 0 .../m32r/include/asm}/uaccess.h | 0 .../m32r/include/asm}/ucontext.h | 0 .../m32r/include/asm}/unaligned.h | 0 .../m32r/include/asm}/unistd.h | 0 .../asm-m32r => arch/m32r/include/asm}/user.h | 0 .../asm-m32r => arch/m32r/include/asm}/vga.h | 0 .../asm-m32r => arch/m32r/include/asm}/xor.h | 0 trunk/arch/x86/Kconfig.cpu | 1 - trunk/arch/x86/include/asm/pat.h | 4 + trunk/arch/x86/kernel/microcode_core.c | 2 + trunk/arch/x86/kernel/pci-swiotlb.c | 2 +- trunk/arch/x86/mm/ioremap.c | 10 +- trunk/arch/x86/mm/pageattr.c | 127 +++++------- trunk/arch/x86/mm/pat.c | 189 +++++++++++++++--- trunk/drivers/char/mem.c | 27 +++ trunk/fs/afs/file.c | 2 - trunk/fs/fat/Kconfig | 3 - trunk/fs/splice.c | 3 +- trunk/include/linux/rcutree.h | 3 +- trunk/kernel/rcutree.c | 19 +- trunk/kernel/rcutree_trace.c | 14 +- trunk/kernel/sched.c | 10 +- trunk/kernel/softirq.c | 4 +- trunk/kernel/trace/trace_branch.c | 8 - trunk/kernel/trace/trace_power.c | 7 - 128 files changed, 299 insertions(+), 178 deletions(-) rename trunk/{include/asm-m32r => arch/m32r/include/asm}/Kbuild (100%) rename trunk/{include/asm-m32r => arch/m32r/include/asm}/addrspace.h (100%) rename trunk/{include/asm-m32r => arch/m32r/include/asm}/assembler.h (100%) rename trunk/{include/asm-m32r => arch/m32r/include/asm}/atomic.h (100%) rename trunk/{include/asm-m32r => arch/m32r/include/asm}/auxvec.h (100%) rename trunk/{include/asm-m32r => arch/m32r/include/asm}/bitops.h (100%) rename trunk/{include/asm-m32r => arch/m32r/include/asm}/bug.h (100%) rename trunk/{include/asm-m32r => arch/m32r/include/asm}/bugs.h (100%) rename trunk/{include/asm-m32r => arch/m32r/include/asm}/byteorder.h (100%) rename trunk/{include/asm-m32r => arch/m32r/include/asm}/cache.h (100%) rename trunk/{include/asm-m32r => arch/m32r/include/asm}/cachectl.h (100%) rename trunk/{include/asm-m32r => arch/m32r/include/asm}/cacheflush.h (100%) rename trunk/{include/asm-m32r => arch/m32r/include/asm}/checksum.h (100%) rename trunk/{include/asm-m32r => arch/m32r/include/asm}/cputime.h (100%) rename trunk/{include/asm-m32r => arch/m32r/include/asm}/current.h (100%) rename trunk/{include/asm-m32r => arch/m32r/include/asm}/delay.h (100%) rename trunk/{include/asm-m32r => arch/m32r/include/asm}/device.h (100%) rename trunk/{include/asm-m32r => arch/m32r/include/asm}/div64.h (100%) rename trunk/{include/asm-m32r => arch/m32r/include/asm}/dma.h (100%) rename trunk/{include/asm-m32r => arch/m32r/include/asm}/elf.h (100%) rename trunk/{include/asm-m32r => arch/m32r/include/asm}/emergency-restart.h (100%) rename trunk/{include/asm-m32r => arch/m32r/include/asm}/errno.h (100%) rename trunk/{include/asm-m32r => arch/m32r/include/asm}/fb.h (100%) rename trunk/{include/asm-m32r => arch/m32r/include/asm}/fcntl.h (100%) rename trunk/{include/asm-m32r => arch/m32r/include/asm}/flat.h (100%) rename trunk/{include/asm-m32r => arch/m32r/include/asm}/futex.h (100%) rename trunk/{include/asm-m32r => arch/m32r/include/asm}/hardirq.h (100%) rename trunk/{include/asm-m32r => arch/m32r/include/asm}/hw_irq.h (100%) rename trunk/{include/asm-m32r => arch/m32r/include/asm}/io.h (100%) rename trunk/{include/asm-m32r => arch/m32r/include/asm}/ioctl.h (100%) rename trunk/{include/asm-m32r => arch/m32r/include/asm}/ioctls.h (100%) rename trunk/{include/asm-m32r => arch/m32r/include/asm}/ipcbuf.h (100%) rename trunk/{include/asm-m32r => arch/m32r/include/asm}/irq.h (100%) rename trunk/{include/asm-m32r => arch/m32r/include/asm}/irq_regs.h (100%) rename trunk/{include/asm-m32r => arch/m32r/include/asm}/kdebug.h (100%) rename trunk/{include/asm-m32r => arch/m32r/include/asm}/kmap_types.h (100%) rename trunk/{include/asm-m32r => arch/m32r/include/asm}/linkage.h (100%) rename trunk/{include/asm-m32r => arch/m32r/include/asm}/local.h (100%) rename trunk/{include/asm-m32r => arch/m32r/include/asm}/m32102.h (100%) rename trunk/{include/asm-m32r => arch/m32r/include/asm}/m32104ut/m32104ut_pld.h (100%) rename trunk/{include/asm-m32r => arch/m32r/include/asm}/m32700ut/m32700ut_lan.h (100%) rename trunk/{include/asm-m32r => arch/m32r/include/asm}/m32700ut/m32700ut_lcd.h (100%) rename trunk/{include/asm-m32r => arch/m32r/include/asm}/m32700ut/m32700ut_pld.h (100%) rename trunk/{include/asm-m32r => arch/m32r/include/asm}/m32r.h (100%) rename trunk/{include/asm-m32r => arch/m32r/include/asm}/m32r_mp_fpga.h (100%) rename trunk/{include/asm-m32r => arch/m32r/include/asm}/mappi2/mappi2_pld.h (100%) rename trunk/{include/asm-m32r => arch/m32r/include/asm}/mappi3/mappi3_pld.h (100%) rename trunk/{include/asm-m32r => arch/m32r/include/asm}/mc146818rtc.h (100%) rename trunk/{include/asm-m32r => arch/m32r/include/asm}/mman.h (100%) rename trunk/{include/asm-m32r => arch/m32r/include/asm}/mmu.h (100%) rename trunk/{include/asm-m32r => arch/m32r/include/asm}/mmu_context.h (100%) rename trunk/{include/asm-m32r => arch/m32r/include/asm}/mmzone.h (100%) rename trunk/{include/asm-m32r => arch/m32r/include/asm}/module.h (100%) rename trunk/{include/asm-m32r => arch/m32r/include/asm}/msgbuf.h (100%) rename trunk/{include/asm-m32r => arch/m32r/include/asm}/mutex.h (100%) rename trunk/{include/asm-m32r => arch/m32r/include/asm}/opsput/opsput_lan.h (100%) rename trunk/{include/asm-m32r => arch/m32r/include/asm}/opsput/opsput_lcd.h (100%) rename trunk/{include/asm-m32r => arch/m32r/include/asm}/opsput/opsput_pld.h (100%) rename trunk/{include/asm-m32r => arch/m32r/include/asm}/page.h (100%) rename trunk/{include/asm-m32r => arch/m32r/include/asm}/param.h (100%) rename trunk/{include/asm-m32r => arch/m32r/include/asm}/pci.h (100%) rename trunk/{include/asm-m32r => arch/m32r/include/asm}/percpu.h (100%) rename trunk/{include/asm-m32r => arch/m32r/include/asm}/pgalloc.h (100%) rename trunk/{include/asm-m32r => arch/m32r/include/asm}/pgtable-2level.h (100%) rename trunk/{include/asm-m32r => arch/m32r/include/asm}/pgtable.h (100%) rename trunk/{include/asm-m32r => arch/m32r/include/asm}/poll.h (100%) rename trunk/{include/asm-m32r => arch/m32r/include/asm}/posix_types.h (100%) rename trunk/{include/asm-m32r => arch/m32r/include/asm}/processor.h (100%) rename trunk/{include/asm-m32r => arch/m32r/include/asm}/ptrace.h (100%) rename trunk/{include/asm-m32r => arch/m32r/include/asm}/resource.h (100%) rename trunk/{include/asm-m32r => arch/m32r/include/asm}/rtc.h (100%) rename trunk/{include/asm-m32r => arch/m32r/include/asm}/s1d13806.h (100%) rename trunk/{include/asm-m32r => arch/m32r/include/asm}/scatterlist.h (100%) rename trunk/{include/asm-m32r => arch/m32r/include/asm}/sections.h (100%) rename trunk/{include/asm-m32r => arch/m32r/include/asm}/segment.h (100%) rename trunk/{include/asm-m32r => arch/m32r/include/asm}/sembuf.h (100%) rename trunk/{include/asm-m32r => arch/m32r/include/asm}/serial.h (100%) rename trunk/{include/asm-m32r => arch/m32r/include/asm}/setup.h (100%) rename trunk/{include/asm-m32r => arch/m32r/include/asm}/shmbuf.h (100%) rename trunk/{include/asm-m32r => arch/m32r/include/asm}/shmparam.h (100%) rename trunk/{include/asm-m32r => arch/m32r/include/asm}/sigcontext.h (100%) rename trunk/{include/asm-m32r => arch/m32r/include/asm}/siginfo.h (100%) rename trunk/{include/asm-m32r => arch/m32r/include/asm}/signal.h (100%) rename trunk/{include/asm-m32r => arch/m32r/include/asm}/smp.h (100%) rename trunk/{include/asm-m32r => arch/m32r/include/asm}/socket.h (100%) rename trunk/{include/asm-m32r => arch/m32r/include/asm}/sockios.h (100%) rename trunk/{include/asm-m32r => arch/m32r/include/asm}/spinlock.h (100%) rename trunk/{include/asm-m32r => arch/m32r/include/asm}/spinlock_types.h (100%) rename trunk/{include/asm-m32r => arch/m32r/include/asm}/stat.h (100%) rename trunk/{include/asm-m32r => arch/m32r/include/asm}/statfs.h (100%) rename trunk/{include/asm-m32r => arch/m32r/include/asm}/string.h (100%) rename trunk/{include/asm-m32r => arch/m32r/include/asm}/syscall.h (100%) rename trunk/{include/asm-m32r => arch/m32r/include/asm}/system.h (100%) rename trunk/{include/asm-m32r => arch/m32r/include/asm}/termbits.h (100%) rename trunk/{include/asm-m32r => arch/m32r/include/asm}/termios.h (100%) rename trunk/{include/asm-m32r => arch/m32r/include/asm}/thread_info.h (100%) rename trunk/{include/asm-m32r => arch/m32r/include/asm}/timex.h (100%) rename trunk/{include/asm-m32r => arch/m32r/include/asm}/tlb.h (100%) rename trunk/{include/asm-m32r => arch/m32r/include/asm}/tlbflush.h (100%) rename trunk/{include/asm-m32r => arch/m32r/include/asm}/topology.h (100%) rename trunk/{include/asm-m32r => arch/m32r/include/asm}/types.h (100%) rename trunk/{include/asm-m32r => arch/m32r/include/asm}/uaccess.h (100%) rename trunk/{include/asm-m32r => arch/m32r/include/asm}/ucontext.h (100%) rename trunk/{include/asm-m32r => arch/m32r/include/asm}/unaligned.h (100%) rename trunk/{include/asm-m32r => arch/m32r/include/asm}/unistd.h (100%) rename trunk/{include/asm-m32r => arch/m32r/include/asm}/user.h (100%) rename trunk/{include/asm-m32r => arch/m32r/include/asm}/vga.h (100%) rename trunk/{include/asm-m32r => arch/m32r/include/asm}/xor.h (100%) diff --git a/[refs] b/[refs] index fde49aa3d487..cfd9498204b2 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: b9836e08375d86834edcde45e3628e63db8b9624 +refs/heads/master: fe4e719d82c4052751d2287de4bd18bd04e93685 diff --git a/trunk/Documentation/kernel-parameters.txt b/trunk/Documentation/kernel-parameters.txt index a19f021f081a..6172e4360f60 100644 --- a/trunk/Documentation/kernel-parameters.txt +++ b/trunk/Documentation/kernel-parameters.txt @@ -134,7 +134,7 @@ and is between 256 and 4096 characters. It is defined in the file ./include/asm/setup.h as COMMAND_LINE_SIZE. - acpi= [HW,ACPI,X86] + acpi= [HW,ACPI,X86-64,i386] Advanced Configuration and Power Interface Format: { force | off | ht | strict | noirq | rsdt } force -- enable ACPI if default was off @@ -218,7 +218,7 @@ and is between 256 and 4096 characters. It is defined in the file acpi_osi="!string2" # remove built-in string2 acpi_osi= # disable all strings - acpi_pm_good [X86] + acpi_pm_good [X86-32,X86-64] Override the pmtimer bug detection: force the kernel to assume that this machine's pmtimer latches its value and always returns good values. @@ -459,7 +459,7 @@ and is between 256 and 4096 characters. It is defined in the file Also note the kernel might malfunction if you disable some critical bits. - code_bytes [X86] How many bytes of object code to print + code_bytes [IA32/X86_64] How many bytes of object code to print in an oops report. Range: 0 - 8192 Default: 64 @@ -592,7 +592,7 @@ and is between 256 and 4096 characters. It is defined in the file MTRR settings. This parameter disables that behavior, possibly causing your machine to run very slowly. - disable_timer_pin_1 [X86] + disable_timer_pin_1 [i386,x86-64] Disable PIN 1 of APIC timer Can be useful to work around chipset bugs. @@ -624,7 +624,7 @@ and is between 256 and 4096 characters. It is defined in the file UART at the specified I/O port or MMIO address. The options are the same as for ttyS, above. - earlyprintk= [X86,SH,BLACKFIN] + earlyprintk= [X86-32,X86-64,SH,BLACKFIN] earlyprintk=vga earlyprintk=serial[,ttySn[,baudrate]] earlyprintk=dbgp @@ -659,7 +659,7 @@ and is between 256 and 4096 characters. It is defined in the file See Documentation/block/as-iosched.txt and Documentation/block/deadline-iosched.txt for details. - elfcorehdr= [IA64,PPC,SH,X86] + elfcorehdr= [IA64,PPC,SH,X86-32,X86_64] Specifies physical address of start of kernel core image elf header. Generally kexec loader will pass this option to capture kernel. @@ -938,7 +938,7 @@ and is between 256 and 4096 characters. It is defined in the file See comment before marvel_specify_io7 in arch/alpha/kernel/core_marvel.c. - io_delay= [X86] I/O delay method + io_delay= [X86-32,X86-64] I/O delay method 0x80 Standard port 0x80 based delay 0xed @@ -1000,7 +1000,7 @@ and is between 256 and 4096 characters. It is defined in the file keepinitrd [HW,ARM] - kernelcore=nn[KMG] [KNL,X86,IA-64,PPC] This parameter + kernelcore=nn[KMG] [KNL,X86-32,IA-64,PPC,X86-64] This parameter specifies the amount of memory usable by the kernel for non-movable allocations. The requested amount is spread evenly throughout all nodes in the system. The @@ -1034,7 +1034,7 @@ and is between 256 and 4096 characters. It is defined in the file Configure the RouterBoard 532 series on-chip Ethernet adapter MAC address. - kstack=N [X86] Print N words from the kernel stack + kstack=N [X86-32,X86-64] Print N words from the kernel stack in oops dumps. l2cr= [PPC] @@ -1044,7 +1044,7 @@ and is between 256 and 4096 characters. It is defined in the file lapic [X86-32,APIC] Enable the local APIC even if BIOS disabled it. - lapic_timer_c2_ok [X86,APIC] trust the local apic timer + lapic_timer_c2_ok [X86-32,x86-64,APIC] trust the local apic timer in C2 power state. libata.dma= [LIBATA] DMA control @@ -1229,7 +1229,7 @@ and is between 256 and 4096 characters. It is defined in the file [KNL,SH] Allow user to override the default size for per-device physically contiguous DMA buffers. - memmap=exactmap [KNL,X86] Enable setting of an exact + memmap=exactmap [KNL,X86-32,X86_64] Enable setting of an exact E820 memory map, as specified by the user. Such memmap=exactmap lines can be constructed based on BIOS output or other requirements. See the memmap=nn@ss @@ -1320,7 +1320,7 @@ and is between 256 and 4096 characters. It is defined in the file mousedev.yres= [MOUSE] Vertical screen resolution, used for devices reporting absolute coordinates, such as tablets - movablecore=nn[KMG] [KNL,X86,IA-64,PPC] This parameter + movablecore=nn[KMG] [KNL,X86-32,IA-64,PPC,X86-64] This parameter is similar to kernelcore except it specifies the amount of memory used for migratable allocations. If both kernelcore and movablecore is specified, @@ -1422,7 +1422,7 @@ and is between 256 and 4096 characters. It is defined in the file when a NMI is triggered. Format: [state][,regs][,debounce][,die] - nmi_watchdog= [KNL,BUGS=X86] Debugging features for SMP kernels + nmi_watchdog= [KNL,BUGS=X86-32,X86-64] Debugging features for SMP kernels Format: [panic,][num] Valid num: 0,1,2 0 - turn nmi_watchdog off @@ -1475,11 +1475,11 @@ and is between 256 and 4096 characters. It is defined in the file nodsp [SH] Disable hardware DSP at boot time. - noefi [X86] Disable EFI runtime services support. + noefi [X86-32,X86-64] Disable EFI runtime services support. noexec [IA-64] - noexec [X86] + noexec [X86-32,X86-64] On X86-32 available only on PAE configured kernels. noexec=on: enable non-executable mappings (default) noexec=off: disable non-executable mappings @@ -1525,7 +1525,7 @@ and is between 256 and 4096 characters. It is defined in the file noirqdebug [X86-32] Disables the code which attempts to detect and disable unhandled interrupt sources. - no_timer_check [X86,APIC] Disables the code which tests for + no_timer_check [X86-32,X86_64,APIC] Disables the code which tests for broken timer IRQ sources. noisapnp [ISAPNP] Disables ISA PnP code. @@ -1689,7 +1689,7 @@ and is between 256 and 4096 characters. It is defined in the file disable the use of PCIE advanced error reporting. nodomains [PCI] Disable support for multiple PCI root domains (aka PCI segments, in ACPI-speak). - nommconf [X86] Disable use of MMCONFIG for PCI + nommconf [X86-32,X86_64] Disable use of MMCONFIG for PCI Configuration nomsi [MSI] If the PCI_MSI kernel config parameter is enabled, this kernel boot option can be used to @@ -2380,7 +2380,7 @@ and is between 256 and 4096 characters. It is defined in the file reported either. unknown_nmi_panic - [X86] + [X86-32,X86-64] Set unknown_nmi_panic=1 early on boot. usbcore.autosuspend= @@ -2447,12 +2447,12 @@ and is between 256 and 4096 characters. It is defined in the file medium is write-protected). Example: quirks=0419:aaf5:rl,0421:0433:rc - vdso= [X86,SH] + vdso= [X86-32,SH,x86-64] vdso=2: enable compat VDSO (default with COMPAT_VDSO) vdso=1: enable VDSO (default) vdso=0: disable VDSO mapping - vdso32= [X86] + vdso32= [X86-32,X86-64] vdso32=2: enable compat VDSO (default with COMPAT_VDSO) vdso32=1: enable 32-bit VDSO (default) vdso32=0: disable 32-bit VDSO mapping diff --git a/trunk/include/asm-m32r/Kbuild b/trunk/arch/m32r/include/asm/Kbuild similarity index 100% rename from trunk/include/asm-m32r/Kbuild rename to trunk/arch/m32r/include/asm/Kbuild diff --git a/trunk/include/asm-m32r/addrspace.h b/trunk/arch/m32r/include/asm/addrspace.h similarity index 100% rename from trunk/include/asm-m32r/addrspace.h rename to trunk/arch/m32r/include/asm/addrspace.h diff --git a/trunk/include/asm-m32r/assembler.h b/trunk/arch/m32r/include/asm/assembler.h similarity index 100% rename from trunk/include/asm-m32r/assembler.h rename to trunk/arch/m32r/include/asm/assembler.h diff --git a/trunk/include/asm-m32r/atomic.h b/trunk/arch/m32r/include/asm/atomic.h similarity index 100% rename from trunk/include/asm-m32r/atomic.h rename to trunk/arch/m32r/include/asm/atomic.h diff --git a/trunk/include/asm-m32r/auxvec.h b/trunk/arch/m32r/include/asm/auxvec.h similarity index 100% rename from trunk/include/asm-m32r/auxvec.h rename to trunk/arch/m32r/include/asm/auxvec.h diff --git a/trunk/include/asm-m32r/bitops.h b/trunk/arch/m32r/include/asm/bitops.h similarity index 100% rename from trunk/include/asm-m32r/bitops.h rename to trunk/arch/m32r/include/asm/bitops.h diff --git a/trunk/include/asm-m32r/bug.h b/trunk/arch/m32r/include/asm/bug.h similarity index 100% rename from trunk/include/asm-m32r/bug.h rename to trunk/arch/m32r/include/asm/bug.h diff --git a/trunk/include/asm-m32r/bugs.h b/trunk/arch/m32r/include/asm/bugs.h similarity index 100% rename from trunk/include/asm-m32r/bugs.h rename to trunk/arch/m32r/include/asm/bugs.h diff --git a/trunk/include/asm-m32r/byteorder.h b/trunk/arch/m32r/include/asm/byteorder.h similarity index 100% rename from trunk/include/asm-m32r/byteorder.h rename to trunk/arch/m32r/include/asm/byteorder.h diff --git a/trunk/include/asm-m32r/cache.h b/trunk/arch/m32r/include/asm/cache.h similarity index 100% rename from trunk/include/asm-m32r/cache.h rename to trunk/arch/m32r/include/asm/cache.h diff --git a/trunk/include/asm-m32r/cachectl.h b/trunk/arch/m32r/include/asm/cachectl.h similarity index 100% rename from trunk/include/asm-m32r/cachectl.h rename to trunk/arch/m32r/include/asm/cachectl.h diff --git a/trunk/include/asm-m32r/cacheflush.h b/trunk/arch/m32r/include/asm/cacheflush.h similarity index 100% rename from trunk/include/asm-m32r/cacheflush.h rename to trunk/arch/m32r/include/asm/cacheflush.h diff --git a/trunk/include/asm-m32r/checksum.h b/trunk/arch/m32r/include/asm/checksum.h similarity index 100% rename from trunk/include/asm-m32r/checksum.h rename to trunk/arch/m32r/include/asm/checksum.h diff --git a/trunk/include/asm-m32r/cputime.h b/trunk/arch/m32r/include/asm/cputime.h similarity index 100% rename from trunk/include/asm-m32r/cputime.h rename to trunk/arch/m32r/include/asm/cputime.h diff --git a/trunk/include/asm-m32r/current.h b/trunk/arch/m32r/include/asm/current.h similarity index 100% rename from trunk/include/asm-m32r/current.h rename to trunk/arch/m32r/include/asm/current.h diff --git a/trunk/include/asm-m32r/delay.h b/trunk/arch/m32r/include/asm/delay.h similarity index 100% rename from trunk/include/asm-m32r/delay.h rename to trunk/arch/m32r/include/asm/delay.h diff --git a/trunk/include/asm-m32r/device.h b/trunk/arch/m32r/include/asm/device.h similarity index 100% rename from trunk/include/asm-m32r/device.h rename to trunk/arch/m32r/include/asm/device.h diff --git a/trunk/include/asm-m32r/div64.h b/trunk/arch/m32r/include/asm/div64.h similarity index 100% rename from trunk/include/asm-m32r/div64.h rename to trunk/arch/m32r/include/asm/div64.h diff --git a/trunk/include/asm-m32r/dma.h b/trunk/arch/m32r/include/asm/dma.h similarity index 100% rename from trunk/include/asm-m32r/dma.h rename to trunk/arch/m32r/include/asm/dma.h diff --git a/trunk/include/asm-m32r/elf.h b/trunk/arch/m32r/include/asm/elf.h similarity index 100% rename from trunk/include/asm-m32r/elf.h rename to trunk/arch/m32r/include/asm/elf.h diff --git a/trunk/include/asm-m32r/emergency-restart.h b/trunk/arch/m32r/include/asm/emergency-restart.h similarity index 100% rename from trunk/include/asm-m32r/emergency-restart.h rename to trunk/arch/m32r/include/asm/emergency-restart.h diff --git a/trunk/include/asm-m32r/errno.h b/trunk/arch/m32r/include/asm/errno.h similarity index 100% rename from trunk/include/asm-m32r/errno.h rename to trunk/arch/m32r/include/asm/errno.h diff --git a/trunk/include/asm-m32r/fb.h b/trunk/arch/m32r/include/asm/fb.h similarity index 100% rename from trunk/include/asm-m32r/fb.h rename to trunk/arch/m32r/include/asm/fb.h diff --git a/trunk/include/asm-m32r/fcntl.h b/trunk/arch/m32r/include/asm/fcntl.h similarity index 100% rename from trunk/include/asm-m32r/fcntl.h rename to trunk/arch/m32r/include/asm/fcntl.h diff --git a/trunk/include/asm-m32r/flat.h b/trunk/arch/m32r/include/asm/flat.h similarity index 100% rename from trunk/include/asm-m32r/flat.h rename to trunk/arch/m32r/include/asm/flat.h diff --git a/trunk/include/asm-m32r/futex.h b/trunk/arch/m32r/include/asm/futex.h similarity index 100% rename from trunk/include/asm-m32r/futex.h rename to trunk/arch/m32r/include/asm/futex.h diff --git a/trunk/include/asm-m32r/hardirq.h b/trunk/arch/m32r/include/asm/hardirq.h similarity index 100% rename from trunk/include/asm-m32r/hardirq.h rename to trunk/arch/m32r/include/asm/hardirq.h diff --git a/trunk/include/asm-m32r/hw_irq.h b/trunk/arch/m32r/include/asm/hw_irq.h similarity index 100% rename from trunk/include/asm-m32r/hw_irq.h rename to trunk/arch/m32r/include/asm/hw_irq.h diff --git a/trunk/include/asm-m32r/io.h b/trunk/arch/m32r/include/asm/io.h similarity index 100% rename from trunk/include/asm-m32r/io.h rename to trunk/arch/m32r/include/asm/io.h diff --git a/trunk/include/asm-m32r/ioctl.h b/trunk/arch/m32r/include/asm/ioctl.h similarity index 100% rename from trunk/include/asm-m32r/ioctl.h rename to trunk/arch/m32r/include/asm/ioctl.h diff --git a/trunk/include/asm-m32r/ioctls.h b/trunk/arch/m32r/include/asm/ioctls.h similarity index 100% rename from trunk/include/asm-m32r/ioctls.h rename to trunk/arch/m32r/include/asm/ioctls.h diff --git a/trunk/include/asm-m32r/ipcbuf.h b/trunk/arch/m32r/include/asm/ipcbuf.h similarity index 100% rename from trunk/include/asm-m32r/ipcbuf.h rename to trunk/arch/m32r/include/asm/ipcbuf.h diff --git a/trunk/include/asm-m32r/irq.h b/trunk/arch/m32r/include/asm/irq.h similarity index 100% rename from trunk/include/asm-m32r/irq.h rename to trunk/arch/m32r/include/asm/irq.h diff --git a/trunk/include/asm-m32r/irq_regs.h b/trunk/arch/m32r/include/asm/irq_regs.h similarity index 100% rename from trunk/include/asm-m32r/irq_regs.h rename to trunk/arch/m32r/include/asm/irq_regs.h diff --git a/trunk/include/asm-m32r/kdebug.h b/trunk/arch/m32r/include/asm/kdebug.h similarity index 100% rename from trunk/include/asm-m32r/kdebug.h rename to trunk/arch/m32r/include/asm/kdebug.h diff --git a/trunk/include/asm-m32r/kmap_types.h b/trunk/arch/m32r/include/asm/kmap_types.h similarity index 100% rename from trunk/include/asm-m32r/kmap_types.h rename to trunk/arch/m32r/include/asm/kmap_types.h diff --git a/trunk/include/asm-m32r/linkage.h b/trunk/arch/m32r/include/asm/linkage.h similarity index 100% rename from trunk/include/asm-m32r/linkage.h rename to trunk/arch/m32r/include/asm/linkage.h diff --git a/trunk/include/asm-m32r/local.h b/trunk/arch/m32r/include/asm/local.h similarity index 100% rename from trunk/include/asm-m32r/local.h rename to trunk/arch/m32r/include/asm/local.h diff --git a/trunk/include/asm-m32r/m32102.h b/trunk/arch/m32r/include/asm/m32102.h similarity index 100% rename from trunk/include/asm-m32r/m32102.h rename to trunk/arch/m32r/include/asm/m32102.h diff --git a/trunk/include/asm-m32r/m32104ut/m32104ut_pld.h b/trunk/arch/m32r/include/asm/m32104ut/m32104ut_pld.h similarity index 100% rename from trunk/include/asm-m32r/m32104ut/m32104ut_pld.h rename to trunk/arch/m32r/include/asm/m32104ut/m32104ut_pld.h diff --git a/trunk/include/asm-m32r/m32700ut/m32700ut_lan.h b/trunk/arch/m32r/include/asm/m32700ut/m32700ut_lan.h similarity index 100% rename from trunk/include/asm-m32r/m32700ut/m32700ut_lan.h rename to trunk/arch/m32r/include/asm/m32700ut/m32700ut_lan.h diff --git a/trunk/include/asm-m32r/m32700ut/m32700ut_lcd.h b/trunk/arch/m32r/include/asm/m32700ut/m32700ut_lcd.h similarity index 100% rename from trunk/include/asm-m32r/m32700ut/m32700ut_lcd.h rename to trunk/arch/m32r/include/asm/m32700ut/m32700ut_lcd.h diff --git a/trunk/include/asm-m32r/m32700ut/m32700ut_pld.h b/trunk/arch/m32r/include/asm/m32700ut/m32700ut_pld.h similarity index 100% rename from trunk/include/asm-m32r/m32700ut/m32700ut_pld.h rename to trunk/arch/m32r/include/asm/m32700ut/m32700ut_pld.h diff --git a/trunk/include/asm-m32r/m32r.h b/trunk/arch/m32r/include/asm/m32r.h similarity index 100% rename from trunk/include/asm-m32r/m32r.h rename to trunk/arch/m32r/include/asm/m32r.h diff --git a/trunk/include/asm-m32r/m32r_mp_fpga.h b/trunk/arch/m32r/include/asm/m32r_mp_fpga.h similarity index 100% rename from trunk/include/asm-m32r/m32r_mp_fpga.h rename to trunk/arch/m32r/include/asm/m32r_mp_fpga.h diff --git a/trunk/include/asm-m32r/mappi2/mappi2_pld.h b/trunk/arch/m32r/include/asm/mappi2/mappi2_pld.h similarity index 100% rename from trunk/include/asm-m32r/mappi2/mappi2_pld.h rename to trunk/arch/m32r/include/asm/mappi2/mappi2_pld.h diff --git a/trunk/include/asm-m32r/mappi3/mappi3_pld.h b/trunk/arch/m32r/include/asm/mappi3/mappi3_pld.h similarity index 100% rename from trunk/include/asm-m32r/mappi3/mappi3_pld.h rename to trunk/arch/m32r/include/asm/mappi3/mappi3_pld.h diff --git a/trunk/include/asm-m32r/mc146818rtc.h b/trunk/arch/m32r/include/asm/mc146818rtc.h similarity index 100% rename from trunk/include/asm-m32r/mc146818rtc.h rename to trunk/arch/m32r/include/asm/mc146818rtc.h diff --git a/trunk/include/asm-m32r/mman.h b/trunk/arch/m32r/include/asm/mman.h similarity index 100% rename from trunk/include/asm-m32r/mman.h rename to trunk/arch/m32r/include/asm/mman.h diff --git a/trunk/include/asm-m32r/mmu.h b/trunk/arch/m32r/include/asm/mmu.h similarity index 100% rename from trunk/include/asm-m32r/mmu.h rename to trunk/arch/m32r/include/asm/mmu.h diff --git a/trunk/include/asm-m32r/mmu_context.h b/trunk/arch/m32r/include/asm/mmu_context.h similarity index 100% rename from trunk/include/asm-m32r/mmu_context.h rename to trunk/arch/m32r/include/asm/mmu_context.h diff --git a/trunk/include/asm-m32r/mmzone.h b/trunk/arch/m32r/include/asm/mmzone.h similarity index 100% rename from trunk/include/asm-m32r/mmzone.h rename to trunk/arch/m32r/include/asm/mmzone.h diff --git a/trunk/include/asm-m32r/module.h b/trunk/arch/m32r/include/asm/module.h similarity index 100% rename from trunk/include/asm-m32r/module.h rename to trunk/arch/m32r/include/asm/module.h diff --git a/trunk/include/asm-m32r/msgbuf.h b/trunk/arch/m32r/include/asm/msgbuf.h similarity index 100% rename from trunk/include/asm-m32r/msgbuf.h rename to trunk/arch/m32r/include/asm/msgbuf.h diff --git a/trunk/include/asm-m32r/mutex.h b/trunk/arch/m32r/include/asm/mutex.h similarity index 100% rename from trunk/include/asm-m32r/mutex.h rename to trunk/arch/m32r/include/asm/mutex.h diff --git a/trunk/include/asm-m32r/opsput/opsput_lan.h b/trunk/arch/m32r/include/asm/opsput/opsput_lan.h similarity index 100% rename from trunk/include/asm-m32r/opsput/opsput_lan.h rename to trunk/arch/m32r/include/asm/opsput/opsput_lan.h diff --git a/trunk/include/asm-m32r/opsput/opsput_lcd.h b/trunk/arch/m32r/include/asm/opsput/opsput_lcd.h similarity index 100% rename from trunk/include/asm-m32r/opsput/opsput_lcd.h rename to trunk/arch/m32r/include/asm/opsput/opsput_lcd.h diff --git a/trunk/include/asm-m32r/opsput/opsput_pld.h b/trunk/arch/m32r/include/asm/opsput/opsput_pld.h similarity index 100% rename from trunk/include/asm-m32r/opsput/opsput_pld.h rename to trunk/arch/m32r/include/asm/opsput/opsput_pld.h diff --git a/trunk/include/asm-m32r/page.h b/trunk/arch/m32r/include/asm/page.h similarity index 100% rename from trunk/include/asm-m32r/page.h rename to trunk/arch/m32r/include/asm/page.h diff --git a/trunk/include/asm-m32r/param.h b/trunk/arch/m32r/include/asm/param.h similarity index 100% rename from trunk/include/asm-m32r/param.h rename to trunk/arch/m32r/include/asm/param.h diff --git a/trunk/include/asm-m32r/pci.h b/trunk/arch/m32r/include/asm/pci.h similarity index 100% rename from trunk/include/asm-m32r/pci.h rename to trunk/arch/m32r/include/asm/pci.h diff --git a/trunk/include/asm-m32r/percpu.h b/trunk/arch/m32r/include/asm/percpu.h similarity index 100% rename from trunk/include/asm-m32r/percpu.h rename to trunk/arch/m32r/include/asm/percpu.h diff --git a/trunk/include/asm-m32r/pgalloc.h b/trunk/arch/m32r/include/asm/pgalloc.h similarity index 100% rename from trunk/include/asm-m32r/pgalloc.h rename to trunk/arch/m32r/include/asm/pgalloc.h diff --git a/trunk/include/asm-m32r/pgtable-2level.h b/trunk/arch/m32r/include/asm/pgtable-2level.h similarity index 100% rename from trunk/include/asm-m32r/pgtable-2level.h rename to trunk/arch/m32r/include/asm/pgtable-2level.h diff --git a/trunk/include/asm-m32r/pgtable.h b/trunk/arch/m32r/include/asm/pgtable.h similarity index 100% rename from trunk/include/asm-m32r/pgtable.h rename to trunk/arch/m32r/include/asm/pgtable.h diff --git a/trunk/include/asm-m32r/poll.h b/trunk/arch/m32r/include/asm/poll.h similarity index 100% rename from trunk/include/asm-m32r/poll.h rename to trunk/arch/m32r/include/asm/poll.h diff --git a/trunk/include/asm-m32r/posix_types.h b/trunk/arch/m32r/include/asm/posix_types.h similarity index 100% rename from trunk/include/asm-m32r/posix_types.h rename to trunk/arch/m32r/include/asm/posix_types.h diff --git a/trunk/include/asm-m32r/processor.h b/trunk/arch/m32r/include/asm/processor.h similarity index 100% rename from trunk/include/asm-m32r/processor.h rename to trunk/arch/m32r/include/asm/processor.h diff --git a/trunk/include/asm-m32r/ptrace.h b/trunk/arch/m32r/include/asm/ptrace.h similarity index 100% rename from trunk/include/asm-m32r/ptrace.h rename to trunk/arch/m32r/include/asm/ptrace.h diff --git a/trunk/include/asm-m32r/resource.h b/trunk/arch/m32r/include/asm/resource.h similarity index 100% rename from trunk/include/asm-m32r/resource.h rename to trunk/arch/m32r/include/asm/resource.h diff --git a/trunk/include/asm-m32r/rtc.h b/trunk/arch/m32r/include/asm/rtc.h similarity index 100% rename from trunk/include/asm-m32r/rtc.h rename to trunk/arch/m32r/include/asm/rtc.h diff --git a/trunk/include/asm-m32r/s1d13806.h b/trunk/arch/m32r/include/asm/s1d13806.h similarity index 100% rename from trunk/include/asm-m32r/s1d13806.h rename to trunk/arch/m32r/include/asm/s1d13806.h diff --git a/trunk/include/asm-m32r/scatterlist.h b/trunk/arch/m32r/include/asm/scatterlist.h similarity index 100% rename from trunk/include/asm-m32r/scatterlist.h rename to trunk/arch/m32r/include/asm/scatterlist.h diff --git a/trunk/include/asm-m32r/sections.h b/trunk/arch/m32r/include/asm/sections.h similarity index 100% rename from trunk/include/asm-m32r/sections.h rename to trunk/arch/m32r/include/asm/sections.h diff --git a/trunk/include/asm-m32r/segment.h b/trunk/arch/m32r/include/asm/segment.h similarity index 100% rename from trunk/include/asm-m32r/segment.h rename to trunk/arch/m32r/include/asm/segment.h diff --git a/trunk/include/asm-m32r/sembuf.h b/trunk/arch/m32r/include/asm/sembuf.h similarity index 100% rename from trunk/include/asm-m32r/sembuf.h rename to trunk/arch/m32r/include/asm/sembuf.h diff --git a/trunk/include/asm-m32r/serial.h b/trunk/arch/m32r/include/asm/serial.h similarity index 100% rename from trunk/include/asm-m32r/serial.h rename to trunk/arch/m32r/include/asm/serial.h diff --git a/trunk/include/asm-m32r/setup.h b/trunk/arch/m32r/include/asm/setup.h similarity index 100% rename from trunk/include/asm-m32r/setup.h rename to trunk/arch/m32r/include/asm/setup.h diff --git a/trunk/include/asm-m32r/shmbuf.h b/trunk/arch/m32r/include/asm/shmbuf.h similarity index 100% rename from trunk/include/asm-m32r/shmbuf.h rename to trunk/arch/m32r/include/asm/shmbuf.h diff --git a/trunk/include/asm-m32r/shmparam.h b/trunk/arch/m32r/include/asm/shmparam.h similarity index 100% rename from trunk/include/asm-m32r/shmparam.h rename to trunk/arch/m32r/include/asm/shmparam.h diff --git a/trunk/include/asm-m32r/sigcontext.h b/trunk/arch/m32r/include/asm/sigcontext.h similarity index 100% rename from trunk/include/asm-m32r/sigcontext.h rename to trunk/arch/m32r/include/asm/sigcontext.h diff --git a/trunk/include/asm-m32r/siginfo.h b/trunk/arch/m32r/include/asm/siginfo.h similarity index 100% rename from trunk/include/asm-m32r/siginfo.h rename to trunk/arch/m32r/include/asm/siginfo.h diff --git a/trunk/include/asm-m32r/signal.h b/trunk/arch/m32r/include/asm/signal.h similarity index 100% rename from trunk/include/asm-m32r/signal.h rename to trunk/arch/m32r/include/asm/signal.h diff --git a/trunk/include/asm-m32r/smp.h b/trunk/arch/m32r/include/asm/smp.h similarity index 100% rename from trunk/include/asm-m32r/smp.h rename to trunk/arch/m32r/include/asm/smp.h diff --git a/trunk/include/asm-m32r/socket.h b/trunk/arch/m32r/include/asm/socket.h similarity index 100% rename from trunk/include/asm-m32r/socket.h rename to trunk/arch/m32r/include/asm/socket.h diff --git a/trunk/include/asm-m32r/sockios.h b/trunk/arch/m32r/include/asm/sockios.h similarity index 100% rename from trunk/include/asm-m32r/sockios.h rename to trunk/arch/m32r/include/asm/sockios.h diff --git a/trunk/include/asm-m32r/spinlock.h b/trunk/arch/m32r/include/asm/spinlock.h similarity index 100% rename from trunk/include/asm-m32r/spinlock.h rename to trunk/arch/m32r/include/asm/spinlock.h diff --git a/trunk/include/asm-m32r/spinlock_types.h b/trunk/arch/m32r/include/asm/spinlock_types.h similarity index 100% rename from trunk/include/asm-m32r/spinlock_types.h rename to trunk/arch/m32r/include/asm/spinlock_types.h diff --git a/trunk/include/asm-m32r/stat.h b/trunk/arch/m32r/include/asm/stat.h similarity index 100% rename from trunk/include/asm-m32r/stat.h rename to trunk/arch/m32r/include/asm/stat.h diff --git a/trunk/include/asm-m32r/statfs.h b/trunk/arch/m32r/include/asm/statfs.h similarity index 100% rename from trunk/include/asm-m32r/statfs.h rename to trunk/arch/m32r/include/asm/statfs.h diff --git a/trunk/include/asm-m32r/string.h b/trunk/arch/m32r/include/asm/string.h similarity index 100% rename from trunk/include/asm-m32r/string.h rename to trunk/arch/m32r/include/asm/string.h diff --git a/trunk/include/asm-m32r/syscall.h b/trunk/arch/m32r/include/asm/syscall.h similarity index 100% rename from trunk/include/asm-m32r/syscall.h rename to trunk/arch/m32r/include/asm/syscall.h diff --git a/trunk/include/asm-m32r/system.h b/trunk/arch/m32r/include/asm/system.h similarity index 100% rename from trunk/include/asm-m32r/system.h rename to trunk/arch/m32r/include/asm/system.h diff --git a/trunk/include/asm-m32r/termbits.h b/trunk/arch/m32r/include/asm/termbits.h similarity index 100% rename from trunk/include/asm-m32r/termbits.h rename to trunk/arch/m32r/include/asm/termbits.h diff --git a/trunk/include/asm-m32r/termios.h b/trunk/arch/m32r/include/asm/termios.h similarity index 100% rename from trunk/include/asm-m32r/termios.h rename to trunk/arch/m32r/include/asm/termios.h diff --git a/trunk/include/asm-m32r/thread_info.h b/trunk/arch/m32r/include/asm/thread_info.h similarity index 100% rename from trunk/include/asm-m32r/thread_info.h rename to trunk/arch/m32r/include/asm/thread_info.h diff --git a/trunk/include/asm-m32r/timex.h b/trunk/arch/m32r/include/asm/timex.h similarity index 100% rename from trunk/include/asm-m32r/timex.h rename to trunk/arch/m32r/include/asm/timex.h diff --git a/trunk/include/asm-m32r/tlb.h b/trunk/arch/m32r/include/asm/tlb.h similarity index 100% rename from trunk/include/asm-m32r/tlb.h rename to trunk/arch/m32r/include/asm/tlb.h diff --git a/trunk/include/asm-m32r/tlbflush.h b/trunk/arch/m32r/include/asm/tlbflush.h similarity index 100% rename from trunk/include/asm-m32r/tlbflush.h rename to trunk/arch/m32r/include/asm/tlbflush.h diff --git a/trunk/include/asm-m32r/topology.h b/trunk/arch/m32r/include/asm/topology.h similarity index 100% rename from trunk/include/asm-m32r/topology.h rename to trunk/arch/m32r/include/asm/topology.h diff --git a/trunk/include/asm-m32r/types.h b/trunk/arch/m32r/include/asm/types.h similarity index 100% rename from trunk/include/asm-m32r/types.h rename to trunk/arch/m32r/include/asm/types.h diff --git a/trunk/include/asm-m32r/uaccess.h b/trunk/arch/m32r/include/asm/uaccess.h similarity index 100% rename from trunk/include/asm-m32r/uaccess.h rename to trunk/arch/m32r/include/asm/uaccess.h diff --git a/trunk/include/asm-m32r/ucontext.h b/trunk/arch/m32r/include/asm/ucontext.h similarity index 100% rename from trunk/include/asm-m32r/ucontext.h rename to trunk/arch/m32r/include/asm/ucontext.h diff --git a/trunk/include/asm-m32r/unaligned.h b/trunk/arch/m32r/include/asm/unaligned.h similarity index 100% rename from trunk/include/asm-m32r/unaligned.h rename to trunk/arch/m32r/include/asm/unaligned.h diff --git a/trunk/include/asm-m32r/unistd.h b/trunk/arch/m32r/include/asm/unistd.h similarity index 100% rename from trunk/include/asm-m32r/unistd.h rename to trunk/arch/m32r/include/asm/unistd.h diff --git a/trunk/include/asm-m32r/user.h b/trunk/arch/m32r/include/asm/user.h similarity index 100% rename from trunk/include/asm-m32r/user.h rename to trunk/arch/m32r/include/asm/user.h diff --git a/trunk/include/asm-m32r/vga.h b/trunk/arch/m32r/include/asm/vga.h similarity index 100% rename from trunk/include/asm-m32r/vga.h rename to trunk/arch/m32r/include/asm/vga.h diff --git a/trunk/include/asm-m32r/xor.h b/trunk/arch/m32r/include/asm/xor.h similarity index 100% rename from trunk/include/asm-m32r/xor.h rename to trunk/arch/m32r/include/asm/xor.h diff --git a/trunk/arch/x86/Kconfig.cpu b/trunk/arch/x86/Kconfig.cpu index 8130334329c0..924e156a85ab 100644 --- a/trunk/arch/x86/Kconfig.cpu +++ b/trunk/arch/x86/Kconfig.cpu @@ -506,7 +506,6 @@ config X86_PTRACE_BTS bool "Branch Trace Store" default y depends on X86_DEBUGCTLMSR - depends on BROKEN ---help--- This adds a ptrace interface to the hardware's branch trace store. diff --git a/trunk/arch/x86/include/asm/pat.h b/trunk/arch/x86/include/asm/pat.h index 7af14e512f97..2cd07b9422f4 100644 --- a/trunk/arch/x86/include/asm/pat.h +++ b/trunk/arch/x86/include/asm/pat.h @@ -18,5 +18,9 @@ extern int free_memtype(u64 start, u64 end); extern int kernel_map_sync_memtype(u64 base, unsigned long size, unsigned long flag); +extern void map_devmem(unsigned long pfn, unsigned long size, + struct pgprot vma_prot); +extern void unmap_devmem(unsigned long pfn, unsigned long size, + struct pgprot vma_prot); #endif /* _ASM_X86_PAT_H */ diff --git a/trunk/arch/x86/kernel/microcode_core.c b/trunk/arch/x86/kernel/microcode_core.c index 98c470c069d1..2e0eb4140951 100644 --- a/trunk/arch/x86/kernel/microcode_core.c +++ b/trunk/arch/x86/kernel/microcode_core.c @@ -380,6 +380,8 @@ static int mc_sysdev_add(struct sys_device *sys_dev) return err; err = microcode_init_cpu(cpu); + if (err) + sysfs_remove_group(&sys_dev->kobj, &mc_attr_group); return err; } diff --git a/trunk/arch/x86/kernel/pci-swiotlb.c b/trunk/arch/x86/kernel/pci-swiotlb.c index 221a3853e268..34f12e9996ed 100644 --- a/trunk/arch/x86/kernel/pci-swiotlb.c +++ b/trunk/arch/x86/kernel/pci-swiotlb.c @@ -50,7 +50,7 @@ static void *x86_swiotlb_alloc_coherent(struct device *hwdev, size_t size, return swiotlb_alloc_coherent(hwdev, size, dma_handle, flags); } -static struct dma_map_ops swiotlb_dma_ops = { +struct dma_map_ops swiotlb_dma_ops = { .mapping_error = swiotlb_dma_mapping_error, .alloc_coherent = x86_swiotlb_alloc_coherent, .free_coherent = swiotlb_free_coherent, diff --git a/trunk/arch/x86/mm/ioremap.c b/trunk/arch/x86/mm/ioremap.c index 8a450930834f..09daebfdb11c 100644 --- a/trunk/arch/x86/mm/ioremap.c +++ b/trunk/arch/x86/mm/ioremap.c @@ -280,16 +280,15 @@ static void __iomem *__ioremap_caller(resource_size_t phys_addr, return NULL; area->phys_addr = phys_addr; vaddr = (unsigned long) area->addr; - - if (kernel_map_sync_memtype(phys_addr, size, prot_val)) { + if (ioremap_page_range(vaddr, vaddr + size, phys_addr, prot)) { free_memtype(phys_addr, phys_addr + size); free_vm_area(area); return NULL; } - if (ioremap_page_range(vaddr, vaddr + size, phys_addr, prot)) { + if (ioremap_change_attr(vaddr, size, prot_val) < 0) { free_memtype(phys_addr, phys_addr + size); - free_vm_area(area); + vunmap(area->addr); return NULL; } @@ -375,8 +374,7 @@ static void __iomem *ioremap_default(resource_size_t phys_addr, * - UC_MINUS for non-WB-able memory with no other conflicting mappings * - Inherit from confliting mappings otherwise */ - err = reserve_memtype(phys_addr, phys_addr + size, - _PAGE_CACHE_WB, &flags); + err = reserve_memtype(phys_addr, phys_addr + size, -1, &flags); if (err < 0) return NULL; diff --git a/trunk/arch/x86/mm/pageattr.c b/trunk/arch/x86/mm/pageattr.c index 797f9f107cb6..d71e1b636ce6 100644 --- a/trunk/arch/x86/mm/pageattr.c +++ b/trunk/arch/x86/mm/pageattr.c @@ -945,94 +945,71 @@ int _set_memory_uc(unsigned long addr, int numpages) int set_memory_uc(unsigned long addr, int numpages) { - int ret; - /* * for now UC MINUS. see comments in ioremap_nocache() */ - ret = reserve_memtype(__pa(addr), __pa(addr) + numpages * PAGE_SIZE, - _PAGE_CACHE_UC_MINUS, NULL); - if (ret) - goto out_err; - - ret = _set_memory_uc(addr, numpages); - if (ret) - goto out_free; + if (reserve_memtype(__pa(addr), __pa(addr) + numpages * PAGE_SIZE, + _PAGE_CACHE_UC_MINUS, NULL)) + return -EINVAL; - return 0; - -out_free: - free_memtype(__pa(addr), __pa(addr) + numpages * PAGE_SIZE); -out_err: - return ret; + return _set_memory_uc(addr, numpages); } EXPORT_SYMBOL(set_memory_uc); int set_memory_array_uc(unsigned long *addr, int addrinarray) { - int i, j; - int ret; - + unsigned long start; + unsigned long end; + int i; /* * for now UC MINUS. see comments in ioremap_nocache() */ for (i = 0; i < addrinarray; i++) { - ret = reserve_memtype(__pa(addr[i]), __pa(addr[i]) + PAGE_SIZE, - _PAGE_CACHE_UC_MINUS, NULL); - if (ret) - goto out_free; + start = __pa(addr[i]); + for (end = start + PAGE_SIZE; i < addrinarray - 1; end += PAGE_SIZE) { + if (end != __pa(addr[i + 1])) + break; + i++; + } + if (reserve_memtype(start, end, _PAGE_CACHE_UC_MINUS, NULL)) + goto out; } - ret = change_page_attr_set(addr, addrinarray, + return change_page_attr_set(addr, addrinarray, __pgprot(_PAGE_CACHE_UC_MINUS), 1); - if (ret) - goto out_free; - - return 0; - -out_free: - for (j = 0; j < i; j++) - free_memtype(__pa(addr[j]), __pa(addr[j]) + PAGE_SIZE); - - return ret; +out: + for (i = 0; i < addrinarray; i++) { + unsigned long tmp = __pa(addr[i]); + + if (tmp == start) + break; + for (end = tmp + PAGE_SIZE; i < addrinarray - 1; end += PAGE_SIZE) { + if (end != __pa(addr[i + 1])) + break; + i++; + } + free_memtype(tmp, end); + } + return -EINVAL; } EXPORT_SYMBOL(set_memory_array_uc); int _set_memory_wc(unsigned long addr, int numpages) { - int ret; - ret = change_page_attr_set(&addr, numpages, - __pgprot(_PAGE_CACHE_UC_MINUS), 0); - - if (!ret) { - ret = change_page_attr_set(&addr, numpages, + return change_page_attr_set(&addr, numpages, __pgprot(_PAGE_CACHE_WC), 0); - } - return ret; } int set_memory_wc(unsigned long addr, int numpages) { - int ret; - if (!pat_enabled) return set_memory_uc(addr, numpages); - ret = reserve_memtype(__pa(addr), __pa(addr) + numpages * PAGE_SIZE, - _PAGE_CACHE_WC, NULL); - if (ret) - goto out_err; - - ret = _set_memory_wc(addr, numpages); - if (ret) - goto out_free; - - return 0; + if (reserve_memtype(__pa(addr), __pa(addr) + numpages * PAGE_SIZE, + _PAGE_CACHE_WC, NULL)) + return -EINVAL; -out_free: - free_memtype(__pa(addr), __pa(addr) + numpages * PAGE_SIZE); -out_err: - return ret; + return _set_memory_wc(addr, numpages); } EXPORT_SYMBOL(set_memory_wc); @@ -1044,31 +1021,29 @@ int _set_memory_wb(unsigned long addr, int numpages) int set_memory_wb(unsigned long addr, int numpages) { - int ret; - - ret = _set_memory_wb(addr, numpages); - if (ret) - return ret; - free_memtype(__pa(addr), __pa(addr) + numpages * PAGE_SIZE); - return 0; + + return _set_memory_wb(addr, numpages); } EXPORT_SYMBOL(set_memory_wb); int set_memory_array_wb(unsigned long *addr, int addrinarray) { int i; - int ret; - - ret = change_page_attr_clear(addr, addrinarray, - __pgprot(_PAGE_CACHE_MASK), 1); - if (ret) - return ret; - for (i = 0; i < addrinarray; i++) - free_memtype(__pa(addr[i]), __pa(addr[i]) + PAGE_SIZE); + for (i = 0; i < addrinarray; i++) { + unsigned long start = __pa(addr[i]); + unsigned long end; - return 0; + for (end = start + PAGE_SIZE; i < addrinarray - 1; end += PAGE_SIZE) { + if (end != __pa(addr[i + 1])) + break; + i++; + } + free_memtype(start, end); + } + return change_page_attr_clear(addr, addrinarray, + __pgprot(_PAGE_CACHE_MASK), 1); } EXPORT_SYMBOL(set_memory_array_wb); @@ -1161,8 +1136,6 @@ int set_pages_array_wb(struct page **pages, int addrinarray) retval = cpa_clear_pages_array(pages, addrinarray, __pgprot(_PAGE_CACHE_MASK)); - if (retval) - return retval; for (i = 0; i < addrinarray; i++) { start = (unsigned long)page_address(pages[i]); @@ -1170,7 +1143,7 @@ int set_pages_array_wb(struct page **pages, int addrinarray) free_memtype(start, end); } - return 0; + return retval; } EXPORT_SYMBOL(set_pages_array_wb); diff --git a/trunk/arch/x86/mm/pat.c b/trunk/arch/x86/mm/pat.c index e6718bb28065..c009a241d562 100644 --- a/trunk/arch/x86/mm/pat.c +++ b/trunk/arch/x86/mm/pat.c @@ -182,10 +182,10 @@ static unsigned long pat_x_mtrr_type(u64 start, u64 end, unsigned long req_type) u8 mtrr_type; mtrr_type = mtrr_type_lookup(start, end); - if (mtrr_type != MTRR_TYPE_WRBACK) - return _PAGE_CACHE_UC_MINUS; - - return _PAGE_CACHE_WB; + if (mtrr_type == MTRR_TYPE_UNCACHABLE) + return _PAGE_CACHE_UC; + if (mtrr_type == MTRR_TYPE_WRCOMB) + return _PAGE_CACHE_WC; } return req_type; @@ -352,13 +352,23 @@ int reserve_memtype(u64 start, u64 end, unsigned long req_type, return 0; } - /* - * Call mtrr_lookup to get the type hint. This is an - * optimization for /dev/mem mmap'ers into WB memory (BIOS - * tools and ACPI tools). Use WB request for WB memory and use - * UC_MINUS otherwise. - */ - actual_type = pat_x_mtrr_type(start, end, req_type & _PAGE_CACHE_MASK); + if (req_type == -1) { + /* + * Call mtrr_lookup to get the type hint. This is an + * optimization for /dev/mem mmap'ers into WB memory (BIOS + * tools and ACPI tools). Use WB request for WB memory and use + * UC_MINUS otherwise. + */ + u8 mtrr_type = mtrr_type_lookup(start, end); + + if (mtrr_type == MTRR_TYPE_WRBACK) + actual_type = _PAGE_CACHE_WB; + else + actual_type = _PAGE_CACHE_UC_MINUS; + } else { + actual_type = pat_x_mtrr_type(start, end, + req_type & _PAGE_CACHE_MASK); + } if (new_type) *new_type = actual_type; @@ -536,7 +546,9 @@ static inline int range_is_allowed(unsigned long pfn, unsigned long size) int phys_mem_access_prot_allowed(struct file *file, unsigned long pfn, unsigned long size, pgprot_t *vma_prot) { - unsigned long flags = _PAGE_CACHE_WB; + u64 offset = ((u64) pfn) << PAGE_SHIFT; + unsigned long flags = -1; + int retval; if (!range_is_allowed(pfn, size)) return 0; @@ -564,11 +576,64 @@ int phys_mem_access_prot_allowed(struct file *file, unsigned long pfn, } #endif + /* + * With O_SYNC, we can only take UC_MINUS mapping. Fail if we cannot. + * + * Without O_SYNC, we want to get + * - WB for WB-able memory and no other conflicting mappings + * - UC_MINUS for non-WB-able memory with no other conflicting mappings + * - Inherit from confliting mappings otherwise + */ + if (flags != -1) { + retval = reserve_memtype(offset, offset + size, flags, NULL); + } else { + retval = reserve_memtype(offset, offset + size, -1, &flags); + } + + if (retval < 0) + return 0; + + if (((pfn < max_low_pfn_mapped) || + (pfn >= (1UL<<(32 - PAGE_SHIFT)) && pfn < max_pfn_mapped)) && + ioremap_change_attr((unsigned long)__va(offset), size, flags) < 0) { + free_memtype(offset, offset + size); + printk(KERN_INFO + "%s:%d /dev/mem ioremap_change_attr failed %s for %Lx-%Lx\n", + current->comm, current->pid, + cattr_name(flags), + offset, (unsigned long long)(offset + size)); + return 0; + } + *vma_prot = __pgprot((pgprot_val(*vma_prot) & ~_PAGE_CACHE_MASK) | flags); return 1; } +void map_devmem(unsigned long pfn, unsigned long size, pgprot_t vma_prot) +{ + unsigned long want_flags = (pgprot_val(vma_prot) & _PAGE_CACHE_MASK); + u64 addr = (u64)pfn << PAGE_SHIFT; + unsigned long flags; + + reserve_memtype(addr, addr + size, want_flags, &flags); + if (flags != want_flags) { + printk(KERN_INFO + "%s:%d /dev/mem expected mapping type %s for %Lx-%Lx, got %s\n", + current->comm, current->pid, + cattr_name(want_flags), + addr, (unsigned long long)(addr + size), + cattr_name(flags)); + } +} + +void unmap_devmem(unsigned long pfn, unsigned long size, pgprot_t vma_prot) +{ + u64 addr = (u64)pfn << PAGE_SHIFT; + + free_memtype(addr, addr + size); +} + /* * Change the memory type for the physial address range in kernel identity * mapping space if that range is a part of identity map. @@ -606,8 +671,8 @@ static int reserve_pfn_range(u64 paddr, unsigned long size, pgprot_t *vma_prot, { int is_ram = 0; int ret; + unsigned long flags; unsigned long want_flags = (pgprot_val(*vma_prot) & _PAGE_CACHE_MASK); - unsigned long flags = want_flags; is_ram = pat_pagerange_is_ram(paddr, paddr + size); @@ -669,28 +734,29 @@ static void free_pfn_range(u64 paddr, unsigned long size) * * If the vma has a linear pfn mapping for the entire range, we get the prot * from pte and reserve the entire vma range with single reserve_pfn_range call. + * Otherwise, we reserve the entire vma range, my ging through the PTEs page + * by page to get physical address and protection. */ int track_pfn_vma_copy(struct vm_area_struct *vma) { + int retval = 0; + unsigned long i, j; resource_size_t paddr; unsigned long prot; - unsigned long vma_size = vma->vm_end - vma->vm_start; + unsigned long vma_start = vma->vm_start; + unsigned long vma_end = vma->vm_end; + unsigned long vma_size = vma_end - vma_start; pgprot_t pgprot; if (!pat_enabled) return 0; - /* - * For now, only handle remap_pfn_range() vmas where - * is_linear_pfn_mapping() == TRUE. Handling of - * vm_insert_pfn() is TBD. - */ if (is_linear_pfn_mapping(vma)) { /* * reserve the whole chunk covered by vma. We need the * starting address and protection from pte. */ - if (follow_phys(vma, vma->vm_start, 0, &prot, &paddr)) { + if (follow_phys(vma, vma_start, 0, &prot, &paddr)) { WARN_ON_ONCE(1); return -EINVAL; } @@ -698,7 +764,28 @@ int track_pfn_vma_copy(struct vm_area_struct *vma) return reserve_pfn_range(paddr, vma_size, &pgprot, 1); } + /* reserve entire vma page by page, using pfn and prot from pte */ + for (i = 0; i < vma_size; i += PAGE_SIZE) { + if (follow_phys(vma, vma_start + i, 0, &prot, &paddr)) + continue; + + pgprot = __pgprot(prot); + retval = reserve_pfn_range(paddr, PAGE_SIZE, &pgprot, 1); + if (retval) + goto cleanup_ret; + } return 0; + +cleanup_ret: + /* Reserve error: Cleanup partial reservation and return error */ + for (j = 0; j < i; j += PAGE_SIZE) { + if (follow_phys(vma, vma_start + j, 0, &prot, &paddr)) + continue; + + free_pfn_range(paddr, PAGE_SIZE); + } + + return retval; } /* @@ -708,28 +795,50 @@ int track_pfn_vma_copy(struct vm_area_struct *vma) * prot is passed in as a parameter for the new mapping. If the vma has a * linear pfn mapping for the entire range reserve the entire vma range with * single reserve_pfn_range call. + * Otherwise, we look t the pfn and size and reserve only the specified range + * page by page. + * + * Note that this function can be called with caller trying to map only a + * subrange/page inside the vma. */ int track_pfn_vma_new(struct vm_area_struct *vma, pgprot_t *prot, unsigned long pfn, unsigned long size) { + int retval = 0; + unsigned long i, j; + resource_size_t base_paddr; resource_size_t paddr; - unsigned long vma_size = vma->vm_end - vma->vm_start; + unsigned long vma_start = vma->vm_start; + unsigned long vma_end = vma->vm_end; + unsigned long vma_size = vma_end - vma_start; if (!pat_enabled) return 0; - /* - * For now, only handle remap_pfn_range() vmas where - * is_linear_pfn_mapping() == TRUE. Handling of - * vm_insert_pfn() is TBD. - */ if (is_linear_pfn_mapping(vma)) { /* reserve the whole chunk starting from vm_pgoff */ paddr = (resource_size_t)vma->vm_pgoff << PAGE_SHIFT; return reserve_pfn_range(paddr, vma_size, prot, 0); } + /* reserve page by page using pfn and size */ + base_paddr = (resource_size_t)pfn << PAGE_SHIFT; + for (i = 0; i < size; i += PAGE_SIZE) { + paddr = base_paddr + i; + retval = reserve_pfn_range(paddr, PAGE_SIZE, prot, 0); + if (retval) + goto cleanup_ret; + } return 0; + +cleanup_ret: + /* Reserve error: Cleanup partial reservation and return error */ + for (j = 0; j < i; j += PAGE_SIZE) { + paddr = base_paddr + j; + free_pfn_range(paddr, PAGE_SIZE); + } + + return retval; } /* @@ -740,23 +849,39 @@ int track_pfn_vma_new(struct vm_area_struct *vma, pgprot_t *prot, void untrack_pfn_vma(struct vm_area_struct *vma, unsigned long pfn, unsigned long size) { + unsigned long i; resource_size_t paddr; - unsigned long vma_size = vma->vm_end - vma->vm_start; + unsigned long prot; + unsigned long vma_start = vma->vm_start; + unsigned long vma_end = vma->vm_end; + unsigned long vma_size = vma_end - vma_start; if (!pat_enabled) return; - /* - * For now, only handle remap_pfn_range() vmas where - * is_linear_pfn_mapping() == TRUE. Handling of - * vm_insert_pfn() is TBD. - */ if (is_linear_pfn_mapping(vma)) { /* free the whole chunk starting from vm_pgoff */ paddr = (resource_size_t)vma->vm_pgoff << PAGE_SHIFT; free_pfn_range(paddr, vma_size); return; } + + if (size != 0 && size != vma_size) { + /* free page by page, using pfn and size */ + paddr = (resource_size_t)pfn << PAGE_SHIFT; + for (i = 0; i < size; i += PAGE_SIZE) { + paddr = paddr + i; + free_pfn_range(paddr, PAGE_SIZE); + } + } else { + /* free entire vma, page by page, using the pfn from pte */ + for (i = 0; i < vma_size; i += PAGE_SIZE) { + if (follow_phys(vma, vma_start + i, 0, &prot, &paddr)) + continue; + + free_pfn_range(paddr, PAGE_SIZE); + } + } } pgprot_t pgprot_writecombine(pgprot_t prot) diff --git a/trunk/drivers/char/mem.c b/trunk/drivers/char/mem.c index 8f05c38c2f06..3586b3b3df3f 100644 --- a/trunk/drivers/char/mem.c +++ b/trunk/drivers/char/mem.c @@ -301,7 +301,33 @@ static inline int private_mapping_ok(struct vm_area_struct *vma) } #endif +void __attribute__((weak)) +map_devmem(unsigned long pfn, unsigned long len, pgprot_t prot) +{ + /* nothing. architectures can override. */ +} + +void __attribute__((weak)) +unmap_devmem(unsigned long pfn, unsigned long len, pgprot_t prot) +{ + /* nothing. architectures can override. */ +} + +static void mmap_mem_open(struct vm_area_struct *vma) +{ + map_devmem(vma->vm_pgoff, vma->vm_end - vma->vm_start, + vma->vm_page_prot); +} + +static void mmap_mem_close(struct vm_area_struct *vma) +{ + unmap_devmem(vma->vm_pgoff, vma->vm_end - vma->vm_start, + vma->vm_page_prot); +} + static struct vm_operations_struct mmap_mem_ops = { + .open = mmap_mem_open, + .close = mmap_mem_close, #ifdef CONFIG_HAVE_IOREMAP_PROT .access = generic_access_phys #endif @@ -336,6 +362,7 @@ static int mmap_mem(struct file * file, struct vm_area_struct * vma) vma->vm_pgoff, size, vma->vm_page_prot)) { + unmap_devmem(vma->vm_pgoff, size, vma->vm_page_prot); return -EAGAIN; } return 0; diff --git a/trunk/fs/afs/file.c b/trunk/fs/afs/file.c index 0149dab365e7..7a1d942ef68d 100644 --- a/trunk/fs/afs/file.c +++ b/trunk/fs/afs/file.c @@ -102,7 +102,6 @@ int afs_release(struct inode *inode, struct file *file) return 0; } -#ifdef CONFIG_AFS_FSCACHE /* * deal with notification that a page was read from the cache */ @@ -118,7 +117,6 @@ static void afs_file_readpage_read_complete(struct page *page, SetPageUptodate(page); unlock_page(page); } -#endif /* * AFS read page from file, directory or symlink diff --git a/trunk/fs/fat/Kconfig b/trunk/fs/fat/Kconfig index 182f9ffe2b51..d0a69ff25375 100644 --- a/trunk/fs/fat/Kconfig +++ b/trunk/fs/fat/Kconfig @@ -95,6 +95,3 @@ config FAT_DEFAULT_IOCHARSET Note that "utf8" is not recommended for FAT filesystems. If unsure, you shouldn't set "utf8" here. See for more information. - - Enable any character sets you need in File Systems/Native Language - Support. diff --git a/trunk/fs/splice.c b/trunk/fs/splice.c index 666953d59a35..5384a90665d0 100644 --- a/trunk/fs/splice.c +++ b/trunk/fs/splice.c @@ -614,6 +614,7 @@ static void wakeup_pipe_writers(struct pipe_inode_info *pipe) * @actor: handler that splices the data * * Description: + * This function loops over the pipe and calls @actor to do the * actual moving of a single struct pipe_buffer to the desired * destination. It returns when there's no more buffers left in @@ -710,7 +711,7 @@ EXPORT_SYMBOL(splice_from_pipe_next); /** * splice_from_pipe_begin - start splicing from pipe - * @sd: information about the splice operation + * @pipe: pipe to splice from * * Description: * This function should be called before a loop containing diff --git a/trunk/include/linux/rcutree.h b/trunk/include/linux/rcutree.h index 58b2aa5312b9..0cdda00f2b2a 100644 --- a/trunk/include/linux/rcutree.h +++ b/trunk/include/linux/rcutree.h @@ -161,8 +161,9 @@ struct rcu_data { unsigned long offline_fqs; /* Kicked due to being offline. */ unsigned long resched_ipi; /* Sent a resched IPI. */ - /* 5) For future __rcu_pending statistics. */ + /* 5) state to allow this CPU to force_quiescent_state on others */ long n_rcu_pending; /* rcu_pending() calls since boot. */ + long n_rcu_pending_force_qs; /* when to force quiescent states. */ int cpu; }; diff --git a/trunk/kernel/rcutree.c b/trunk/kernel/rcutree.c index d2a372fb0b9b..7f3266922572 100644 --- a/trunk/kernel/rcutree.c +++ b/trunk/kernel/rcutree.c @@ -530,6 +530,8 @@ static void note_new_gpnum(struct rcu_state *rsp, struct rcu_data *rdp) rdp->qs_pending = 1; rdp->passed_quiesc = 0; rdp->gpnum = rsp->gpnum; + rdp->n_rcu_pending_force_qs = rdp->n_rcu_pending + + RCU_JIFFIES_TILL_FORCE_QS; } /* @@ -576,6 +578,8 @@ rcu_start_gp(struct rcu_state *rsp, unsigned long flags) rsp->gpnum++; rsp->signaled = RCU_GP_INIT; /* Hold off force_quiescent_state. */ rsp->jiffies_force_qs = jiffies + RCU_JIFFIES_TILL_FORCE_QS; + rdp->n_rcu_pending_force_qs = rdp->n_rcu_pending + + RCU_JIFFIES_TILL_FORCE_QS; record_gp_stall_check_time(rsp); dyntick_record_completed(rsp, rsp->completed - 1); note_new_gpnum(rsp, rdp); @@ -1051,6 +1055,7 @@ static void force_quiescent_state(struct rcu_state *rsp, int relaxed) { unsigned long flags; long lastcomp; + struct rcu_data *rdp = rsp->rda[smp_processor_id()]; struct rcu_node *rnp = rcu_get_root(rsp); u8 signaled; @@ -1061,13 +1066,16 @@ static void force_quiescent_state(struct rcu_state *rsp, int relaxed) return; /* Someone else is already on the job. */ } if (relaxed && - (long)(rsp->jiffies_force_qs - jiffies) >= 0) + (long)(rsp->jiffies_force_qs - jiffies) >= 0 && + (rdp->n_rcu_pending_force_qs - rdp->n_rcu_pending) >= 0) goto unlock_ret; /* no emergency and done recently. */ rsp->n_force_qs++; spin_lock(&rnp->lock); lastcomp = rsp->completed; signaled = rsp->signaled; rsp->jiffies_force_qs = jiffies + RCU_JIFFIES_TILL_FORCE_QS; + rdp->n_rcu_pending_force_qs = rdp->n_rcu_pending + + RCU_JIFFIES_TILL_FORCE_QS; if (lastcomp == rsp->gpnum) { rsp->n_force_qs_ngp++; spin_unlock(&rnp->lock); @@ -1136,7 +1144,8 @@ __rcu_process_callbacks(struct rcu_state *rsp, struct rcu_data *rdp) * If an RCU GP has gone long enough, go check for dyntick * idle CPUs and, if needed, send resched IPIs. */ - if ((long)(ACCESS_ONCE(rsp->jiffies_force_qs) - jiffies) < 0) + if ((long)(ACCESS_ONCE(rsp->jiffies_force_qs) - jiffies) < 0 || + (rdp->n_rcu_pending_force_qs - rdp->n_rcu_pending) < 0) force_quiescent_state(rsp, 1); /* @@ -1221,7 +1230,8 @@ __call_rcu(struct rcu_head *head, void (*func)(struct rcu_head *rcu), if (unlikely(++rdp->qlen > qhimark)) { rdp->blimit = LONG_MAX; force_quiescent_state(rsp, 0); - } else if ((long)(ACCESS_ONCE(rsp->jiffies_force_qs) - jiffies) < 0) + } else if ((long)(ACCESS_ONCE(rsp->jiffies_force_qs) - jiffies) < 0 || + (rdp->n_rcu_pending_force_qs - rdp->n_rcu_pending) < 0) force_quiescent_state(rsp, 1); local_irq_restore(flags); } @@ -1280,7 +1290,8 @@ static int __rcu_pending(struct rcu_state *rsp, struct rcu_data *rdp) /* Has an RCU GP gone long enough to send resched IPIs &c? */ if (ACCESS_ONCE(rsp->completed) != ACCESS_ONCE(rsp->gpnum) && - ((long)(ACCESS_ONCE(rsp->jiffies_force_qs) - jiffies) < 0)) + ((long)(ACCESS_ONCE(rsp->jiffies_force_qs) - jiffies) < 0 || + (rdp->n_rcu_pending_force_qs - rdp->n_rcu_pending) < 0)) return 1; /* nothing to do */ diff --git a/trunk/kernel/rcutree_trace.c b/trunk/kernel/rcutree_trace.c index 4b1875ba9404..4ee954f6a8d5 100644 --- a/trunk/kernel/rcutree_trace.c +++ b/trunk/kernel/rcutree_trace.c @@ -49,12 +49,14 @@ static void print_one_rcu_data(struct seq_file *m, struct rcu_data *rdp) { if (!rdp->beenonline) return; - seq_printf(m, "%3d%cc=%ld g=%ld pq=%d pqc=%ld qp=%d", + seq_printf(m, "%3d%cc=%ld g=%ld pq=%d pqc=%ld qp=%d rpfq=%ld rp=%x", rdp->cpu, cpu_is_offline(rdp->cpu) ? '!' : ' ', rdp->completed, rdp->gpnum, rdp->passed_quiesc, rdp->passed_quiesc_completed, - rdp->qs_pending); + rdp->qs_pending, + rdp->n_rcu_pending_force_qs - rdp->n_rcu_pending, + (int)(rdp->n_rcu_pending & 0xffff)); #ifdef CONFIG_NO_HZ seq_printf(m, " dt=%d/%d dn=%d df=%lu", rdp->dynticks->dynticks, @@ -100,12 +102,14 @@ static void print_one_rcu_data_csv(struct seq_file *m, struct rcu_data *rdp) { if (!rdp->beenonline) return; - seq_printf(m, "%d,%s,%ld,%ld,%d,%ld,%d", + seq_printf(m, "%d,%s,%ld,%ld,%d,%ld,%d,%ld,%ld", rdp->cpu, cpu_is_offline(rdp->cpu) ? "\"Y\"" : "\"N\"", rdp->completed, rdp->gpnum, rdp->passed_quiesc, rdp->passed_quiesc_completed, - rdp->qs_pending); + rdp->qs_pending, + rdp->n_rcu_pending_force_qs - rdp->n_rcu_pending, + rdp->n_rcu_pending); #ifdef CONFIG_NO_HZ seq_printf(m, ",%d,%d,%d,%lu", rdp->dynticks->dynticks, @@ -119,7 +123,7 @@ static void print_one_rcu_data_csv(struct seq_file *m, struct rcu_data *rdp) static int show_rcudata_csv(struct seq_file *m, void *unused) { - seq_puts(m, "\"CPU\",\"Online?\",\"c\",\"g\",\"pq\",\"pqc\",\"pq\","); + seq_puts(m, "\"CPU\",\"Online?\",\"c\",\"g\",\"pq\",\"pqc\",\"pq\",\"rpfq\",\"rp\","); #ifdef CONFIG_NO_HZ seq_puts(m, "\"dt\",\"dt nesting\",\"dn\",\"df\","); #endif /* #ifdef CONFIG_NO_HZ */ diff --git a/trunk/kernel/sched.c b/trunk/kernel/sched.c index b902e587a3a0..5724508c3b66 100644 --- a/trunk/kernel/sched.c +++ b/trunk/kernel/sched.c @@ -4846,7 +4846,7 @@ void scheduler_tick(void) #endif } -notrace unsigned long get_parent_ip(unsigned long addr) +unsigned long get_parent_ip(unsigned long addr) { if (in_lock_functions(addr)) { addr = CALLER_ADDR2; @@ -7367,12 +7367,8 @@ static int sched_domain_debug_one(struct sched_domain *sd, int cpu, int level, cpumask_or(groupmask, groupmask, sched_group_cpus(group)); cpulist_scnprintf(str, sizeof(str), sched_group_cpus(group)); - - printk(KERN_CONT " %s", str); - if (group->__cpu_power != SCHED_LOAD_SCALE) { - printk(KERN_CONT " (__cpu_power = %d)", - group->__cpu_power); - } + printk(KERN_CONT " %s (__cpu_power = %d)", str, + group->__cpu_power); group = group->next; } while (group != sd->groups); diff --git a/trunk/kernel/softirq.c b/trunk/kernel/softirq.c index b525dd348511..2fecefacdc5b 100644 --- a/trunk/kernel/softirq.c +++ b/trunk/kernel/softirq.c @@ -472,9 +472,9 @@ void tasklet_kill(struct tasklet_struct *t) printk("Attempt to kill tasklet from interrupt\n"); while (test_and_set_bit(TASKLET_STATE_SCHED, &t->state)) { - do { + do yield(); - } while (test_bit(TASKLET_STATE_SCHED, &t->state)); + while (test_bit(TASKLET_STATE_SCHED, &t->state)); } tasklet_unlock_wait(t); clear_bit(TASKLET_STATE_SCHED, &t->state); diff --git a/trunk/kernel/trace/trace_branch.c b/trunk/kernel/trace/trace_branch.c index 8333715e4066..ad8c22efff41 100644 --- a/trunk/kernel/trace/trace_branch.c +++ b/trunk/kernel/trace/trace_branch.c @@ -155,13 +155,6 @@ static enum print_line_t trace_branch_print(struct trace_iterator *iter, return TRACE_TYPE_HANDLED; } -static void branch_print_header(struct seq_file *s) -{ - seq_puts(s, "# TASK-PID CPU# TIMESTAMP CORRECT" - " FUNC:FILE:LINE\n"); - seq_puts(s, "# | | | | | " - " |\n"); -} static struct trace_event trace_branch_event = { .type = TRACE_BRANCH, @@ -176,7 +169,6 @@ static struct tracer branch_trace __read_mostly = #ifdef CONFIG_FTRACE_SELFTEST .selftest = trace_selftest_startup_branch, #endif /* CONFIG_FTRACE_SELFTEST */ - .print_header = branch_print_header, }; __init static int init_branch_tracer(void) diff --git a/trunk/kernel/trace/trace_power.c b/trunk/kernel/trace/trace_power.c index 118439709fb7..bae791ebcc51 100644 --- a/trunk/kernel/trace/trace_power.c +++ b/trunk/kernel/trace/trace_power.c @@ -186,12 +186,6 @@ static enum print_line_t power_print_line(struct trace_iterator *iter) return TRACE_TYPE_UNHANDLED; } -static void power_print_header(struct seq_file *s) -{ - seq_puts(s, "# TIMESTAMP STATE EVENT\n"); - seq_puts(s, "# | | |\n"); -} - static struct tracer power_tracer __read_mostly = { .name = "power", @@ -200,7 +194,6 @@ static struct tracer power_tracer __read_mostly = .stop = stop_power_trace, .reset = power_trace_reset, .print_line = power_print_line, - .print_header = power_print_header, }; static int init_power_trace(void)