1. 06 12月, 2011 2 次提交
    • M
      x86/mrst: Battery fixes · a7a28049
      Major Lee 提交于
      When DCDC input line over current detecting, PMIC will change
      charging current automatically.  Logging event is enough.
      Signed-off-by: NMajor Lee <major_lee@wistron.com>
      Signed-off-by: NAlan Cox <alan@linux.intel.com>
      Cc: Mathias Nyman <mathias.nyman@linux.intel.com>
      Cc: Feng Tang <feng.tang@intel.com>
      Cc: "H. Peter Anvin" <hpa@zytor.com>
      [fix build]
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      a7a28049
    • K
      x86/paravirt: PTE updates in k(un)map_atomic need to be synchronous, regardless of lazy_mmu mode · 2cd1c8d4
      Konrad Rzeszutek Wilk 提交于
      Fix an outstanding issue that has been reported since 2.6.37.
      Under a heavy loaded machine processing "fork()" calls could
      crash with:
      
      BUG: unable to handle kernel paging request at f573fc8c
      IP: [<c01abc54>] swap_count_continued+0x104/0x180
      *pdpt = 000000002a3b9027 *pde = 0000000001bed067 *pte = 0000000000000000 Oops: 0000 [#1] SMP
      Modules linked in:
      Pid: 1638, comm: apache2 Not tainted 3.0.4-linode37 #1
      EIP: 0061:[<c01abc54>] EFLAGS: 00210246 CPU: 3
      EIP is at swap_count_continued+0x104/0x180
      .. snip..
      Call Trace:
       [<c01ac222>] ? __swap_duplicate+0xc2/0x160
       [<c01040f7>] ? pte_mfn_to_pfn+0x87/0xe0
       [<c01ac2e4>] ? swap_duplicate+0x14/0x40
       [<c01a0a6b>] ? copy_pte_range+0x45b/0x500
       [<c01a0ca5>] ? copy_page_range+0x195/0x200
       [<c01328c6>] ? dup_mmap+0x1c6/0x2c0
       [<c0132cf8>] ? dup_mm+0xa8/0x130
       [<c013376a>] ? copy_process+0x98a/0xb30
       [<c013395f>] ? do_fork+0x4f/0x280
       [<c01573b3>] ? getnstimeofday+0x43/0x100
       [<c010f770>] ? sys_clone+0x30/0x40
       [<c06c048d>] ? ptregs_clone+0x15/0x48
       [<c06bfb71>] ? syscall_call+0x7/0xb
      
      The problem is that in copy_page_range() we turn lazy mode on,
      and then in swap_entry_free() we call swap_count_continued()
      which ends up in:
      
               map = kmap_atomic(page, KM_USER0) + offset;
      
      and then later we touch *map.
      
      Since we are running in batched mode (lazy) we don't actually
      set up the PTE mappings and the kmap_atomic is not done
      synchronously and ends up trying to dereference a page that has
      not been set.
      
      Looking at kmap_atomic_prot_pfn(), it uses
      'arch_flush_lazy_mmu_mode' and doing the same in
      kmap_atomic_prot() and __kunmap_atomic() makes the problem go
      away.
      
      Interestingly, commit b8bcfe99 ("x86/paravirt: remove lazy
      mode in interrupts") removed part of this to fix an interrupt
      issue - but it went to far and did not consider this scenario.
      Signed-off-by: NKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
      Cc: <stable@kernel.org>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      2cd1c8d4
  2. 05 12月, 2011 14 次提交
  3. 04 12月, 2011 1 次提交
    • K
      xen/pm_idle: Make pm_idle be default_idle under Xen. · e5fd47bf
      Konrad Rzeszutek Wilk 提交于
      The idea behind commit d91ee586 ("cpuidle: replace xen access to x86
      pm_idle and default_idle") was to have one call - disable_cpuidle()
      which would make pm_idle not be molested by other code.  It disallows
      cpuidle_idle_call to be set to pm_idle (which is excellent).
      
      But in the select_idle_routine() and idle_setup(), the pm_idle can still
      be set to either: amd_e400_idle, mwait_idle or default_idle.  This
      depends on some CPU flags (MWAIT) and in AMD case on the type of CPU.
      
      In case of mwait_idle we can hit some instances where the hypervisor
      (Amazon EC2 specifically) sets the MWAIT and we get:
      
        Brought up 2 CPUs
        invalid opcode: 0000 [#1] SMP
      
        Pid: 0, comm: swapper Not tainted 3.1.0-0.rc6.git0.3.fc16.x86_64 #1
        RIP: e030:[<ffffffff81015d1d>]  [<ffffffff81015d1d>] mwait_idle+0x6f/0xb4
        ...
        Call Trace:
         [<ffffffff8100e2ed>] cpu_idle+0xae/0xe8
         [<ffffffff8149ee78>] cpu_bringup_and_idle+0xe/0x10
        RIP  [<ffffffff81015d1d>] mwait_idle+0x6f/0xb4
         RSP <ffff8801d28ddf10>
      
      In the case of amd_e400_idle we don't get so spectacular crashes, but we
      do end up making an MSR which is trapped in the hypervisor, and then
      follow it up with a yield hypercall.  Meaning we end up going to
      hypervisor twice instead of just once.
      
      The previous behavior before v3.0 was that pm_idle was set to
      default_idle regardless of select_idle_routine/idle_setup.
      
      We want to do that, but only for one specific case: Xen.  This patch
      does that.
      
      Fixes RH BZ #739499 and Ubuntu #881076
      Reported-by: NStefan Bader <stefan.bader@canonical.com>
      Signed-off-by: NKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      e5fd47bf
  4. 03 12月, 2011 6 次提交
    • L
      Merge branch 'usb-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb · af968e29
      Linus Torvalds 提交于
      * 'usb-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb: (21 commits)
        usb: ftdi_sio: add PID for Propox ISPcable III
        Revert "xHCI: reset-on-resume quirk for NEC uPD720200"
        xHCI: fix bug in xhci_clear_command_ring()
        usb: gadget: fsl_udc: fix dequeuing a request in progress
        usb: fsl_mxc_udc.c: Remove compile-time dependency of MX35 SoC type
        usb: fsl_mxc_udc.c: Fix build issue by including missing header file
        USB: fsl_udc_core: use usb_endpoint_xfer_isoc to judge ISO XFER
        usb: udc: Fix gadget driver's speed check in various UDC drivers
        usb: gadget: fix g_serial regression
        usb: renesas_usbhs: fixup driver speed
        usb: renesas_usbhs: fixup gadget.dev.driver when udc_stop.
        usb: renesas_usbhs: fixup signal the driver that cable was disconnected
        usb: renesas_usbhs: fixup device_register timing
        usb: musb: PM: fix context save/restore in suspend/resume path
        USB: linux-cdc-acm.inf: add support for the acm_ms gadget
        EHCI : Fix a regression in the ISO scheduler
        xHCI: reset-on-resume quirk for NEC uPD720200
        USB: whci-hcd: fix endian conversion in qset_clear()
        USB: usb-storage: unusual_devs entry for Kingston DT 101 G2
        usb: option: add SIMCom SIM5218
        ...
      af968e29
    • L
      Merge branch 'staging-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging · f9143eae
      Linus Torvalds 提交于
      * 'staging-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging:
        Staging: comedi: fix integer overflow in do_insnlist_ioctl()
        Revert "Staging: comedi: integer overflow in do_insnlist_ioctl()"
        Staging: comedi: integer overflow in do_insnlist_ioctl()
        Staging: comedi: fix signal handling in read and write
        Staging: comedi: fix mmap_count
        staging: comedi: fix oops for USB DAQ devices.
        staging: comedi: usbduxsigma: Fixed wrong range for the analogue channel.
        staging:rts_pstor:Complete scanning_done variable
        staging: usbip: bugfix for deadlock
      f9143eae
    • L
      Merge branch 'for-linus' of git://oss.sgi.com/xfs/xfs · ffb8fb54
      Linus Torvalds 提交于
      * 'for-linus' of git://oss.sgi.com/xfs/xfs:
        xfs: fix attr2 vs large data fork assert
        xfs: force buffer writeback before blocking on the ilock in inode reclaim
        xfs: validate acl count
      ffb8fb54
    • L
      7ed89aed
    • L
      Merge branch 'drm-fixes' of git://people.freedesktop.org/~airlied/linux · c2b5adb4
      Linus Torvalds 提交于
      * 'drm-fixes' of git://people.freedesktop.org/~airlied/linux:
        vmwgfx: integer overflow in vmw_kms_update_layout_ioctl()
        drm/radeon/kms: fix 2D tiling CS support on EG/CM
        drm/radeon/kms: fix scanout of 2D tiled buffers on EG/CM
        drm: Fix lack of CRTC disable for drm_crtc_helper_set_config(.fb=NULL)
        drm/radeon/kms: add some new pci ids
        drm/radeon/kms: Skip ACPI call to ATIF when possible
        drm/radeon/kms: Hide debugging message
        drm/radeon/kms: add some loop timeouts in pageflip code
        drm/nv50/disp: silence compiler warning
        drm/nouveau: fix oopses caused by clear being called on unpopulated ttms
        drm/nouveau: Keep RAMIN heap within the channel.
        drm/nvd0/disp: fix sor dpms typo, preventing dpms on in some situations
        drm/nvc0/gr: fix TP init for transform feedback offset queries
        drm/nouveau: add dumb ioctl support
      c2b5adb4
    • L
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound · 0efebaa7
      Linus Torvalds 提交于
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound:
        ALSA: hda - Fix S3/S4 problem on machines with VREF-pin mute-LED
        ALSA: hda_intel - revert a quirk that affect VIA chipsets
        ALSA: hda - Avoid touching mute-VREF pin for IDT codecs
        firmware: Sigma: Fix endianess issues
        firmware: Sigma: Skip header during CRC generation
        firmware: Sigma: Prevent out of bounds memory access
        ALSA: usb-audio - Support for Roland GAIA SH-01 Synthesizer
        ASoC: Supply dcs_codes for newer WM1811 revisions
        ASoC: Error out if we can't generate a LRCLK at all for WM8994
        ASoC: Correct name of Speyside Main Speaker widget
        ASoC: skip resume of soc-audio devices without codecs
        ASoC: cs42l51: Fix off-by-one for reg_cache_size
        ASoC: drop support for PlayPaq with WM8510
        ASoC: mpc8610: tell the CS4270 codec that it's the master
        ASoC: cs4720: use snd_soc_cache_sync()
        ASoC: SAMSUNG: Fix build error
        ASoC: max9877: Update register if either val or val2 is changed
        ASoC: Fix wrong define for AD1836_ADC_WORD_OFFSET
      0efebaa7
  5. 02 12月, 2011 17 次提交