aboutsummaryrefslogtreecommitdiff
path: root/arch
AgeCommit message (Collapse)Author
2013-03-14ARM: EXYNOS: Add G3D related clocks for EXYNOS4 seriesVikas Sajjan
Add G3D related clocks for EXYNOS4 series of SoCs. Also update VPLL settings which are used by the G3D block. Signed-off-by: Vikas C Sajjan <vikas.sajjan@linaro.org> Signed-off-by: Tushar Behera <tushar.behera@linaro.org>
2013-03-14ARM: EXYNOS: Add platform support for G3DSangwook Lee
Added Power Domain functions for G3D(Mali) Exynos 4210 Signed-off-by: Sangwook Lee <sangwook.lee@linaro.org> Signed-off-by: Tushar Behera <tushar.behera@linaro.org>
2013-03-14mali: update Mali memory configurationSangwook Lee
This patch fixes memory validation error. When 3.4 kernel assigns Framebuffer's address above 0x60000000, Mali driver makes errors as like this: MALI PHYSICAL RANGE VALIDATION ERROR! The range supplied was: phys_base=0x6D900000, size=0x004B0000 CC: Chunsang Jeong <chunsang.jeong@linaro.org> CC: Tushar Behera <tushar.behera@linaro.org> Signed-off-by: Sangwook Lee <sangwook.lee@linaro.org>
2013-03-14mali: Remove compile time warningsTushar Behera
Signed-off-by: Tushar Behera <tushar.behera@linaro.org>
2013-03-14origen: mali: mali and ump config filesAngus Ainslie
These are configuration files for the Origen Exynos low cost board Signed-off-by: Angus Ainslie <angus.ainslie@linaro.org>
2013-03-14ARM: EXYNOS: Add HDMI support on Origen_quadSachin Kamat
Currently fails with following error when run test application: s5p-hdmi exynos4-hdmi: hdmiphy's pll could not reach steady state. Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org> Signed-off-by: Tushar Behera <tushar.behera@linaro.org>
2013-03-14ARM: EXYNOS: Add hdmi related entry for EXYNOS4_DT machineTushar Behera
Signed-off-by: Tushar Behera <tushar.behera@linaro.org>
2013-03-14ARM: EXYNOS: Add I2S clock supportSachin Kamat
Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
2013-03-14ARM: EXYNOS: Add I2S based RT5631 audio support for Origen_quadSachin Kamat
Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
2013-03-14Revert "ARM: EXYNOS: Remove wrong I2S0 clock from peril clock"Tushar Behera
This reverts commit 4ec673ae05f787f89819e76c34e7d6a21f7d0a8f. Though iis clock for I2S0 has been removed, it has not been added through Audio subsystem block. It should be removed only after adding that clock. Signed-off-by: Tushar Behera <tushar.behera@linaro.org>
2013-03-14ARM: EXYNOS: Add audio subsystem clocksGiridhar Maruthy
When the I2S bus acts as master, it needs to configure the source clocks. Added bus_clk as the source clock for I2S controller. Since bus_clk uses fout_epll, also added configuration settings for fout_epll. Signed-off-by: Giridhar Maruthy <giridhar.maruthy@linaro.org> Signed-off-by: Tushar Behera <tushar.behera@linaro.org> Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
2013-03-14ARM: Samsung: use CMA for 2 memory banks for s5p-mfc deviceMarek Szyprowski
Replace custom memory bank initialization using memblock_reserve and dma_declare_coherent with a single call to CMA's dma_declare_contiguous. Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com> Acked-by: Arnd Bergmann <arnd@arndb.de> Signed-off-by: Tushar Behera <tushar.behera@linaro.org>
2013-03-14ARM: EXYNOS: Add EHCI device and set up USB 3503 hub on Origen Quad boardInderpal Singh
The network and USB ports on origen quad board are connected through USB 3503 hub. This patch adds the ehci platform device and sets up the usb hub so that network and USB ports can be used. Signed-off-by: Inderpal Singh <inderpal.singh@linaro.org> Signed-off-by: Tushar Behera <tushar.behera@linaro.org>
2013-03-14ARM: EXYNOS: Setup USB HSIC ports for EXYNOS4412Inderpal Singh
The USB HSIC on exynos4412 is differant than the exynos4210 HSIC. This patch adds all the new registers and initializes the USB HSIC properly. Signed-off-by: Inderpal Singh <inderpal.singh@linaro.org> Signed-off-by: Tushar Behera <tushar.behera@linaro.org>
2013-03-14ARM: EXYNOS: Add keypad support on Origen quadSachin Kamat
Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
2013-03-14ARM: EXYNOS: Add touch screen support on Origen_quadSachin Kamat
Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
2013-03-14ARM: EXYNOS: Add touch irq numberTushar Behera
Signed-off-by: Tushar Behera <tushar.behera@linaro.org>
2013-03-14ARM: EXYNOS: Update I2C 1 and 3 settings as per Insignal codeSachin Kamat
Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org> Signed-off-by: Tushar Behera <tushar.behera@linaro.org>
2013-03-14ARM: EXYNOS: GPIO: Add GPIO support for EXYNOS4412Sachin Kamat
Add GPIO support for EXYNOS4210. 1. Increased the length for gpio part 3 to accomodate all the SFRs of EXYNOS4412 gpio part 3. 2. Added additional part4 for GPVs. 3. Added new GPMs 4. Updated S3C_GPIO_END as with the inclusion of new gpios, EXYNOS4 has more gpios than exynos5. Signed-off-by: Inderpal Singh <inderpal.singh@linaro.org> Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
2013-03-14ARM: EXYNOS: Add missing I2C macrosSachin Kamat
Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
2013-03-14ARM: EXYNOS: Add firmware call for L2X0 initializationTushar Behera
Signed-off-by: Tushar Behera <tushar.behera@linaro.org>
2013-03-14ARM: EXYNOS: Add secure firmware support for non-DT boardTushar Behera
Signed-off-by: Tushar Behera <tushar.behera@linaro.org>
2013-03-14CONFIG: ORIGEN_QUAD: ANDROID: Disable CPU_IDLE support temporarilyTushar Behera
Currently there is a boot-time kernel panic when CPU_IDLE support is enabled. Disabling the support till a fix has been found. Signed-off-by: Tushar Behera <tushar.behera@linaro.org>
2013-03-14ARM: EXYNOS: Add secure firmware support to secondary CPU bring-upTomasz Figa
Boards using secure firmware must use different CPU boot registers and call secure firmware to boot the CPU. Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com> Signed-off-by: Tomasz Figa <t.figa@samsung.com> Signed-off-by: Kukjin Kim <kgene.kim@samsung.com>
2013-03-14ARM: EXYNOS: Add IO mapping for non-secure SYSRAM.Tomasz Figa
On TrustZone-enabled boards the non-secure SYSRAM is used for secondary CPU bring-up, so add a mapping for it. Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com> Signed-off-by: Tomasz Figa <t.figa@samsung.com> Signed-off-by: Kukjin Kim <kgene.kim@samsung.com>
2013-03-14ARM: EXYNOS: Add support for Exynos secure firmwareTomasz Figa
Some Exynos-based boards contain secure firmware and must use firmware operations to set up some hardware. This patch adds firmware operations for Exynos secure firmware and a way for board code and device tree to specify that they must be used. Example of use: In board code: ...MACHINE_START(...) /* ... */ .init_early = exynos_firmware_init, /* ... */ MACHINE_END In device tree: / { /* ... */ firmware@0203F000 { compatible = "samsung,secure-firmware"; reg = <0x0203F000 0x1000>; }; /* ... */ }; Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com> Signed-off-by: Tomasz Figa <t.figa@samsung.com> Signed-off-by: Kukjin Kim <kgene.kim@samsung.com>
2013-03-14ARM: EXYNOS: Add support for secure monitor callsTomasz Figa
Some boards use secure monitor calls to communicate with secure firmware. This patch adds exynos_smc function which uses smc assembly instruction to do secure monitor calls. Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com> Signed-off-by: Tomasz Figa <t.figa@samsung.com> Signed-off-by: Kukjin Kim <kgene.kim@samsung.com>
2013-03-14ARM: Add interface for registering and calling firmware-specific operationsTomasz Figa
Some boards are running with secure firmware running in TrustZone secure world, which changes the way some things have to be initialized. This patch adds an interface for platforms to specify available firmware operations and call them. A wrapper macro, call_firmware_op(), checks if the operation is provided and calls it if so, otherwise returns -ENOSYS to allow fallback to legacy operation.. By default no operations are provided. Example of use: In code using firmware ops: __raw_writel(virt_to_phys(exynos4_secondary_startup), CPU1_BOOT_REG); /* Call Exynos specific smc call */ if (call_firmware_op(cpu_boot, cpu) == -ENOSYS) cpu_boot_legacy(...); /* Try legacy way */ gic_raise_softirq(cpumask_of(cpu), 1); In board-/platform-specific code: static int platformX_do_idle(void) { /* tell platformX firmware to enter idle */ return 0; } static int platformX_cpu_boot(int i) { /* tell platformX firmware to boot CPU i */ return 0; } static const struct firmware_ops platformX_firmware_ops = { .do_idle = exynos_do_idle, .cpu_boot = exynos_cpu_boot, /* other operations not available on platformX */ }; static void __init board_init_early(void) { register_firmware_ops(&platformX_firmware_ops); } Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com> Signed-off-by: Tomasz Figa <t.figa@samsung.com> Signed-off-by: Kukjin Kim <kgene.kim@samsung.com>
2013-03-14ARM: Fix compile error if CONFIG_ARM_UNWIND is not definedAl Stone
If CONFIG_ARM_UNWIND is not set for some reason, module_finalize() will not compile due to a missing declaration for 'err'. Moved the declaration outside of an #ifdef so that the code will compile regardless of the value of CONFIG_ARM_UNWIND. Signed-off-by: Al Stone <ahs3@redhat.com> Signed-off-by: Tushar Behera <tushar.behera@linaro.org>
2013-03-14ARM: EXYNOS4: Add support for rtc wakeupInderpal Singh
Set the gic arch extension callback to support rtc wakeup. Signed-off-by: Inderpal Singh <inderpal.singh@linaro.org> Signed-off-by: Tushar Behera <tushar.behera@linaro.org>
2013-03-14CONFIG: ORIGEN_QUAD: ANDROID: Initial config fileTushar Behera
Signed-off-by: Tushar Behera <tushar.behera@linaro.org>
2013-03-14ARM: EXYNOS: Add support for Origen quad core boardSachin Kamat
Samsung Exynos4412 based low cost board is called Origen Quad. Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org> Signed-off-by: Inderpal Singh <inderpal.singh@linaro.org> Signed-off-by: Tushar Behera <tushar.behera@linaro.org>
2013-03-12ARM: SAMSUNG: Fix compilation error with ldr instructionFahad Kunnathadi
ldr r2,[ \r3, #(VALUE) ] changed to ldr r2,[\r3, #(VALUE) ] , removed extra space after the brace to resolve compilation error. Fixes following error. arch/arm/kernel/debug.S: Assembler messages: arch/arm/kernel/debug.S:83: Error: ARM register expected -- `ldr r2,[ r3,#(0x08)]' arch/arm/kernel/debug.S:83: Error: ARM register expected -- `ldr r2,[ r3,#(0x18)]' arch/arm/kernel/debug.S:83: Error: ARM register expected -- `ldr r2,[ r3,#(0x10)]' arch/arm/kernel/debug.S:85: Error: ARM register expected -- `ldr r2,[ r3,#(0x08)]' arch/arm/kernel/debug.S:85: Error: ARM register expected -- `ldr r2,[ r3,#(0x18)]' arch/arm/kernel/debug.S:85: Error: ARM register expected -- `ldr r2,[ r3,#(0x10)]' Signed-off-by: Fahad Kunnathadi <fahad.k@linaro.org> Signed-off-by: Tushar Behera <tushar.behera@linaro.org>
2013-02-19Merge branch 'tracking-llct-v3.8-misc-fixes' into ↵llct-20130219.0Andrey Konovalov
merge-linux-linaro-core-tracking
2013-02-19Merge branch 'tracking-ste-tb-ethernet' into merge-linux-linaro-core-trackingAndrey Konovalov
2013-02-19Merge branch 'tracking-kvm-arm-v17' into merge-linux-linaro-core-trackingAndrey Konovalov
2013-02-19Merge branch 'tracking-big-LITTLE-MP-master-v15' into ↵Andrey Konovalov
merge-linux-linaro-core-tracking
2013-02-19Merge branch 'tracking-linaro-android-3.8' into merge-linux-linaro-core-trackingAndrey Konovalov
2013-02-15Merge tag 'stable/for-linus-3.8-rc7-tag-two' of ↵Linus Torvalds
git://git.kernel.org/pub/scm/linux/kernel/git/konrad/xen Pull xen fixes from Konrad Rzeszutek Wilk: "Two fixes: - A simple bug-fix for redundant NULL check. - CVE-2013-0228/XSA-42: x86/xen: don't assume %ds is usable in xen_iret for 32-bit PVOPS and two reverts: - Revert the PVonHVM kexec. The patch introduces a regression with older hypervisor stacks, such as Xen 4.1." * tag 'stable/for-linus-3.8-rc7-tag-two' of git://git.kernel.org/pub/scm/linux/kernel/git/konrad/xen: Revert "xen PVonHVM: use E820_Reserved area for shared_info" Revert "xen/PVonHVM: fix compile warning in init_hvm_pv_info" xen: remove redundant NULL check before unregister_and_remove_pcpu(). x86/xen: don't assume %ds is usable in xen_iret for 32-bit PVOPS.
2013-02-15Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparcLinus Torvalds
Pull sparc fixes from David Miller: "A couple small fixes for sparc including some THP brown-paper-bag material: 1) During the merging of all the THP support for various architectures, sparc missed adding a HAVE_ARCH_TRANSPARENT_HUGEPAGE to it's Kconfig, oops. 2) Sparc needs to be mindful of hugepages in get_user_pages_fast(). 3) Fix memory leak in SBUS probe, from Cong Ding. 4) The sunvdc virtual disk client driver has a test of the bitmask of vdisk server supported operations which was off by one bit" * git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc: sunvdc: Fix off-by-one in generic_request(). sparc64: Fix get_user_pages_fast() wrt. THP. sparc64: Add missing HAVE_ARCH_TRANSPARENT_HUGEPAGE. sparc: kernel/sbus.c: fix memory leakage
2013-02-15Merge branches 'arm-multi_pmu_v2', 'cpufreq-fixes-v3', ↵tracking-big-LITTLE-MP-master-v15-llct-20130308.0tracking-big-LITTLE-MP-master-v15-llct-20130220.0tracking-big-LITTLE-MP-master-v15-llct-20130219.0tracking-big-LITTLE-MP-master-v15-llct-20130217.0big-LITTLE-MP-master-v15Viresh Kumar
'hw-bkp-v7.1-debug-v2', 'task-placement-v2', 'task-placement-v2-sysfs', 'misc-patches' and 'config-fragments' into big-LITTLE-MP-master-v15 Updates: ------- - Rebased over 3.8-rc7 - Stats: Total distinct patches: 37 - Dropped Patches: Two patches from cpufreq-fixes-v2 (3): causing some failures. - New Patches: One new patch into task-placement-v2 branch from Sudeep Commands used for merge: ----------------------- $ git checkout -b big-LITTLE-MP-master-v15 v3.8-rc7 $ git merge arm-multi_pmu_v2 cpufreq-fixes-v3 hw-bkp-v7.1-debug-v2 task-placement-v2 task-placement-v2-sysfs misc-patches config-fragments
2013-02-15sched: fix arch_get_fast_and_slow_cpus to get logical cpumask correctlySudeep KarkadaNagesha
The patch "sched: Use device-tree to provide fast/slow CPU list for HMP" depends on the ordering of CPU's in the device tree. It breaks to determine the logical mask correctly if the logical mask of the CPUs differ from physical ordering in the device tree. This patch fix the logic by depending on the mpidr in the device tree and mapping that mpidr to the logical cpu. Signed-off-by: Sudeep KarkadaNagesha <sudeep.karkadanagesha@arm.com> Signed-off-by: Liviu Dudau <Liviu.Dudau@arm.com>
2013-02-14Revert "xen PVonHVM: use E820_Reserved area for shared_info"Konrad Rzeszutek Wilk
This reverts commit 9d02b43dee0d7fb18dfb13a00915550b1a3daa9f. We are doing this b/c on 32-bit PVonHVM with older hypervisors (Xen 4.1) it ends up bothing up the start_info. This is bad b/c we use it for the time keeping, and the timekeeping code loops forever - as the version field never changes. Olaf says to revert it, so lets do that. Acked-by: Olaf Hering <olaf@aepfle.de> Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
2013-02-14Revert "xen/PVonHVM: fix compile warning in init_hvm_pv_info"Konrad Rzeszutek Wilk
This reverts commit a7be94ac8d69c037d08f0fd94b45a593f1d45176. Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
2013-02-13efi: Clear EFI_RUNTIME_SERVICES rather than EFI_BOOT by "noefi" boot parameterSatoru Takeuchi
There was a serious problem in samsung-laptop that its platform driver is designed to run under BIOS and running under EFI can cause the machine to become bricked or can cause Machine Check Exceptions. Discussion about this problem: https://bugs.launchpad.net/ubuntu-cdimage/+bug/1040557 https://bugzilla.kernel.org/show_bug.cgi?id=47121 The patches to fix this problem: efi: Make 'efi_enabled' a function to query EFI facilities 83e68189745ad931c2afd45d8ee3303929233e7f samsung-laptop: Disable on EFI hardware e0094244e41c4d0c7ad69920681972fc45d8ce34 Unfortunately this problem comes back again if users specify "noefi" option. This parameter clears EFI_BOOT and that driver continues to run even if running under EFI. Refer to the document, this parameter should clear EFI_RUNTIME_SERVICES instead. Documentation/kernel-parameters.txt: =============================================================================== ... noefi [X86] Disable EFI runtime services support. ... =============================================================================== Documentation/x86/x86_64/uefi.txt: =============================================================================== ... - If some or all EFI runtime services don't work, you can try following kernel command line parameters to turn off some or all EFI runtime services. noefi turn off all EFI runtime services ... =============================================================================== Signed-off-by: Satoru Takeuchi <takeuchi_satoru@jp.fujitsu.com> Link: http://lkml.kernel.org/r/511C2C04.2070108@jp.fujitsu.com Cc: Matt Fleming <matt.fleming@intel.com> Cc: <stable@vger.kernel.org> Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
2013-02-13x86/xen: don't assume %ds is usable in xen_iret for 32-bit PVOPS.Jan Beulich
This fixes CVE-2013-0228 / XSA-42 Drew Jones while working on CVE-2013-0190 found that that unprivileged guest user in 32bit PV guest can use to crash the > guest with the panic like this: ------------- general protection fault: 0000 [#1] SMP last sysfs file: /sys/devices/vbd-51712/block/xvda/dev Modules linked in: sunrpc ipt_REJECT nf_conntrack_ipv4 nf_defrag_ipv4 iptable_filter ip_tables ip6t_REJECT nf_conntrack_ipv6 nf_defrag_ipv6 xt_state nf_conntrack ip6table_filter ip6_tables ipv6 xen_netfront ext4 mbcache jbd2 xen_blkfront dm_mirror dm_region_hash dm_log dm_mod [last unloaded: scsi_wait_scan] Pid: 1250, comm: r Not tainted 2.6.32-356.el6.i686 #1 EIP: 0061:[<c0407462>] EFLAGS: 00010086 CPU: 0 EIP is at xen_iret+0x12/0x2b EAX: eb8d0000 EBX: 00000001 ECX: 08049860 EDX: 00000010 ESI: 00000000 EDI: 003d0f00 EBP: b77f8388 ESP: eb8d1fe0 DS: 0000 ES: 007b FS: 0000 GS: 00e0 SS: 0069 Process r (pid: 1250, ti=eb8d0000 task=c2953550 task.ti=eb8d0000) Stack: 00000000 0027f416 00000073 00000206 b77f8364 0000007b 00000000 00000000 Call Trace: Code: c3 8b 44 24 18 81 4c 24 38 00 02 00 00 8d 64 24 30 e9 03 00 00 00 8d 76 00 f7 44 24 08 00 00 02 80 75 33 50 b8 00 e0 ff ff 21 e0 <8b> 40 10 8b 04 85 a0 f6 ab c0 8b 80 0c b0 b3 c0 f6 44 24 0d 02 EIP: [<c0407462>] xen_iret+0x12/0x2b SS:ESP 0069:eb8d1fe0 general protection fault: 0000 [#2] ---[ end trace ab0d29a492dcd330 ]--- Kernel panic - not syncing: Fatal exception Pid: 1250, comm: r Tainted: G D --------------- 2.6.32-356.el6.i686 #1 Call Trace: [<c08476df>] ? panic+0x6e/0x122 [<c084b63c>] ? oops_end+0xbc/0xd0 [<c084b260>] ? do_general_protection+0x0/0x210 [<c084a9b7>] ? error_code+0x73/ ------------- Petr says: " I've analysed the bug and I think that xen_iret() cannot cope with mangled DS, in this case zeroed out (null selector/descriptor) by either xen_failsafe_callback() or RESTORE_REGS because the corresponding LDT entry was invalidated by the reproducer. " Jan took a look at the preliminary patch and came up a fix that solves this problem: "This code gets called after all registers other than those handled by IRET got already restored, hence a null selector in %ds or a non-null one that got loaded from a code or read-only data descriptor would cause a kernel mode fault (with the potential of crashing the kernel as a whole, if panic_on_oops is set)." The way to fix this is to realize that the we can only relay on the registers that IRET restores. The two that are guaranteed are the %cs and %ss as they are always fixed GDT selectors. Also they are inaccessible from user mode - so they cannot be altered. This is the approach taken in this patch. Another alternative option suggested by Jan would be to relay on the subtle realization that using the %ebp or %esp relative references uses the %ss segment. In which case we could switch from using %eax to %ebp and would not need the %ss over-rides. That would also require one extra instruction to compensate for the one place where the register is used as scaled index. However Andrew pointed out that is too subtle and if further work was to be done in this code-path it could escape folks attention and lead to accidents. Reviewed-by: Petr Matousek <pmatouse@redhat.com> Reported-by: Petr Matousek <pmatouse@redhat.com> Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com> Signed-off-by: Jan Beulich <jbeulich@suse.com> Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
2013-02-13sparc64: Fix get_user_pages_fast() wrt. THP.David S. Miller
Mostly mirrors the s390 logic, as unlike x86 we don't need the SetPageReferenced() bits. On sparc64 we also lack a user/privileged bit in the huge PMDs. In order to make this work for THP and non-THP builds, some header file adjustments were necessary. Namely, provide the PMD_HUGE_* bit defines and the pmd_large() inline unconditionally rather than protected by TRANSPARENT_HUGEPAGE. Reported-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com> Signed-off-by: David S. Miller <davem@davemloft.net>
2013-02-13sparc64: Add missing HAVE_ARCH_TRANSPARENT_HUGEPAGE.David S. Miller
This got missed in the cleanups done for the S390 THP support. CC: Gerald Schaefer <gerald.schaefer@de.ibm.com> Signed-off-by: David S. Miller <davem@davemloft.net>
2013-02-13Merge branch 'x86-urgent-for-linus' of ↵Linus Torvalds
git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip Pull x86 fixes from Peter Anvin: "One (hopefully) last batch of x86 fixes. You asked for the patch by patch justifications, so here they are: x86, MCE: Retract most UAPI exports This one unexports from userspace a bunch of definitions which should never have been exported. We really don't want to create an accidental legacy here. x86, doc: Add a bootloader ID for OVMF This is a documentation-only patch, just recording the official assignment of a boot loader ID. x86: Do not leak kernel page mapping locations Security: avoid making it needlessly easy for user space to probe the kernel memory layout. x86/mm: Check if PUD is large when validating a kernel address Prevent failures using /proc/kcore when using 1G pages. x86/apic: Work around boot failure on HP ProLiant DL980 G7 Server systems Works around a BIOS problem causing boot failures on affected hardware." * 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: x86/mm: Check if PUD is large when validating a kernel address x86/apic: Work around boot failure on HP ProLiant DL980 G7 Server systems x86, doc: Add a bootloader ID for OVMF x86: Do not leak kernel page mapping locations x86, MCE: Retract most UAPI exports
2013-02-13x86/mm: Check if PUD is large when validating a kernel addressMel Gorman
A user reported the following oops when a backup process reads /proc/kcore: BUG: unable to handle kernel paging request at ffffbb00ff33b000 IP: [<ffffffff8103157e>] kern_addr_valid+0xbe/0x110 [...] Call Trace: [<ffffffff811b8aaa>] read_kcore+0x17a/0x370 [<ffffffff811ad847>] proc_reg_read+0x77/0xc0 [<ffffffff81151687>] vfs_read+0xc7/0x130 [<ffffffff811517f3>] sys_read+0x53/0xa0 [<ffffffff81449692>] system_call_fastpath+0x16/0x1b Investigation determined that the bug triggered when reading system RAM at the 4G mark. On this system, that was the first address using 1G pages for the virt->phys direct mapping so the PUD is pointing to a physical address, not a PMD page. The problem is that the page table walker in kern_addr_valid() is not checking pud_large() and treats the physical address as if it was a PMD. If it happens to look like pmd_none then it'll silently fail, probably returning zeros instead of real data. If the data happens to look like a present PMD though, it will be walked resulting in the oops above. This patch adds the necessary pud_large() check. Unfortunately the problem was not readily reproducible and now they are running the backup program without accessing /proc/kcore so the patch has not been validated but I think it makes sense. Signed-off-by: Mel Gorman <mgorman@suse.de> Reviewed-by: Rik van Riel <riel@redhat.coM> Reviewed-by: Michal Hocko <mhocko@suse.cz> Acked-by: Johannes Weiner <hannes@cmpxchg.org> Cc: stable@vger.kernel.org Cc: linux-mm@kvack.org Link: http://lkml.kernel.org/r/20130211145236.GX21389@suse.de Signed-off-by: Ingo Molnar <mingo@kernel.org>