Linux 3.0.5
I'm announcing the release of the 3.0.5 kernel.
All users of the 3.0 kernel series must upgrade.
The updated 3.0.y git tree can be found at (NOTE THE ADDRESS CHANGE):
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git
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
------------
Makefile | 2 arch/arm/Kconfig | 14 + arch/arm/include/asm/futex.h | 34 +-- arch/arm/include/asm/hardware/cache-l2x0.h | 2 arch/arm/kernel/smp_scu.c | 10 + arch/arm/mach-davinci/board-da850-evm.c | 28 ++ arch/arm/mach-davinci/sleep.S | 6 arch/arm/mach-dove/common.c | 2 arch/arm/mach-integrator/integrator_ap.c | 6 arch/arm/mm/cache-v7.S | 20 ++ arch/arm/mm/dma-mapping.c | 2 arch/arm/plat-mxc/include/mach/iomux-v3.h | 2 arch/powerpc/sysdev/fsl_rio.c | 5 arch/sparc/Kconfig | 1 arch/sparc/include/asm/sigcontext.h | 14 + arch/sparc/include/asm/spinlock_32.h | 11 - arch/sparc/include/asm/spinlock_64.h | 6 arch/sparc/kernel/Makefile | 1 arch/sparc/kernel/irq.h | 2 arch/sparc/kernel/pcic.c | 4 arch/sparc/kernel/setup_64.c | 10 - arch/sparc/kernel/signal32.c | 184 ++++++++++--------- arch/sparc/kernel/signal_32.c | 172 ++++++++--------- arch/sparc/kernel/signal_64.c | 108 ++++------- arch/sparc/kernel/sigutil.h | 9 arch/sparc/kernel/sigutil_32.c | 120 ++++++++++++ arch/sparc/kernel/sigutil_64.c | 93 +++++++++ arch/x86/kernel/amd_iommu.c | 18 + arch/x86/kernel/cpu/perf_event.c | 3 arch/x86/kernel/cpu/perf_event_intel.c | 1 arch/x86/xen/setup.c | 21 ++ arch/x86/xen/smp.c | 10 + arch/x86/xen/xen-asm_32.S | 8 block/blk-cgroup.c | 37 +-- block/blk-core.c | 13 - block/blk-sysfs.c | 5 drivers/acpi/acpica/acconfig.h | 2 drivers/acpi/acpica/aclocal.h | 1 drivers/acpi/acpica/nspredef.c | 1 drivers/acpi/acpica/nsrepair2.c | 15 + drivers/ata/ahci.c | 1 drivers/ata/pata_via.c | 18 + drivers/base/firmware_class.c | 11 - drivers/block/floppy.c | 8 drivers/char/tpm/tpm.c | 9 drivers/cpufreq/pcc-cpufreq.c | 3 drivers/firewire/ohci.c | 3 drivers/gpu/drm/nouveau/nouveau_sgdma.c | 5 drivers/gpu/drm/radeon/evergreen.c | 42 +++- drivers/gpu/drm/radeon/ni.c | 16 + drivers/gpu/drm/radeon/r100.c | 18 - drivers/gpu/drm/radeon/r200.c | 4 drivers/gpu/drm/radeon/r600.c | 14 - drivers/gpu/drm/radeon/radeon.h | 7 drivers/gpu/drm/radeon/radeon_asic.h | 8 drivers/gpu/drm/radeon/radeon_clocks.c | 3 drivers/gpu/drm/radeon/radeon_combios.c | 8 drivers/gpu/drm/radeon/radeon_encoders.c | 9 drivers/gpu/drm/radeon/radeon_ttm.c | 7 drivers/hwmon/ds620.c | 2 drivers/hwmon/max16065.c | 2 drivers/infiniband/hw/cxgb3/iwch_cm.c | 10 - drivers/leds/ledtrig-timer.c | 2 drivers/md/linear.h | 2 drivers/md/md.c | 12 + drivers/media/dvb/dvb-usb/vp7045.c | 26 -- drivers/media/rc/nuvoton-cir.c | 45 ---- drivers/media/rc/nuvoton-cir.h | 1 drivers/mfd/omap-usb-host.c | 1 drivers/mfd/tps65910-irq.c | 2 drivers/mmc/core/core.c | 35 +++ drivers/mmc/core/host.c | 12 - drivers/mmc/core/host.h | 8 drivers/mmc/host/sdhci-s3c.c | 2 drivers/net/bnx2.c | 7 drivers/net/bnx2x/bnx2x_dcb.c | 1 drivers/net/bnx2x/bnx2x_main.c | 6 drivers/net/bnx2x/bnx2x_reg.h | 12 + drivers/net/cnic.c | 57 ++--- drivers/net/cxgb3/cxgb3_offload.c | 23 +- drivers/net/cxgb3/l2t.c | 15 + drivers/net/cxgb3/l2t.h | 16 + drivers/net/e1000/e1000_hw.c | 6 drivers/net/ibmveth.c | 31 ++- drivers/net/igb/igb_main.c | 2 drivers/net/irda/smsc-ircc2.c | 2 drivers/net/ixgbe/ixgbe_main.c | 4 drivers/net/rionet.c | 23 -- drivers/net/sfc/efx.c | 18 - drivers/net/sfc/io.h | 15 - drivers/net/sfc/mcdi.c | 46 +--- drivers/net/sfc/nic.c | 7 drivers/net/sfc/nic.h | 2 drivers/net/sfc/siena.c | 25 -- drivers/net/sfc/workarounds.h | 2 drivers/net/tg3.c | 30 +-- drivers/net/usb/asix.c | 4 drivers/net/usb/cdc_ncm.c | 156 +++++----------- drivers/net/wireless/ath/ath9k/ar9002_calib.c | 3 drivers/net/wireless/ath/ath9k/ar9003_2p2_initvals.h | 2 drivers/net/wireless/ath/ath9k/ar9003_eeprom.c | 2 drivers/net/wireless/ath/ath9k/main.c | 4 drivers/net/wireless/ath/carl9170/main.c | 4 drivers/net/wireless/b43/main.c | 3 drivers/net/wireless/iwlegacy/iwl-3945-rs.c | 13 - drivers/net/wireless/iwlegacy/iwl-core.c | 4 drivers/net/wireless/iwlegacy/iwl-hcmd.c | 2 drivers/net/wireless/iwlegacy/iwl-tx.c | 4 drivers/net/wireless/iwlegacy/iwl3945-base.c | 8 drivers/net/wireless/iwlegacy/iwl4965-base.c | 10 - drivers/net/wireless/iwlwifi/iwl-agn.c | 5 drivers/net/wireless/iwlwifi/iwl-scan.c | 30 +-- drivers/net/wireless/iwlwifi/iwl-tx.c | 2 drivers/net/wireless/rt2x00/rt2800lib.c | 64 ++++-- drivers/net/wireless/rt2x00/rt2800usb.c | 4 drivers/net/wireless/rt2x00/rt2x00usb.c | 14 - drivers/net/wireless/rtlwifi/core.c | 8 drivers/net/wireless/rtlwifi/rtl8192cu/trx.c | 11 - drivers/net/wireless/rtlwifi/usb.c | 1 drivers/pci/dmar.c | 2 drivers/rapidio/rio-scan.c | 3 drivers/regulator/tps65910-regulator.c | 7 drivers/rtc/interface.c | 2 drivers/s390/cio/qdio_thinint.c | 15 - drivers/scsi/3w-9xxx.c | 2 drivers/scsi/Makefile | 2 drivers/scsi/aacraid/commsup.c | 2 drivers/scsi/bnx2fc/bnx2fc.h | 8 drivers/scsi/bnx2fc/bnx2fc_fcoe.c | 28 ++ drivers/scsi/bnx2fc/bnx2fc_hwi.c | 24 ++ drivers/scsi/bnx2fc/bnx2fc_io.c | 2 drivers/scsi/cxgbi/cxgb3i/cxgb3i.c | 2 drivers/scsi/fcoe/fcoe.c | 19 + drivers/scsi/hpsa.c | 57 +++-- drivers/scsi/isci/host.c | 3 drivers/scsi/isci/phy.c | 13 + drivers/scsi/isci/registers.h | 12 + drivers/scsi/isci/request.c | 30 +-- drivers/scsi/isci/unsolicited_frame_control.c | 2 drivers/scsi/isci/unsolicited_frame_control.h | 2 drivers/scsi/iscsi_tcp.c | 61 ++++-- drivers/scsi/libfc/fc_rport.c | 14 + drivers/scsi/libiscsi_tcp.c | 14 - drivers/scsi/libsas/sas_expander.c | 2 drivers/scsi/lpfc/lpfc.h | 8 drivers/scsi/lpfc/lpfc_attr.c | 147 +++++++-------- drivers/scsi/lpfc/lpfc_bsg.c | 52 ++--- drivers/scsi/lpfc/lpfc_crtn.h | 2 drivers/scsi/lpfc/lpfc_els.c | 103 ++++++---- drivers/scsi/lpfc/lpfc_hbadisc.c | 2 drivers/scsi/lpfc/lpfc_hw.h | 7 drivers/scsi/lpfc/lpfc_hw4.h | 30 +-- drivers/scsi/lpfc/lpfc_init.c | 82 ++++++-- drivers/scsi/lpfc/lpfc_mbox.c | 2 drivers/scsi/lpfc/lpfc_scsi.c | 97 +++------- drivers/scsi/lpfc/lpfc_sli.c | 106 ++++++---- drivers/scsi/lpfc/lpfc_sli4.h | 2 drivers/scsi/mpt2sas/mpt2sas_base.c | 19 + drivers/scsi/mpt2sas/mpt2sas_base.h | 3 drivers/scsi/mpt2sas/mpt2sas_scsih.c | 3 drivers/scsi/qla2xxx/qla_init.c | 3 drivers/scsi/qla2xxx/qla_isr.c | 1 drivers/tty/pty.c | 17 + drivers/tty/serial/8250.c | 8 drivers/tty/serial/8250_pci.c | 6 drivers/tty/serial/8250_pnp.c | 3 drivers/tty/serial/max3107-aava.c | 2 drivers/tty/serial/max3107.c | 2 drivers/tty/serial/mrst_max3110.c | 2 drivers/tty/serial/omap-serial.c | 3 drivers/tty/tty_io.c | 3 drivers/usb/host/ehci-hub.c | 7 drivers/usb/host/ehci-s5p.c | 1 drivers/usb/host/pci-quirks.c | 28 ++ drivers/usb/host/xhci-hub.c | 19 + drivers/usb/host/xhci-ring.c | 90 ++++++--- drivers/usb/host/xhci.c | 28 ++ drivers/usb/musb/cppi_dma.c | 26 +- drivers/usb/serial/ftdi_sio.c | 20 +- drivers/usb/serial/option.c | 104 ++++++++++ drivers/usb/serial/pl2303.c | 26 ++ drivers/video/savage/savagefb.h | 2 drivers/zorro/zorro.c | 7 fs/9p/acl.c | 22 +- fs/9p/acl.h | 6 fs/9p/cache.c | 20 -- fs/9p/cache.h | 9 fs/9p/v9fs.c | 45 +++- fs/9p/v9fs.h | 29 ++ fs/9p/v9fs_vfs.h | 6 fs/9p/vfs_file.c | 36 ++- fs/9p/vfs_inode.c | 177 ++++++++++++------ fs/9p/vfs_inode_dotl.c | 162 +++++++++++++--- fs/9p/vfs_super.c | 2 fs/block_dev.c | 7 fs/btrfs/inode.c | 5 fs/cifs/cifssmb.c | 3 fs/cifs/connect.c | 4 fs/ext4/inode.c | 4 fs/fs-writeback.c | 26 +- fs/namei.c | 4 fs/proc/task_mmu.c | 80 +++++--- include/linux/mfd/wm8994/pdata.h | 2 include/linux/rio_regs.h | 18 - include/linux/rtc.h | 3 include/linux/tty.h | 2 include/linux/tty_driver.h | 3 include/linux/writeback.h | 1 include/net/9p/9p.h | 29 ++ ipc/mqueue.c | 125 ++++++------ kernel/irq/chip.c | 2 kernel/printk.c | 2 kernel/sched.c | 41 ++-- kernel/time/alarmtimer.c | 18 + kernel/workqueue.c | 7 lib/xz/xz_dec_bcj.c | 27 ++ mm/page-writeback.c | 4 mm/page_alloc.c | 58 ++++- mm/vmalloc.c | 8 mm/vmscan.c | 18 + net/8021q/vlan_core.c | 2 net/9p/client.c | 13 - net/9p/trans_virtio.c | 17 + net/atm/br2684.c | 7 net/bluetooth/hci_event.c | 17 - net/bridge/br_if.c | 6 net/bridge/br_multicast.c | 21 +- net/core/fib_rules.c | 4 net/core/neighbour.c | 8 net/core/scm.c | 2 net/ipv4/igmp.c | 2 net/ipv4/netfilter.c | 18 - net/ipv4/route.c | 8 net/ipv4/syncookies.c | 2 net/ipv4/tcp_input.c | 2 net/ipv6/ipv6_sockglue.c | 9 net/ipv6/mcast.c | 2 net/ipv6/syncookies.c | 2 net/mac80211/sta_info.c | 2 net/sched/sch_prio.c | 2 net/socket.c | 10 - net/wireless/nl80211.c | 5 net/wireless/reg.c | 1 net/xfrm/xfrm_input.c | 5 sound/core/pcm_lib.c | 33 ++- sound/pci/fm801.c | 15 + sound/pci/hda/patch_cirrus.c | 2 sound/pci/hda/patch_realtek.c | 13 - sound/pci/hda/patch_sigmatel.c | 2 sound/soc/blackfin/bf5xx-ad193x.c | 4 sound/soc/codecs/ad193x.c | 3 sound/soc/codecs/ad193x.h | 5 sound/soc/codecs/ssm2602.c | 3 sound/soc/fsl/mpc5200_dma.c | 6 sound/soc/omap/omap-mcbsp.c | 6 sound/soc/soc-jack.c | 4 sound/usb/card.c | 7 tools/perf/util/symbol.c | 2 258 files changed, 3091 insertions(+), 1664 deletions(-)
Al Cooper (1):
8250: Fix race condition in serial8250_backup_timeout().
Al Viro (2):
9p: close ACL leaks
restore pinning the victim dentry in vfs_rmdir()/vfs_rename_dir()
Alex Deucher (4):
drm/radeon/kms: add s/r quirk for Compaq Presario V5245EU drm/radeon/kms: make sure pci max read request size is valid on evergreen+ (v2) drm/radeon/kms: Make GPU/CPU page size handling consistent in blit code (v2) drm/radeon/kms: fix DDIA enable on some rs690 systems
Alexandre Bounine (1):
rapidio: fix use of non-compatible registers
Alexey Khoroshilov (1):
carl9170: Fix mismatch in carl9170_op_set_key mutex lock-unlock
Anand Gadiyar (1):
mfd: Make omap-usb-host TLL mode work again
Andiry Xu (2):
xHCI: fix port U3 status check condition
xHCI: report USB2 port in resuming as suspend
Andrew Bird (3):
USB option driver add PID of Huawei Vodafone K3806 USB option driver add PID of Huawei Vodafone K4605 USB option driver K3765/K4505 avoid CDC_DATA interface
Andrew Vasquez (1):
qla2xxx: Correct inadvertent loop state transitions during port-update handling.
Andrey Vagin (1):
x86, perf: Check that current->mm is alive before getting user callchain
Aneesh Kumar K.V (8):
fs/9p: Fid is not valid after a failed clunk.
fs/9p: When doing inode lookup compare qid details and inode mode bits. fs/9p: Always ask new inode in create
fs/9p: Add fid before dentry instantiation
fs/9p: Don't update file type when updating file attributes fs/9p: Add OS dependent open flags in 9p protocol
net/9p: Fix kernel crash with msize 512K
fs/9p: Always ask new inode in lookup for cache mode disabled
Anisse Astier (2):
ehci: refactor pci quirk to use standard dmi_check_system method
ehci: add pci quirk for Ordissimo and RM Slate 100 too
Anton Blanchard (4):
ibmveth: Fix leak when recycling skb and hypervisor returns error
ibmveth: Fix issue with DMA mapping failure
ibmveth: Checksum offload is always disabled
perf symbols: Fix ppc64 SEGV in dso__load_sym with debuginfo files
Arjan van de Ven (1):
ALSA: pcm - fix race condition in wait_for_avail()
Arnaud Lacombe (1):
usb/host/pci-quirks.c: correct annotation of `ehci_dmi_nohandoff_table'
Axel Lin (3):
ASoC: soc-jack: Fix checking return value of request_any_context_irq
tty: Add "spi:" prefix for spi modalias
regulator: tps65910: Add missing breaks in switch/case
Ben Hutchings (3):
Revert "sfc: Use write-combining to reduce TX latency" and follow-ups
ALSA: fm801: Fix double free in case of error in tuner detection
ALSA: fm801: Gracefully handle failure of tuner auto-detect
Bhanu Prakash Gollapudi (2):
bnx2fc: Fix kernel panic when deleting NPIV ports
bnx2fc: scsi_dma_unmap() not invoked on IO completions
Bjorn Helgaas (1):
serial: 8250_pnp: add Intermec CV60 touchscreen device
Brian King (1):
ibmveth: Fix DMA unmap error
Carolyn Wyborny (1):
igb: fix WOL on second port of i350 device
Carsten Emde (1):
floppy: use del_timer_sync() in init cleanup
Dan Williams (3):
isci: fix sata response handling
isci: fix 32-bit operation when CONFIG_HIGHMEM64G=n
isci: fix event-get pointer increment
Daniel Baluta (1):
ipv6: Fix ipv6_getsockopt for IPV6_2292PKTOPTIONS
Daniel Schwierzeck (1):
atm: br2684: Fix oops due to skb->dev being NULL
Dave Airlie (1):
drm/radeon/kms: set a default max_pixel_clock
Dave Hansen (3):
make /proc/$pid/numa_maps gather_stats() take variable page size break out numa_maps gather_pte_stats() checks
teach /proc/$pid/numa_maps about transparent hugepages
David Henningsson (3):
ALSA: HDA: Cirrus - fix "Surround Speaker" volume control name
ALSA: HDA: No power nids on 92HD93
ALSA: HDA: Add support for IDT 92HD93
David S. Miller (3):
sparc: Allow handling signals when stack is corrupted.
sparc64: Set HAVE_C_RECORDMCOUNT
sparc64: Only Panther cheetah+ chips have POPC.
David Vrabel (3):
mm: sync vmalloc address space page tables in alloc_vm_area()
xen: use maximum reservation to limit amount of usable RAM xen/e820: if there is no dom0_mem=, don't tweak extra_pages.
Dmitry Kravkov (1):
bnx2x: fix hw attention handling
Don Fry (1):
iwlagn: workaround bug crashing some APs
Eddie Wai (1):
cnic: Randomize initial TCP port for iSCSI connections
Eric Dumazet (3):
arp: fix rcu lockdep splat in arp_process()
bridge: fix a possible net_device leak
bridge: fix a possible use after free
Eric Smith (1):
8250_pci: add support for Rosewill RC-305 4x serial port card
Eric Van Hensbergen (1):
net/9p: fix client code to fail more gracefully on protocol error
Felix Fietkau (1):
ath9k_hw: fix calibration on 5 ghz
Fenghua Yu (1):
ACPICA: Do not repair _TSS return package if _PSS is present
Florian Mickler (1):
vp7045: fix buffer setup
Florian Westphal (1):
net_sched: prio: use qdisc_dequeue_peeked
Gao feng (1):
fib:fix BUG_ON in fib_nl_newrule when add new fib rule
Gavin.zhu (1):
USB: option: add YUGA device id to driver
Geert Uytterhoeven (2):
genirq: Make irq_shutdown() symmetric vs. irq_startup again
zorro: Defer device_register() until all devices have been identified
George (2):
rtlwifi: rtl8192su: Fix problem connecting to HT-enabled AP
rtlwifi: Fix problem when switching connections
Girish K S (1):
mmc: sdhci-s3c: Fix mmc card I/O problem
Giuseppe Scrivano (1):
cdc_ncm: fix endianness problem.
Greg Kroah-Hartman (1):
Linux 3.0.5
Guenter Roeck (1):
hwmon: (max16065) Fix current calculation
Hannes Reinecke (1):
block: Free queue resources at blk_release_queue()
Hidetoshi Seto (1):
btrfs: fix d_off in the first dirent
Ian Campbell (1):
sparc: fix array bounds error setting up PCIC NMI trap
Igor Mammedov (1):
xen: x86_32: do not enable iterrupts when returning from exception in interrupt context
James Bottomley (1):
3w-9xxx: fix iommu_iova leak
James Smart (5):
lpfc 8.3.25: T10 DIF Fixes
lpfc 8.3.25: Miscellaneous Bug fixes and code cleanup lpfc 8.3.25: Adapter Interface fixes and changes lpfc 8.3.25: Fabric and Target Discovery Fixes lpfc 8.3.25: PCI and SR-IOV Fixes
Jan Glauber (1):
qdio: clear shared DSCI before scheduling the queue handler
Jarkko Nikula (1):
ASoC: omap-mcbsp: Do not attempt to change DAI sysclk if stream is active
Jarod Wilson (1):
nuvoton-cir: simplify raw IR sample handling
Jean-Christophe PLAGNIOL-VILLARD (1):
USB: ftdi_sio: add Calao reference board support
Jeff Kirsher (1):
e1000: Fix driver to be used on PA RISC C8000 workstations
Jeff Layton (1):
cifs: fix possible memory corruption in CIFSFindNext
Jeff Skirvin (1):
isci: Leave requests alone if already terminating.
Jerome Glisse (1):
drm/radeon/kms: evergreen & ni reset SPI block on CP resume
Jesse Brandeburg (1):
ixgbe: fix possible null buffer error
Jim Garlick (1):
fs/9p: Use protocol-defined value for lock/getlock 'type' field.
Jiri Pirko (1):
vlan: reset headers on accel emulation path
Jiri Slaby (3):
TTY: pty, fix pty counting
ipc/mqueue.c: refactor failure handling
ipc/mqueue.c: fix mq_open() return value
Joerg Roedel (2):
iommu/amd: Don't take domain->lock recursivly
iommu/amd: Make sure iommu->need_sync contains correct valueJohan Hovold (2):
mfd: Fix initialisation of tps65910 interrupts drivers/leds/ledtrig-timer.c: fix broken sysfs delay handling
Johannes Berg (3):
mac80211: fix missing sta_lock in __sta_info_destroy
iwlagn: fix command queue timeout
iwlagn: fix dangling scan request
John Stanley (1):
savagedb: Fix typo causing regression in savage4 series video chip detection
John Stultz (4):
alarmtimers: Avoid possible null pointer traversal
alarmtimers: Memset itimerspec passed into alarm_timer_get
alarmtimers: Avoid possible denial of service with high freq periodic timers
rtc: Fix RTC PIE frequency limit
Jouni Malinen (1):
cfg80211: Fix validation of AKM suites
Julian Anastasov (2):
ipv4: some rt_iif -> rt_route_iif conversions
netfilter: TCP and raw fix for ip_route_me_harder
KAMEZAWA Hiroyuki (1):
memcg: fix vmscan count in small memcgs
Kashyap, Desai (2):
mpt2sas: Added DID_NO_CONNECT return when driver remove and avoid shutdown call
mpt2sas: Adding support for customer specific branding
Kiran Patil (2):
libfc: Enhancement to RPORT state machine applicable only for VN2VN mode
fcoe: Unable to select the exchangeID from offload pool for storage targets
Kjetil Oftedal (1):
sparc32,sun4d: Change IPI IRQ level to prevent collision between IPI and timer interrupt
Konrad Rzeszutek Wilk (1):
xen/smp: Warn user why they keel over - nosmp or noapic and what to use instead.
Larry Finger (3):
rt2800pci: Fix compiler error on PowerPC
rtl2800usb: Fix incorrect storage of MAC address on big-endian platforms
rtlwifi: rtl8192cu: Fix unitialized struct
Lars-Peter Clausen (2):
ASoC: Blackfin: bf5xx-ad193x: Fix codec device name
ASoC: ssm2602: Re-enable oscillator after suspend
Lasse Collin (1):
XZ: Fix incorrect XZ_BUF_ERROR
Len Brown (1):
acpica: ACPI_MAX_SLEEP should be 2 sec, not 20
Linus Torvalds (1):
firmware loader: allow builtin firmware load even if usermodehelper is disabled
Linus Walleij (2):
ARM: 7081/1: mach-integrator: fix the clocksource
ARM: davinci: fix cache flush build error
Liu Gang-B34182 (1):
arch/powerpc/sysdev/fsl_rio.c: correct IECSR register clear value
Manual Munz (1):
b43: Fix beacon problem in ad-hoc mode
Marcin Slusarz (1):
drm/nouveau: properly handle allocation failure in nouveau_sgdma_populate
Marcin Tomczak (1):
isci: change sas phy timeouts from 54us to 59us
Marek Vasut (1):
ASIX: Add AX88772B USB ID
Mark Brown (2):
ASoC: Fix reporting of partial jack updates
mfd: Fix value of WM8994_CONFIGURE_GPIO
Mark Salyzyn (1):
libsas: fix failure to revalidate domain for anything but the first expander child.
Mathieu Desnoyers (1):
sendmmsg/sendmsg: fix unsafe user pointer access
Matt Carlson (3):
tg3: Fix io failures after chip reset
tg3: Add 5719 and 5720 to EEE_CAP list
tg3: Fix int selftest for recent devices.
Mel Gorman (2):
mm: page allocator: initialise ZLC for first zone eligible for zone_reclaim
mm: page allocator: reconsider zones for allocation after direct reclaim
Michael Chan (4):
cnic: Fix interrupt logic
cnic: Fix race conditions with firmware
cnic: Improve NETDEV_UP event handling
cnic, bnx2: Check iSCSI support early in bnx2_init_one()
Michal Sroczynski (1):
USB: PL2303: correctly handle baudrates above 115200
Michel Dänzer (1):
drm/radeon: Don't read from CP ring write pointer registers.
Mika Westerberg (3):
mmc: rename mmc_host_clk_{ungate|gate} to mmc_host_clk_{hold|release}
mmc: core: prevent aggressive clock gating racing with ios updates
mmc: core: use non-reentrant workqueue for clock gating
Mikael Pettersson (2):
sparc64: remove unnecessary macros from spinlock_64.h
sparc32: unbreak arch_write_unlock()
Mike Christie (2):
iscsi_tcp: fix locking around iscsi sk user data
libiscsi_tcp: fix LLD data allocation
Mike Waychison (1):
tcp: initialize variable ecn_ok in syncookies path
Ming Lei (1):
firewire: ohci: add no MSI quirk for O2Micro controller
Mohammed Shafi Shajakhan (1):
ath9k: Fix PS wrappers in ath9k_set_coverage_class
Naga Chumbalkar (1):
drivers/cpufreq/pcc-cpufreq.c: avoid NULL pointer dereference
Neil Horman (1):
cxgb3i: convert cdev->l2opt to use rcu to prevent NULL dereference
NeilBrown (3):
md/linear: avoid corrupting structure while waiting for rcu_free to complete. Avoid dereferencing a 'request_queue' after last close.
md: Fix handling for devices from 2TB to 4TB in 0.90 metadata.
Nick Pelly (1):
omap-serial: Allow IXON and IXOFF to be disabled.
Nicolas Pitre (1):
ARM: Dove: fix second SPI initialization call
Nishanth Aravamudan (1):
kernel/printk: do not turn off bootconsole in printk_late_init() if keep_bootcon
Oliver Neukum (1):
Bluetooth: Fix timeout on scanning for the second time
Per Forlin (1):
usb: musb: cppi: fix build errors due to DBG and missing musb variable
Peter Huewe (2):
TPM: Call tpm_transmit with correct size
TPM: Zero buffer after copying to userspace
Prem Karat (1):
fs/9p: Fix invalid mount options/args
Rajkumar Manoharan (2):
wireless: Reset beacon_found while updating regulatory
ath9k_hw: Fix Rx DMA stuck for AR9003 chips
Randy Dunlap (2):
irda: fix smsc-ircc2 section mismatch warning
scsi: qla4xxx needs libiscsi.o
Roland Stigge (1):
hwmon: (ds620) Fix handling of negative temperatures
Russell King (1):
ARM: dma-mapping: free allocated page if unable to map
Sarah Sharp (5):
xhci: Fix memory leak during failed enqueue.
xhci: Fix failed enqueue in the middle of isoch TD.
xhci: Remove TDs from TD lists when URBs are canceled.
xhci: Handle zero-length isochronous packets.
USB: xhci: Set change bit when warm reset change is set.
Scott Jiang (2):
ASoC: ad193x: fix registers definition
ASoC: ad193x: fix dac word len setting
Senthil Balasubramanian (1):
ath9k_hw: Fix STA (AR9485) bringup issue due to incorrect MAC address
Seth Heasley (1):
ahci: RAID-mode SATA patch for Intel Panther Point DeviceIDs
Shmulik Ravid (1):
bnx2x: add missing break in bnx2x_dcbnl_get_cap
Srinivas Kandagatla (1):
ARM: 7014/1: cache-l2x0: Fix L2 Cache size calculation.
Stanislaw Gruszka (6):
rt2x00: do not drop usb dev reference counter on suspend
rt2x00: fix crash in rt2800usb_write_tx_desc
rt2x00: fix crash in rt2800usb_get_txwi
iwlegacy: fix BUG_ON(info->control.rates[0].idx < 0)
iwlegacy: fix command queue timeout
iwlegacy: do not use interruptible waits
Steffen Klassert (1):
xfrm: Perform a replay check after return from async codepaths
Stephen M. Cameron (2):
hpsa: fix problem that OBDR devices are not detected
hpsa: fix physical device lun and target numbering problem
Steve French (1):
Fix the conflict between rwpidforward and rw mount options
Sudhakar Rajashekhara (1):
ARM: davinci: da850 EVM: read mac address from SPI flash
Takashi Iwai (2):
ALSA: hda/realtek - Fix auto-mute with HP+LO configuration
ALSA: hda/realtek - Avoid bogus HP-pin assignment
Tejun Heo (1):
pata_via: disable ATAPI DMA on AVERATEC 3200
Thomas Gleixner (3):
sched: Separate the scheduler entry for preemption
sched: Move blk_schedule_flush_plug() out of __schedule() x86, iommu: Mark DMAR IRQ as non-threaded
Thomas Pfaff (2):
ALSA: usb-audio - clear chip->probing on error exit
ALSA: usb-audio: Check for possible chip NULL pointer before clearing probing flag
Thomas Tuttle (1):
workqueue: lock cwq access in drain_workqueue
Tim Chen (1):
scm: Capture the full credentials of the scm sender
Timur Tabi (1):
ASoC: MPC5200: replace of_device with platform_device
Troy Kisky (1):
MXC: iomux-v3: correct NO_PAD_CTRL definition
Vasily Averin (1):
aacraid: reset should disable MSI interrupt
Venkateswararao Jujjuri (JV) (1):
net/9p: Fix the msize calculation.
WANG Cong (1):
sched: Fix a memory leak in __sdt_free()
Wang Zhi (1):
USB: EHCI: Do not rely on PORT_SUSPEND to stop USB resuming in ehci_bus_resume().
Wanlong Gao (1):
blk-cgroup: be able to remove the record of unplugged device
Will Deacon (2):
ARM: 7091/1: errata: D-cache line maintenance operation by MVA may not succeed
ARM: 7099/1: futex: preserve oldval in SMP __futex_atomic_op
Wu Fengguang (2):
writeback: introduce .tagged_writepages for the WB_SYNC_NONE sync stage
writeback: update dirtied_when for synced inode to prevent livelock
Yan, Zheng (2):
mcast: Fix source address selection for multicast listener report
bridge: Pseudo-header required for the checksum of ICMPv6
Youquan Song (1):
perf, x86: Add model 45 SandyBridge support
Yulgon Kim (1):
usb: s5p-ehci: fix a NULL pointer deference
Zheng Yan (1):
tcp: fix validation of D-SACK
jvrao (2):
Fix the size of receive buffer packing onto VirtIO ring. VirtIO can transfer VIRTQUEUE_NUM of pages.
Here is the 3.0.5 incremental patch, to be applied on top of 3.0.4, signed with my stable kernel signing key.
thanks,
greg k-h
Makefile +1 -1
@@ -1,6 +1,6 @@ VERSION = 3 PATCHLEVEL = 0 -SUBLEVEL = 4 +SUBLEVEL = 5 EXTRAVERSION = NAME = Sneaky Weasel
arch/arm/Kconfig +14 -0
@@ -1298,6 +1298,20 @@ source "drivers/pci/Kconfig" source "drivers/pcmcia/Kconfig" +config ARM_ERRATA_764369 + bool "ARM errata: Data cache line maintenance operation by MVA may not succeed" + depends on CPU_V7 && SMP + help + This option enables the workaround for erratum 764369 + affecting Cortex-A9 MPCore with two or more processors (all + current revisions). Under certain timing circumstances, a data + cache line maintenance operation by MVA targeting an Inner + Shareable memory region may fail to proceed up to either the + Point of Coherency or to the Point of Unification of the + system. This workaround adds a DSB instruction before the + relevant cache maintenance functions and sets a specific bit + in the diagnostic control register of the SCU. + endmenu menu "Kernel Features"
arch/arm/include/asm/futex.h +17 -17
@@ -25,17 +25,17 @@#ifdef CONFIG_SMP -#define __futex_atomic_op (insn, ret, oldval, uaddr, oparg) \ +#define __futex_atomic_op (insn, ret, oldval, tmp, uaddr, oparg) \ smp_mb(); \ __asm__ __volatile__( \ - "1: ldrex %1, [%2]\n" \ + "1: ldrex %1, [%3]\n" \ " " insn "\n" \ - "2: strex %1, %0, [%2]\n" \ - " teq %1, #0\n" \ + "2: strex %2, %0, [%3]\n" \ + " teq %2, #0\n" \ " bne 1b\n" \ " mov %0, #0\n" \ - __futex_atomic_ex_table("%4") \ - : "=&r" (ret), "=&r" (oldval) \ + __futex_atomic_ex_table("%5") \ + : "=&r" (ret), "=&r" (oldval), "=&r" (tmp) \ : "r" (uaddr), "r" (oparg), "Ir" (-EFAULT) \ : "cc", "memory")
@@ -73,14 +73,14 @@ futex_atomic_cmpxchg_inatomic(u32 *uval, u32 __user *uaddr,#include <linux/preempt.h> #include <asm/domain.h> -#define __futex_atomic_op (insn, ret, oldval, uaddr, oparg) \ +#define __futex_atomic_op (insn, ret, oldval, tmp, uaddr, oparg) \ __asm__ __volatile__( \ - "1: " T(ldr) " %1, [%2]\n" \ + "1: " T(ldr) " %1, [%3]\n" \ " " insn "\n" \ - "2: " T(str) " %0, [%2]\n" \ + "2: " T(str) " %0, [%3]\n" \ " mov %0, #0\n" \ - __futex_atomic_ex_table("%4") \ - : "=&r" (ret), "=&r" (oldval) \ + __futex_atomic_ex_table("%5") \ + : "=&r" (ret), "=&r" (oldval), "=&r" (tmp) \ : "r" (uaddr), "r" (oparg), "Ir" (-EFAULT) \ : "cc", "memory")
@@ -117,7 +117,7 @@ futex_atomic_op_inuser (int encoded_op, u32 __user *uaddr)int cmp = (encoded_op >>24 ) &15 ;int oparg = (encoded_op <<8 ) >>20 ;int cmparg = (encoded_op <<20 ) >>20 ; -int oldval =0 , ret; +int oldval =0 , ret, tmp;if (encoded_op & (FUTEX_OP_OPARG_SHIFT <<28 )) oparg =1 << oparg;
@@ -129,19 +129,19 @@ futex_atomic_op_inuser (int encoded_op, u32 __user *uaddr)switch (op) {case FUTEX_OP_SET : -__futex_atomic_op ("mov %0, %3" , ret, oldval, uaddr, oparg); +__futex_atomic_op ("mov %0, %4" , ret, oldval, tmp, uaddr, oparg);break ;case FUTEX_OP_ADD : -__futex_atomic_op ("add %0, %1, %3" , ret, oldval, uaddr, oparg); +__futex_atomic_op ("add %0, %1, %4" , ret, oldval, tmp, uaddr, oparg);break ;case FUTEX_OP_OR : -__futex_atomic_op ("orr %0, %1, %3" , ret, oldval, uaddr, oparg); +__futex_atomic_op ("orr %0, %1, %4" , ret, oldval, tmp, uaddr, oparg);break ;case FUTEX_OP_ANDN : -__futex_atomic_op ("and %0, %1, %3" , ret, oldval, uaddr, ~oparg); +__futex_atomic_op ("and %0, %1, %4" , ret, oldval, tmp, uaddr, ~oparg);break ;case FUTEX_OP_XOR : -__futex_atomic_op ("eor %0, %1, %3" , ret, oldval, uaddr, oparg); +__futex_atomic_op ("eor %0, %1, %4" , ret, oldval, tmp, uaddr, oparg);break ;default : ret = -ENOSYS ;
arch/arm/include/asm/hardware/cache-l2x0.h +1 -1
@@ -64,7 +64,7 @@#define L2X0_AUX_CTRL_MASK 0xc0000fff#define L2X0_AUX_CTRL_ASSOCIATIVITY_SHIFT 16#define L2X0_AUX_CTRL_WAY_SIZE_SHIFT 17 -#define L2X0_AUX_CTRL_WAY_SIZE_MASK (0x3 << 17) +#define L2X0_AUX_CTRL_WAY_SIZE_MASK (0x7 << 17)#define L2X0_AUX_CTRL_SHARE_OVERRIDE_SHIFT 22#define L2X0_AUX_CTRL_NS_LOCKDOWN_SHIFT 26#define L2X0_AUX_CTRL_NS_INT_CTRL_SHIFT 27
arch/arm/kernel/smp_scu.c +10 -0
@@ -13,6 +13,7 @@#include <asm/smp_scu.h> #include <asm/cacheflush.h> +#include <asm/cputype.h> #define SCU_CTRL 0x00#define SCU_CONFIG 0x04
@@ -36,6 +37,15 @@ void __init scu_enable(void __iomem *scu_base) {u32 scu_ctrl; +#ifdef CONFIG_ARM_ERRATA_764369 +/* Cortex-A9 only */ +if ((read_cpuid (CPUID_ID ) &0xff0ffff0 ) ==0x410fc090 ) { + scu_ctrl =__raw_readl (scu_base +0x30 ); +if (!(scu_ctrl &1 )) +__raw_writel (scu_ctrl |0x1 , scu_base +0x30 ); + } +#endif + scu_ctrl =__raw_readl (scu_base +SCU_CTRL );/* already enabled? */ if (scu_ctrl &1 )
arch/arm/mach-davinci/board-da850-evm.c +28 -0
@@ -115,6 +115,32 @@ static struct spi_board_info da850evm_spi_info[] = { }, }; +#ifdef CONFIG_MTD +static void da850_evm_m25p80_notify_add (struct mtd_info *mtd) +{ +char *mac_addr = davinci_soc_info.emac_pdata->mac_addr; +size_t retlen; + +if (!strcmp (mtd->name,"MAC-Address" )) { + mtd->read (mtd,0 ,ETH_ALEN , &retlen, mac_addr); +if (retlen ==ETH_ALEN ) +pr_info ("Read MAC addr from SPI Flash: %pM\n" , + mac_addr); + } +} + +static struct mtd_notifier da850evm_spi_notifier = { + .add = da850_evm_m25p80_notify_add, +}; + +static void da850_evm_setup_mac_addr (void ) +{ +register_mtd_user (&da850evm_spi_notifier); +} +#else +static void da850_evm_setup_mac_addr (void ) { } +#endif +static struct mtd_partition da850_evm_norflash_partition[] = { { .name ="bootloaders + env" ,
@@ -1237,6 +1263,8 @@ static __init void da850_evm_init(void)if (ret)pr_warning ("da850_evm_init: spi 1 registration failed: %d\n" , ret); + +da850_evm_setup_mac_addr (); }#ifdef CONFIG_SERIAL_8250_CONSOLE
arch/arm/mach-davinci/sleep.S +5 -1
@@ -217,7 +217,11 @@ ddr2clk_stop_done: ENDPROC(davinci_ddr_psc_config) CACHE_FLUSH: - .word arm926_flush_kern_cache_all +#ifdef CONFIG_CPU_V6 + .word v6_flush_kern_cache_all +#else + .word arm926_flush_kern_cache_all +#endif ENTRY(davinci_cpu_suspend_sz) .word . - davinci_cpu_suspend
arch/arm/mach-dove/common.c +1 -1
@@ -160,7 +160,7 @@ void __init dove_spi0_init(void)void __init dove_spi1_init (void ) { -orion_spi_init (DOVE_SPI1_PHYS_BASE ,get_tclk ()); +orion_spi_1_init (DOVE_SPI1_PHYS_BASE ,get_tclk ()); }/*****************************************************************************
arch/arm/mach-integrator/integrator_ap.c +3 -3
@@ -337,15 +337,15 @@ static unsigned long timer_reload;static void integrator_clocksource_init (u32 khz) {void __iomem *base = (void __iomem *)TIMER2_VA_BASE ; -u32 ctrl =TIMER_CTRL_ENABLE ; +u32 ctrl =TIMER_CTRL_ENABLE |TIMER_CTRL_PERIODIC ;if (khz >=1500 ) { khz /=16 ; - ctrl =TIMER_CTRL_DIV16 ; + ctrl |=TIMER_CTRL_DIV16 ; } -writel (ctrl, base +TIMER_CTRL );writel (0xffff , base +TIMER_LOAD ); +writel (ctrl, base +TIMER_CTRL );clocksource_mmio_init (base +TIMER_VALUE ,"timer2" , khz *1000 ,200 ,16 , clocksource_mmio_readl_down);
arch/arm/mm/cache-v7.S +20 -0
@@ -174,6 +174,10 @@ ENTRY(v7_coherent_user_range) dcache_line_size r2, r3 sub r3, r2, #1 bic r12, r0, r3 +#ifdef CONFIG_ARM_ERRATA_764369 + ALT_SMP(W(dsb)) + ALT_UP(W(nop)) +#endif 1: USER( mcr p15, 0, r12, c7, c11, 1 ) @ clean D line to the point of unification add r12, r12, r2
@@ -223,6 +227,10 @@ ENTRY(v7_flush_kern_dcache_area) add r1, r0, r1 sub r3, r2, #1 bic r0, r0, r3 +#ifdef CONFIG_ARM_ERRATA_764369 + ALT_SMP(W(dsb)) + ALT_UP(W(nop)) +#endif 1: mcr p15, 0, r0, c7, c14, 1 @ clean & invalidate D line / unified line add r0, r0, r2
@@ -247,6 +255,10 @@ v7_dma_inv_range: sub r3, r2, #1 tst r0, r3 bic r0, r0, r3 +#ifdef CONFIG_ARM_ERRATA_764369 + ALT_SMP(W(dsb)) + ALT_UP(W(nop)) +#endif mcrne p15, 0, r0, c7, c14, 1 @ clean & invalidate D / U line tst r1, r3
@@ -270,6 +282,10 @@ v7_dma_clean_range: dcache_line_size r2, r3 sub r3, r2, #1 bic r0, r0, r3 +#ifdef CONFIG_ARM_ERRATA_764369 + ALT_SMP(W(dsb)) + ALT_UP(W(nop)) +#endif 1: mcr p15, 0, r0, c7, c10, 1 @ clean D / U line add r0, r0, r2
@@ -288,6 +304,10 @@ ENTRY(v7_dma_flush_range) dcache_line_size r2, r3 sub r3, r2, #1 bic r0, r0, r3 +#ifdef CONFIG_ARM_ERRATA_764369 + ALT_SMP(W(dsb)) + ALT_UP(W(nop)) +#endif 1: mcr p15, 0, r0, c7, c14, 1 @ clean & invalidate D / U line add r0, r0, r2
arch/arm/mm/dma-mapping.c +2 -0
@@ -322,6 +322,8 @@ __dma_alloc(struct device *dev, size_t size, dma_addr_t *handle, gfp_t gfp,if (addr) *handle =pfn_to_dma (dev,page_to_pfn (page)); +else +__dma_free_buffer (page, size);return addr; }
arch/arm/plat-mxc/include/mach/iomux-v3.h +1 -1
@@ -66,7 +66,6 @@ typedef u64 iomux_v3_cfg_t;#define MUX_MODE_MASK ((iomux_v3_cfg_t)0x1f << MUX_MODE_SHIFT)#define MUX_PAD_CTRL_SHIFT 41#define MUX_PAD_CTRL_MASK ((iomux_v3_cfg_t)0x1ffff << MUX_PAD_CTRL_SHIFT) -#define NO_PAD_CTRL ((iomux_v3_cfg_t)1 << (MUX_PAD_CTRL_SHIFT + 16))#define MUX_SEL_INPUT_SHIFT 58#define MUX_SEL_INPUT_MASK ((iomux_v3_cfg_t)0xf << MUX_SEL_INPUT_SHIFT)
@@ -85,6 +84,7 @@ typedef u64 iomux_v3_cfg_t;* Use to set PAD control */ +#define NO_PAD_CTRL (1 << 16)#define PAD_CTL_DVS (1 << 13)#define PAD_CTL_HYS (1 << 8)
arch/powerpc/sysdev/fsl_rio.c +3 -2
@@ -54,6 +54,7 @@#define ODSR_CLEAR 0x1c00#define LTLEECSR_ENABLE_ALL 0xFFC000FC#define ESCSR_CLEAR 0x07120204 +#define IECSR_CLEAR 0x80000000#define RIO_PORT1_EDCSR 0x0640#define RIO_PORT2_EDCSR 0x0680
@@ -1089,11 +1090,11 @@ static void port_error_handler(struct rio_mport *port, int offset)if (offset ==0 ) {out_be32 ((u32 *)(rio_regs_win +RIO_PORT1_EDCSR ),0 ); -out_be32 ((u32 *)(rio_regs_win +RIO_PORT1_IECSR ),0 ); +out_be32 ((u32 *)(rio_regs_win +RIO_PORT1_IECSR ),IECSR_CLEAR );out_be32 ((u32 *)(rio_regs_win +RIO_ESCSR ),ESCSR_CLEAR ); }else {out_be32 ((u32 *)(rio_regs_win +RIO_PORT2_EDCSR ),0 ); -out_be32 ((u32 *)(rio_regs_win +RIO_PORT2_IECSR ),0 ); +out_be32 ((u32 *)(rio_regs_win +RIO_PORT2_IECSR ),IECSR_CLEAR );out_be32 ((u32 *)(rio_regs_win +RIO_PORT2_ESCSR ),ESCSR_CLEAR ); } }
arch/sparc/Kconfig +1 -0
@@ -53,6 +53,7 @@ config SPARC64 select HAVE_PERF_EVENTS select PERF_USE_VMALLOC select IRQ_PREFLOW_FASTEOI + select HAVE_C_RECORDMCOUNT config ARCH_DEFCONFIG string
arch/sparc/include/asm/sigcontext.h +14 -0
@@ -45,6 +45,19 @@ typedef struct {int si_mask; } __siginfo32_t; +#define __SIGC_MAXWIN 7 + +typedef struct { +unsigned long locals[8 ]; +unsigned long ins[8 ]; +}__siginfo_reg_window ; + +typedef struct { +int wsaved; +__siginfo_reg_window reg_window[__SIGC_MAXWIN]; +unsigned long rwbuf_stkptrs[__SIGC_MAXWIN]; +}__siginfo_rwin_t ; + #ifdef CONFIG_SPARC64 typedef struct { unsigned int si_float_regs [64];
@@ -73,6 +86,7 @@ struct sigcontext { unsigned long ss_size; } sigc_stack;unsigned long sigc_mask; +__siginfo_rwin_t * sigc_rwin_save; };#else
arch/sparc/include/asm/spinlock_32.h +9 -2
@@ -131,6 +131,15 @@ static inline void arch_write_lock(arch_rwlock_t *rw) *(volatile __u32 *)&lp->lock = ~0U ; } +static void inline arch_write_unlock (arch_rwlock_t *lock) +{ + __asm__ __volatile__( +" st %%g0, [%0]" + :/* no outputs */ + :"r" (lock) + :"memory" ); +} +static inline int arch_write_trylock (arch_rwlock_t *rw) {unsigned int val;
@@ -175,8 +184,6 @@ static inline int __arch_read_trylock(arch_rwlock_t *rw) res; \ }) -#define arch_write_unlock (rw) do { (rw)->lock = 0; } while(0) -#define arch_spin_lock_flags (lock, flags) arch_spin_lock(lock)#define arch_read_lock_flags (rw, flags) arch_read_lock(rw)#define arch_write_lock_flags (rw, flags) arch_write_lock(rw)
arch/sparc/include/asm/spinlock_64.h +0 -6
@@ -210,14 +210,8 @@ static int inline arch_write_trylock(arch_rwlock_t *lock)return result; } -#define arch_read_lock (p) arch_read_lock(p)#define arch_read_lock_flags (p, f) arch_read_lock(p) -#define arch_read_trylock (p) arch_read_trylock(p) -#define arch_read_unlock (p) arch_read_unlock(p) -#define arch_write_lock (p) arch_write_lock(p)#define arch_write_lock_flags (p, f) arch_write_lock(p) -#define arch_write_unlock (p) arch_write_unlock(p) -#define arch_write_trylock (p) arch_write_trylock(p)#define arch_read_can_lock (rw) (!((rw)->lock & 0x80000000UL))#define arch_write_can_lock (rw) (!(rw)->lock)
arch/sparc/kernel/Makefile +1 -0
@@ -32,6 +32,7 @@ obj-$(CONFIG_SPARC32) += sun4m_irq.o sun4c_irq.o sun4d_irq.o obj-y += process_$(BITS).o obj-y += signal_$(BITS).o +obj-y += sigutil_$(BITS).o obj-$(CONFIG_SPARC32) += ioport.o obj-y += setup_$(BITS).o obj-y += idprom.o
arch/sparc/kernel/irq.h +1 -1
@@ -88,7 +88,7 @@ BTFIXUPDEF_CALL(void, set_irq_udt, int)#define set_irq_udt (cpu) BTFIXUP_CALL(set_irq_udt)(cpu)/* All SUN4D IPIs are sent on this IRQ, may be shared with hard IRQs */ -#define SUN4D_IPI_IRQ 14 +#define SUN4D_IPI_IRQ 13extern void sun4d_ipi_interrupt (void );
arch/sparc/kernel/pcic.c +2 -2
@@ -352,8 +352,8 @@ int __init pcic_probe(void)strcpy (pbm->prom_name, namebuf); { -extern volatile int t_nmi[1 ]; -extern int pcic_nmi_trap_patch[1 ]; +extern volatile int t_nmi[4 ]; +extern int pcic_nmi_trap_patch[4 ]; t_nmi[0 ] = pcic_nmi_trap_patch[0 ]; t_nmi[1 ] = pcic_nmi_trap_patch[1 ];
arch/sparc/kernel/setup_64.c +8 -2
@@ -440,8 +440,14 @@ static void __init init_sparc64_elf_hwcap(void) cap |=AV_SPARC_VIS ;if (tlb_type == cheetah || tlb_type == cheetah_plus) cap |=AV_SPARC_VIS |AV_SPARC_VIS2 ; -if (tlb_type == cheetah_plus) - cap |=AV_SPARC_POPC ; +if (tlb_type == cheetah_plus) { +unsigned long impl, ver; + + __asm__ __volatile__("rdpr %%ver, %0" :"=r" (ver)); + impl = ((ver >>32 ) &0xffff ); +if (impl ==PANTHER_IMPL ) + cap |=AV_SPARC_POPC ; + }if (tlb_type == hypervisor) {if (sun4v_chip_type ==SUN4V_CHIP_NIAGARA1 ) cap |=AV_SPARC_ASI_BLK_INIT ;
arch/sparc/kernel/signal32.c +105 -79
328 lines not on this page · raw message
arch/sparc/kernel/signal_32.c +79 -93
291 lines not on this page · raw message
arch/sparc/kernel/signal_64.c +47 -61
185 lines not on this page · raw message
arch/sparc/kernel/sigutil.h new file +9 -0
@@ -0,0 +1,9 @@ +#ifndef _SIGUTIL_H +#define _SIGUTIL_H + +int save_fpu_state (struct pt_regs *regs,__siginfo_fpu_t __user *fpu); +int restore_fpu_state (struct pt_regs *regs,__siginfo_fpu_t __user *fpu); +int save_rwin_state (int wsaved,__siginfo_rwin_t __user *rwin); +int restore_rwin_state (__siginfo_rwin_t __user *rp); + +#endif /* _SIGUTIL_H */
arch/sparc/kernel/sigutil_32.c new file +120 -0
120 lines not on this page · raw message
arch/sparc/kernel/sigutil_64.c new file +93 -0
93 lines not on this page · raw message
arch/x86/kernel/amd_iommu.c +10 -8
@@ -531,7 +531,9 @@ static void build_inv_all(struct iommu_cmd *cmd)* Writes the command to the IOMMUs command buffer and informs the * hardware about the new command. */ -static int iommu_queue_command (struct amd_iommu *iommu,struct iommu_cmd *cmd) +static int iommu_queue_command_sync (struct amd_iommu *iommu, +struct iommu_cmd *cmd, +bool sync) {u32 left, tail, head, next_tail;unsigned long flags;
@@ -565,13 +567,18 @@ again:copy_cmd_to_buffer (iommu, cmd, tail);/* We need to sync now to make sure all commands are processed */ - iommu->need_sync = true; + iommu->need_sync = sync;spin_unlock_irqrestore (&iommu->lock, flags);return 0 ; } +static int iommu_queue_command (struct amd_iommu *iommu,struct iommu_cmd *cmd) +{ +return iommu_queue_command_sync (iommu, cmd, true); +} +/* * This function queues a completion wait command into the command * buffer of an IOMMU
@@ -587,7 +594,7 @@ static int iommu_completion_wait(struct amd_iommu *iommu)build_completion_wait (&cmd, (u64)&sem); - ret =iommu_queue_command (iommu, &cmd); + ret =iommu_queue_command_sync (iommu, &cmd, false);if (ret)return ret;
@@ -773,14 +780,9 @@ static void domain_flush_complete(struct protection_domain *domain)static void domain_flush_devices (struct protection_domain *domain) {struct iommu_dev_data *dev_data; -unsigned long flags; - -spin_lock_irqsave (&domain->lock, flags);list_for_each_entry (dev_data, &domain->dev_list, list)device_flush_dte (dev_data->dev); - -spin_unlock_irqrestore (&domain->lock, flags); }/****************************************************************************
arch/x86/kernel/cpu/perf_event.c +3 -0
@@ -1856,6 +1856,9 @@ perf_callchain_user(struct perf_callchain_entry *entry, struct pt_regs *regs)perf_callchain_store (entry, regs->ip); +if (!current->mm) +return ; +if (perf_callchain_user32 (regs, entry))return ;
arch/x86/kernel/cpu/perf_event_intel.c +1 -0
@@ -1495,6 +1495,7 @@ static __init int intel_pmu_init(void)break ;case 42 :/* SandyBridge */ +case 45 :/* SandyBridge, "Romely-EP" */ memcpy (hw_cache_event_ids, snb_hw_cache_event_ids,sizeof (hw_cache_event_ids));
arch/x86/xen/setup.c +21 -0
@@ -185,6 +185,19 @@ static unsigned long __init xen_set_identity(const struct e820entry *list, PFN_UP(start_pci), PFN_DOWN(last));return identity; } + +static unsigned long __init xen_get_max_pages (void ) +{ +unsigned long max_pages =MAX_DOMAIN_PAGES ; +domid_t domid =DOMID_SELF ; +int ret; + + ret =HYPERVISOR_memory_op (XENMEM_maximum_reservation, &domid); +if (ret >0 ) + max_pages = ret; +return min (max_pages,MAX_DOMAIN_PAGES ); +} +/** * machine_specific_memory_setup - Hook for machine specific memory setup. **/
@@ -293,6 +306,14 @@ char * __init xen_memory_setup(void)sanitize_e820_map (e820.map,ARRAY_SIZE (e820.map), &e820.nr_map); + extra_limit =xen_get_max_pages (); +if (max_pfn + extra_pages > extra_limit) { +if (extra_limit > max_pfn) + extra_pages = extra_limit - max_pfn; +else + extra_pages =0 ; + } + extra_pages +=xen_return_unused_memory (xen_start_info->nr_pages, &e820);/*
arch/x86/xen/smp.c +10 -0
@@ -32,6 +32,7 @@#include <xen/page.h> #include <xen/events.h> +#include <xen/hvc-console.h> #include "xen-ops.h" #include "mmu.h"
@@ -207,6 +208,15 @@ static void __init xen_smp_prepare_cpus(unsigned int max_cpus)unsigned cpu;unsigned int i; +if (skip_ioapic_setup) { +char *m = (max_cpus ==0 ) ? +"The nosmp parameter is incompatible with Xen; " \ +"use Xen dom0_max_vcpus=1 parameter" : +"The noapic parameter is incompatible with Xen" ; + +xen_raw_printk (m); +panic (m); + }xen_init_lock_cpu (0 );smp_store_cpu_info (0 );
arch/x86/xen/xen-asm_32.S +5 -3
@@ -113,11 +113,13 @@ xen_iret_start_crit: /* * If there's something pending, mask events again so we can - * jump back into xen_hypervisor_callback + * jump back into xen_hypervisor_callback. Otherwise do not + * touch XEN_vcpu_info_mask. */ - sete XEN_vcpu_info_mask(%eax) + jne 1f + movb $1, XEN_vcpu_info_mask(%eax) - popl %eax +1: popl %eax /* * From this point on the registers are restored and the stack
block/blk-cgroup.c +16 -21
@@ -785,10 +785,10 @@ static int blkio_policy_parse_and_set(char *buf, {char *s[4 ], *p, *major_s =NULL , *minor_s =NULL ;int ret; -unsigned long major, minor, temp; +unsigned long major, minor;int i =0 ;dev_t dev; -u64 bps, iops; +u64 temp;memset (s,0 ,sizeof (s));
@@ -826,20 +826,23 @@ static int blkio_policy_parse_and_set(char *buf, dev =MKDEV (major, minor); - ret =blkio_check_dev_num (dev); + ret =strict_strtoull (s[1 ],10 , &temp);if (ret) -return ret; +return -EINVAL ; - newpn->dev = dev; +/* For rule removal, do not check for device presence. */ +if (temp) { + ret =blkio_check_dev_num (dev); +if (ret) +return ret; + } -if (s[1 ] ==NULL ) -return -EINVAL ; + newpn->dev = dev;switch (plid) {case BLKIO_POLICY_PROP : - ret =strict_strtoul (s[1 ],10 , &temp); -if (ret || (temp <BLKIO_WEIGHT_MIN && temp >0 ) || - temp >BLKIO_WEIGHT_MAX ) +if ((temp <BLKIO_WEIGHT_MIN && temp >0 ) || + temp >BLKIO_WEIGHT_MAX )return -EINVAL ; newpn->plid = plid;
@@ -850,26 +853,18 @@ static int blkio_policy_parse_and_set(char *buf,switch (fileid) {case BLKIO_THROTL_read_bps_device:case BLKIO_THROTL_write_bps_device: - ret =strict_strtoull (s[1 ],10 , &bps); -if (ret) -return -EINVAL ; - newpn->plid = plid; newpn->fileid = fileid; - newpn->val.bps = bps; + newpn->val.bps = temp;break ;case BLKIO_THROTL_read_iops_device:case BLKIO_THROTL_write_iops_device: - ret =strict_strtoull (s[1 ],10 , &iops); -if (ret) -return -EINVAL ; - -if (iops >THROTL_IOPS_MAX ) +if (temp >THROTL_IOPS_MAX )return -EINVAL ; newpn->plid = plid; newpn->fileid = fileid; - newpn->val.iops = (unsigned int )iops; + newpn->val.iops = (unsigned int )temp;break ; }break ;
block/blk-core.c +6 -7
@@ -348,9 +348,10 @@ void blk_put_queue(struct request_queue *q)EXPORT_SYMBOL (blk_put_queue);/* -* Note: If a driver supplied the queue lock, it should not zap that lock -* unexpectedly as some queue cleanup components like elevator_exit() and -* blk_throtl_exit() need queue lock. +* Note: If a driver supplied the queue lock, it is disconnected +* by this function. The actual state of the lock doesn't matter +* here as the request_queue isn't accessible after this point +* (QUEUE_FLAG_DEAD is set) and no other requests will be queued. */ void blk_cleanup_queue (struct request_queue *q) {
@@ -367,10 +368,8 @@ void blk_cleanup_queue(struct request_queue *q)queue_flag_set_unlocked (QUEUE_FLAG_DEAD , q);mutex_unlock (&q->sysfs_lock); -if (q->elevator) -elevator_exit (q->elevator); - -blk_throtl_exit (q); +if (q->queue_lock != &q->__queue_lock) + q->queue_lock = &q->__queue_lock;blk_put_queue (q); }
block/blk-sysfs.c +5 -0
@@ -472,6 +472,11 @@ static void blk_release_queue(struct kobject *kobj)blk_sync_queue (q); +if (q->elevator) +elevator_exit (q->elevator); + +blk_throtl_exit (q); +if (rl->rq_pool)mempool_destroy (rl->rq_pool);
drivers/acpi/acpica/acconfig.h +1 -1
@@ -121,7 +121,7 @@/* Maximum sleep allowed via Sleep() operator */ -#define ACPI_MAX_SLEEP 20000/* Two seconds */ +#define ACPI_MAX_SLEEP 2000/* Two seconds */ /****************************************************************************** *
drivers/acpi/acpica/aclocal.h +1 -0
@@ -357,6 +357,7 @@ struct acpi_predefined_data {char *pathname;const union acpi_predefined_info *predefined;union acpi_operand_object *parent_package; +struct acpi_namespace_node *node;u32 flags;u8 node_flags; };
drivers/acpi/acpica/nspredef.c +1 -0
@@ -212,6 +212,7 @@ acpi_ns_check_predefined_names(struct acpi_namespace_node *node, goto cleanup; } data->predefined = predefined; + data->node = node; data->node_flags = node->flags; data->pathname = pathname;
drivers/acpi/acpica/nsrepair2.c +15 -0
@@ -503,6 +503,21 @@ acpi_ns_repair_TSS(struct acpi_predefined_data *data, {union acpi_operand_object *return_object = *return_object_ptr;acpi_status status; +struct acpi_namespace_node *node; + +/* +* We can only sort the _TSS return package if there is no _PSS in the +* same scope. This is because if _PSS is present, the ACPI specification +* dictates that the _TSS Power Dissipation field is to be ignored, and +* therefore some BIOSs leave garbage values in the _TSS Power field(s). +* In this case, it is best to just return the _TSS package as-is. +* (May, 2011) +*/ + status = +acpi_ns_get_node (data->node,"^_PSS" ,ACPI_NS_NO_UPSEARCH , &node); +if (ACPI_SUCCESS (status)) { +return (AE_OK ); + } status = acpi_ns_check_sorted_list(data, return_object, 5, 1, ACPI_SORT_DESCENDING,
drivers/ata/ahci.c +1 -0
@@ -267,6 +267,7 @@ static const struct pci_device_id ahci_pci_tbl[] = { { PCI_VDEVICE(INTEL, 0x1e05), board_ahci }, /* Panther Point RAID */ { PCI_VDEVICE(INTEL, 0x1e06), board_ahci }, /* Panther Point RAID */ { PCI_VDEVICE(INTEL, 0x1e07), board_ahci }, /* Panther Point RAID */ + { PCI_VDEVICE(INTEL, 0x1e0e), board_ahci }, /* Panther Point RAID *//* JMicron 360/1/3/5/6, match class to avoid IDE function */ { PCI_VENDOR_ID_JMICRON, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID,
drivers/ata/pata_via.c +18 -0
@@ -124,6 +124,17 @@ static const struct via_isa_bridge { { NULL } }; +static const struct dmi_system_id no_atapi_dma_dmi_table[] = { + { + .ident ="AVERATEC 3200" , + .matches = { +DMI_MATCH (DMI_BOARD_VENDOR ,"AVERATEC" ), +DMI_MATCH (DMI_BOARD_NAME ,"3200" ), + }, + }, + { } +}; +struct via_port {u8 cached_device; };
@@ -355,6 +366,13 @@ static unsigned long via_mode_filter(struct ata_device *dev, unsigned long mask) mask &= ~ATA_MASK_UDMA ; } } + +if (dev->class ==ATA_DEV_ATAPI && +dmi_check_system (no_atapi_dma_dmi_table)) { +ata_dev_printk (dev,KERN_WARNING ,"controller locks up on ATAPI DMA, forcing PIO\n" ); + mask &=ATA_MASK_PIO ; + } +return mask; }
drivers/base/firmware_class.c +6 -5
@@ -521,11 +521,6 @@ static int _request_firmware(const struct firmware **firmware_p,if (!firmware_p)return -EINVAL ; -if (WARN_ON (usermodehelper_is_disabled ())) { -dev_err (device,"firmware: %s will not be loaded\n" , name); -return -EBUSY ; - } - *firmware_p = firmware =kzalloc (sizeof (*firmware),GFP_KERNEL );if (!firmware) { dev_err(device, "%s: kmalloc(struct firmware) failed\n",
@@ -539,6 +534,12 @@ static int _request_firmware(const struct firmware **firmware_p,return 0 ; } +if (WARN_ON (usermodehelper_is_disabled ())) { +dev_err (device,"firmware: %s will not be loaded\n" , name); + retval = -EBUSY ; + goto out; + } +if (uevent)dev_dbg (device,"firmware: requesting %s\n" , name);
drivers/block/floppy.c +4 -4
@@ -4250,7 +4250,7 @@ static int __init floppy_init(void) use_virtual_dma = can_use_virtual_dma &1 ; fdc_state[0 ].address =FDC1 ;if (fdc_state[0 ].address ==-1 ) { -del_timer (&fd_timeout); +del_timer_sync (&fd_timeout); err = -ENODEV ; goto out_unreg_region; }
@@ -4261,7 +4261,7 @@ static int __init floppy_init(void) fdc =0 ;/* reset fdc in case of unexpected interrupt */ err =floppy_grab_irq_and_dma ();if (err) { -del_timer (&fd_timeout); +del_timer_sync (&fd_timeout); err = -EBUSY ; goto out_unreg_region; }
@@ -4318,7 +4318,7 @@ static int __init floppy_init(void)user_reset_fdc (-1 ,FD_RESET_ALWAYS , false); } fdc =0 ; -del_timer (&fd_timeout); +del_timer_sync (&fd_timeout); current_drive =0 ; initialized = true;if (have_no_fdc) {
@@ -4368,7 +4368,7 @@ out_unreg_blkdev:unregister_blkdev (FLOPPY_MAJOR ,"fd" ); out_put_disk:while (dr--) { -del_timer (&motor_off_timer[dr]); +del_timer_sync (&motor_off_timer[dr]);if (disks[dr]->queue)blk_cleanup_queue (disks[dr]->queue);put_disk (disks[dr]);
drivers/char/tpm/tpm.c +8 -1
@@ -383,6 +383,9 @@ static ssize_t tpm_transmit(struct tpm_chip *chip, const char *buf,u32 count, ordinal;unsigned long stop; +if (bufsiz >TPM_BUFSIZE ) + bufsiz =TPM_BUFSIZE ; + count =be32_to_cpu (*((__be32 *) (buf +2 ))); ordinal =be32_to_cpu (*((__be32 *) (buf +6 )));if (count ==0 )
@@ -1052,6 +1055,7 @@ ssize_t tpm_read(struct file *file, char __user *buf, {struct tpm_chip *chip = file->private_data;ssize_t ret_size; +int rc;del_singleshot_timer_sync (&chip->user_read_timer);flush_work_sync (&chip->work);
@@ -1062,8 +1066,11 @@ ssize_t tpm_read(struct file *file, char __user *buf, ret_size = size;mutex_lock (&chip->buffer_mutex); -if (copy_to_user (buf, chip->data_buffer, ret_size)) + rc =copy_to_user (buf, chip->data_buffer, ret_size); +memset (chip->data_buffer,0 , ret_size); +if (rc) ret_size = -EFAULT ; +mutex_unlock (&chip->buffer_mutex); }
drivers/cpufreq/pcc-cpufreq.c +3 -0
@@ -261,6 +261,9 @@ static int pcc_get_offset(int cpu) pr =per_cpu (processors, cpu); pcc_cpu_data =per_cpu_ptr (pcc_cpu_info, cpu); +if (!pr) +return -ENODEV ; + status =acpi_evaluate_object (pr->handle,"PCCP" ,NULL , &buffer);if (ACPI_FAILURE (status))return -ENODEV ;
drivers/firewire/ohci.c +3 -0
@@ -291,6 +291,9 @@ static const struct { {PCI_VENDOR_ID_NEC ,PCI_ANY_ID ,PCI_ANY_ID , QUIRK_CYCLE_TIMER}, + {PCI_VENDOR_ID_O2, PCI_ANY_ID, PCI_ANY_ID, + QUIRK_NO_MSI}, + {PCI_VENDOR_ID_RICOH, PCI_ANY_ID, PCI_ANY_ID, QUIRK_CYCLE_TIMER},
drivers/gpu/drm/nouveau/nouveau_sgdma.c +4 -1
@@ -37,8 +37,11 @@ nouveau_sgdma_populate(struct ttm_backend *be, unsigned long num_pages,return -ENOMEM ; nvbe->ttm_alloced =kmalloc (sizeof (bool ) * num_pages,GFP_KERNEL ); -if (!nvbe->ttm_alloced) +if (!nvbe->ttm_alloced) { +kfree (nvbe->pages); + nvbe->pages =NULL ;return -ENOMEM ; + } nvbe->nr_pages =0 ;while (num_pages--) {
drivers/gpu/drm/radeon/evergreen.c +36 -6
89 lines not on this page · raw message
drivers/gpu/drm/radeon/ni.c +10 -6
@@ -39,6 +39,7 @@ extern int evergreen_mc_wait_for_idle(struct radeon_device *rdev);extern void evergreen_mc_program (struct radeon_device *rdev);extern void evergreen_irq_suspend (struct radeon_device *rdev);extern int evergreen_mc_init (struct radeon_device *rdev); +extern void evergreen_fix_pci_max_read_req_size (struct radeon_device *rdev);#define EVERGREEN_PFP_UCODE_SIZE 1120#define EVERGREEN_PM4_UCODE_SIZE 1376
@@ -669,6 +670,8 @@ static void cayman_gpu_init(struct radeon_device *rdev)WREG32 (GRBM_CNTL ,GRBM_READ_TIMEOUT (0xff )); +evergreen_fix_pci_max_read_req_size (rdev); + mc_shared_chmap =RREG32 (MC_SHARED_CHMAP ); mc_arb_ramcfg =RREG32 (MC_ARB_RAMCFG );
@@ -1158,6 +1161,7 @@ int cayman_cp_resume(struct radeon_device *rdev)SOFT_RESET_PA |SOFT_RESET_SH |SOFT_RESET_VGT | +SOFT_RESET_SPI | SOFT_RESET_SX));RREG32 (GRBM_SOFT_RESET );mdelay (15 );
@@ -1182,7 +1186,8 @@ int cayman_cp_resume(struct radeon_device *rdev)/* Initialize the ring buffer's read and write pointers */ WREG32 (CP_RB0_CNTL , tmp |RB_RPTR_WR_ENA ); -WREG32 (CP_RB0_WPTR ,0 ); + rdev->cp.wptr =0 ; +WREG32 (CP_RB0_WPTR , rdev->cp.wptr);/* set the wb address wether it's enabled or not */ WREG32 (CP_RB0_RPTR_ADDR , (rdev->wb.gpu_addr +RADEON_WB_CP_RPTR_OFFSET ) &0xFFFFFFFC );
@@ -1202,7 +1207,6 @@ int cayman_cp_resume(struct radeon_device *rdev)WREG32 (CP_RB0_BASE , rdev->cp.gpu_addr >>8 ); rdev->cp.rptr =RREG32 (CP_RB0_RPTR ); - rdev->cp.wptr =RREG32 (CP_RB0_WPTR );/* ring1 - compute only */ /* Set ring buffer size */
@@ -1215,7 +1219,8 @@ int cayman_cp_resume(struct radeon_device *rdev)/* Initialize the ring buffer's read and write pointers */ WREG32 (CP_RB1_CNTL , tmp |RB_RPTR_WR_ENA ); -WREG32 (CP_RB1_WPTR ,0 ); + rdev->cp1.wptr =0 ; +WREG32 (CP_RB1_WPTR , rdev->cp1.wptr);/* set the wb address wether it's enabled or not */ WREG32 (CP_RB1_RPTR_ADDR , (rdev->wb.gpu_addr +RADEON_WB_CP1_RPTR_OFFSET ) &0xFFFFFFFC );
@@ -1227,7 +1232,6 @@ int cayman_cp_resume(struct radeon_device *rdev)WREG32 (CP_RB1_BASE , rdev->cp1.gpu_addr >>8 ); rdev->cp1.rptr =RREG32 (CP_RB1_RPTR ); - rdev->cp1.wptr =RREG32 (CP_RB1_WPTR );/* ring2 - compute only */ /* Set ring buffer size */
@@ -1240,7 +1244,8 @@ int cayman_cp_resume(struct radeon_device *rdev)/* Initialize the ring buffer's read and write pointers */ WREG32 (CP_RB2_CNTL , tmp |RB_RPTR_WR_ENA ); -WREG32 (CP_RB2_WPTR ,0 ); + rdev->cp2.wptr =0 ; +WREG32 (CP_RB2_WPTR , rdev->cp2.wptr);/* set the wb address wether it's enabled or not */ WREG32 (CP_RB2_RPTR_ADDR , (rdev->wb.gpu_addr +RADEON_WB_CP2_RPTR_OFFSET ) &0xFFFFFFFC );
@@ -1252,7 +1257,6 @@ int cayman_cp_resume(struct radeon_device *rdev)WREG32 (CP_RB2_BASE , rdev->cp2.gpu_addr >>8 ); rdev->cp2.rptr =RREG32 (CP_RB2_RPTR ); - rdev->cp2.wptr =RREG32 (CP_RB2_WPTR );/* start the rings */ cayman_cp_start (rdev);
drivers/gpu/drm/radeon/r100.c +8 -10
@@ -721,11 +721,11 @@ void r100_fence_ring_emit(struct radeon_device *rdev,int r100_copy_blit (struct radeon_device *rdev,uint64_t src_offset,uint64_t dst_offset, -unsigned num_pages, +unsigned num_gpu_pages,struct radeon_fence *fence) {uint32_t cur_pages; -uint32_t stride_bytes =PAGE_SIZE ; +uint32_t stride_bytes =RADEON_GPU_PAGE_SIZE ;uint32_t pitch;uint32_t stride_pixels;unsigned ndw;
@@ -737,7 +737,7 @@ int r100_copy_blit(struct radeon_device *rdev,/* radeon pitch is /64 */ pitch = stride_bytes /64 ; stride_pixels = stride_bytes /4 ; - num_loops =DIV_ROUND_UP (num_pages,8191 ); + num_loops =DIV_ROUND_UP (num_gpu_pages,8191 );/* Ask for enough room for blit + flush + fence */ ndw =64 + (10 * num_loops);
@@ -746,12 +746,12 @@ int r100_copy_blit(struct radeon_device *rdev,DRM_ERROR ("radeon: moving bo (%d) asking for %u dw.\n" , r, ndw);return -EINVAL ; } -while (num_pages >0 ) { - cur_pages = num_pages; +while (num_gpu_pages >0 ) { + cur_pages = num_gpu_pages;if (cur_pages >8191 ) { cur_pages =8191 ; } - num_pages -= cur_pages; + num_gpu_pages -= cur_pages;/* pages are in Y direction - height page width in X direction - width */
@@ -990,7 +990,8 @@ int r100_cp_init(struct radeon_device *rdev, unsigned ring_size)/* Force read & write ptr to 0 */ WREG32 (RADEON_CP_RB_CNTL , tmp |RADEON_RB_RPTR_WR_ENA |RADEON_RB_NO_UPDATE );WREG32 (RADEON_CP_RB_RPTR_WR ,0 ); -WREG32 (RADEON_CP_RB_WPTR ,0 ); + rdev->cp.wptr =0 ; +WREG32 (RADEON_CP_RB_WPTR , rdev->cp.wptr);/* set the wb address whether it's enabled or not */ WREG32(R_00070C_CP_RB_RPTR_ADDR,
@@ -1007,9 +1008,6 @@ int r100_cp_init(struct radeon_device *rdev, unsigned ring_size)WREG32 (RADEON_CP_RB_CNTL , tmp);udelay (10 ); rdev->cp.rptr =RREG32 (RADEON_CP_RB_RPTR ); - rdev->cp.wptr =RREG32 (RADEON_CP_RB_WPTR ); -/* protect against crazy HW on resume */ - rdev->cp.wptr &= rdev->cp.ptr_mask;/* Set cp mode to bus mastering & enable cp*/ WREG32(RADEON_CP_CSQ_MODE, REG_SET(RADEON_INDIRECT2_START, indirect2_start) |
drivers/gpu/drm/radeon/r200.c +2 -2
@@ -84,7 +84,7 @@ static int r200_get_vtx_size_0(uint32_t vtx_fmt_0)int r200_copy_dma (struct radeon_device *rdev,uint64_t src_offset,uint64_t dst_offset, -unsigned num_pages, +unsigned num_gpu_pages,struct radeon_fence *fence) {uint32_t size;
@@ -93,7 +93,7 @@ int r200_copy_dma(struct radeon_device *rdev,int r =0 ;/* radeon pitch is /64 */ - size = num_pages <<PAGE_SHIFT ; + size = num_gpu_pages <<RADEON_GPU_PAGE_SHIFT ; num_loops =DIV_ROUND_UP (size,0x1FFFFF ); r =radeon_ring_lock (rdev, num_loops *4 +64 );if (r) {
drivers/gpu/drm/radeon/r600.c +8 -6
@@ -2208,7 +2208,8 @@ int r600_cp_resume(struct radeon_device *rdev)/* Initialize the ring buffer's read and write pointers */ WREG32 (CP_RB_CNTL , tmp |RB_RPTR_WR_ENA );WREG32 (CP_RB_RPTR_WR ,0 ); -WREG32 (CP_RB_WPTR ,0 ); + rdev->cp.wptr =0 ; +WREG32 (CP_RB_WPTR , rdev->cp.wptr);/* set the wb address whether it's enabled or not */ WREG32(CP_RB_RPTR_ADDR,
@@ -2233,7 +2234,6 @@ int r600_cp_resume(struct radeon_device *rdev)WREG32 (CP_DEBUG , (1 <<27 ) | (1 <<28 )); rdev->cp.rptr =RREG32 (CP_RB_RPTR ); - rdev->cp.wptr =RREG32 (CP_RB_WPTR );r600_cp_start (rdev); rdev->cp.ready = true;
@@ -2355,21 +2355,23 @@ void r600_fence_ring_emit(struct radeon_device *rdev, }int r600_copy_blit (struct radeon_device *rdev, -uint64_t src_offset,uint64_t dst_offset, -unsigned num_pages,struct radeon_fence *fence) +uint64_t src_offset, +uint64_t dst_offset, +unsigned num_gpu_pages, +struct radeon_fence *fence) {int r;mutex_lock (&rdev->r600_blit.mutex); rdev->r600_blit.vb_ib =NULL ; - r =r600_blit_prepare_copy (rdev, num_pages *RADEON_GPU_PAGE_SIZE ); + r =r600_blit_prepare_copy (rdev, num_gpu_pages *RADEON_GPU_PAGE_SIZE );if (r) {if (rdev->r600_blit.vb_ib)radeon_ib_free (rdev, &rdev->r600_blit.vb_ib);mutex_unlock (&rdev->r600_blit.mutex);return r; } -r600_kms_blit_copy (rdev, src_offset, dst_offset, num_pages *RADEON_GPU_PAGE_SIZE ); +r600_kms_blit_copy (rdev, src_offset, dst_offset, num_gpu_pages *RADEON_GPU_PAGE_SIZE );r600_blit_done_copy (rdev, fence);mutex_unlock (&rdev->r600_blit.mutex);return 0 ;
drivers/gpu/drm/radeon/radeon.h +4 -3
@@ -322,6 +322,7 @@ union radeon_gart_table {#define RADEON_GPU_PAGE_SIZE 4096#define RADEON_GPU_PAGE_MASK (RADEON_GPU_PAGE_SIZE - 1) +#define RADEON_GPU_PAGE_SHIFT 12struct radeon_gart {dma_addr_t table_addr;
@@ -914,17 +915,17 @@ struct radeon_asic {int (*copy_blit)(struct radeon_device *rdev,uint64_t src_offset,uint64_t dst_offset, -unsigned num_pages, +unsigned num_gpu_pages,struct radeon_fence *fence);int (*copy_dma)(struct radeon_device *rdev,uint64_t src_offset,uint64_t dst_offset, -unsigned num_pages, +unsigned num_gpu_pages,struct radeon_fence *fence);int (*copy)(struct radeon_device *rdev,uint64_t src_offset,uint64_t dst_offset, -unsigned num_pages, +unsigned num_gpu_pages,struct radeon_fence *fence);uint32_t (*get_engine_clock)(struct radeon_device *rdev);void (*set_engine_clock)(struct radeon_device *rdev,uint32_t eng_clock);
drivers/gpu/drm/radeon/radeon_asic.h +4 -4
@@ -75,7 +75,7 @@ uint32_t r100_pll_rreg(struct radeon_device *rdev, uint32_t reg);int r100_copy_blit (struct radeon_device *rdev,uint64_t src_offset,uint64_t dst_offset, -unsigned num_pages, +unsigned num_gpu_pages,struct radeon_fence *fence); int r100_set_surface_reg(struct radeon_device *rdev, int reg, uint32_t tiling_flags, uint32_t pitch,
@@ -143,7 +143,7 @@ extern void r100_post_page_flip(struct radeon_device *rdev, int crtc);extern int r200_copy_dma (struct radeon_device *rdev,uint64_t src_offset,uint64_t dst_offset, -unsigned num_pages, +unsigned num_gpu_pages,struct radeon_fence *fence);void r200_set_safe_registers (struct radeon_device *rdev);
@@ -311,7 +311,7 @@ void r600_ring_ib_execute(struct radeon_device *rdev, struct radeon_ib *ib);int r600_ring_test (struct radeon_device *rdev);int r600_copy_blit (struct radeon_device *rdev,uint64_t src_offset,uint64_t dst_offset, -unsigned num_pages,struct radeon_fence *fence); +unsigned num_gpu_pages,struct radeon_fence *fence);void r600_hpd_init (struct radeon_device *rdev);void r600_hpd_fini (struct radeon_device *rdev);bool r600_hpd_sense (struct radeon_device *rdev,enum radeon_hpd_id hpd);
@@ -403,7 +403,7 @@ void evergreen_bandwidth_update(struct radeon_device *rdev);void evergreen_ring_ib_execute (struct radeon_device *rdev,struct radeon_ib *ib);int evergreen_copy_blit (struct radeon_device *rdev,uint64_t src_offset,uint64_t dst_offset, -unsigned num_pages,struct radeon_fence *fence); +unsigned num_gpu_pages,struct radeon_fence *fence);void evergreen_hpd_init (struct radeon_device *rdev);void evergreen_hpd_fini (struct radeon_device *rdev);bool evergreen_hpd_sense (struct radeon_device *rdev,enum radeon_hpd_id hpd);
drivers/gpu/drm/radeon/radeon_clocks.c +3 -0
@@ -219,6 +219,9 @@ void radeon_get_clock_info(struct drm_device *dev) }else {DRM_INFO ("Using generic clock info\n" ); +/* may need to be per card */ + rdev->clock.max_pixel_clock =35000 ; +if (rdev->flags &RADEON_IS_IGP ) { p1pll->reference_freq =1432 ; p2pll->reference_freq =1432 ;
drivers/gpu/drm/radeon/radeon_combios.c +8 -0
@@ -3279,6 +3279,14 @@ void radeon_combios_asic_init(struct drm_device *dev) rdev->pdev->subsystem_device == 0x30a4)return ; +/* quirk for rs4xx Compaq Presario V5245EU laptop to make it resume +* - it hangs on resume inside the dynclk 1 table. +*/ +if (rdev->family ==CHIP_RS480 && + rdev->pdev->subsystem_vendor ==0x103c && + rdev->pdev->subsystem_device ==0x30ae ) +return ; +/* DYN CLK 1 */ table =combios_get_table_offset (dev,COMBIOS_DYN_CLK_1_TABLE );if (table)
drivers/gpu/drm/radeon/radeon_encoders.c +8 -1
@@ -1507,7 +1507,14 @@ radeon_atom_encoder_dpms(struct drm_encoder *encoder, int mode)switch (mode) {case DRM_MODE_DPMS_ON : args.ucAction =ATOM_ENABLE ; -atom_execute_table (rdev->mode_info.atom_context, index, (uint32_t *)&args); +/* workaround for DVOOutputControl on some RS690 systems */ +if (radeon_encoder->encoder_id ==ENCODER_OBJECT_ID_INTERNAL_DDI ) { +u32 reg =RREG32 (RADEON_BIOS_3_SCRATCH ); +WREG32 (RADEON_BIOS_3_SCRATCH , reg & ~ATOM_S3_DFP2I_ACTIVE ); +atom_execute_table (rdev->mode_info.atom_context, index, (uint32_t *)&args); +WREG32 (RADEON_BIOS_3_SCRATCH , reg); + }else +atom_execute_table (rdev->mode_info.atom_context, index, (uint32_t *)&args);if (radeon_encoder->devices & (ATOM_DEVICE_LCD_SUPPORT )) { args.ucAction =ATOM_LCD_BLON ;atom_execute_table (rdev->mode_info.atom_context, index, (uint32_t *)&args);
drivers/gpu/drm/radeon/radeon_ttm.c +6 -1
@@ -277,7 +277,12 @@ static int radeon_move_blit(struct ttm_buffer_object *bo,DRM_ERROR ("Trying to move memory with CP turned off.\n" );return -EINVAL ; } - r =radeon_copy (rdev, old_start, new_start, new_mem->num_pages, fence); + +BUILD_BUG_ON ((PAGE_SIZE %RADEON_GPU_PAGE_SIZE ) !=0 ); + + r =radeon_copy (rdev, old_start, new_start, + new_mem->num_pages * (PAGE_SIZE /RADEON_GPU_PAGE_SIZE ),/* GPU pages */ + fence);/* FIXME: handle copy error */ r =ttm_bo_move_accel_cleanup (bo, (void *)fence,NULL , evict, no_wait_reserve, no_wait_gpu, new_mem);
drivers/hwmon/ds620.c +1 -1
@@ -72,7 +72,7 @@ struct ds620_data {char valid;/* !=0 if following fields are valid */ unsigned long last_updated;/* In jiffies */ -u16 temp[3 ];/* Register values, word */ +s16 temp[3 ];/* Register values, word */ };/*
drivers/hwmon/max16065.c +1 -1
@@ -124,7 +124,7 @@ static inline int MV_TO_LIMIT(int mv, int range)static inline int ADC_TO_CURR (int adc,int gain) { -return adc *1400000 / gain *255 ; +return adc *1400000 / (gain *255 ); }/*
drivers/infiniband/hw/cxgb3/iwch_cm.c +5 -5
@@ -287,7 +287,7 @@ void __free_ep(struct kref *kref)if (test_bit (RELEASE_RESOURCES , &ep->com.flags)) {cxgb3_remove_tid (ep->com.tdev, (void *)ep, ep->hwtid);dst_release (ep->dst); -l2t_release (L2DATA (ep->com.tdev), ep->l2t); +l2t_release (ep->com.tdev, ep->l2t); }kfree (ep); }
@@ -1178,7 +1178,7 @@ static int act_open_rpl(struct t3cdev *tdev, struct sk_buff *skb, void *ctx)release_tid (ep->com.tdev,GET_TID (rpl),NULL );cxgb3_free_atid (ep->com.tdev, ep->atid);dst_release (ep->dst); -l2t_release (L2DATA (ep->com.tdev), ep->l2t); +l2t_release (ep->com.tdev, ep->l2t);put_ep (&ep->com);return CPL_RET_BUF_DONE ; }
@@ -1375,7 +1375,7 @@ static int pass_accept_req(struct t3cdev *tdev, struct sk_buff *skb, void *ctx)if (!child_ep) { printk(KERN_ERR MOD "%s - failed to allocate ep entry!\n", __func__); -l2t_release (L2DATA (tdev), l2t); +l2t_release (tdev, l2t);dst_release (dst); goto reject; }
@@ -1952,7 +1952,7 @@ int iwch_connect(struct iw_cm_id *cm_id, struct iw_cm_conn_param *conn_param)if (!err) goto out; -l2t_release (L2DATA (h->rdev.t3cdev_p), ep->l2t); +l2t_release (h->rdev.t3cdev_p, ep->l2t); fail4:dst_release (ep->dst); fail3:
@@ -2123,7 +2123,7 @@ int iwch_ep_redirect(void *ctx, struct dst_entry *old, struct dst_entry *new,PDBG ("%s ep %p redirect to dst %p l2t %p\n" , __func__, ep, new, l2t);dst_hold (new); -l2t_release (L2DATA (ep->com.tdev), ep->l2t); +l2t_release (ep->com.tdev, ep->l2t); ep->l2t = l2t;dst_release (old); ep->dst = new;
drivers/leds/ledtrig-timer.c +2 -0
@@ -41,6 +41,7 @@ static ssize_t led_delay_on_store(struct device *dev,if (count == size) {led_blink_set (led_cdev, &state, &led_cdev->blink_delay_off); + led_cdev->blink_delay_on = state; ret = count; }
@@ -69,6 +70,7 @@ static ssize_t led_delay_off_store(struct device *dev,if (count == size) {led_blink_set (led_cdev, &led_cdev->blink_delay_on, &state); + led_cdev->blink_delay_off = state; ret = count; }
drivers/md/linear.h +1 -1
@@ -10,9 +10,9 @@ typedef struct dev_info dev_info_t;struct linear_private_data { +struct rcu_head rcu;sector_t array_sectors;dev_info_t disks[0 ]; -struct rcu_head rcu; };
drivers/md/md.c +10 -2
@@ -1084,8 +1084,11 @@ static int super_90_load(mdk_rdev_t *rdev, mdk_rdev_t *refdev, int minor_version ret =0 ; } rdev->sectors = rdev->sb_start; +/* Limit to 4TB as metadata cannot record more than that */ +if (rdev->sectors >= (2ULL <<32 )) + rdev->sectors = (2ULL <<32 ) -2 ; -if (rdev->sectors < sb->size *2 && sb->level >1 ) +if (rdev->sectors < ((sector_t )sb->size) *2 && sb->level >=1 )/* "this cannot possibly happen" ... */ ret = -EINVAL ;
@@ -1119,7 +1122,7 @@ static int super_90_validate(mddev_t *mddev, mdk_rdev_t *rdev) mddev->clevel[0 ] =0 ; mddev->layout = sb->layout; mddev->raid_disks = sb->raid_disks; - mddev->dev_sectors = sb->size *2 ; + mddev->dev_sectors = ((sector_t )sb->size) *2 ; mddev->events = ev1; mddev->bitmap_info.offset =0 ; mddev->bitmap_info.default_offset =MD_SB_BYTES >>9 ;
@@ -1361,6 +1364,11 @@ super_90_rdev_size_change(mdk_rdev_t *rdev, sector_t num_sectors) rdev->sb_start =calc_dev_sboffset (rdev);if (!num_sectors || num_sectors > rdev->sb_start) num_sectors = rdev->sb_start; +/* Limit to 4TB as metadata cannot record more than that. +* 4TB == 2^32 KB, or 2*2^32 sectors. +*/ +if (num_sectors >= (2ULL <<32 )) + num_sectors = (2ULL <<32 ) -2 ;md_super_write (rdev->mddev, rdev, rdev->sb_start, rdev->sb_size, rdev->sb_page);md_super_wait (rdev->mddev);
drivers/media/dvb/dvb-usb/vp7045.c +4 -22
@@ -224,26 +224,8 @@ static struct dvb_usb_device_properties vp7045_properties;static int vp7045_usb_probe (struct usb_interface *intf,const struct usb_device_id *id) { -struct dvb_usb_device *d; -int ret =dvb_usb_device_init (intf, &vp7045_properties, -THIS_MODULE , &d, adapter_nr); -if (ret) -return ret; - - d->priv =kmalloc (20 ,GFP_KERNEL ); -if (!d->priv) { -dvb_usb_device_exit (intf); -return -ENOMEM ; - } - -return ret; -} - -static void vp7045_usb_disconnect (struct usb_interface *intf) -{ -struct dvb_usb_device *d =usb_get_intfdata (intf); -kfree (d->priv); -dvb_usb_device_exit (intf); +return dvb_usb_device_init (intf, &vp7045_properties, +THIS_MODULE ,NULL , adapter_nr); }static struct usb_device_id vp7045_usb_table [] = {
@@ -258,7 +240,7 @@ MODULE_DEVICE_TABLE(usb, vp7045_usb_table);static struct dvb_usb_device_properties vp7045_properties = { .usb_ctrl =CYPRESS_FX2 , .firmware ="dvb-usb-vp7045-01.fw" , - .size_of_priv =sizeof (u8 *), + .size_of_priv =20 , .num_adapters =1 , .adapter = {
@@ -305,7 +287,7 @@ static struct dvb_usb_device_properties vp7045_properties = {static struct usb_driver vp7045_usb_driver = { .name ="dvb_usb_vp7045" , .probe = vp7045_usb_probe, - .disconnect = vp7045_usb_disconnect, + .disconnect = dvb_usb_device_exit, .id_table = vp7045_usb_table, };
drivers/media/rc/nuvoton-cir.c +8 -37
87 lines not on this page · raw message
drivers/media/rc/nuvoton-cir.h +0 -1
@@ -67,7 +67,6 @@ static int debug;struct nvt_dev {struct pnp_dev *pdev;struct rc_dev *rdev; -struct ir_raw_event rawir;spinlock_t nvt_lock;
drivers/mfd/omap-usb-host.c +0 -1
@@ -676,7 +676,6 @@ static void usbhs_omap_tll_init(struct device *dev, u8 tll_channel_count) | OMAP_TLL_CHANNEL_CONF_ULPINOBITSTUFF | OMAP_TLL_CHANNEL_CONF_ULPIDDRMODE); - reg |= (1 << (i +1 )); }else continue ;
drivers/mfd/tps65910-irq.c +2 -0
@@ -178,8 +178,10 @@ int tps65910_irq_init(struct tps65910 *tps65910, int irq,switch (tps65910_chip_id (tps65910)) {case TPS65910 : tps65910->irq_num =TPS65910_NUM_IRQ ; +break ;case TPS65911 : tps65910->irq_num =TPS65911_NUM_IRQ ; +break ; }/* Register with genirq */
drivers/mmc/core/core.c +31 -4
@@ -132,7 +132,7 @@ void mmc_request_done(struct mmc_host *host, struct mmc_request *mrq)if (mrq->done) mrq->done (mrq); -mmc_host_clk_gate (host); +mmc_host_clk_release (host); } }
@@ -191,7 +191,7 @@ mmc_start_request(struct mmc_host *host, struct mmc_request *mrq) mrq->stop->mrq = mrq; } } -mmc_host_clk_ungate (host); +mmc_host_clk_hold (host);led_trigger_event (host->led,LED_FULL ); host->ops->request (host, mrq); }
@@ -634,15 +634,17 @@ static inline void mmc_set_ios(struct mmc_host *host)*/ void mmc_set_chip_select (struct mmc_host *host,int mode) { +mmc_host_clk_hold (host); host->ios.chip_select = mode;mmc_set_ios (host); +mmc_host_clk_release (host); }/* * Sets the host clock to the highest possible frequency that * is below "hz". */ -void mmc_set_clock (struct mmc_host *host,unsigned int hz) +static void __mmc_set_clock (struct mmc_host *host,unsigned int hz) {WARN_ON (hz < host->f_min);
@@ -653,6 +655,13 @@ void mmc_set_clock(struct mmc_host *host, unsigned int hz)mmc_set_ios (host); } +void mmc_set_clock (struct mmc_host *host,unsigned int hz) +{ +mmc_host_clk_hold (host); +__mmc_set_clock (host, hz); +mmc_host_clk_release (host); +} +#ifdef CONFIG_MMC_CLKGATE /* * This gates the clock by setting it to 0 Hz.
@@ -685,7 +694,7 @@ void mmc_ungate_clock(struct mmc_host *host)if (host->clk_old) {BUG_ON (host->ios.clock);/* This call will also set host->clk_gated to false */ -mmc_set_clock (host, host->clk_old); +__mmc_set_clock (host, host->clk_old); } }
@@ -713,8 +722,10 @@ void mmc_set_ungated(struct mmc_host *host)*/ void mmc_set_bus_mode (struct mmc_host *host,unsigned int mode) { +mmc_host_clk_hold (host); host->ios.bus_mode = mode;mmc_set_ios (host); +mmc_host_clk_release (host); }/*
@@ -722,8 +733,10 @@ void mmc_set_bus_mode(struct mmc_host *host, unsigned int mode)*/ void mmc_set_bus_width (struct mmc_host *host,unsigned int width) { +mmc_host_clk_hold (host); host->ios.bus_width = width;mmc_set_ios (host); +mmc_host_clk_release (host); }/**
@@ -921,8 +934,10 @@ u32 mmc_select_voltage(struct mmc_host *host, u32 ocr) ocr &=3 << bit; +mmc_host_clk_hold (host); host->ios.vdd = bit;mmc_set_ios (host); +mmc_host_clk_release (host); }else {pr_warning ("%s: host doesn't support card's voltages\n" ,mmc_hostname (host));
@@ -969,8 +984,10 @@ int mmc_set_signal_voltage(struct mmc_host *host, int signal_voltage, bool cmd11*/ void mmc_set_timing (struct mmc_host *host,unsigned int timing) { +mmc_host_clk_hold (host); host->ios.timing = timing;mmc_set_ios (host); +mmc_host_clk_release (host); }/*
@@ -978,8 +995,10 @@ void mmc_set_timing(struct mmc_host *host, unsigned int timing)*/ void mmc_set_driver_type (struct mmc_host *host,unsigned int drv_type) { +mmc_host_clk_hold (host); host->ios.drv_type = drv_type;mmc_set_ios (host); +mmc_host_clk_release (host); }/*
@@ -997,6 +1016,8 @@ static void mmc_power_up(struct mmc_host *host) {int bit; +mmc_host_clk_hold (host); +/* If ocr is set, we use it */ if (host->ocr) bit =ffs (host->ocr) -1 ;
@@ -1032,10 +1053,14 @@ static void mmc_power_up(struct mmc_host *host)* time required to reach a stable voltage. */ mmc_delay (10 ); + +mmc_host_clk_release (host); }static void mmc_power_off (struct mmc_host *host) { +mmc_host_clk_hold (host); + host->ios.clock =0 ; host->ios.vdd =0 ;
@@ -1053,6 +1078,8 @@ static void mmc_power_off(struct mmc_host *host) host->ios.bus_width =MMC_BUS_WIDTH_1 ; host->ios.timing =MMC_TIMING_LEGACY ;mmc_set_ios (host); + +mmc_host_clk_release (host); }/*
drivers/mmc/core/host.c +6 -6
@@ -119,14 +119,14 @@ static void mmc_host_clk_gate_work(struct work_struct *work) }/** -* mmc_host_clk_ungate - ungate hardware MCI clocks +* mmc_host_clk_hold - ungate hardware MCI clocks * @host: host to ungate. * * Makes sure the host ios.clock is restored to a non-zero value * past this call. Increase clock reference count and ungate clock * if we're the first user. */ -void mmc_host_clk_ungate (struct mmc_host *host) +void mmc_host_clk_hold (struct mmc_host *host) {unsigned long flags;
@@ -164,14 +164,14 @@ static bool mmc_host_may_gate_card(struct mmc_card *card) }/** -* mmc_host_clk_gate - gate off hardware MCI clocks +* mmc_host_clk_release - gate off hardware MCI clocks * @host: host to gate. * * Calls the host driver with ios.clock set to zero as often as possible * in order to gate off hardware MCI clocks. Decrease clock reference * count and schedule disabling of clock. */ -void mmc_host_clk_gate (struct mmc_host *host) +void mmc_host_clk_release (struct mmc_host *host) {unsigned long flags;
@@ -179,7 +179,7 @@ void mmc_host_clk_gate(struct mmc_host *host) host->clk_requests--;if (mmc_host_may_gate_card (host->card) && !host->clk_requests) -schedule_work (&host->clk_gate_work); +queue_work (system_nrt_wq, &host->clk_gate_work);spin_unlock_irqrestore (&host->clk_lock, flags); }
@@ -231,7 +231,7 @@ static inline void mmc_host_clk_exit(struct mmc_host *host)if (cancel_work_sync (&host->clk_gate_work))mmc_host_clk_gate_delayed (host);if (host->clk_gated) -mmc_host_clk_ungate (host); +mmc_host_clk_hold (host);/* There should be only one user now */ WARN_ON (host->clk_requests >1 ); }
drivers/mmc/core/host.h +4 -4
@@ -16,16 +16,16 @@ int mmc_register_host_class(void);void mmc_unregister_host_class (void );#ifdef CONFIG_MMC_CLKGATE -void mmc_host_clk_ungate (struct mmc_host *host); -void mmc_host_clk_gate (struct mmc_host *host); +void mmc_host_clk_hold (struct mmc_host *host); +void mmc_host_clk_release (struct mmc_host *host);unsigned int mmc_host_clk_rate (struct mmc_host *host);#else -static inline void mmc_host_clk_ungate (struct mmc_host *host) +static inline void mmc_host_clk_hold (struct mmc_host *host) { } -static inline void mmc_host_clk_gate (struct mmc_host *host) +static inline void mmc_host_clk_release (struct mmc_host *host) { }
drivers/mmc/host/sdhci-s3c.c +2 -0
@@ -301,6 +301,8 @@ static int sdhci_s3c_platform_8bit_width(struct sdhci_host *host, int width) ctrl &= ~SDHCI_CTRL_8BITBUS ;break ;default : + ctrl &= ~SDHCI_CTRL_4BITBUS ; + ctrl &= ~SDHCI_CTRL_8BITBUS ;break ; }
drivers/net/bnx2.c +7 -0
@@ -416,6 +416,9 @@ struct cnic_eth_dev *bnx2_cnic_probe(struct net_device *dev)struct bnx2 *bp =netdev_priv (dev);struct cnic_eth_dev *cp = &bp->cnic_eth_dev; +if (!cp->max_iscsi_conn) +return NULL ; + cp->drv_owner =THIS_MODULE ; cp->chip_id = bp->chip_id; cp->pdev = bp->pdev;
@@ -8177,6 +8180,10 @@ bnx2_init_board(struct pci_dev *pdev, struct net_device *dev) bp->timer.data = (unsigned long ) bp; bp->timer.function = bnx2_timer; +#ifdef BCM_CNIC + bp->cnic_eth_dev.max_iscsi_conn = +bnx2_reg_rd_ind (bp,BNX2_FW_MAX_ISCSI_CONN ); +#endif pci_save_state (pdev);return 0 ;
drivers/net/bnx2x/bnx2x_dcb.c +1 -0
@@ -1858,6 +1858,7 @@ static u8 bnx2x_dcbnl_get_cap(struct net_device *netdev, int capid, u8 *cap)break ;case DCB_CAP_ATTR_DCBX : *cap =BNX2X_DCBX_CAPS ; +break ;default : rval = -EINVAL ;break ;
drivers/net/bnx2x/bnx2x_main.c +4 -2
@@ -4138,7 +4138,7 @@ static void bnx2x_init_def_sb(struct bnx2x *bp)int igu_seg_id;int port =BP_PORT (bp);int func =BP_FUNC (bp); -int reg_offset; +int reg_offset, reg_offset_en5;u64 section;int index;struct hc_sp_status_block_data sp_sb_data;
@@ -4161,6 +4161,8 @@ static void bnx2x_init_def_sb(struct bnx2x *bp) reg_offset = (port ?MISC_REG_AEU_ENABLE1_FUNC_1_OUT_0 :MISC_REG_AEU_ENABLE1_FUNC_0_OUT_0 ); + reg_offset_en5 = (port ?MISC_REG_AEU_ENABLE5_FUNC_1_OUT_0 : +MISC_REG_AEU_ENABLE5_FUNC_0_OUT_0 );for (index =0 ; index <MAX_DYNAMIC_ATTN_GRPS ; index++) {int sindex;/* take care of sig[0]..sig[4] */
@@ -4175,7 +4177,7 @@ static void bnx2x_init_def_sb(struct bnx2x *bp)* and not 16 between the different groups */ bp->attn_group[index].sig[4 ] =REG_RD (bp, - reg_offset +0x10 +0x4 *index); + reg_offset_en5 +0x4 *index); else bp->attn_group[index].sig[4] = 0; }
drivers/net/bnx2x/bnx2x_reg.h +12 -0
@@ -1325,6 +1325,18 @@Latched ump_tx_parity; [31] MCP Latched scpad_parity; */ #define MISC_REG_AEU_ENABLE4_PXP_0 0xa108#define MISC_REG_AEU_ENABLE4_PXP_1 0xa1a8 +/* [RW 32] fifth 32b for enabling the output for function 0 output0. Mapped +* as follows: [0] PGLUE config_space; [1] PGLUE misc_flr; [2] PGLUE B RBC +* attention [3] PGLUE B RBC parity; [4] ATC attention; [5] ATC parity; [6] +* mstat0 attention; [7] mstat0 parity; [8] mstat1 attention; [9] mstat1 +* parity; [31-10] Reserved; */ +#define MISC_REG_AEU_ENABLE5_FUNC_0_OUT_0 0xa688 +/* [RW 32] Fifth 32b for enabling the output for function 1 output0. Mapped +* as follows: [0] PGLUE config_space; [1] PGLUE misc_flr; [2] PGLUE B RBC +* attention [3] PGLUE B RBC parity; [4] ATC attention; [5] ATC parity; [6] +* mstat0 attention; [7] mstat0 parity; [8] mstat1 attention; [9] mstat1 +* parity; [31-10] Reserved; */ +#define MISC_REG_AEU_ENABLE5_FUNC_1_OUT_0 0xa6b0/* [RW 1] set/clr general attention 0; this will set/clr bit 94 in the aeu 128 bit vector */ #define MISC_REG_AEU_GENERAL_ATTN_0 0xa000
drivers/net/cnic.c +28 -29
149 lines not on this page · raw message
drivers/net/cxgb3/cxgb3_offload.c +18 -5
@@ -1149,12 +1149,14 @@ static void cxgb_redirect(struct dst_entry *old, struct dst_entry *new)if (te && te->ctx && te->client && te->client->redirect) { update_tcb = te->client->redirect (te->ctx, old, new, e);if (update_tcb) { +rcu_read_lock ();l2t_hold (L2DATA (tdev), e); +rcu_read_unlock ();set_l2t_ix (tdev, tid, e); } } } -l2t_release (L2DATA (tdev), e); +l2t_release (tdev, e); }/*
@@ -1267,7 +1269,7 @@ int cxgb3_offload_activate(struct adapter *adapter) goto out_free; err = -ENOMEM ; -L2DATA (dev) =t3_init_l2t (l2t_capacity); +RCU_INIT_POINTER (dev->l2opt,t3_init_l2t (l2t_capacity));if (!L2DATA (dev)) goto out_free;
@@ -1301,16 +1303,24 @@ int cxgb3_offload_activate(struct adapter *adapter) out_free_l2t:t3_free_l2t (L2DATA (dev)); -L2DATA (dev) =NULL ; +rcu_assign_pointer (dev->l2opt,NULL ); out_free:kfree (t);return err; } +static void clean_l2_data (struct rcu_head *head) +{ + struct l2t_data *d = container_of(head, struct l2t_data, rcu_head); +t3_free_l2t (d); +} + +void cxgb3_offload_deactivate (struct adapter *adapter) {struct t3cdev *tdev = &adapter->tdev;struct t3c_data *t =T3C_DATA (tdev); +struct l2t_data *d;remove_adapter (adapter);
Lines of this file are not shown. View the raw message.
drivers/net/sfc/mcdi.c +17 -29
46 lines not on this page · raw message
drivers/net/usb/cdc_ncm.c +56 -100
156 lines not on this page · raw message
drivers/net/wireless/ath/ath9k/ar9002_calib.c +2 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/ath/ath9k/ar9003_2p2_initvals.h +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/ath/ath9k/ar9003_eeprom.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/ath/carl9170/main.c +3 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/iwlegacy/iwl-3945-rs.c +8 -5
Lines of this file are not shown. View the raw message.
drivers/net/wireless/iwlegacy/iwl-core.c +2 -2
Lines of this file are not shown. View the raw message.
drivers/net/wireless/iwlegacy/iwl-hcmd.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/iwlegacy/iwl3945-base.c +4 -4
Lines of this file are not shown. View the raw message.
drivers/net/wireless/iwlegacy/iwl4965-base.c +5 -5
Lines of this file are not shown. View the raw message.
drivers/net/wireless/iwlwifi/iwl-scan.c +16 -14
Lines of this file are not shown. View the raw message.
drivers/net/wireless/rt2x00/rt2800lib.c +39 -25
64 lines not on this page · raw message
drivers/net/wireless/rt2x00/rt2800usb.c +3 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/rt2x00/rt2x00usb.c +1 -13
Lines of this file are not shown. View the raw message.
drivers/net/wireless/rtlwifi/rtl8192cu/trx.c +6 -5
Lines of this file are not shown. View the raw message.
drivers/scsi/hpsa.c +37 -20
57 lines not on this page · raw message
drivers/scsi/isci/unsolicited_frame_control.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/scsi/isci/unsolicited_frame_control.h +1 -1
Lines of this file are not shown. View the raw message.
drivers/scsi/iscsi_tcp.c +41 -20
61 lines not on this page · raw message
drivers/scsi/lpfc/lpfc_attr.c +72 -75
147 lines not on this page · raw message
drivers/scsi/lpfc/lpfc_bsg.c +29 -23
52 lines not on this page · raw message
drivers/scsi/lpfc/lpfc_els.c +64 -39
103 lines not on this page · raw message
drivers/scsi/lpfc/lpfc_init.c +65 -17
82 lines not on this page · raw message
drivers/scsi/lpfc/lpfc_scsi.c +30 -67
97 lines not on this page · raw message
drivers/scsi/lpfc/lpfc_sli.c +67 -39
106 lines not on this page · raw message
drivers/usb/host/xhci-ring.c +63 -27
90 lines not on this page · raw message
drivers/usb/serial/option.c +101 -3
104 lines not on this page · raw message
fs/9p/v9fs.c +35 -10
45 lines not on this page · raw message
fs/9p/vfs_inode.c +120 -57
177 lines not on this page · raw message
fs/9p/vfs_inode_dotl.c +135 -27
162 lines not on this page · raw message
fs/proc/task_mmu.c +55 -25
80 lines not on this page · raw message
ipc/mqueue.c +64 -61
125 lines not on this page · raw message
kernel/sched.c +26 -15
41 lines not on this page · raw message
mm/page_alloc.c +45 -13
58 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.
There's an error in 3.0.5:
# LANG=C make all
CHK include/linux/version.h CHK include/generated/utsrelease.h CALL scripts/checksyscalls.sh CHK include/generated/compile.h CC drivers/gpu/drm/radeon/r100.o
drivers/gpu/drm/radeon/r100.c: In function 'r100_copy_blit':drivers/gpu/drm/radeon/r100.c:776:27: error: 'num_pages' undeclared (first use in this function) drivers/gpu/drm/radeon/r100.c:776:27: note: each undeclared identifier is reported only once for each function it appears in make[4]: *** [drivers/gpu/drm/radeon/r100.o] Error 1 make[3]: *** [drivers/gpu/drm/radeon] Error 2
make[2]: *** [drivers/gpu/drm] Error 2
make[1]: *** [drivers/gpu] Error 2
make: *** [drivers] Error 2
3.0.4 compiles just fine with the same config file.
Regards,
Sven Köhler
Quoted 18 lines · Sven Köhler
There's an error in 3.0.5:
# LANG=C make all
CHKinclude/linux/version.h
CHKinclude/generated/utsrelease.h
CALL scripts/checksyscalls.sh
CHKinclude/generated/compile.h
CC drivers/gpu/drm/radeon/r100.odrivers/gpu/drm/radeon/r100.c: In function 'r100_copy_blit':drivers/gpu/drm/radeon/r100.c:776:27: error: 'num_pages' undeclared (first use in this function)drivers/gpu/drm/radeon/r100.c:776:27: note: each undeclared identifier is reported only once for each function it appears in make[4]: *** [drivers/gpu/drm/radeon/r100.o] Error 1 make[3]: *** [drivers/gpu/drm/radeon] Error 2
make[2]: *** [drivers/gpu/drm] Error 2
make[1]: *** [drivers/gpu] Error 2
make: *** [drivers] Error 2
Greg released 3.0.6 almost immediately after 3.0.5 to fix this issue.
josh