1. 20 3月, 2013 1 次提交
    • F
      MIPS: Fix code generation for non-DSP capable CPUs · 63c2b681
      Florian Fainelli 提交于
      Commit 32a7ede6 (MIPS: dsp: Add assembler support for DSP ASEs) has
      enabled the use of DSP ASE specific instructions such as rddsp and wrdsp
      under the idea that all code path that will make use of these two
      instructions are properly checking for cpu_has_dsp to ensure that the
      particular CPU we are running on *actually* supports DSP ASE.
      
      This commit actually causes the following oops on QEMU Malta emulating a
      MIPS 24Kc without the DSP ASE implemented:
      
      [    7.960000] Reserved instruction in kernel
      [    7.960000] Cpu 0
      [    7.960000] $ 0   : 00000000 00000000 00000014 00000005
      [    7.960000] $ 4   : 8fc2de48 00000001 00000000 8f59ddb0
      [    7.960000] $ 8   : 8f5ceec4 00000018 00000c00 00800000
      [    7.960000] $12   : 00000100 00000200 00000000 00457b84
      [    7.960000] $16   : 00000000 8fc2ba78 8f4ec980 00000001
      [    7.960000] $20   : 80418f90 00000000 00000000 000002dd
      [    7.960000] $24   : 0000009c 7730d7b8
      [    7.960000] $28   : 8f59c000 8f59dd38 00000001 80104248
      [    7.960000] Hi    : 0000001d
      [    7.960000] Lo    : 0000000b
      [    7.960000] epc   : 801041ec thread_saved_pc+0x2c/0x38
      [    7.960000]     Not tainted
      [    7.960000] ra    : 80104248 get_wchan+0x48/0xac
      [    7.960000] Status: 1000b703    KERNEL EXL IE
      [    7.960000] Cause : 10800028
      [    7.960000] PrId  : 00019300 (MIPS 24Kc)
      [    7.960000] Modules linked in:
      [    7.960000] Process killall (pid: 1574, threadinfo=8f59c000,
      task=8fd14558, tls=773aa440)
      [    7.960000] Stack : 8fc2ba78 8012b008 0000000c 0000001d 00000000
      00000000 8f58a380
                        8f58a380 8fc2ba78 80202668 8f59de78 8f468600 8f59de28
      801b2a3c 8f59df00 8f98ba20 74696e69
                        8f468600 8f59de28 801b7308 0081c007 00000000 00000000
      00000000 00000000 00000000 00000000
                        00000000 8fc2bbb4 00000001 0000001d 0000000b 77f038cc
      7fe80648 ffffffff ffffffff 00000000
                        00000001 0016e000 00000000 ...
      [    7.960000] Call Trace:
      [    7.960000] [<801041ec>] thread_saved_pc+0x2c/0x38
      [    7.960000] [<80104248>] get_wchan+0x48/0xac
      
      The disassembly of thread_saved_pc points to the following:
      000006d0 <thread_saved_pc>:
       6d0:   8c820208        lw      v0,520(a0)
       6d4:   3c030000        lui     v1,0x0
       6d8:   24630000        addiu   v1,v1,0
       6dc:   10430008        beq     v0,v1,700 <thread_saved_pc+0x30>
       6e0:   00000000        nop
       6e4:   3c020000        lui     v0,0x0
       6e8:   8c43000c        lw      v1,12(v0)
       6ec:   04620004        bltzl   v1,700 <thread_saved_pc+0x30>
       6f0:   00001021        move    v0,zero
       6f4:   8c840200        lw      a0,512(a0)
       6f8:   00031080        sll     v0,v1,0x2
       6fc:   7c44100a        lwx     v0,a0(v0)   <------------
       700:   03e00008        jr      ra
       704:   00000000        nop
      
      If we specifically disable -mdsp/-mdspr2 for arch/mips/kernel/process.o,
      we get the following (non-crashing) assembly:
      
      00000708 <thread_saved_pc>:
       708:   8c820208        lw      v0,520(a0)
       70c:   3c030000        lui     v1,0x0
       710:   24630000        addiu   v1,v1,0
       714:   10430009        beq     v0,v1,73c <thread_saved_pc+0x34>
       718:   00000000        nop
       71c:   3c020000        lui     v0,0x0
       720:   8c42000c        lw      v0,12(v0)
       724:   04420005        bltzl   v0,73c <thread_saved_pc+0x34>
       728:   00001021        move    v0,zero
       72c:   8c830200        lw      v1,512(a0)
       730:   00021080        sll     v0,v0,0x2
       734:   00431021        addu    v0,v0,v1
       738:   8c420000        lw      v0,0(v0)
       73c:   03e00008        jr      ra
       740:   00000000        nop
      
      The specific line that leads a different assembly being produced is:
      
      unsigned long thread_saved_pc(struct task_struct *tsk)
      ...
      	return ((unsigned long *)t->reg29)[schedule_mfi.pc_offset]; <---
      
      The problem here is that the compiler was given the right to use DSP
      instructions with the -mdsp / -mdspr2 command-line switches and
      performed some optimization for us and used DSP ASE instructions where
      we are not checking that the running CPU actually supports DSP ASE.
      
      This patch fixes the issue by partially reverting commit 32a7ede6 for
      arch/mips/kernel/Makefile in order to remove the -mdsp / -mdspr2
      compiler command-line switches such that we are now guaranteed that the
      compiler will not optimize using DSP ASE reserved instructions. We also
      need to fixup the rddsp/wrdsp and m{t,h}{hi,lo}{0,1,2,3} macros in
      arch/mips/include/asm/mipsregs.h to tell the assembler that we are going
      to explicitely use DSP ASE reserved instructions. The comment in
      arch/mips/kernel/Makefile is also updated to reflect that.
      Signed-off-by: NFlorian Fainelli <florian@openwrt.org>
      Acked-by: NSteven J. Hill <Steven.Hill@imgtec.com>
      Cc: linux-mips@linux-mips.org
      Cc: blogic@openwrt.org
      Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
      63c2b681
  2. 14 3月, 2013 1 次提交
  3. 13 3月, 2013 5 次提交
  4. 12 3月, 2013 1 次提交
  5. 11 3月, 2013 2 次提交
  6. 10 3月, 2013 2 次提交
    • L
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/user-namespace · 72932611
      Linus Torvalds 提交于
      Pull namespace bugfixes from Eric Biederman:
       "This is three simple fixes against 3.9-rc1.  I have tested each of
        these fixes and verified they work correctly.
      
        The userns oops in key_change_session_keyring and the BUG_ON triggered
        by proc_ns_follow_link were found by Dave Jones.
      
        I am including the enhancement for mount to only trigger requests of
        filesystem modules here instead of delaying this for the 3.10 merge
        window because it is both trivial and the kind of change that tends to
        bit-rot if left untouched for two months."
      
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/user-namespace:
        proc: Use nd_jump_link in proc_ns_follow_link
        fs: Limit sys_mount to only request filesystem modules (Part 2).
        fs: Limit sys_mount to only request filesystem modules.
        userns: Stop oopsing in key_change_session_keyring
      72932611
    • L
      Atmel MXT touchscreen: increase reset timeouts · 8343bce1
      Linus Torvalds 提交于
      There is a more complete atmel patch-series out by Nick Dyer that fixes
      this and other things, but in the meantime this is the minimal thing to
      get the touchscreen going on (at least my) Pixel Chromebook.
      
      Not that I want my dirty fingers near that beautiful screen, but it
      seems that a non-initialized touchscreen will also end up being a
      constant wakeup source, so you have to disable it to go to sleep.  And
      it's easier to just fix the initialization sequence.
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      8343bce1
  7. 09 3月, 2013 23 次提交
  8. 08 3月, 2013 5 次提交
    • L
      Merge branch 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 47b3bc90
      Linus Torvalds 提交于
      Pull x86 fixes from Peter Anvin:
       "Several boot fixes (MacBook, legacy EFI bootloaders), another
        please-don't-brick fix, and some minor stuff."
      
      * 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86: Do not try to sync identity map for non-mapped pages
        x86, doc: Be explicit about what the x86 struct boot_params requires
        x86: Don't clear efi_info even if the sentinel hits
        x86, mm: Make sure to find a 2M free block for the first mapped area
        x86: Fix 32-bit *_cpu_data initializers
        efivarfs: return accurate error code in efivarfs_fill_super()
        efivars: efivarfs_valid_name() should handle pstore syntax
        efi: be more paranoid about available space when creating variables
        iommu, x86: Add DMA remap fault reason
        x86, smpboot: Remove unused variable
      47b3bc90
    • L
      Merge branch 'drm-fixes' of git://people.freedesktop.org/~airlied/linux · af2841cd
      Linus Torvalds 提交于
      Pull drm fixes from Dave Airlie:
       "Misc radeon, nouveau, mgag200 and intel fixes.
      
        The intel fixes should contain the fix for the touchpad on the
        Chromebook - hey I'm an input maintainer now!"
      
      Hate to pee on your parade, Dave, but I don't think being an input
      maintainer is necessarily something to strive for..
      
      * 'drm-fixes' of git://people.freedesktop.org/~airlied/linux: (25 commits)
        drm/tegra: drop "select DRM_HDMI"
        drm: Documentation typo fixes
        drm/mgag200: Bug fix: Renesas board now selects native resolution.
        drm/mgag200: Reject modes that are too big for VRAM
        drm/mgag200: 'fbdev_list' in 'struct mga_fbdev' is not used
        drm/radeon: don't check mipmap alignment if MIP_ADDRESS is FMASK
        drm/radeon: skip MC reset as it's probably not hung
        drm/radeon: add primary dac adj quirk for R200 board
        drm/radeon: don't set hpd, afmt interrupts when interrupts are disabled
        drm/i915: Turn off hsync and vsync on ADPA when disabling crt
        drm/i915: Fix incorrect definition of ADPA HSYNC and VSYNC bits
        drm/i915: also disable south interrupts when handling them
        drm/i915: enable irqs earlier when resuming
        drm/i915: Increase the RC6p threshold.
        DRM/i915: On G45 enable cursor plane briefly after enabling the display plane.
        drm/nv50-: prevent some races between modesetting and page flipping
        drm/nouveau/i2c: drop parent refcount when creating ports
        drm/nv84: fix regression in page flipping
        drm/nouveau: Fix typo in init_idx_addr_latched().
        drm/nouveau: Disable AGP on PowerPC again.
        ...
      af2841cd
    • L
      Merge tag 'pm+acpi-3.9-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm · c89b148f
      Linus Torvalds 提交于
      Pull ACPI and power management fixes from Rafael J Wysocki:
      
       - Two fixes for the new intel_pstate driver from Dirk Brandewie.
      
       - Fix for incorrect usage of the .find_bridge() callback from struct
         acpi_bus_type in the USB core and subsequent removal of that callback
         from Rafael J Wysocki.
      
       - ACPI processor driver cleanups from Chen Gang and Syam Sidhardhan.
      
       - ACPI initialization and error messages fix from Joe Perches.
      
       - Operating Performance Points documentation improvement from Nishanth
         Menon.
      
       - Fixes for memory leaks and potential concurrency issues and sysfs
        attributes leaks during device removal in the core device PM QoS code
        from Rafael J Wysocki.
      
       - Calxeda Highbank cpufreq driver simplification from Emilio López.
      
       - cpufreq comment cleanup from Namhyung Kim.
      
       - Fix for a section mismatch in Calxeda Highbank interprocessor
         communication code from Mark Langsdorf (this is not a PM fix strictly
         speaking, but the code in question went in through the PM tree).
      
      * tag 'pm+acpi-3.9-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
        cpufreq / intel_pstate: Do not load on VM that does not report max P state.
        cpufreq / intel_pstate: Fix intel_pstate_init() error path
        ACPI / glue: Drop .find_bridge() callback from struct acpi_bus_type
        ACPI / glue: Add .match() callback to struct acpi_bus_type
        ACPI / porocessor: Beautify code, pr->id is u32 which is never < 0
        ACPI / processor: Remove redundant NULL check before kfree
        ACPI / Sleep: Avoid interleaved message on errors
        PM / QoS: Remove device PM QoS sysfs attributes at the right place
        PM / QoS: Fix concurrency issues and memory leaks in device PM QoS
        cpufreq: highbank: do not initialize array with a loop
        PM / OPP: improve introductory documentation
        cpufreq: Fix a typo in comment
        mailbox, pl320-ipc: remove __init from probe function
      c89b148f
    • P
      drm/tegra: drop "select DRM_HDMI" · 36c1813b
      Paul Bolle 提交于
      Commit ac24c220 ("drm/tegra: Use generic
      HDMI infoframe helpers") added "select DRM_HDMI" to the DRM_TEGRA
      Kconfig entry. But there is no Kconfig symbol named DRM_HDMI. The select
      statement for that symbol is a nop. Drop it.
      
      What was needed to use HDMI functionality was to select HDMI (which this
      entry already did through depending on DRM) and to include linux/hdmi.h
      (which this commit also did).
      Signed-off-by: NPaul Bolle <pebolle@tiscali.nl>
      Acked-by: NThierry Reding <thierry.reding@avionic-design.de>
      Signed-off-by: NDave Airlie <airlied@redhat.com>
      36c1813b
    • C
      drm: Documentation typo fixes · 13bcf01b
      Christopher Harvey 提交于
      Signed-off-by: NChristopher Harvey <charvey@matrox.com>
      Signed-off-by: NDave Airlie <airlied@redhat.com>
      13bcf01b