Linux 3.5.5
I'm announcing the release of the 3.5.5 kernel.
All users of the 3.5 kernel series must upgrade.
The updated 3.5.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-3.5.y
and can be browsed at the normal kernel.org git web browser:
http://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary
thanks,
greg k-h
------------
Documentation/sound/alsa/HD-Audio-Models.txt | 1 Makefile | 2 arch/alpha/include/asm/atomic.h | 4 arch/arm/Makefile | 4 arch/arm/boot/compressed/head.S | 5 arch/arm/include/asm/assembler.h | 8 arch/arm/include/asm/mutex.h | 119 ------------- arch/arm/include/asm/uaccess.h | 40 ++-- arch/arm/kernel/hw_breakpoint.c | 55 ++++-- arch/arm/kernel/traps.c | 11 - arch/arm/lib/getuser.S | 23 +- arch/arm/lib/putuser.S | 6 arch/arm/mach-imx/clk-imx25.c | 6 arch/arm/mach-imx/clk-imx35.c | 6 arch/arm/mach-imx/mach-armadillo5x0.c | 3 arch/arm/mach-omap2/timer.c | 7 arch/arm/mm/mm.h | 3 arch/arm/mm/mmu.c | 4 arch/mips/mm/gup.c | 2 arch/powerpc/platforms/85xx/p1022_ds.c | 102 +++++++++-- arch/s390/oprofile/init.c | 10 - arch/x86/include/asm/xen/page.h | 3 arch/x86/kernel/cpu/common.c | 2 arch/x86/kernel/cpu/perf_event_amd_ibs.c | 12 + arch/x86/xen/enlighten.c | 4 arch/x86/xen/p2m.c | 27 +- arch/x86/xen/setup.c | 4 drivers/acpi/bus.c | 10 + drivers/acpi/power.c | 36 ++- drivers/ata/ahci.c | 2 drivers/ata/libata-core.c | 1 drivers/base/core.c | 4 drivers/base/power/runtime.c | 13 - drivers/block/cciss_scsi.c | 1 drivers/block/nbd.c | 9 drivers/block/xen-blkback/blkback.c | 2 drivers/bluetooth/ath3k.c | 4 drivers/bluetooth/btusb.c | 12 - drivers/cpufreq/powernow-k8.c | 63 +++--- drivers/dma/at_hdmac.c | 13 + drivers/dma/pl330.c | 21 +- drivers/gpio/gpio-lpc32xx.c | 5 drivers/gpu/drm/drm_crtc.c | 2 drivers/gpu/drm/drm_edid.c | 3 drivers/gpu/drm/gma500/oaktrail_device.c | 2 drivers/gpu/drm/i915/i915_gem.c | 3 drivers/gpu/drm/i915/i915_irq.c | 3 drivers/gpu/drm/i915/intel_crt.c | 36 +++ drivers/gpu/drm/i915/intel_display.c | 24 +- drivers/gpu/drm/i915/intel_drv.h | 2 drivers/gpu/drm/i915/intel_hdmi.c | 2 drivers/gpu/drm/i915/intel_modes.c | 31 ++- drivers/gpu/drm/i915/intel_pm.c | 11 - drivers/gpu/drm/i915/intel_sdvo.c | 23 +- drivers/gpu/drm/nouveau/nouveau_display.c | 2 drivers/gpu/drm/nouveau/nouveau_state.c | 6 drivers/gpu/drm/nouveau/nv84_fifo.c | 9 drivers/gpu/drm/radeon/atombios_crtc.c | 61 ++++-- drivers/gpu/drm/radeon/atombios_encoders.c | 140 ++++++++------- drivers/gpu/drm/radeon/radeon.h | 16 - drivers/gpu/drm/radeon/radeon_atombios.c | 2 drivers/gpu/drm/radeon/radeon_atpx_handler.c | 56 ------ drivers/gpu/drm/radeon/radeon_bios.c | 138 ++++++++++++++- drivers/gpu/drm/radeon/radeon_cs.c | 30 ++- drivers/gpu/drm/radeon/radeon_device.c | 2 drivers/gpu/drm/radeon/radeon_fence.c | 8 drivers/gpu/drm/radeon/radeon_gart.c | 24 ++ drivers/gpu/drm/radeon/radeon_gem.c | 13 - drivers/gpu/drm/radeon/radeon_object.c | 6 drivers/gpu/drm/radeon/radeon_ring.c | 1 drivers/gpu/drm/udl/udl_connector.c | 7 drivers/gpu/drm/vmwgfx/vmwgfx_drv.c | 5 drivers/gpu/drm/vmwgfx/vmwgfx_drv.h | 10 + drivers/gpu/drm/vmwgfx/vmwgfx_fence.c | 2 drivers/gpu/drm/vmwgfx/vmwgfx_resource.c | 73 ++++++++ drivers/hid/hid-logitech-dj.c | 49 +++++ drivers/hid/hid-logitech-dj.h | 1 drivers/hwmon/ad7314.c | 8 drivers/hwmon/ads7871.c | 9 drivers/hwmon/fam15h_power.c | 15 + drivers/hwmon/ina2xx.c | 30 --- drivers/hwmon/twl4030-madc-hwmon.c | 9 drivers/i2c/busses/i2c-powermac.c | 157 ++++++++++++++--- drivers/input/serio/i8042-x86ia64io.h | 6 drivers/input/tablet/wacom_sys.c | 10 - drivers/input/tablet/wacom_wac.c | 27 ++ drivers/input/tablet/wacom_wac.h | 9 drivers/iommu/intel_irq_remapping.c | 18 + drivers/isdn/hardware/mISDN/avmfritz.c | 3 drivers/isdn/hardware/mISDN/mISDNipac.c | 3 drivers/isdn/hardware/mISDN/mISDNisar.c | 3 drivers/isdn/hardware/mISDN/netjet.c | 3 drivers/isdn/hardware/mISDN/w6692.c | 3 drivers/isdn/isdnloop/isdnloop.c | 12 - drivers/isdn/mISDN/hwchannel.c | 9 drivers/md/md.c | 15 + drivers/md/raid10.c | 38 ++-- drivers/md/raid10.h | 2 drivers/md/raid5.c | 4 drivers/media/rc/rc-main.c | 5 drivers/misc/sgi-xp/xpc_uv.c | 84 +++++++-- drivers/mmc/card/block.c | 26 ++ drivers/mmc/host/atmel-mci.c | 6 drivers/mmc/host/mxs-mmc.c | 14 - drivers/mmc/host/sdhci-esdhc.h | 6 drivers/net/can/janz-ican3.c | 4 drivers/net/can/mcp251x.c | 11 + drivers/net/can/ti_hecc.c | 2 drivers/net/ethernet/cirrus/cs89x0.c | 10 - drivers/net/ethernet/freescale/gianfar.c | 2 drivers/net/ethernet/freescale/gianfar_ethtool.c | 1 drivers/net/ethernet/freescale/gianfar_ptp.c | 4 drivers/net/ethernet/ibm/ibmveth.c | 26 -- drivers/net/ethernet/sfc/efx.c | 6 drivers/net/ethernet/sfc/efx.h | 14 + drivers/net/ethernet/sfc/ethtool.c | 20 +- drivers/net/ethernet/sfc/tx.c | 19 ++ drivers/net/netconsole.c | 1 drivers/net/ppp/pptp.c | 4 drivers/net/usb/asix.c | 4 drivers/net/usb/qmi_wwan.c | 58 ++++++ drivers/net/usb/usbnet.c | 16 + drivers/net/wireless/brcm80211/brcmfmac/dhd_common.c | 26 +- drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c | 6 drivers/net/wireless/iwlwifi/iwl-debugfs.c | 3 drivers/net/wireless/iwlwifi/iwl-trans-pcie-int.h | 2 drivers/net/wireless/iwlwifi/iwl-trans-pcie-rx.c | 2 drivers/net/wireless/iwlwifi/iwl-trans-pcie.c | 31 +-- drivers/net/wireless/rt2x00/rt2400pci.c | 9 drivers/net/wireless/rt2x00/rt2400pci.h | 1 drivers/net/wireless/rt2x00/rt2500pci.c | 9 drivers/net/wireless/rt2x00/rt2500usb.c | 11 + drivers/net/wireless/rt2x00/rt2500usb.h | 17 - drivers/net/wireless/rt2x00/rt2800pci.c | 9 drivers/net/wireless/rt2x00/rt2800usb.c | 22 ++ drivers/net/wireless/rt2x00/rt2x00dev.c | 2 drivers/net/wireless/rt2x00/rt61pci.c | 9 drivers/net/wireless/rt2x00/rt61pci.h | 1 drivers/net/wireless/rt2x00/rt73usb.c | 9 drivers/net/wireless/rt2x00/rt73usb.h | 3 drivers/net/wireless/rtlwifi/rtl8192ce/def.h | 1 drivers/net/wireless/rtlwifi/rtl8192ce/hw.c | 12 + drivers/net/wireless/rtlwifi/rtl8192ce/sw.c | 6 drivers/platform/x86/asus-laptop.c | 8 drivers/platform/x86/asus-nb-wmi.c | 4 drivers/rtc/rtc-rs5c348.c | 7 drivers/rtc/rtc-twl.c | 5 drivers/scsi/bnx2i/bnx2i_hwi.c | 3 drivers/scsi/hpsa.c | 3 drivers/scsi/lpfc/Makefile | 2 drivers/scsi/mpt2sas/mpt2sas_base.c | 7 drivers/scsi/virtio_scsi.c | 2 drivers/staging/android/android_alarm.h | 4 drivers/staging/comedi/drivers/amplc_pci224.c | 7 drivers/staging/comedi/drivers/das08.c | 4 drivers/staging/media/lirc/lirc_sir.c | 60 ++++++ drivers/staging/rtl8712/recv_linux.c | 7 drivers/staging/speakup/main.c | 2 drivers/staging/vt6656/dpc.c | 2 drivers/staging/vt6656/rxtx.c | 38 ++-- drivers/staging/zcache/zcache-main.c | 7 drivers/target/target_core_transport.c | 58 ++---- drivers/tty/serial/imx.c | 30 +-- drivers/tty/serial/pch_uart.c | 59 ++++-- drivers/usb/chipidea/udc.c | 58 ++++-- drivers/usb/class/cdc-wdm.c | 12 - drivers/usb/core/devices.c | 2 drivers/usb/core/hcd.c | 6 drivers/usb/core/quirks.c | 4 drivers/usb/dwc3/core.c | 9 drivers/usb/dwc3/ep0.c | 1 drivers/usb/dwc3/gadget.c | 7 drivers/usb/gadget/at91_udc.c | 6 drivers/usb/gadget/dummy_hcd.c | 41 ++++ drivers/usb/host/ehci-omap.c | 164 ------------------ drivers/usb/host/ehci-q.c | 12 + drivers/usb/host/ohci-at91.c | 13 + drivers/usb/host/pci-quirks.c | 42 +++- drivers/usb/host/pci-quirks.h | 1 drivers/usb/host/xhci-hub.c | 42 ++++ drivers/usb/host/xhci-plat.c | 2 drivers/usb/host/xhci.c | 123 +++++++++++++ drivers/usb/host/xhci.h | 6 drivers/usb/serial/ftdi_sio.c | 22 ++ drivers/usb/serial/ftdi_sio_ids.h | 29 ++- drivers/usb/serial/option.c | 6 drivers/video/console/fbcon.c | 9 drivers/watchdog/hpwdt.c | 3 drivers/xen/gntdev.c | 5 drivers/xen/grant-table.c | 6 fs/cifs/cifs_unicode.c | 2 fs/dcache.c | 4 fs/ecryptfs/inode.c | 5 fs/nfs/dir.c | 4 fs/nfs/inode.c | 2 fs/nfs/nfs3proc.c | 2 fs/nfs/nfs4proc.c | 4 fs/nfs/nfs4xdr.c | 3 fs/nfs/super.c | 2 fs/nfsd/nfsctl.c | 8 fs/nfsd/nfsd.h | 11 + fs/nfsd/nfssvc.c | 24 -- fs/proc/proc_sysctl.c | 5 fs/stat.c | 2 include/asm-generic/mutex-xchg.h | 11 - include/drm/drm_mode.h | 5 include/linux/dcache.h | 2 include/linux/init_task.h | 12 + include/linux/kobject.h | 2 include/linux/kthread.h | 8 include/linux/ktime.h | 7 include/linux/mISDNhw.h | 2 include/linux/memory.h | 2 include/linux/mmc/card.h | 1 include/linux/netdevice.h | 4 include/linux/nfs_fs.h | 5 include/linux/pci_ids.h | 2 include/linux/perf_event.h | 4 include/linux/sched.h | 5 include/linux/security.h | 1 include/linux/time.h | 29 ++- include/net/bluetooth/smp.h | 2 include/net/codel.h | 8 include/net/scm.h | 4 include/net/sock.h | 2 include/trace/events/kmem.h | 4 include/xen/grant_table.h | 3 kernel/async.c | 13 - kernel/events/core.c | 62 +++--- kernel/kthread.c | 88 +++++---- kernel/sched/core.c | 9 kernel/sched/sched.h | 23 +- kernel/time/tick-sched.c | 1 kernel/time/timekeeping.c | 32 +++ kernel/workqueue.c | 34 +-- lib/digsig.c | 6 mm/memory_hotplug.c | 16 + mm/page_alloc.c | 2 net/atm/common.c | 1 net/atm/pvc.c | 1 net/bluetooth/hci_conn.c | 4 net/bluetooth/hci_core.c | 2 net/bluetooth/hci_sock.c | 2 net/bluetooth/l2cap_core.c | 11 - net/bluetooth/l2cap_sock.c | 3 net/bluetooth/mgmt.c | 16 + net/bluetooth/rfcomm/sock.c | 2 net/bluetooth/rfcomm/tty.c | 2 net/bluetooth/smp.c | 10 - net/core/dev.c | 27 ++ net/core/sock.c | 1 net/dccp/ccids/ccid3.c | 1 net/ipv4/ipmr.c | 14 + net/ipv4/tcp.c | 4 net/ipv4/tcp_cong.c | 3 net/ipv4/tcp_input.c | 15 - net/ipv4/tcp_output.c | 21 +- net/ipv6/addrconf.c | 4 net/l2tp/l2tp_core.c | 3 net/l2tp/l2tp_core.h | 1 net/l2tp/l2tp_ip6.c | 1 net/llc/af_llc.c | 3 net/mac80211/mlme.c | 4 net/netfilter/ipvs/ip_vs_ctl.c | 1 net/netlink/af_netlink.c | 6 net/openvswitch/vport-internal_dev.c | 8 net/packet/af_packet.c | 10 - net/rds/recv.c | 3 net/sched/act_gact.c | 14 + net/socket.c | 1 net/unix/af_unix.c | 4 net/wireless/reg.c | 12 - sound/aoa/codecs/onyx.c | 75 -------- sound/aoa/codecs/tas.c | 80 -------- sound/pci/hda/hda_codec.c | 2 sound/pci/hda/patch_realtek.c | 22 ++ sound/pci/hda/patch_sigmatel.c | 2 sound/pci/ice1712/prodigy_hifi.c | 3 sound/soc/codecs/wm2000.c | 2 sound/soc/samsung/dma.c | 8 sound/soc/tegra/tegra_alc5632.c | 1 sound/usb/endpoint.c | 8 sound/usb/pcm.c | 6 283 files changed, 2763 insertions(+), 1499 deletions(-)
Aaron Lu (1):
ACPI / PM: Use KERN_DEBUG when no power resources are found
AceLan Kao (1):
asus-nb-wmi: add some video toggle keys
Al Viro (1):
perf_event: Switch to internal refcount, fix race with close()
Alan Cox (4):
ahci: Add alternate identifier for the 88SE9172
gma500: Fix regression on Oaktrail devices
dj: memory scribble in logi_dj
pch_uart: Fix missing break for 16 byte fifo
Alan Stern (2):
USB: add device quirk for Joss Optical touchboard
USB: Fix race condition when removing host controllers
Alex Deucher (7):
drm/radeon/ss: use num_crtc rather than hardcoded 6 drm/radeon: split ATRM support out from the ATPX handler (v3) drm/radeon/atom: rework DIG modesetting on DCE3+ drm/radeon/atom: powergating fixes for DCE6
drm/radeon: convert radeon vfct code to use acpi_get_table_with_size drm/radeon: don't disable plls that are in use by other crtcs drm/radeon: fix dig encoder selection on DCE61
Alexey Khoroshilov (1):
net/core: Fix potential memory leak in dev_set_alias()
Alexis R. Cortes (1):
usb: host: xhci: Fix Compliance Mode on SN65LVPE502CP Hardware
Amerigo Wang (1):
netconsole: remove a redundant netconsole_target_put()
Andre Guedes (1):
Bluetooth: Fix use-after-free bug in SMP
Andreas Herrmann (1):
hwmon: (fam15h_power) Tweak runavg_range on resume
Andreas Schwab (1):
sound/aoa: Adapt to new i2c probing scheme
Andrzej Kaczmarek (2):
Bluetooth: mgmt: Fix enabling SSP while powered off
Bluetooth: mgmt: Fix enabling LE while powered off
Anisse Astier (1):
Input: i8042 - disable mux on Toshiba C850D
Atsushi Nemoto (1):
drivers/rtc/rtc-rs5c348.c: fix hour decoding in 12-hour mode
Ben Hutchings (5):
net: Allow driver to limit number of GSO segments per skb
sfc: Fix maximum number of TSO segments and minimum TX queue size
tcp: Apply device TSO segment limit earlier
ipv6: addrconf: Avoid calling netdevice notifiers with RCU read-side lock
sfc: Fix reporting of IPv4 full filters through ethtool
Ben Skeggs (1):
drm/nvc0/copy: check PUNITS to determine which copy engines are disabled
Benjamin Herrenschmidt (1):
i2c/powermac: Improve detection of devices from device-tree
Benoît Locher (1):
can: mcp251x: avoid repeated frame bug
Bjørn Mork (8):
USB: option: replace ZTE K5006-Z entry with vendor class rule
kobject: fix oops with "input0: bad kobj_uevent_env content in show_uevent()"
net: usbnet: fix softirq storm on suspend
USB: ftdi_sio: do not claim CDC ACM function
USB: cdc-wdm: fix wdm_find_device* return value
net: qmi_wwan: add ZTE MF821D
net: qmi_wwan: add Sierra Wireless devices
net: qmi_wwan: new devices: UML290 and K5006-Z
Charles Wang (1):
sched: Add missing call to calc_load_exit_idle()
Chris Wilson (1):
drm/i915: Reduce a pin-leak BUG into a WARN
Christian König (2):
drm/radeon: init lockup timeout on ring init drm/radeon: make 64bit fences more robust v3
Christopher Brannon (1):
Staging: speakup: fix an improperly-declared variable.
Claudiu Manoil (1):
gianfar: fix default tx vlan offload feature flag
Corentin Chary (1):
asus-laptop: HRWS/HWRS typo
Dae S. Kim (1):
Staging: Android alarm: IOCTL command encoding fix
Dan Carpenter (2):
xhci: Fix a logical vs bitwise AND bug
vmwgfx: corruption in vmw_event_fence_action_create()
Daniel J Blueman (1):
libata: Prevent interface errors with Seagate FreeAgent GoFlex
Daniel Mack (1):
ALSA: snd-usb: fix next_packet_size calls for pause case
Daniel Vetter (3):
drm/i915: use hsw rps tuning values everywhere on gen6+ drm/i915: set the right gen3 flip_done mode also at resume drm/i915: enable lvds pin pairs before dpll on gen2
Darren Hart (1):
pch_uart: Add eg20t_port lock field, avoid recursive spinlocks
Dave Airlie (4):
vmwgfx: add dumb ioctl support
fbcon: fix race condition between console lock and cursor timer (v1.1) drm/nouveau: fix booting with plymouth + dumb support drm/udl: limit modes to the sku pixel limits.
David Brown (1):
ARM: 7513/1: Make sure dtc is built before running it
David Lamparter (1):
drm/radeon: implement ACPI VFCT vbios fetch (v3)
Dirk Behme (1):
tty: serial: imx: don't reinit clock in imx_setup_ufcr()
Dmitry Kasatkin (1):
digsig: add hash size comparision on signature verification
Douglas Bagnall (1):
media: Avoid sysfs oops when an rc_dev's raw device is absent
Dylan Reid (1):
ASoC: samsung dma - Don't indicate support for pause/resume.
Eddie Wai (1):
SCSI: bnx2i: Fixed NULL ptr deference for 1G bnx2 Linux iSCSI offload
Eliad Peller (1):
mac80211: clear bssid on auth/assoc failure
Emmanuel Grumbach (1):
iwlwifi: don't double free the interrupt in failure path
Eric Dumazet (3):
codel: refine one condition to avoid a nul rec_inv_sqrt
af_netlink: force credentials passing [CVE-2012-3520]
staging: r8712u: fix bug in r8712_recv_indicatepkt()Eric Leblond (1):
af_packet: don't emit packet on orig fanout group
Fabio Estevam (3):
ARM: clk-imx25: Fix SSI clock registration
ARM: clk-imx35: Fix SSI clock registration
ARM: imx: armadillo5x0: Fix illegal register access
Francesco Ruggeri (2):
net: ipv4: ipmr_expire_timer causes crash when removing net namespace fs/proc: fix potential unregister_sysctl_table hang
Gao feng (1):
pptp: lookup route with the proper net namespace
Gertjan van Wingerde (3):
rt2x00: Identify ASUS USB-N53 device.
rt2x00: Fix word size of rt2500usb MAC_CSR19 register.
rt2x00: Fix rfkill polling prior to interface start.
Greg Kroah-Hartman (1):
Linux 3.5.5
Guenter Roeck (4):
hwmon: (twl4030-madc-hwmon) Initialize uninitialized structure elements
hwmon: (ina2xx) Fix word size register read and write operations
hwmon: (ads7871) Add 'name' sysfs attribute
hwmon: (ad7314) Add 'name' sysfs attribute
Gustavo Padovan (1):
Bluetooth: Use USB_VENDOR_AND_INTERFACE() for Broadcom devices
Hante Meuleman (2):
brcmfmac: fix big endian bug in i-scan.
brcmfmac: Fix big endian host configuration data.
Henrik Rydberg (1):
Bluetooth: Add support for Apple vendor-specific devices
Hiroaki SHIMODA (1):
net_sched: gact: Fix potential panic in tcf_gact().
Horst Schirmeier (1):
USB: ftdi_sio: PID for NZR SEM 16+ USB
Ian Abbott (3):
staging: comedi: amplc_pci224: Fix PCI ref count
staging: comedi: das08: Correct AO output for das08jr-16-ao
staging: comedi: das08: Correct AI encoding for das08jr-16-ao
Ian Chen (1):
mmc: card: Skip secure erase on MoviNAND; causes unrecoverable corruption.
Igor Grinberg (1):
ARM: OMAP: timer: obey the !CONFIG_OMAP_32K_TIMER
Ira W. Snyder (1):
can: janz-ican3: fix support for older hardware revisions
Jaccon Bastiaansen (1):
cs89x0 : packet reception not working
Jakob Bornecrantz (1):
drm: Check for invalid cursor flags
James Bottomley (1):
SCSI: lpfc: fix problems with -Werror
Jani Nikula (3):
drm/i915: extract connector update from intel_ddc_get_modes() for reuse drm/i915: fall back to bit-banging if GMBUS fails in CRT EDID reads drm/i915: only enable sdvo hotplug irq if needed
Jarod Wilson (1):
media: lirc_sir: make device registration work
Jeff Layton (1):
cifs: fix return value in cifsConvertToUTF16
Jerome Glisse (3):
drm/radeon: avoid turning off spread spectrum for used pll drm/radeon: fence virtual address and free it once idle v4 drm/radeon: force dma32 to fix regression rs4xx,rs6xx,rs740
Jesse Gross (1):
openvswitch: Reset upper layer protocol info on internal devices.
Jianguo Wu (1):
mm/ia64: fix a memory block size bug
Joachim Eastwood (1):
USB: ohci-at91: fix null pointer in ohci_hcd_at91_overcurrent_irq
Johannes Berg (2):
iwlwifi: protect SRAM debugfs
iwlwifi: fix flow handler debug code
John Stultz (3):
time: Improve sanity checking of timekeeping inputs
time: Avoid making adjustments if we haven't accumulated anything
time: Move ktime_t overflow checking into timespec_valid_strict
Jovi Zhang (1):
MIPS: mm: Add compound tail page _mapcount when mapped
Karsten Keil (1):
mISDN: Fix wrong usage of flush_work_sync while holding locks
Keng-Yu Lin (1):
Intel xhci: Only switch the switchable ports
Keshava Munegowda (1):
OMAP: USB : Fix the EHCI enumeration and core retention issue
Kevin Hilman (1):
drivers/rtc/rtc-twl.c: ensure all interrupts are disabled during probe
Kishon Vijay Abraham I (1):
usb: dwc3: core: fix incorrect usage of resource pointer
Konrad Rzeszutek Wilk (2):
xen/boot: Disable BIOS SMP MP table search.
xen/boot: Disable NUMA for PV guests.
Lai Jiangshan (1):
workqueue: UNBOUND -> REBIND morphing in rebind_workers() should be atomic
Larry Finger (1):
rtlwifi: rtl8192ce: Log message that B_CUT device may not work
Lauri Hintsala (2):
mmc: mxs-mmc: fix deadlock in SDIO IRQ case
mmc: mxs-mmc: fix deadlock caused by recursion loop
Li Haifeng (1):
mm/page_alloc: fix the page address of higher page's buddy calculation
Li Zhong (1):
Fix a dead loop in async_synchronize_full()
Lin Ming (1):
ACPI / PM: Fix resource_lock dead lock in acpi_power_on_device
Linus Torvalds (1):
vfs: make O_PATH file descriptors usable for 'fstat()'
Ludovic Desroches (1):
mmc: atmel-mci: not busy flag has also to be used for read operations
Luis R. Rodriguez (1):
cfg80211: fix possible circular lock on reg_regdb_search()
Malcolm Priestley (1):
staging: vt6656: [BUG] - Failed connection, incorrect endian.
Manoj Iyer (2):
xhci: Recognize USB 3.0 devices as superspeed at powerup
Bluetooth: btusb: Add vendor specific ID (0a5c:21f4) BCM20702A0
Marc Kleine-Budde (3):
can: ti_hecc: fix oops during rmmod
usb: chipidea: udc: fix error path in udc_start()
usb: chipidea: cleanup dma_pool if udc_start() fails
Mark Brown (1):
ASoC: wm2000: Correct register size
Mark Salter (1):
c/r: prctl: fix build error for no-MMU case
Markus Trippelsdorf (1):
dyndbg: fix for SOH in logging messages
Mathias Krause (13):
atm: fix info leak in getsockopt(SO_ATMPVC)
atm: fix info leak via getsockname()
Bluetooth: HCI - Fix info leak in getsockopt(HCI_FILTER)
Bluetooth: HCI - Fix info leak via getsockname()
Bluetooth: RFCOMM - Fix info leak in getsockopt(BT_SECURITY)
Bluetooth: RFCOMM - Fix info leak in ioctl(RFCOMMGETDEVLIST)
Bluetooth: RFCOMM - Fix info leak via getsockname()
Bluetooth: L2CAP - Fix info leak via getsockname()
l2tp: fix info leak via getsockname()
llc: fix info leak via getsockname()
dccp: fix info leak via getsockopt(DCCP_SOCKOPT_CCID_TX_INFO)
ipvs: fix info leak in getsockopt(IP_VS_SO_GET_TIMEOUT)
net: fix info leak in compat dev_ifconf()
Matteo Frigo (1):
ALSA: ice1724: Use linear scale for AK4396 volume control.
Matthew Garrett (1):
xhci: Make handover code more robust
Matthew Leach (1):
ARM: 7532/1: decompressor: reset SCTLR.TRE for VMSA ARMv7 cores
Maxim Levitsky (1):
drm/nv86/fifo: suspend fix
Mel Gorman (1):
Redefine ATOMIC_INIT and ATOMIC64_INIT to drop the casts
Michael Grzeschik (3):
usb: chipidea: udc: add pullup fuction, needed by the uvc gadget
usb: chipidea: udc: fix setup of endpoint maxpacket size
usb: chipidea: udc: don't stall endpoint if request list is empty in isr_tr_complete_low
Miklos Szeredi (1):
vfs: dcache: use DCACHE_DENTRY_KILLED instead of DCACHE_DISCONNECTED in d_kill()
Moiz Sonasath (1):
usb: host: xhci: fix compilation error for non-PCI based stacks
NeilBrown (5):
md: Don't truncate size at 4TB for RAID0 and Linear md/raid10: fix problem with on-stack allocation of r10bio structure.
md: make sure metadata is updated when spares are activated or removed. md/raid5: fix calculate of 'degraded' when a replacement becomes active. md/raid10: fix "enough" function for detecting if array is failed.
Nestor Lopez Casado (1):
HID: Fix logitech-dj: missing Unifying device issue
Nicholas Bellinger (1):
target: Fix ->data_length re-assignment bug with SCSI overflow
Nicolas Ferre (3):
dmaengine: at_hdmac: fix comment in atc_prep_slave_sg()
dmaengine: at_hdmac: check that each sg data length is non-null
USB: ohci-at91: fix PIO handling in relation with number of ports
Pablo Neira Ayuso (1):
netlink: fix possible spoofing from non-root processes
Paolo Bonzini (1):
target: simplify code around transport_get_sense_data
Paul Clements (1):
nbd: clear waiting_queue on shutdown
Paul Menzel (1):
drm: Add EDID_QUIRK_FORCE_REDUCED_BLANKING for ASUS VW222S
Pavankumar Kondeti (1):
EHCI: Update qTD next pointer in QH overlay region during unlink
Peng Chen (1):
Bluetooth: add support for atheros 0489:e057
Peter Zijlstra (1):
sched: Fix race in task_group()
Ping Cheng (2):
Input: wacom - add support to Cintiq 22HD
Input: wacom - rearrange type enum
Pratyush Anand (1):
usb: dwc3: ep0: correct cache sync issue in case of ep0_bounced
Rafael J. Wysocki (4):
ACPI / PM: Infer parent power state from child if unknown, v2 PM / Runtime: Fix rpm_resume() return value for power.no_callbacks set PM / Runtime: Clear power.deferred_resume on success in rpm_suspend() PM / Runtime: Check device PM QoS setting before "no callbacks" check
Richard Cochran (1):
gianfar: fix phc index build failure
Robert Richter (2):
oprofile, s390: Fix uninitialized memory access when writing to oprofilefs perf/x86/ibs: Check syscall attribute flags
Robin Holt (1):
drivers/misc/sgi-xp/xpc_uv.c: SGI XPC fails to load when cpu 0 is out of IRQ resources
Roland Stigge (1):
gpio-lpc32xx: Fix value handling of gpio_direction_output()
Ruchika Kharwar (1):
usb: host: xhci-plat: use ioremap_nocache
Russell King (2):
ARM: 7527/1: uaccess: explicitly check __user pointer when !CPU_USE_DOMAINS
ARM: Fix ioremap() of address zero
Sachin Kamat (2):
DMA: PL330: Fix potential NULL pointer dereference in pl330_submit_req()
DMA: PL330: Check the pointer returned by kzalloc
Santiago Leon (1):
ibmveth: Fix alignment of rx queue bug
Sebastian Andrzej Siewior (4):
usb: gadget: dummy_hcd: fixup error probe path
usb: gadget: dummy_hcd: add support for USB_DT_BOS on rh
usb: gadget: at91udc: don't overwrite driver data
usb: gadget: at91udc: Don't check for ep->ep.desc
Sergei Poselenov (1):
rt2800usb: Added rx packet length validity check
Seth Forshee (1):
irq_remap: disable IRQ remapping if any IOAPIC lacks an IOMMU
Seth Jennings (1):
staging: zcache: fix cleancache race condition with shrinker
Shawn Guo (1):
mmc: sdhci-esdhc: break out early if clock is 0
Stanislav Kinsbursky (2):
NFSd: introduce nfsd_destroy() helper
NFSd: set nfsd_serv to NULL after service destruction
Stefano Stabellini (1):
xen/m2p: do not reuse kmap_op->dev_bus_addr
Stephen M. Cameron (2):
cciss: fix handling of protocol error
SCSI: hpsa: fix handling of protocol error
Stephen Warren (1):
sound: tegra_alc5632: remove HP detect GPIO inversion
Suresh Siddha (1):
x86, avx: don't use avx instructions with "noxsave" boot param
Søren Holm (1):
asix: Support DLink DUB-E100 H/W Ver C1
Takashi Iwai (4):
ALSA: hda - Fix missing Master volume for STAC9200/925x
ALSA: usb-audio: Fix bogus error messages for delay accounting
ALSA: hda - Fix Oops at codec reset/reconfig
ALSA: hda - Workaround for silent output on VAIO Z with ALC889
Tejun Heo (4):
workqueue: reimplement work_on_cpu() using system_wq
cpufreq/powernow-k8: workqueue user shouldn't migrate the kworker to another CPU
kthread_worker: reorganize to prepare for flush_kthread_work() reimplementation
kthread_worker: reimplement flush_kthread_work() to allow freeing the work item being executed
Timur Tabi (2):
powerpc/85xx: p1022ds: disable the NAND flash node if video is enabled powerpc/85xx: p1022ds: fix DIU/LBC switching with NAND enabled
Tomoya MORINAGA (2):
pch_uart: Fix rx error interrupt setting issue
pch_uart: Fix parity setting issue
Toshi Kani (1):
hpwdt: Fix kdump issue in hpwdt
Trond Myklebust (3):
NFS: Fix the initialisation of the readdir 'cookieverf' array
NFS: Fix a problem with the legacy binary mount code
NFS: Fix Oopses in nfs_lookup_revalidate and nfs4_lookup_revalidate
Tvrtko Ursulin (1):
drm/radeon/kms: extend the Fujitsu D3003-S2 board connector quirk to cover later silicon stepping
Tyler Hicks (1):
eCryptfs: Copy up attributes of the lower target inode after rename
Vinicius Costa Gomes (3):
Bluetooth: Fix not removing power_off delayed work
Bluetooth: Change signature of smp_conn_security()
Bluetooth: Fix sending a HCI Authorization Request over LE links
Wang Sen (1):
SCSI: scsi: virtio-scsi: Fix address translation failure of HighMem pages used by sg list
Wang Xingchao (1):
drm/i915: HDMI - Clear Audio Enable bit for Hot Plug
Weiping Pan (1):
rds: set correct msg_namelen
Wen Congyang (1):
tracing: Don't call page_to_pfn() if page is NULL
Weston Andros Adamson (1):
NFS: return error from decode_getfh in decode open
Will Deacon (5):
ARM: 7496/1: hw_breakpoint: don't rely on dfsr to show watchpoint access type
ARM: 7501/1: decompressor: reset ttbcr for VMSA ARMv7 cores
ARM: 7526/1: traps: send SIGILL if get_user fails on undef handling path
mutex: Place lock in contended state after fastpath_lock failure
ARM: 7467/1: mutex: use generic xchg-based implementation for ARMv6+
Wu Fengguang (1):
isdnloop: fix and simplify isdnloop_init()
Xinyu Chen (1):
tty: serial: imx: console write routing is unsafe on SMP
Xu, Anhua (1):
drm/i915: fix wrong order of parameters in port checking functions
Yevgeniy Melnichuk (1):
Bluetooth: Add support for Sony Vaio T-Series
Yuchung Cheng (1):
tcp: fix cwnd reduction for non-sack recovery
Yuval Mintz (1):
bnx2x: fix 57840_MF pci id
[email protected] (1):
af_packet: remove BUG statement in tpacket_destruct_skb
qiuxishi (1):
memory hotplug: fix section info double registration bug
[email protected] (1):
SCSI: mpt2sas: Fix for issue - Unable to boot from the drive connected to HBA
[email protected] (1):
l2tp: avoid to use synchronize_rcu in tunnel free function
Éric Piel (1):
USB: ftdi-sio: add support for more Physik Instrumente devices
Documentation/sound/alsa/HD-Audio-Models.txt +1 -0
@@ -47,6 +47,7 @@ ALC882/883/885/888/889 acer-aspire-4930g Acer Aspire 4930G/5930G/6530G/6930G/7730G acer-aspire-8930g Acer Aspire 8330G/6935G acer-aspire Acer Aspire others + no-primary-hp VAIO Z workaround (for fixed speaker DAC) ALC861/660 ==========
Makefile +1 -1
@@ -1,6 +1,6 @@ VERSION = 3 PATCHLEVEL = 5 -SUBLEVEL = 4 +SUBLEVEL = 5 EXTRAVERSION = NAME = Saber-toothed Squirrel
arch/alpha/include/asm/atomic.h +2 -2
@@ -14,8 +14,8 @@*/ -#define ATOMIC_INIT (i) ( (atomic_t) { (i) } ) -#define ATOMIC64_INIT (i) ( (atomic64_t) { (i) } ) +#define ATOMIC_INIT (i) { (i) } +#define ATOMIC64_INIT (i) { (i) }#define atomic_read (v) (*(volatile int *)&(v)->counter)#define atomic64_read (v) (*(volatile long *)&(v)->counter)
arch/arm/Makefile +2 -2
@@ -279,10 +279,10 @@ zImage Image xipImage bootpImage uImage: vmlinux zinstall uinstall install: vmlinux $(Q)$(MAKE) $(build)=$(boot) MACHINE=$(MACHINE) $@ -%.dtb: +%.dtb: scripts $(Q)$(MAKE) $(build)=$(boot) MACHINE=$(MACHINE) $(boot)/$@ -dtbs: +dtbs: scripts $(Q)$(MAKE) $(build)=$(boot) MACHINE=$(MACHINE) $(boot)/$@ # We use MRPROPER_FILES and CLEAN_FILES now
arch/arm/boot/compressed/head.S +5 -0
@@ -653,16 +653,21 @@ __armv7_mmu_cache_on: mcrne p15, 0, r0, c8, c7, 0 @ flush I,D TLBs #endif mrc p15, 0, r0, c1, c0, 0 @ read control reg + bic r0, r0, #1 << 28 @ clear SCTLR.TRE orr r0, r0, #0x5000 @ I-cache enable, RR cache replacement orr r0, r0, #0x003c @ write buffer #ifdef CONFIG_MMU #ifdef CONFIG_CPU_ENDIAN_BE8 orr r0, r0, #1 << 25 @ big-endian page tables #endif + mrcne p15, 0, r6, c2, c0, 2 @ read ttb control reg orrne r0, r0, #1 @ MMU enabled movne r1, #0xfffffffd @ domain 0 = client + bic r6, r6, #1 << 31 @ 32-bit translation system + bic r6, r6, #3 << 0 @ use only ttbr0 mcrne p15, 0, r3, c2, c0, 0 @ load page table pointer mcrne p15, 0, r1, c3, c0, 0 @ load domain access control + mcrne p15, 0, r6, c2, c0, 2 @ load ttb control #endif mcr p15, 0, r0, c7, c5, 4 @ ISB mcr p15, 0, r0, c1, c0, 0 @ load control register
arch/arm/include/asm/assembler.h +8 -0
@@ -320,4 +320,12 @@ .size \name , . - \name .endm + .macro check_uaccess, addr:req, size:req, limit:req, tmp:req, bad:req +#ifndef CONFIG_CPU_USE_DOMAINS + adds \tmp, \addr, #\size - 1 + sbcccs \tmp, \tmp, \limit + bcs \bad +#endif + .endm + #endif /* __ASM_ASSEMBLER_H__ */
arch/arm/include/asm/mutex.h +4 -115
125 lines not on this page · raw message
arch/arm/include/asm/uaccess.h +27 -13
@@ -101,28 +101,39 @@ extern int __get_user_1(void *);extern int __get_user_2 (void *);extern int __get_user_4 (void *); -#define __get_user_x(__r2,__p,__e,__s,__i...) \ +#define __GUP_CLOBBER_1 "lr", "cc" +#ifdef CONFIG_CPU_USE_DOMAINS +#define __GUP_CLOBBER_2 "ip", "lr", "cc" +#else +#define __GUP_CLOBBER_2 "lr", "cc" +#endif +#define __GUP_CLOBBER_4 "lr", "cc" + +#define __get_user_x (__r2,__p,__e,__l,__s) \ __asm__ __volatile__ ( \ __asmeq("%0", "r0") __asmeq("%1", "r2") \ + __asmeq("%3", "r1") \ "bl __get_user_" #__s \ : "=&r" (__e), "=r" (__r2) \ - : "0" (__p) \ - : __i, "cc") + : "0" (__p), "r" (__l) \ + : __GUP_CLOBBER_##__s)#define get_user (x,p) \ ({ \ + unsigned long __limit = current_thread_info()->addr_limit - 1; \ register const typeof(*(p)) __user *__p asm("r0") = (p);\ register unsigned long __r2 asm("r2"); \ + register unsigned long __l asm("r1") = __limit; \ register int __e asm("r0"); \ switch (sizeof(*(__p))) { \ case 1: \ - __get_user_x(__r2, __p, __e, 1, "lr"); \ - break; \ + __get_user_x(__r2, __p, __e, __l, 1); \ + break; \ case 2: \ - __get_user_x(__r2, __p, __e, 2, "r3", "lr"); \ + __get_user_x(__r2, __p, __e, __l, 2); \ break; \ case 4: \ - __get_user_x(__r2, __p, __e, 4, "lr"); \ + __get_user_x(__r2, __p, __e, __l, 4); \ break; \ default: __e = __get_user_bad(); break; \ } \
@@ -135,31 +146,34 @@ extern int __put_user_2(void *, unsigned int);extern int __put_user_4 (void *,unsigned int );extern int __put_user_8 (void *,unsigned long long ); -#define __put_user_x (__r2,__p,__e,__s) \ +#define __put_user_x (__r2,__p,__e,__l,__s) \ __asm__ __volatile__ ( \ __asmeq("%0", "r0") __asmeq("%2", "r2") \ + __asmeq("%3", "r1") \ "bl __put_user_" #__s \ : "=&r" (__e) \ - : "0" (__p), "r" (__r2) \ + : "0" (__p), "r" (__r2), "r" (__l) \ : "ip", "lr", "cc")#define put_user (x,p) \ ({ \ + unsigned long __limit = current_thread_info()->addr_limit - 1; \ register const typeof(*(p)) __r2 asm("r2") = (x); \ register const typeof(*(p)) __user *__p asm("r0") = (p);\ + register unsigned long __l asm("r1") = __limit; \ register int __e asm("r0"); \ switch (sizeof(*(__p))) { \ case 1: \ - __put_user_x(__r2, __p, __e, 1); \ + __put_user_x(__r2, __p, __e, __l, 1); \ break; \ case 2: \ - __put_user_x(__r2, __p, __e, 2); \ + __put_user_x(__r2, __p, __e, __l, 2); \ break; \ case 4: \ - __put_user_x(__r2, __p, __e, 4); \ + __put_user_x(__r2, __p, __e, __l, 4); \ break; \ case 8: \ - __put_user_x(__r2, __p, __e, 8); \ + __put_user_x(__r2, __p, __e, __l, 8); \ break; \ default: __e = __put_user_bad(); break; \ } \
arch/arm/kernel/hw_breakpoint.c +40 -15
74 lines not on this page · raw message
arch/arm/kernel/traps.c +7 -4
@@ -388,20 +388,23 @@ asmlinkage void __exception do_undefinstr(struct pt_regs *regs)#endif instr = *(u32 *) pc; }else if (thumb_mode (regs)) { -get_user (instr, (u16 __user *)pc); +if (get_user (instr, (u16 __user *)pc)) + goto die_sig;if (is_wide_instruction (instr)) {unsigned int instr2; -get_user (instr2, (u16 __user *)pc+1 ); +if (get_user (instr2, (u16 __user *)pc+1 )) + goto die_sig; instr <<=16 ; instr |= instr2; } - }else { -get_user (instr, (u32 __user *)pc); + }else if (get_user (instr, (u32 __user *)pc)) { + goto die_sig; }if (call_undef_hook (regs, instr) ==0 )return ; +die_sig:#ifdef CONFIG_DEBUG_USER if (user_debug &UDBG_UNDEFINED ) { printk(KERN_INFO "%s (%d): undefined instruction: pc=%p\n",
arch/arm/lib/getuser.S +15 -8
@@ -16,8 +16,9 @@ * __get_user_X * * Inputs: r0 contains the address + * r1 contains the address limit, which must be preserved * Outputs: r0 is the error code - * r2, r3 contains the zero-extended value + * r2 contains the zero-extended value * lr corrupted * * No other registers must be altered. (see <asm/uaccess.h>
@@ -27,33 +28,39 @@ * Note also that it is intended that __get_user_bad is not global. */ #include <linux/linkage.h> +#include <asm/assembler.h> #include <asm/errno.h> #include <asm/domain.h> ENTRY(__get_user_1) + check_uaccess r0, 1, r1, r2, __get_user_bad 1: TUSER(ldrb) r2, [r0] mov r0, #0 mov pc, lr ENDPROC(__get_user_1) ENTRY(__get_user_2) -#ifdef CONFIG_THUMB2_KERNEL -2: TUSER(ldrb) r2, [r0] -3: TUSER(ldrb) r3, [r0, #1] + check_uaccess r0, 2, r1, r2, __get_user_bad +#ifdef CONFIG_CPU_USE_DOMAINS +rb .req ip +2: ldrbt r2, [r0], #1 +3: ldrbt rb, [r0], #0 #else -2: TUSER(ldrb) r2, [r0], #1 -3: TUSER(ldrb) r3, [r0] +rb .req r0 +2: ldrb r2, [r0] +3: ldrb rb, [r0, #1] #endif #ifndef __ARMEB__ - orr r2, r2, r3, lsl #8 + orr r2, r2, rb, lsl #8 #else - orr r2, r3, r2, lsl #8 + orr r2, rb, r2, lsl #8 #endif mov r0, #0 mov pc, lr ENDPROC(__get_user_2) ENTRY(__get_user_4) + check_uaccess r0, 4, r1, r2, __get_user_bad 4: TUSER(ldr) r2, [r0] mov r0, #0 mov pc, lr
arch/arm/lib/putuser.S +6 -0
@@ -16,6 +16,7 @@ * __put_user_X * * Inputs: r0 contains the address + * r1 contains the address limit, which must be preserved * r2, r3 contains the value * Outputs: r0 is the error code * lr corrupted
@@ -27,16 +28,19 @@ * Note also that it is intended that __put_user_bad is not global. */ #include <linux/linkage.h> +#include <asm/assembler.h> #include <asm/errno.h> #include <asm/domain.h> ENTRY(__put_user_1) + check_uaccess r0, 1, r1, ip, __put_user_bad 1: TUSER(strb) r2, [r0] mov r0, #0 mov pc, lr ENDPROC(__put_user_1) ENTRY(__put_user_2) + check_uaccess r0, 2, r1, ip, __put_user_bad mov ip, r2, lsr #8 #ifdef CONFIG_THUMB2_KERNEL #ifndef __ARMEB__
@@ -60,12 +64,14 @@ ENTRY(__put_user_2) ENDPROC(__put_user_2) ENTRY(__put_user_4) + check_uaccess r0, 4, r1, ip, __put_user_bad 4: TUSER(str) r2, [r0] mov r0, #0 mov pc, lr ENDPROC(__put_user_4) ENTRY(__put_user_8) + check_uaccess r0, 8, r1, ip, __put_user_bad #ifdef CONFIG_THUMB2_KERNEL 5: TUSER(str) r2, [r0] 6: TUSER(str) r3, [r0, #4]
arch/arm/mach-imx/clk-imx25.c +2 -4
@@ -222,10 +222,8 @@ int __init mx25_clocks_init(void)clk_register_clkdev (clk[lcdc_ipg],"ipg" ,"imx-fb.0" );clk_register_clkdev (clk[lcdc_ahb],"ahb" ,"imx-fb.0" );clk_register_clkdev (clk[wdt_ipg],NULL ,"imx2-wdt.0" ); -clk_register_clkdev (clk[ssi1_ipg_per],"per" ,"imx-ssi.0" ); -clk_register_clkdev (clk[ssi1_ipg],"ipg" ,"imx-ssi.0" ); -clk_register_clkdev (clk[ssi2_ipg_per],"per" ,"imx-ssi.1" ); -clk_register_clkdev (clk[ssi2_ipg],"ipg" ,"imx-ssi.1" ); +clk_register_clkdev (clk[ssi1_ipg],NULL ,"imx-ssi.0" ); +clk_register_clkdev (clk[ssi2_ipg],NULL ,"imx-ssi.1" );clk_register_clkdev (clk[esdhc1_ipg_per],"per" ,"sdhci-esdhc-imx25.0" );clk_register_clkdev (clk[esdhc1_ipg],"ipg" ,"sdhci-esdhc-imx25.0" );clk_register_clkdev (clk[esdhc1_ahb],"ahb" ,"sdhci-esdhc-imx25.0" );
arch/arm/mach-imx/clk-imx35.c +2 -4
@@ -230,10 +230,8 @@ int __init mx35_clocks_init()clk_register_clkdev (clk[ipu_gate],NULL ,"mx3_sdc_fb" );clk_register_clkdev (clk[owire_gate],NULL ,"mxc_w1" );clk_register_clkdev (clk[sdma_gate],NULL ,"imx35-sdma" ); -clk_register_clkdev (clk[ipg],"ipg" ,"imx-ssi.0" ); -clk_register_clkdev (clk[ssi1_div_post],"per" ,"imx-ssi.0" ); -clk_register_clkdev (clk[ipg],"ipg" ,"imx-ssi.1" ); -clk_register_clkdev (clk[ssi2_div_post],"per" ,"imx-ssi.1" ); +clk_register_clkdev (clk[ssi1_gate],NULL ,"imx-ssi.0" ); +clk_register_clkdev (clk[ssi2_gate],NULL ,"imx-ssi.1" );/* i.mx35 has the i.mx21 type uart */ clk_register_clkdev (clk[uart1_gate],"per" ,"imx21-uart.0" );clk_register_clkdev (clk[ipg],"ipg" ,"imx21-uart.0" );
arch/arm/mach-imx/mach-armadillo5x0.c +2 -1
@@ -526,7 +526,8 @@ static void __init armadillo5x0_init(void)imx31_add_mxc_nand (&armadillo5x0_nand_board_info);/* set NAND page size to 2k if not configured via boot mode pins */ -__raw_writel (__raw_readl (MXC_CCM_RCSR ) | (1 <<30 ),MXC_CCM_RCSR ); +__raw_writel (__raw_readl (mx3_ccm_base +MXC_CCM_RCSR ) | + (1 <<30 ), mx3_ccm_base +MXC_CCM_RCSR );/* RTC */ /* Get RTC IRQ and register the chip */
arch/arm/mach-omap2/timer.c +7 -0
@@ -263,6 +263,7 @@ static u32 notrace dmtimer_read_sched_clock(void)return 0 ; } +#ifdef CONFIG_OMAP_32K_TIMER /* Setup free-running counter for clocksource */ static int __init omap2_sync32k_clocksource_init (void ) {
@@ -302,6 +303,12 @@ static int __init omap2_sync32k_clocksource_init(void) return ret; } +#else +static inline int omap2_sync32k_clocksource_init (void ) +{ +return -ENODEV ; +} +#endif static void __init omap2_gptimer_clocksource_init (int gptimer_id,const char *fck_source)
arch/arm/mm/mm.h +3 -0
@@ -55,6 +55,9 @@ extern void __flush_dcache_page(struct address_space *mapping, struct page *page/* permanent static mappings from iotable_init() */ #define VM_ARM_STATIC_MAPPING 0x40000000 +/* empty mapping */ +#define VM_ARM_EMPTY_MAPPING 0x20000000 +/* mapping type (attributes) for permanent static mappings */ #define VM_ARM_MTYPE (mt) ((mt) << 20)#define VM_ARM_MTYPE_MASK (0x1f << 20)
arch/arm/mm/mmu.c +2 -2
@@ -813,7 +813,7 @@ static void __init pmd_empty_section_gap(unsigned long addr) vm = early_alloc_aligned(sizeof(*vm), __alignof__(*vm)); vm->addr = (void *)addr; vm->size =SECTION_SIZE ; - vm->flags =VM_IOREMAP |VM_ARM_STATIC_MAPPING ; + vm->flags =VM_IOREMAP |VM_ARM_EMPTY_MAPPING ; vm->caller = pmd_empty_section_gap;vm_area_add_early (vm); }
@@ -826,7 +826,7 @@ static void __init fill_pmd_gaps(void)/* we're still single threaded hence no lock needed here */ for (vm = vmlist; vm; vm = vm->next) { -if (!(vm->flags &VM_ARM_STATIC_MAPPING )) +if (!(vm->flags & (VM_ARM_STATIC_MAPPING |VM_ARM_EMPTY_MAPPING )))continue ; addr = (unsigned long )vm->addr;if (addr < next)
arch/mips/mm/gup.c +2 -0
@@ -152,6 +152,8 @@ static int gup_huge_pud(pud_t pud, unsigned long addr, unsigned long end, do { VM_BUG_ON(compound_head(page) != head); pages[*nr] = page; + if (PageTail(page)) + get_huge_page_tail(page); (*nr)++; page++; refs++;
arch/powerpc/platforms/85xx/p1022_ds.c +91 -11
142 lines not on this page · raw message
arch/s390/oprofile/init.c +5 -5
@@ -171,7 +171,7 @@ static ssize_t hw_interval_write(struct file *file, char const __user *buf,if (*offset)return -EINVAL ; retval =oprofilefs_ulong_from_user (&val, buf, count); -if (retval) +if (retval <=0 )return retval;if (val < oprofile_min_interval) oprofile_hw_interval = oprofile_min_interval;
@@ -214,7 +214,7 @@ static ssize_t hwsampler_zero_write(struct file *file, char const __user *buf,return -EINVAL ; retval =oprofilefs_ulong_from_user (&val, buf, count); -if (retval) +if (retval <=0 )return retval;if (val !=0 )return -EINVAL ;
@@ -245,7 +245,7 @@ static ssize_t hwsampler_kernel_write(struct file *file, char const __user *buf,return -EINVAL ; retval =oprofilefs_ulong_from_user (&val, buf, count); -if (retval) +if (retval <=0 )return retval;if (val !=0 && val !=1 )
@@ -280,7 +280,7 @@ static ssize_t hwsampler_user_write(struct file *file, char const __user *buf,return -EINVAL ; retval =oprofilefs_ulong_from_user (&val, buf, count); -if (retval) +if (retval <=0 )return retval;if (val !=0 && val !=1 )
@@ -319,7 +319,7 @@ static ssize_t timer_enabled_write(struct file *file, char const __user *buf,return -EINVAL ; retval =oprofilefs_ulong_from_user (&val, buf, count); -if (retval) +if (retval <=0 )return retval;if (val !=0 && val !=1 )
arch/x86/include/asm/xen/page.h +2 -1
@@ -51,7 +51,8 @@ extern unsigned long set_phys_range_identity(unsigned long pfn_s,extern int m2p_add_override (unsigned long mfn,struct page *page,struct gnttab_map_grant_ref *kmap_op); -extern int m2p_remove_override (struct page *page,bool clear_pte); +extern int m2p_remove_override (struct page *page, +struct gnttab_map_grant_ref *kmap_op);extern struct page *m2p_find_override (unsigned long mfn);extern unsigned long m2p_find_override_pfn (unsigned long mfn,unsigned long pfn);
arch/x86/kernel/cpu/common.c +2 -0
@@ -144,6 +144,8 @@ static int __init x86_xsave_setup(char *s) {setup_clear_cpu_cap (X86_FEATURE_XSAVE );setup_clear_cpu_cap (X86_FEATURE_XSAVEOPT ); +setup_clear_cpu_cap (X86_FEATURE_AVX ); +setup_clear_cpu_cap (X86_FEATURE_AVX2 );return 1 ; }__setup ("noxsave" , x86_xsave_setup);
arch/x86/kernel/cpu/perf_event_amd_ibs.c +12 -0
@@ -207,6 +207,15 @@ static int perf_ibs_precise_event(struct perf_event *event, u64 *config)return -EOPNOTSUPP ; } +static const struct perf_event_attr ibs_notsupp = { + .exclude_user =1 , + .exclude_kernel =1 , + .exclude_hv =1 , + .exclude_idle =1 , + .exclude_host =1 , + .exclude_guest =1 , +}; +static int perf_ibs_init (struct perf_event *event) {struct hw_perf_event *hwc = &event->hw;
@@ -227,6 +236,9 @@ static int perf_ibs_init(struct perf_event *event)if (event->pmu != &perf_ibs->pmu)return -ENOENT ; +if (perf_flags (&event->attr) &perf_flags (&ibs_notsupp)) +return -EINVAL ; +if (config & ~perf_ibs->config_mask)return -EINVAL ;
arch/x86/xen/enlighten.c +4 -0
@@ -1422,6 +1422,10 @@ asmlinkage void __init xen_start_kernel(void)pci_request_acs ();xen_acpi_sleep_register (); + +/* Avoid searching for BIOS MP tables */ + x86_init.mpparse.find_smp_config = x86_init_noop; + x86_init.mpparse.get_smp_config = x86_init_uint_noop; }#ifdef CONFIG_PCI /* PCI BIOS service won't work from a PV guest. */
arch/x86/xen/p2m.c +11 -16
@@ -828,9 +828,6 @@ int m2p_add_override(unsigned long mfn, struct page *page,xen_mc_issue (PARAVIRT_LAZY_MMU ); } -/* let's use dev_bus_addr to record the old mfn instead */ - kmap_op->dev_bus_addr = page->index; - page->index = (unsigned long ) kmap_op; }spin_lock_irqsave (&m2p_override_lock, flags);list_add (&page->lru, &m2p_overrides[mfn_hash (mfn)]);
@@ -857,7 +854,8 @@ int m2p_add_override(unsigned long mfn, struct page *page,return 0 ; }EXPORT_SYMBOL_GPL (m2p_add_override); -int m2p_remove_override (struct page *page,bool clear_pte) +int m2p_remove_override (struct page *page, +struct gnttab_map_grant_ref *kmap_op) {unsigned long flags;unsigned long mfn;
@@ -887,10 +885,8 @@ int m2p_remove_override(struct page *page, bool clear_pte)WARN_ON (!PagePrivate (page));ClearPagePrivate (page); -if (clear_pte) { -struct gnttab_map_grant_ref *map_op = - (struct gnttab_map_grant_ref *) page->index; -set_phys_to_machine (pfn, map_op->dev_bus_addr); +set_phys_to_machine (pfn, page->index); +if (kmap_op !=NULL ) {if (!PageHighMem (page)) {struct multicall_space mcs;struct gnttab_unmap_grant_ref *unmap_op;
@@ -902,13 +898,13 @@ int m2p_remove_override(struct page *page, bool clear_pte)* issued. In this case handle is going to -1 because * it hasn't been modified yet. */ -if (map_op->handle ==-1 ) +if (kmap_op->handle ==-1 )xen_mc_flush ();/* -* Now if map_op->handle is negative it means that the +* Now if kmap_op->handle is negative it means that the * hypercall actually returned an error. */ -if (map_op->handle == GNTST_general_error) { +if (kmap_op->handle == GNTST_general_error) {printk (KERN_WARNING "m2p_remove_override: " "pfn %lx mfn %lx, failed to modify kernel mappings" , pfn, mfn);
@@ -918,8 +914,8 @@ int m2p_remove_override(struct page *page, bool clear_pte) mcs =xen_mc_entry (sizeof (struct gnttab_unmap_grant_ref )); unmap_op = mcs.args; - unmap_op->host_addr = map_op->host_addr; - unmap_op->handle = map_op->handle; + unmap_op->host_addr = kmap_op->host_addr; + unmap_op->handle = kmap_op->handle; unmap_op->dev_bus_addr =0 ; MULTI_grant_table_op(mcs.mc,
@@ -930,10 +926,9 @@ int m2p_remove_override(struct page *page, bool clear_pte)set_pte_at (&init_mm, address, ptep,pfn_pte (pfn,PAGE_KERNEL ));__flush_tlb_single (address); - map_op->host_addr =0 ; + kmap_op->host_addr =0 ; } - }else -set_phys_to_machine (pfn, page->index); + }/* p2m(m2p(mfn)) == FOREIGN_FRAME(mfn): the mfn is already present * somewhere in this domain, even before being added to the
arch/x86/xen/setup.c +4 -0
@@ -17,6 +17,7 @@#include <asm/e820.h> #include <asm/setup.h> #include <asm/acpi.h> +#include <asm/numa.h> #include <asm/xen/hypervisor.h> #include <asm/xen/hypercall.h>
@@ -549,4 +550,7 @@ void __init xen_arch_setup(void)disable_cpufreq ();WARN_ON (set_pm_idle_to_default ());fiddle_vdso (); +#ifdef CONFIG_NUMA + numa_off =1 ; +#endif }
drivers/acpi/bus.c +10 -0
@@ -237,6 +237,16 @@ static int __acpi_bus_get_power(struct acpi_device *device, int *state) }else if (result ==ACPI_STATE_D3_HOT ) { result =ACPI_STATE_D3 ; } + +/* +* If we were unsure about the device parent's power state up to this +* point, the fact that the device is in D0 implies that the parent has +* to be in D0 too. +*/ +if (device->parent && device->parent->power.state ==ACPI_STATE_UNKNOWN + && result ==ACPI_STATE_D0 ) + device->parent->power.state =ACPI_STATE_D0 ; + *state = result; out:
drivers/acpi/power.c +24 -12
@@ -103,6 +103,7 @@ struct acpi_power_resource {/* List of devices relying on this power resource */ struct acpi_power_resource_device *devices; +struct mutex devices_lock; };static struct list_head acpi_power_resource_list;
@@ -221,7 +222,6 @@ static void acpi_power_on_device(struct acpi_power_managed_device *device)static int __acpi_power_on (struct acpi_power_resource *resource) { -struct acpi_power_resource_device *device_list = resource->devices;acpi_status status =AE_OK ; status =acpi_evaluate_object (resource->device->handle,"_ON" ,NULL ,NULL );
@@ -234,19 +234,15 @@ static int __acpi_power_on(struct acpi_power_resource *resource)ACPI_DEBUG_PRINT ((ACPI_DB_INFO ,"Power resource [%s] turned on\n" , resource->name)); -while (device_list) { -acpi_power_on_device (device_list->device); - - device_list = device_list->next; - } -return 0 ; }static int acpi_power_on (acpi_handle handle) {int result =0 ; +bool resume_device = false;struct acpi_power_resource *resource =NULL ; +struct acpi_power_resource_device *device_list; result =acpi_power_get_context (handle, &resource);if (result)
@@ -262,10 +258,25 @@ static int acpi_power_on(acpi_handle handle) result =__acpi_power_on (resource);if (result) resource->ref_count--; +else + resume_device = true; }mutex_unlock (&resource->resource_lock); +if (!resume_device) +return result; + +mutex_lock (&resource->devices_lock); + + device_list = resource->devices; +while (device_list) { +acpi_power_on_device (device_list->device); + device_list = device_list->next; + } + +mutex_unlock (&resource->devices_lock); +return result; }
@@ -351,7 +362,7 @@ static void __acpi_power_resource_unregister_device(struct device *dev,if (acpi_power_get_context (res_handle, &resource))return ; -mutex_lock (&resource->resource_lock); +mutex_lock (&resource->devices_lock); prev =NULL ; curr = resource->devices;while (curr) {
@@ -368,7 +379,7 @@ static void __acpi_power_resource_unregister_device(struct device *dev, prev = curr; curr = curr->next; } -mutex_unlock (&resource->resource_lock); +mutex_unlock (&resource->devices_lock); }/* Unlink dev from all power resources in _PR0 */
@@ -409,10 +420,10 @@ static int __acpi_power_resource_register_device( power_resource_device->device = powered_device; -mutex_lock (&resource->resource_lock); +mutex_lock (&resource->devices_lock); power_resource_device->next = resource->devices; resource->devices = power_resource_device; -mutex_unlock (&resource->resource_lock); +mutex_unlock (&resource->devices_lock);return 0 ; }
@@ -457,7 +468,7 @@ int acpi_power_resource_register_device(struct device *dev, acpi_handle handle)return ret; no_power_resource: - printk(KERN_WARNING PREFIX "Invalid Power Resource to register!"); + printk(KERN_DEBUG PREFIX "Invalid Power Resource to register!");return -ENODEV ; }
@@ -715,6 +726,7 @@ static int acpi_power_add(struct acpi_device *device) resource->device = device;mutex_init (&resource->resource_lock); +mutex_init (&resource->devices_lock);strcpy (resource->name, device->pnp.bus_id);strcpy (acpi_device_name (device),ACPI_POWER_DEVICE_NAME );strcpy (acpi_device_class (device),ACPI_POWER_CLASS );
drivers/ata/ahci.c +2 -0
@@ -396,6 +396,8 @@ static const struct pci_device_id ahci_pci_tbl[] = { .driver_data = board_ahci_yes_fbs }, /* 88se9125 */ { PCI_DEVICE(0x1b4b, 0x917a), .driver_data = board_ahci_yes_fbs }, /* 88se9172 */ + { PCI_DEVICE(0x1b4b, 0x9192), + .driver_data = board_ahci_yes_fbs }, /* 88se9172 on some Gigabyte */ { PCI_DEVICE(0x1b4b, 0x91a3), .driver_data = board_ahci_yes_fbs },
drivers/ata/libata-core.c +1 -0
@@ -4126,6 +4126,7 @@ static const struct ata_blacklist_entry ata_device_blacklist [] = {/* Devices which aren't very happy with higher link speeds */ { "WD My Book", NULL, ATA_HORKAGE_1_5_GBPS, }, + { "Seagate FreeAgent GoFlex", NULL, ATA_HORKAGE_1_5_GBPS, },/* * Devices which choke on SETXFER. Applies only if both the
drivers/base/core.c +2 -2
@@ -1895,8 +1895,8 @@ int __dev_printk(const char *level, const struct device *dev, "DEVICE=+%s:%s", subsys, dev_name(dev)); } skip: -if (level[3 ]) - level_extra = &level[3 ];/* skip past "<L>" */ +if (level[2 ]) + level_extra = &level[2 ];/* skip past KERN_SOH "L" */ return printk_emit(0, level[1] - '0', dictlen ? dict : NULL, dictlen,
drivers/base/power/runtime.c +5 -8
@@ -147,6 +147,8 @@ static int rpm_check_suspend_allowed(struct device *dev) || (dev->power.request_pending && dev->power.request == RPM_REQ_RESUME)) retval = -EAGAIN ; + else if (__dev_pm_qos_read_value(dev) < 0) + retval = -EPERM ; else if (dev->power.runtime_status == RPM_SUSPENDED) retval =1 ;
@@ -388,7 +390,6 @@ static int rpm_suspend(struct device *dev, int rpmflags) goto repeat; } - dev->power.deferred_resume = false;if (dev->power.no_callbacks) goto no_callback;/* Assume success. */
@@ -403,12 +404,6 @@ static int rpm_suspend(struct device *dev, int rpmflags) goto out; } -if (__dev_pm_qos_read_value (dev) <0 ) { -/* Negative PM QoS constraint means "never suspend". */ - retval = -EPERM ; - goto out; - } -__update_runtime_status (dev,RPM_SUSPENDING );if (dev->pm_domain)
@@ -440,6 +435,7 @@ static int rpm_suspend(struct device *dev, int rpmflags)wake_up_all (&dev->power.wait_queue);if (dev->power.deferred_resume) { + dev->power.deferred_resume = false;rpm_resume (dev,0 ); retval = -EAGAIN ; goto out;
@@ -584,6 +580,7 @@ static int rpm_resume(struct device *dev, int rpmflags) || dev->parent->power.runtime_status == RPM_ACTIVE) {atomic_inc (&dev->parent->power.child_count);spin_unlock (&dev->parent->power.lock); + retval =1 ; goto no_callback;/* Assume success. */ }spin_unlock (&dev->parent->power.lock);
@@ -664,7 +661,7 @@ static int rpm_resume(struct device *dev, int rpmflags) }wake_up_all (&dev->power.wait_queue); -if (!retval) +if (retval >=0 )rpm_idle (dev,RPM_ASYNC ); out:
drivers/block/cciss_scsi.c +1 -0
@@ -795,6 +795,7 @@ static void complete_scsi_command(CommandList_struct *c, int timeout, }break ;case CMD_PROTOCOL_ERR : + cmd->result =DID_ERROR <<16 ;dev_warn (&h->pdev->dev,"%p has protocol error\n" , c);break ;
drivers/block/nbd.c +9 -0
@@ -445,6 +445,14 @@ static void nbd_clear_que(struct nbd_device *nbd) req->errors++;nbd_end_request (req); } + +while (!list_empty (&nbd->waiting_queue)) { + req = list_entry(nbd->waiting_queue.next, struct request, + queuelist); +list_del_init (&req->queuelist); + req->errors++; +nbd_end_request (req); + } }
@@ -594,6 +602,7 @@ static int __nbd_ioctl(struct block_device *bdev, struct nbd_device *nbd, nbd->file =NULL ;nbd_clear_que (nbd);BUG_ON (!list_empty (&nbd->queue_head)); +BUG_ON (!list_empty (&nbd->waiting_queue));if (file)fput (file);return 0 ;
drivers/block/xen-blkback/blkback.c +1 -1
@@ -337,7 +337,7 @@ static void xen_blkbk_unmap(struct pending_req *req) invcount++; } - ret =gnttab_unmap_refs (unmap, pages, invcount, false); + ret =gnttab_unmap_refs (unmap,NULL , pages, invcount);BUG_ON (ret); }
drivers/bluetooth/ath3k.c +4 -0
@@ -79,12 +79,14 @@ static struct usb_device_id ath3k_table[] = { { USB_DEVICE(0x13d3, 0x3362) }, { USB_DEVICE(0x0CF3, 0xE004) }, { USB_DEVICE(0x0930, 0x0219) }, + { USB_DEVICE(0x0489, 0xe057) },/* Atheros AR5BBU12 with sflash firmware */ { USB_DEVICE(0x0489, 0xE02C) },/* Atheros AR5BBU22 with sflash firmware */ { USB_DEVICE(0x0489, 0xE03C) }, + { USB_DEVICE(0x0489, 0xE036) }, { } /* Terminating entry */ };
@@ -104,9 +106,11 @@ static struct usb_device_id ath3k_blist_tbl[] = { { USB_DEVICE(0x13d3, 0x3362), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x0cf3, 0xe004), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x0930, 0x0219), .driver_info = BTUSB_ATH3012 }, + { USB_DEVICE(0x0489, 0xe057), .driver_info = BTUSB_ATH3012 }, /* Atheros AR5BBU22 with sflash firmware */ { USB_DEVICE(0x0489, 0xE03C), .driver_info = BTUSB_ATH3012 }, + { USB_DEVICE(0x0489, 0xE036), .driver_info = BTUSB_ATH3012 }, { } /* Terminating entry */ };
drivers/bluetooth/btusb.c +8 -4
@@ -60,6 +60,9 @@ static struct usb_device_id btusb_table[] = {/* Generic Bluetooth USB device */ { USB_DEVICE_INFO(0xe0, 0x01, 0x01) }, +/* Apple-specific (Broadcom) devices */ + { USB_VENDOR_AND_INTERFACE_INFO(0x05ac, 0xff, 0x01, 0x01) }, +/* Broadcom SoftSailing reporting vendor specific */ { USB_DEVICE(0x0a5c, 0x21e1) },
@@ -102,15 +105,14 @@ static struct usb_device_id btusb_table[] = {/* Broadcom BCM20702A0 */ { USB_DEVICE(0x0489, 0xe042) }, - { USB_DEVICE(0x0a5c, 0x21e3) }, - { USB_DEVICE(0x0a5c, 0x21e6) }, - { USB_DEVICE(0x0a5c, 0x21e8) }, - { USB_DEVICE(0x0a5c, 0x21f3) }, { USB_DEVICE(0x413c, 0x8197) },/* Foxconn - Hon Hai */ { USB_DEVICE(0x0489, 0xe033) }, +/*Broadcom devices with vendor specific id */ + { USB_VENDOR_AND_INTERFACE_INFO(0x0a5c, 0xff, 0x01, 0x01) }, + { } /* Terminating entry */ };
@@ -141,12 +143,14 @@ static struct usb_device_id blacklist_table[] = { { USB_DEVICE(0x13d3, 0x3362), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x0cf3, 0xe004), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x0930, 0x0219), .driver_info = BTUSB_ATH3012 }, + { USB_DEVICE(0x0489, 0xe057), .driver_info = BTUSB_ATH3012 }, /* Atheros AR5BBU12 with sflash firmware */ { USB_DEVICE(0x0489, 0xe02c), .driver_info = BTUSB_IGNORE }, /* Atheros AR5BBU12 with sflash firmware */ { USB_DEVICE(0x0489, 0xe03c), .driver_info = BTUSB_ATH3012 }, + { USB_DEVICE(0x0489, 0xe036), .driver_info = BTUSB_ATH3012 }, /* Broadcom BCM2035 */ { USB_DEVICE(0x0a5c, 0x2035), .driver_info = BTUSB_WRONG_SCO_MTU },
drivers/cpufreq/powernow-k8.c +34 -29
114 lines not on this page · raw message
drivers/dma/at_hdmac.c +12 -1
@@ -662,7 +662,7 @@ atc_prep_slave_sg(struct dma_chan *chan, struct scatterlist *sgl, flags);if (unlikely (!atslave || !sg_len)) { -dev_dbg (chan2dev (chan),"prep_dma_memcpy: length is zero!\n" ); +dev_dbg (chan2dev (chan),"prep_slave_sg: sg length is zero!\n" );return NULL ; }
@@ -690,6 +690,11 @@ atc_prep_slave_sg(struct dma_chan *chan, struct scatterlist *sgl, mem =sg_dma_address (sg); len =sg_dma_len (sg); +if (unlikely (!len)) { +dev_dbg (chan2dev (chan), +"prep_slave_sg: sg(%d) data length is zero\n" , i); + goto err; + } mem_width =2 ;if (unlikely (mem &3 || len &3 )) mem_width =0 ;
@@ -725,6 +730,11 @@ atc_prep_slave_sg(struct dma_chan *chan, struct scatterlist *sgl, mem =sg_dma_address (sg); len =sg_dma_len (sg); +if (unlikely (!len)) { +dev_dbg (chan2dev (chan), +"prep_slave_sg: sg(%d) data length is zero\n" , i); + goto err; + } mem_width =2 ;if (unlikely (mem &3 || len &3 )) mem_width =0 ;
@@ -758,6 +768,7 @@ atc_prep_slave_sg(struct dma_chan *chan, struct scatterlist *sgl, err_desc_get:dev_err (chan2dev (chan),"not enough descriptors available\n" ); +err:atc_desc_put (atchan, first);return NULL ; }
drivers/dma/pl330.c +14 -7
@@ -1567,17 +1567,19 @@ static int pl330_submit_req(void *ch_id, struct pl330_req *r) goto xfer_exit; } -/* Prefer Secure Channel */ -if (!_manager_ns (thrd)) - r->cfg->nonsecure =0 ; -else - r->cfg->nonsecure =1 ;/* Use last settings, if not provided */ -if (r->cfg) +if (r->cfg) { +/* Prefer Secure Channel */ +if (!_manager_ns (thrd)) + r->cfg->nonsecure =0 ; +else + r->cfg->nonsecure =1 ; + ccr =_prepare_ccr (r->cfg); -else + }else { ccr =readl (regs +CC (thrd->id)); + }/* If this req doesn't have valid xfer settings */ if (!_is_valid (ccr)) {
@@ -2928,6 +2930,11 @@ pl330_probe(struct amba_device *adev, const struct amba_id *id) num_chan =max_t (int, pi->pcfg.num_peri, pi->pcfg.num_chan); pdmac->peripherals =kzalloc (num_chan *sizeof (*pch),GFP_KERNEL ); +if (!pdmac->peripherals) { + ret = -ENOMEM ; +dev_err (&adev->dev,"unable to allocate pdmac->peripherals\n" ); + goto probe_err5; + }for (i =0 ; i < num_chan; i++) { pch = &pdmac->peripherals[i];
drivers/gpio/gpio-lpc32xx.c +5 -0
@@ -307,6 +307,7 @@ static int lpc32xx_gpio_dir_output_p012(struct gpio_chip *chip, unsigned pin, {struct lpc32xx_gpio_chip *group =to_lpc32xx_gpio (chip); +__set_gpio_level_p012 (group, pin, value);__set_gpio_dir_p012 (group, pin,0 );return 0 ;
@@ -317,6 +318,7 @@ static int lpc32xx_gpio_dir_output_p3(struct gpio_chip *chip, unsigned pin, {struct lpc32xx_gpio_chip *group =to_lpc32xx_gpio (chip); +__set_gpio_level_p3 (group, pin, value);__set_gpio_dir_p3 (group, pin,0 );return 0 ;
@@ -325,6 +327,9 @@ static int lpc32xx_gpio_dir_output_p3(struct gpio_chip *chip, unsigned pin,static int lpc32xx_gpio_dir_out_always (struct gpio_chip *chip,unsigned pin,int value) { +struct lpc32xx_gpio_chip *group =to_lpc32xx_gpio (chip); + +__set_gpo_level_p3 (group, pin, value);return 0 ; }
drivers/gpu/drm/drm_crtc.c +1 -1
@@ -1981,7 +1981,7 @@ int drm_mode_cursor_ioctl(struct drm_device *dev,if (!drm_core_check_feature (dev,DRIVER_MODESET ))return -EINVAL ; -if (!req->flags) +if (!req->flags || (~DRM_MODE_CURSOR_FLAGS & req->flags))return -EINVAL ;mutex_lock (&dev->mode_config.mutex);
drivers/gpu/drm/drm_edid.c +3 -0
@@ -87,6 +87,9 @@ static struct edid_quirk {int product_id;u32 quirks; } edid_quirk_list[] = { +/* ASUS VW222S */ + { "ACI", 0x22a2, EDID_QUIRK_FORCE_REDUCED_BLANKING }, +/* Acer AL1706 */ { "ACR", 44358, EDID_QUIRK_PREFER_LARGE_60 },/* Acer F51 */
drivers/gpu/drm/gma500/oaktrail_device.c +2 -0
@@ -476,6 +476,7 @@ static const struct psb_offset oaktrail_regmap[2] = { .pos = DSPAPOS, .surf = DSPASURF, .addr = MRST_DSPABASE, + .base = MRST_DSPABASE, .status = PIPEASTAT, .linoff = DSPALINOFF, .tileoff = DSPATILEOFF,
@@ -499,6 +500,7 @@ static const struct psb_offset oaktrail_regmap[2] = { .pos = DSPBPOS, .surf = DSPBSURF, .addr = DSPBBASE, + .base = DSPBBASE, .status = PIPEBSTAT, .linoff = DSPBLINOFF, .tileoff = DSPBTILEOFF,
drivers/gpu/drm/i915/i915_gem.c +2 -1
@@ -3044,7 +3044,8 @@ i915_gem_object_pin(struct drm_i915_gem_object *obj, {int ret; -BUG_ON (obj->pin_count ==DRM_I915_GEM_OBJECT_MAX_PIN_COUNT ); +if (WARN_ON (obj->pin_count ==DRM_I915_GEM_OBJECT_MAX_PIN_COUNT )) +return -EBUSY ;if (obj->gtt_space !=NULL ) { if ((alignment && obj->gtt_offset & (alignment - 1)) ||
drivers/gpu/drm/i915/i915_irq.c +0 -3
@@ -2626,9 +2626,6 @@ void intel_irq_init(struct drm_device *dev) dev->driver->irq_handler = i8xx_irq_handler; dev->driver->irq_uninstall = i8xx_irq_uninstall; }else if (INTEL_INFO (dev)->gen ==3 ) { -/* IIR "flip pending" means done if this bit is set */ -I915_WRITE (ECOSKPD ,_MASKED_BIT_DISABLE (ECO_FLIP_DONE )); - dev->driver->irq_preinstall = i915_irq_preinstall; dev->driver->irq_postinstall = i915_irq_postinstall; dev->driver->irq_uninstall = i915_irq_uninstall;
drivers/gpu/drm/i915/intel_crt.c +33 -3
@@ -284,6 +284,36 @@ static bool intel_crt_detect_hotplug(struct drm_connector *connector)return ret; } +static struct edid *intel_crt_get_edid (struct drm_connector *connector, +struct i2c_adapter *i2c) +{ +struct edid *edid; + + edid =drm_get_edid (connector, i2c); + +if (!edid && !intel_gmbus_is_forced_bit (i2c)) { +DRM_DEBUG_KMS ("CRT GMBUS EDID read failed, retry using GPIO bit-banging\n" ); +intel_gmbus_force_bit (i2c, true); + edid =drm_get_edid (connector, i2c); +intel_gmbus_force_bit (i2c, false); + } + +return edid; +} + +/* local version of intel_ddc_get_modes() to use intel_crt_get_edid() */ +static int intel_crt_ddc_get_modes (struct drm_connector *connector, +struct i2c_adapter *adapter) +{ +struct edid *edid; + + edid =intel_crt_get_edid (connector, adapter); +if (!edid) +return 0 ; + +return intel_connector_update_modes (connector, edid); +} +static bool intel_crt_detect_ddc (struct drm_connector *connector) {struct intel_crt *crt =intel_attached_crt (connector);
@@ -299,7 +329,7 @@ static bool intel_crt_detect_ddc(struct drm_connector *connector)struct i2c_adapter *i2c; i2c =intel_gmbus_get_adapter (dev_priv, dev_priv->crt_ddc_pin); - edid =drm_get_edid (connector, i2c); + edid =intel_crt_get_edid (connector, i2c);/* * This may be a DVI-I connector with a shared DDC * link between analog and digital outputs, so we
@@ -498,13 +528,13 @@ static int intel_crt_get_modes(struct drm_connector *connector)struct i2c_adapter *i2c; i2c =intel_gmbus_get_adapter (dev_priv, dev_priv->crt_ddc_pin); - ret =intel_ddc_get_modes (connector, i2c); + ret =intel_crt_ddc_get_modes (connector, i2c);if (ret || !IS_G4X (dev))return ret;/* Try to probe digital port for output in DVI-I -> VGA mode. */ i2c =intel_gmbus_get_adapter (dev_priv,GMBUS_PORT_DPB ); -return intel_ddc_get_modes (connector, i2c); +return intel_crt_ddc_get_modes (connector, i2c); } static int intel_crt_set_property(struct drm_connector *connector,
drivers/gpu/drm/i915/intel_display.c +12 -12
@@ -1238,7 +1238,7 @@ static void assert_pch_hdmi_disabled(struct drm_i915_private *dev_priv, enum pipe pipe, int reg) {u32 val =I915_READ (reg); -WARN (hdmi_pipe_enabled (dev_priv, val, pipe), +WARN (hdmi_pipe_enabled (dev_priv, pipe, val),"PCH HDMI (0x%08x) enabled on transcoder %c, should be disabled\n" , reg,pipe_name (pipe)); }
@@ -1255,13 +1255,13 @@ static void assert_pch_ports_disabled(struct drm_i915_private *dev_priv, reg =PCH_ADPA ; val =I915_READ (reg); -WARN (adpa_pipe_enabled (dev_priv, val, pipe), +WARN (adpa_pipe_enabled (dev_priv, pipe, val),"PCH VGA enabled on transcoder %c, should be disabled\n" ,pipe_name (pipe)); reg =PCH_LVDS ; val =I915_READ (reg); -WARN (lvds_pipe_enabled (dev_priv, val, pipe), +WARN (lvds_pipe_enabled (dev_priv, pipe, val),"PCH LVDS enabled on transcoder %c, should be disabled\n" ,pipe_name (pipe));
@@ -1723,7 +1723,7 @@ static void disable_pch_hdmi(struct drm_i915_private *dev_priv, enum pipe pipe, int reg) {u32 val =I915_READ (reg); -if (hdmi_pipe_enabled (dev_priv, val, pipe)) { +if (hdmi_pipe_enabled (dev_priv, pipe, val)) {DRM_DEBUG_KMS ("Disabling pch HDMI %x on pipe %d\n" , reg, pipe);I915_WRITE (reg, val & ~PORT_ENABLE );
@@ -1745,12 +1745,12 @@ static void intel_disable_pch_ports(struct drm_i915_private *dev_priv, reg =PCH_ADPA ; val =I915_READ (reg); -if (adpa_pipe_enabled (dev_priv, val, pipe)) +if (adpa_pipe_enabled (dev_priv, pipe, val))I915_WRITE (reg, val & ~ADPA_DAC_ENABLE ); reg =PCH_LVDS ; val =I915_READ (reg); -if (lvds_pipe_enabled (dev_priv, val, pipe)) { +if (lvds_pipe_enabled (dev_priv, pipe, val)) {DRM_DEBUG_KMS ("disable lvds on pipe %d val 0x%08x\n" , pipe, val);I915_WRITE (reg, val & ~LVDS_PORT_EN );POSTING_READ (reg);
@@ -3926,12 +3926,6 @@ static void i8xx_update_pll(struct drm_crtc *crtc,POSTING_READ (DPLL (pipe));udelay (150 ); -I915_WRITE (DPLL (pipe), dpll); - -/* Wait for the clocks to stabilize. */ -POSTING_READ (DPLL (pipe)); -udelay (150 ); -/* The LVDS pin pair needs to be on before the DPLLs are enabled. * This is an exception to the general rule that mode_set doesn't turn * things on.
@@ -3939,6 +3933,12 @@ static void i8xx_update_pll(struct drm_crtc *crtc,if (intel_pipe_has_type (crtc,INTEL_OUTPUT_LVDS ))intel_update_lvds (crtc, clock, adjusted_mode); +I915_WRITE (DPLL (pipe), dpll); + +/* Wait for the clocks to stabilize. */ +POSTING_READ (DPLL (pipe)); +udelay (150 ); +/* The pixel multiplier can only be updated once the * DPLL is enabled and the clocks are stable. *
drivers/gpu/drm/i915/intel_drv.h +2 -0
@@ -334,6 +334,8 @@ struct intel_fbc_work {int interval; }; +int intel_connector_update_modes (struct drm_connector *connector, +struct edid *edid);int intel_ddc_get_modes (struct drm_connector *c,struct i2c_adapter *adapter);extern bool intel_ddc_probe (struct intel_encoder *intel_encoder,int ddc_bus);
drivers/gpu/drm/i915/intel_hdmi.c +1 -1
@@ -400,7 +400,7 @@ static void intel_hdmi_dpms(struct drm_encoder *encoder, int mode)u32 temp;u32 enable_bits =SDVO_ENABLE ; -if (intel_hdmi->has_audio) +if (intel_hdmi->has_audio || mode !=DRM_MODE_DPMS_ON ) enable_bits |=SDVO_AUDIO_ENABLE ; temp =I915_READ (intel_hdmi->sdvox_reg);
drivers/gpu/drm/i915/intel_modes.c +22 -9
@@ -61,6 +61,25 @@ bool intel_ddc_probe(struct intel_encoder *intel_encoder, int ddc_bus) }/** +* intel_connector_update_modes - update connector from edid +* @connector: DRM connector device to use +* @edid: previously read EDID information +*/ +int intel_connector_update_modes (struct drm_connector *connector, +struct edid *edid) +{ +int ret; + +drm_mode_connector_update_edid_property (connector, edid); + ret =drm_add_edid_modes (connector, edid); +drm_edid_to_eld (connector, edid); + connector->display_info.raw_edid =NULL ; +kfree (edid); + +return ret; +} + +/** * intel_ddc_get_modes - get modelist from monitor * @connector: DRM connector device to use * @adapter: i2c adapter
@@ -71,18 +90,12 @@ int intel_ddc_get_modes(struct drm_connector *connector, struct i2c_adapter *adapter) {struct edid *edid; -int ret =0 ; edid =drm_get_edid (connector, adapter); -if (edid) { -drm_mode_connector_update_edid_property (connector, edid); - ret =drm_add_edid_modes (connector, edid); -drm_edid_to_eld (connector, edid); - connector->display_info.raw_edid =NULL ; -kfree (edid); - } +if (!edid) +return 0 ; -return ret; +return intel_connector_update_modes (connector, edid); }static const struct drm_prop_enum_list force_audio_names[] = {
drivers/gpu/drm/i915/intel_pm.c +7 -4
@@ -2431,10 +2431,10 @@ void gen6_enable_rps(struct drm_i915_private *dev_priv)I915_WRITE (GEN6_RP_INTERRUPT_LIMITS , dev_priv->max_delay <<24 | dev_priv->min_delay <<16 ); -I915_WRITE (GEN6_RP_UP_THRESHOLD ,10000 ); -I915_WRITE (GEN6_RP_DOWN_THRESHOLD ,1000000 ); -I915_WRITE (GEN6_RP_UP_EI ,100000 ); -I915_WRITE (GEN6_RP_DOWN_EI ,5000000 ); +I915_WRITE (GEN6_RP_UP_THRESHOLD ,59400 ); +I915_WRITE (GEN6_RP_DOWN_THRESHOLD ,245000 ); +I915_WRITE (GEN6_RP_UP_EI ,66000 ); +I915_WRITE (GEN6_RP_DOWN_EI ,350000 );I915_WRITE (GEN6_RP_IDLE_HYSTERSIS ,10 ); I915_WRITE(GEN6_RP_CONTROL, GEN6_RP_MEDIA_TURBO |
@@ -3528,6 +3528,9 @@ static void gen3_init_clock_gating(struct drm_device *dev)if (IS_PINEVIEW (dev))I915_WRITE (ECOSKPD ,_MASKED_BIT_ENABLE (ECO_GATING_CX_ONLY )); + +/* IIR "flip pending" means done if this bit is set */ +I915_WRITE (ECOSKPD ,_MASKED_BIT_DISABLE (ECO_FLIP_DONE )); }static void i85x_init_clock_gating (struct drm_device *dev)
drivers/gpu/drm/i915/intel_sdvo.c +10 -13
@@ -2552,25 +2552,12 @@ bool intel_sdvo_init(struct drm_device *dev, uint32_t sdvo_reg, bool is_sdvob) } } -if (intel_sdvo->is_sdvob) - dev_priv->hotplug_supported_mask |=SDVOB_HOTPLUG_INT_STATUS ; -else - dev_priv->hotplug_supported_mask |=SDVOC_HOTPLUG_INT_STATUS ; -drm_encoder_helper_add (&intel_encoder->base, &intel_sdvo_helper_funcs);/* In default case sdvo lvds is false */ if (!intel_sdvo_get_capabilities (intel_sdvo, &intel_sdvo->caps)) goto err; -/* Set up hotplug command - note paranoia about contents of reply. -* We assume that the hardware is in a sane state, and only touch -* the bits we think we understand. -*/ -intel_sdvo_get_value (intel_sdvo,SDVO_CMD_GET_ACTIVE_HOT_PLUG , - &intel_sdvo->hotplug_active,2 ); - intel_sdvo->hotplug_active[0 ] &= ~0x3 ; -if (intel_sdvo_output_setup (intel_sdvo, intel_sdvo->caps.output_flags) != true) { DRM_DEBUG_KMS("SDVO output failed to setup on %s\n",
@@ -2578,6 +2565,16 @@ bool intel_sdvo_init(struct drm_device *dev, uint32_t sdvo_reg, bool is_sdvob) goto err; } +/* Only enable the hotplug irq if we need it, to work around noisy +* hotplug lines. +*/ +if (intel_sdvo->hotplug_active[0 ]) { +if (intel_sdvo->is_sdvob) + dev_priv->hotplug_supported_mask |=SDVOB_HOTPLUG_INT_STATUS ; +else + dev_priv->hotplug_supported_mask |=SDVOC_HOTPLUG_INT_STATUS ; + } +intel_sdvo_select_ddc_bus (dev_priv, intel_sdvo, sdvo_reg);/* Set the input timing to the screen. Assume always input 0. */
drivers/gpu/drm/nouveau/nouveau_display.c +1 -1
@@ -598,7 +598,7 @@ nouveau_display_dumb_create(struct drm_file *file_priv, struct drm_device *dev, args->size = args->pitch * args->height; args->size =roundup (args->size,PAGE_SIZE ); - ret =nouveau_gem_new (dev, args->size,0 ,TTM_PL_FLAG_VRAM ,0 ,0 , &bo); + ret =nouveau_gem_new (dev, args->size,0 ,NOUVEAU_GEM_DOMAIN_VRAM ,0 ,0 , &bo);if (ret)return ret;
drivers/gpu/drm/nouveau/nouveau_state.c +4 -2
@@ -737,9 +737,11 @@ nouveau_card_init(struct drm_device *dev) }break ;case NV_C0 : -nvc0_copy_create (dev,1 ); +if (!(nv_rd32 (dev,0x022500 ) &0x00000200 )) +nvc0_copy_create (dev,1 );case NV_D0 : -nvc0_copy_create (dev,0 ); +if (!(nv_rd32 (dev,0x022500 ) &0x00000100 )) +nvc0_copy_create (dev,0 );break ;default :break ;
drivers/gpu/drm/nouveau/nv84_fifo.c +9 -0
@@ -117,17 +117,22 @@ nv84_fifo_context_del(struct nouveau_channel *chan, int engine)struct drm_device *dev = chan->dev;struct drm_nouveau_private *dev_priv = dev->dev_private;unsigned long flags; +u32 save;/* remove channel from playlist, will context switch if active */ spin_lock_irqsave (&dev_priv->context_switch_lock, flags);nv_mask (dev,0x002600 + (chan->id *4 ),0x80000000 ,0x00000000 );nv50_fifo_playlist_update (dev); + save =nv_mask (dev,0x002520 ,0x0000003f ,0x15 ); +/* tell any engines on this channel to unload their contexts */ nv_wr32 (dev,0x0032fc , chan->ramin->vinst >>12 );if (!nv_wait_ne (dev,0x0032fc ,0xffffffff ,0xffffffff ))NV_INFO (dev,"PFIFO: channel %d unload timeout\n" , chan->id); +nv_wr32 (dev,0x002520 , save); +nv_wr32 (dev,0x002600 + (chan->id *4 ),0x00000000 );spin_unlock_irqrestore (&dev_priv->context_switch_lock, flags);
@@ -184,10 +189,13 @@ nv84_fifo_fini(struct drm_device *dev, int engine, bool suspend)struct drm_nouveau_private *dev_priv = dev->dev_private;struct nv84_fifo_priv *priv =nv_engine (dev, engine);int i; +u32 save;/* set playlist length to zero, fifo will unload context */ nv_wr32 (dev,0x0032ec ,0 ); + save =nv_mask (dev,0x002520 ,0x0000003f ,0x15 ); +/* tell all connected engines to unload their contexts */ for (i =0 ; i < priv->base.channels; i++) {struct nouveau_channel *chan = dev_priv->channels.ptr[i];
@@ -199,6 +207,7 @@ nv84_fifo_fini(struct drm_device *dev, int engine, bool suspend) } } +nv_wr32 (dev,0x002520 , save);nv_wr32 (dev,0x002140 ,0 );return 0 ; }
drivers/gpu/drm/radeon/atombios_crtc.c +37 -24
120 lines not on this page · raw message
drivers/gpu/drm/radeon/atombios_encoders.c +73 -67
210 lines not on this page · raw message
drivers/gpu/drm/radeon/radeon.h +1 -15
@@ -143,21 +143,6 @@ struct radeon_device;/* * BIOS. */ -#define ATRM_BIOS_PAGE 4096 - -#if defined(CONFIG_VGA_SWITCHEROO ) -bool radeon_atrm_supported (struct pci_dev *pdev); -int radeon_atrm_get_bios_chunk (uint8_t *bios,int offset,int len); -#else -static inline bool radeon_atrm_supported (struct pci_dev *pdev) -{ -return false; -} - -static inline int radeon_atrm_get_bios_chunk (uint8_t *bios,int offset,int len){ -return -EINVAL ; -} -#endif bool radeon_get_bios (struct radeon_device *rdev);
@@ -323,6 +308,7 @@ struct radeon_bo_va {uint64_t soffset;uint64_t eoffset;uint32_t flags; +struct radeon_fence *fence;bool valid; };
drivers/gpu/drm/radeon/radeon_atombios.c +1 -1
@@ -452,7 +452,7 @@ static bool radeon_atom_apply_quirks(struct drm_device *dev, }/* Fujitsu D3003-S2 board lists DVI-I as DVI-D and VGA */ -if ((dev->pdev->device ==0x9802 ) && +if (((dev->pdev->device ==0x9802 ) || (dev->pdev->device ==0x9806 )) && (dev->pdev->subsystem_vendor ==0x1734 ) && (dev->pdev->subsystem_device ==0x11bd )) {if (*connector_type ==DRM_MODE_CONNECTOR_VGA ) {
drivers/gpu/drm/radeon/radeon_atpx_handler.c +1 -55
78 lines not on this page · raw message
drivers/gpu/drm/radeon/radeon_bios.c +134 -4
183 lines not on this page · raw message
drivers/gpu/drm/radeon/radeon_cs.c +27 -3
@@ -294,6 +294,28 @@ int radeon_cs_parser_init(struct radeon_cs_parser *p, void *data)return 0 ; } +static void radeon_bo_vm_fence_va (struct radeon_cs_parser *parser, +struct radeon_fence *fence) +{ +struct radeon_fpriv *fpriv = parser->filp->driver_priv; +struct radeon_vm *vm = &fpriv->vm; +struct radeon_bo_list *lobj; + +if (parser->chunk_ib_idx ==-1 ) +return ; +if ((parser->cs_flags &RADEON_CS_USE_VM ) ==0 ) +return ; + +list_for_each_entry (lobj, &parser->validated, tv.head) { +struct radeon_bo_va *bo_va; +struct radeon_bo *rbo = lobj->bo; + + bo_va =radeon_bo_va (rbo, vm); +radeon_fence_unref (&bo_va->fence); + bo_va->fence =radeon_fence_ref (fence); + } +} +/** * cs_parser_fini() - clean parser states * @parser: parser structure holding parsing context.
@@ -306,11 +328,14 @@ static void radeon_cs_parser_fini(struct radeon_cs_parser *parser, int error) {unsigned i; -if (!error) +if (!error) { +/* fence all bo va before ttm_eu_fence_buffer_objects so bo are still reserved */ +radeon_bo_vm_fence_va (parser, parser->ib.fence);ttm_eu_fence_buffer_objects (&parser->validated, parser->ib.fence); -else + }else {ttm_eu_backoff_reservation (&parser->validated); + }if (parser->relocs !=NULL ) {for (i =0 ; i < parser->nrelocs; i++) {
@@ -407,7 +432,6 @@ static int radeon_cs_ib_vm_chunk(struct radeon_device *rdev,if (parser->chunk_ib_idx ==-1 )return 0 ; -if ((parser->cs_flags &RADEON_CS_USE_VM ) ==0 )return 0 ;
drivers/gpu/drm/radeon/radeon_device.c +1 -1
@@ -774,7 +774,7 @@ int radeon_device_init(struct radeon_device *rdev,if (rdev->flags &RADEON_IS_AGP ) rdev->need_dma32 = true;if ((rdev->flags &RADEON_IS_PCI ) && - (rdev->family <CHIP_RS400 )) + (rdev->family <=CHIP_RS740 )) rdev->need_dma32 = true; dma_bits = rdev->need_dma32 ?32 :40 ;
drivers/gpu/drm/radeon/radeon_fence.c +5 -3
@@ -75,7 +75,7 @@ int radeon_fence_emit(struct radeon_device *rdev, struct radeon_fence *fence)void radeon_fence_process (struct radeon_device *rdev,int ring) { -uint64_t seq, last_seq; +uint64_t seq, last_seq, last_emitted;unsigned count_loop =0 ;bool wake = false;
@@ -102,13 +102,15 @@ void radeon_fence_process(struct radeon_device *rdev, int ring)*/ last_seq =atomic64_read (&rdev->fence_drv[ring].last_seq); do { + last_emitted = rdev->fence_drv[ring].seq; seq = radeon_fence_read(rdev, ring); seq |= last_seq & 0xffffffff00000000LL; if (seq < last_seq) { - seq += 0x100000000LL; + seq &= 0xffffffff; + seq |= last_emitted & 0xffffffff00000000LL; } - if (seq == last_seq) { + if (seq <= last_seq || seq > last_emitted) { break; } /* If we loop over we don't want to return without
drivers/gpu/drm/radeon/radeon_gart.c +22 -2
@@ -564,7 +564,7 @@ int radeon_vm_bo_update_pte(struct radeon_device *rdev,return -EINVAL ; } -if (bo_va->valid) +if (bo_va->valid && mem)return 0 ; ngpu_pages =radeon_bo_ngpu_pages (bo);
@@ -597,11 +597,27 @@ int radeon_vm_bo_rmv(struct radeon_device *rdev, struct radeon_bo *bo) {struct radeon_bo_va *bo_va; +int r; bo_va =radeon_bo_va (bo, vm);if (bo_va ==NULL )return 0 ; +/* wait for va use to end */ +while (bo_va->fence) { + r =radeon_fence_wait (bo_va->fence, false); +if (r) { +DRM_ERROR ("error while waiting for fence: %d\n" , r); + } +if (r == -EDEADLK ) { + r =radeon_gpu_reset (rdev); +if (!r) +continue ; + } +break ; + } +radeon_fence_unref (&bo_va->fence); +radeon_mutex_lock (&rdev->cs_mutex);mutex_lock (&vm->mutex);radeon_vm_bo_update_pte (rdev, vm, bo,NULL );
@@ -661,12 +677,15 @@ void radeon_vm_fini(struct radeon_device *rdev, struct radeon_vm *vm)radeon_vm_unbind_locked (rdev, vm);radeon_mutex_unlock (&rdev->cs_mutex); -/* remove all bo */ +/* remove all bo at this point non are busy any more because unbind +* waited for the last vm fence to signal +*/ r =radeon_bo_reserve (rdev->ring_tmp_bo.bo, false);if (!r) { bo_va =radeon_bo_va (rdev->ring_tmp_bo.bo, vm);list_del_init (&bo_va->bo_list);list_del_init (&bo_va->vm_list); +radeon_fence_unref (&bo_va->fence);radeon_bo_unreserve (rdev->ring_tmp_bo.bo);kfree (bo_va); }
@@ -678,6 +697,7 @@ void radeon_vm_fini(struct radeon_device *rdev, struct radeon_vm *vm) r =radeon_bo_reserve (bo_va->bo, false);if (!r) {list_del_init (&bo_va->bo_list); +radeon_fence_unref (&bo_va->fence);radeon_bo_unreserve (bo_va->bo);kfree (bo_va); }
drivers/gpu/drm/radeon/radeon_gem.c +2 -11
@@ -134,25 +134,16 @@ void radeon_gem_object_close(struct drm_gem_object *obj,struct radeon_device *rdev = rbo->rdev;struct radeon_fpriv *fpriv = file_priv->driver_priv;struct radeon_vm *vm = &fpriv->vm; -struct radeon_bo_va *bo_va, *tmp;if (rdev->family <CHIP_CAYMAN ) {return ; }if (radeon_bo_reserve (rbo, false)) { +dev_err (rdev->dev,"leaking bo va because we fail to reserve bo\n" );return ; } -list_for_each_entry_safe (bo_va, tmp, &rbo->va, bo_list) { -if (bo_va->vm == vm) { -/* remove from this vm address space */ -mutex_lock (&vm->mutex); -list_del (&bo_va->vm_list); -mutex_unlock (&vm->mutex); -list_del (&bo_va->bo_list); -kfree (bo_va); - } - } +radeon_vm_bo_rmv (rdev, vm, rbo);radeon_bo_unreserve (rbo); }
drivers/gpu/drm/radeon/radeon_object.c +1 -5
@@ -52,11 +52,7 @@ void radeon_bo_clear_va(struct radeon_bo *bo)list_for_each_entry_safe (bo_va, tmp, &bo->va, bo_list) {/* remove from all vm address space */ -mutex_lock (&bo_va->vm->mutex); -list_del (&bo_va->vm_list); -mutex_unlock (&bo_va->vm->mutex); -list_del (&bo_va->bo_list); -kfree (bo_va); +radeon_vm_bo_rmv (bo->rdev, bo_va->vm, bo); } }
drivers/gpu/drm/radeon/radeon_ring.c +1 -0
@@ -394,6 +394,7 @@ int radeon_ring_init(struct radeon_device *rdev, struct radeon_ring *ring, unsigif (radeon_debugfs_ring_init (rdev, ring)) {DRM_ERROR ("Failed to register debugfs file for rings !\n" ); } +radeon_ring_lockup_update (ring);return 0 ; }
drivers/gpu/drm/udl/udl_connector.c +7 -0
@@ -69,6 +69,13 @@ static int udl_get_modes(struct drm_connector *connector)static int udl_mode_valid (struct drm_connector *connector,struct drm_display_mode *mode) { +struct udl_device *udl = connector->dev->dev_private; +if (!udl->sku_pixel_limit) +return 0 ; + +if (mode->vdisplay * mode->hdisplay > udl->sku_pixel_limit) +return MODE_VIRTUAL_Y ; +return 0 ; }
drivers/gpu/drm/vmwgfx/vmwgfx_drv.c +5 -0
@@ -1159,6 +1159,11 @@ static struct drm_driver driver = { .open = vmw_driver_open, .preclose = vmw_preclose, .postclose = vmw_postclose, + + .dumb_create = vmw_dumb_create, + .dumb_map_offset = vmw_dumb_map_offset, + .dumb_destroy = vmw_dumb_destroy, + .fops = &vmwgfx_driver_fops, .name = VMWGFX_DRIVER_NAME, .desc = VMWGFX_DRIVER_DESC,
drivers/gpu/drm/vmwgfx/vmwgfx_drv.h +10 -0
@@ -645,6 +645,16 @@ int vmw_kms_readback(struct vmw_private *dev_priv,int vmw_kms_update_layout_ioctl (struct drm_device *dev,void *data,struct drm_file *file_priv); +int vmw_dumb_create (struct drm_file *file_priv, +struct drm_device *dev, +struct drm_mode_create_dumb *args); + +int vmw_dumb_map_offset (struct drm_file *file_priv, +struct drm_device *dev,uint32_t handle, +uint64_t *offset); +int vmw_dumb_destroy (struct drm_file *file_priv, +struct drm_device *dev, +uint32_t handle);/** * Overlay control - vmwgfx_overlay.c */
drivers/gpu/drm/vmwgfx/vmwgfx_fence.c +1 -1
@@ -1018,7 +1018,7 @@ int vmw_event_fence_action_create(struct drm_file *file_priv, } - event =kzalloc (sizeof (event->event),GFP_KERNEL ); + event =kzalloc (sizeof (*event),GFP_KERNEL );if (unlikely (event ==NULL )) {DRM_ERROR ("Failed to allocate an event.\n" ); ret = -ENOMEM ;
drivers/gpu/drm/vmwgfx/vmwgfx_resource.c +73 -0
76 lines not on this page · raw message
drivers/hid/hid-logitech-dj.c +47 -2
109 lines not on this page · raw message
drivers/hid/hid-logitech-dj.h +1 -0
@@ -101,6 +101,7 @@ struct dj_receiver_dev {struct work_struct work;struct kfifo notif_fifo;spinlock_t lock; +bool querying_devices; };struct dj_device {
drivers/hwmon/ad7314.c +8 -0
@@ -87,10 +87,18 @@ static ssize_t ad7314_show_temperature(struct device *dev, } } +static ssize_t ad7314_show_name (struct device *dev, +struct device_attribute *devattr,char *buf) +{ +return sprintf (buf,"%s\n" ,to_spi_device (dev)->modalias); +} + +static DEVICE_ATTR(name, S_IRUGO, ad7314_show_name, NULL); static SENSOR_DEVICE_ATTR(temp1_input, S_IRUGO, ad7314_show_temperature, NULL, 0);static struct attribute *ad7314_attributes[] = { + &dev_attr_name.attr, &sensor_dev_attr_temp1_input.dev_attr.attr,NULL , };
drivers/hwmon/ads7871.c +9 -0
@@ -139,6 +139,12 @@ static ssize_t show_voltage(struct device *dev, } } +static ssize_t ads7871_show_name (struct device *dev, +struct device_attribute *devattr,char *buf) +{ +return sprintf (buf,"%s\n" ,to_spi_device (dev)->modalias); +} + static SENSOR_DEVICE_ATTR(in0_input, S_IRUGO, show_voltage, NULL, 0); static SENSOR_DEVICE_ATTR(in1_input, S_IRUGO, show_voltage, NULL, 1); static SENSOR_DEVICE_ATTR(in2_input, S_IRUGO, show_voltage, NULL, 2);
@@ -148,6 +154,8 @@ static SENSOR_DEVICE_ATTR(in5_input, S_IRUGO, show_voltage, NULL, 5); static SENSOR_DEVICE_ATTR(in6_input, S_IRUGO, show_voltage, NULL, 6); static SENSOR_DEVICE_ATTR(in7_input, S_IRUGO, show_voltage, NULL, 7); +static DEVICE_ATTR(name, S_IRUGO, ads7871_show_name, NULL); +static struct attribute *ads7871_attributes[] = { &sensor_dev_attr_in0_input.dev_attr.attr, &sensor_dev_attr_in1_input.dev_attr.attr,
@@ -157,6 +165,7 @@ static struct attribute *ads7871_attributes[] = { &sensor_dev_attr_in5_input.dev_attr.attr, &sensor_dev_attr_in6_input.dev_attr.attr, &sensor_dev_attr_in7_input.dev_attr.attr, + &dev_attr_name.attr, NULL };
drivers/hwmon/fam15h_power.c +13 -2
@@ -128,12 +128,12 @@ static bool __devinit fam15h_power_is_internal_node0(struct pci_dev *f4)* counter saturations resulting in bogus power readings. * We correct this value ourselves to cope with older BIOSes. */ -static DEFINE_PCI_DEVICE_TABLE (affected_device) = { +static const struct pci_device_id affected_device[] = { {PCI_VDEVICE (AMD ,PCI_DEVICE_ID_AMD_15H_NB_F4 ) }, {0 } }; -static void __devinit tweak_runavg_range (struct pci_dev *pdev) +static void tweak_runavg_range (struct pci_dev *pdev) {u32 val;
@@ -157,6 +157,16 @@ static void __devinit tweak_runavg_range(struct pci_dev *pdev) REG_TDP_RUNNING_AVERAGE, val); } +#ifdef CONFIG_PM +static int fam15h_power_resume (struct pci_dev *pdev) +{ +tweak_runavg_range (pdev); +return 0 ; +} +#else +#define fam15h_power_resume NULL +#endif +static void __devinit fam15h_power_init_data (struct pci_dev *f4,struct fam15h_power_data *data) {
@@ -255,6 +265,7 @@ static struct pci_driver fam15h_power_driver = { .id_table = fam15h_power_id_table, .probe = fam15h_power_probe, .remove = __devexit_p(fam15h_power_remove), + .resume = fam15h_power_resume, };module_pci_driver (fam15h_power_driver);
drivers/hwmon/ina2xx.c +9 -21
@@ -69,22 +69,6 @@ struct ina2xx_data {u16 regs[INA2XX_MAX_REGISTERS ]; }; -int ina2xx_read_word (struct i2c_client *client,int reg) -{ -int val =i2c_smbus_read_word_data (client, reg); -if (unlikely (val <0 )) { -dev_dbg (&client->dev, -"Failed to read register: %d\n" , reg); -return val; - } -return be16_to_cpu (val); -} - -void ina2xx_write_word (struct i2c_client *client,int reg,int data) -{ -i2c_smbus_write_word_data (client, reg,cpu_to_be16 (data)); -} -static struct ina2xx_data *ina2xx_update_device (struct device *dev) {struct i2c_client *client =to_i2c_client (dev);
@@ -102,7 +86,7 @@ static struct ina2xx_data *ina2xx_update_device(struct device *dev)/* Read all registers */ for (i =0 ; i < data->registers; i++) { -int rv =ina2xx_read_word (client, i); +int rv =i2c_smbus_read_word_swapped (client, i);if (rv <0 ) { ret =ERR_PTR (rv); goto abort;
@@ -279,22 +263,26 @@ static int ina2xx_probe(struct i2c_client *client,switch (data->kind) {case ina219:/* device configuration */ -ina2xx_write_word (client,INA2XX_CONFIG ,INA219_CONFIG_DEFAULT ); +i2c_smbus_write_word_swapped (client,INA2XX_CONFIG , +INA219_CONFIG_DEFAULT );/* set current LSB to 1mA, shunt is in uOhms */ /* (equation 13 in datasheet) */ -ina2xx_write_word (client,INA2XX_CALIBRATION ,40960000 / shunt); +i2c_smbus_write_word_swapped (client,INA2XX_CALIBRATION , +40960000 / shunt);dev_info (&client->dev,"power monitor INA219 (Rshunt = %li uOhm)\n" , shunt); data->registers =INA219_REGISTERS ;break ;case ina226:/* device configuration */ -ina2xx_write_word (client,INA2XX_CONFIG ,INA226_CONFIG_DEFAULT ); +i2c_smbus_write_word_swapped (client,INA2XX_CONFIG , +INA226_CONFIG_DEFAULT );/* set current LSB to 1mA, shunt is in uOhms */ /* (equation 1 in datasheet)*/ -ina2xx_write_word (client,INA2XX_CALIBRATION ,5120000 / shunt); +i2c_smbus_write_word_swapped (client,INA2XX_CALIBRATION , +5120000 / shunt);dev_info (&client->dev,"power monitor INA226 (Rshunt = %li uOhm)\n" , shunt); data->registers =INA226_REGISTERS ;
drivers/hwmon/twl4030-madc-hwmon.c +5 -4
@@ -44,12 +44,13 @@ static ssize_t madc_read(struct device *dev, struct device_attribute *devattr, char *buf) { struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr); -struct twl4030_madc_request req; +struct twl4030_madc_request req = { + .channels =1 << attr->index, + .method =TWL4030_MADC_SW2 , + .type =TWL4030_MADC_WAIT , + };long val; - req.channels = (1 << attr->index); - req.method =TWL4030_MADC_SW2 ; - req.func_cb =NULL ; val =twl4030_madc_conversion (&req);if (val <0 )return val;
drivers/i2c/busses/i2c-powermac.c +133 -24
37 lines not on this page · raw message
drivers/isdn/hardware/mISDN/mISDNipac.c +2 -1
Lines of this file are not shown. View the raw message.
drivers/isdn/hardware/mISDN/mISDNisar.c +2 -1
Lines of this file are not shown. View the raw message.
drivers/misc/sgi-xp/xpc_uv.c +65 -19
84 lines not on this page · raw message
drivers/net/ethernet/freescale/gianfar.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/freescale/gianfar_ethtool.c +1 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/freescale/gianfar_ptp.c +2 -2
Lines of this file are not shown. View the raw message.
drivers/net/usb/qmi_wwan.c +58 -0
58 lines not on this page · raw message
drivers/net/wireless/brcm80211/brcmfmac/dhd_common.c +16 -10
Lines of this file are not shown. View the raw message.
drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c +4 -2
Lines of this file are not shown. View the raw message.
drivers/net/wireless/iwlwifi/iwl-debugfs.c +3 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/iwlwifi/iwl-trans-pcie-int.h +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/iwlwifi/iwl-trans-pcie-rx.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/iwlwifi/iwl-trans-pcie.c +17 -14
Lines of this file are not shown. View the raw message.
drivers/net/wireless/rt2x00/rt2400pci.c +9 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/rt2x00/rt2400pci.h +1 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/rt2x00/rt2500pci.c +9 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/rt2x00/rt2500usb.c +10 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/rt2x00/rt2500usb.h +9 -8
Lines of this file are not shown. View the raw message.
drivers/net/wireless/rt2x00/rt2800pci.c +9 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/rt2x00/rt2800usb.c +20 -2
Lines of this file are not shown. View the raw message.
drivers/net/wireless/rt2x00/rt2x00dev.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/rtlwifi/rtl8192ce/def.h +1 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/rtlwifi/rtl8192ce/hw.c +10 -2
Lines of this file are not shown. View the raw message.
drivers/net/wireless/rtlwifi/rtl8192ce/sw.c +4 -2
Lines of this file are not shown. View the raw message.
drivers/staging/android/android_alarm.h +3 -1
Lines of this file are not shown. View the raw message.
drivers/staging/comedi/drivers/amplc_pci224.c +7 -0
Lines of this file are not shown. View the raw message.
drivers/staging/media/lirc/lirc_sir.c +58 -2
60 lines not on this page · raw message
drivers/target/target_core_transport.c +20 -38
58 lines not on this page · raw message
drivers/tty/serial/pch_uart.c +40 -19
59 lines not on this page · raw message
drivers/usb/chipidea/udc.c +41 -17
58 lines not on this page · raw message
drivers/usb/gadget/dummy_hcd.c +37 -4
41 lines not on this page · raw message
drivers/usb/host/ehci-omap.c +1 -163
164 lines not on this page · raw message
drivers/usb/host/pci-quirks.c +35 -7
42 lines not on this page · raw message
drivers/usb/host/xhci-hub.c +42 -0
42 lines not on this page · raw message
drivers/usb/host/xhci.c +122 -1
123 lines not on this page · raw message
kernel/events/core.c +33 -29
62 lines not on this page · raw message
kernel/kthread.c +52 -36
88 lines not on this page · raw message
sound/aoa/codecs/onyx.c +3 -72
75 lines not on this page · raw message
sound/aoa/codecs/tas.c +3 -77
80 lines not on this page · raw message
The rest of this diff is not shown. View the raw message.
Part of the diff is not shown here. View the raw message.