10 years agoMerge branch 'misc' into devel
Russell King [Sat, 31 Jul 2010 13:20:02 +0000 (14:20 +0100)]
Merge branch 'misc' into devel


10 years agoMerge branches 'at91', 'ep93xx', 'kexec', 'iop', 'lmb', 'nomadik', 'nuc', 'pl', ...
Russell King [Sat, 31 Jul 2010 13:19:35 +0000 (14:19 +0100)]
Merge branches 'at91', 'ep93xx', 'kexec', 'iop', 'lmb', 'nomadik', 'nuc', 'pl', 'spear' and 'versatile' into devel

10 years agoMerge branch 'shmobile' into devel
Russell King [Sat, 31 Jul 2010 13:19:22 +0000 (14:19 +0100)]
Merge branch 'shmobile' into devel

10 years agoARM: AMBA: Add pclk support to AMBA bus infrastructure
Russell King [Thu, 15 Jul 2010 09:47:14 +0000 (10:47 +0100)]
ARM: AMBA: Add pclk support to AMBA bus infrastructure

Some platforms gate the pclk (APB - the bus - clock) to the peripherals
for power saving, along with the functional clock.  When devices are
accessed without pclk enabled, the kernel will oops.

This gives them two options:

1. Leave all clocks on all the time.
2. Attempt to gate pclk along with the functional clock.

(With some hardware, pclk and the functional clock are gated by a single
bit in a register.)

(1) has the disadvantage that it causes increased power usage, which is
bad news for battery operated devices.  (2) can lead to kernel oops if
registers are accessed without the functional clock being enabled.

So, introduce the apb_pclk signal in such a way existing drivers don't
need to be updated.  Essentially, this means we guarantee that:

1. pclk will be enabled whenever the driver is bound to a device -
   from probe() to remove() time.
2. pclk will also be enabled when reading the primecell IDs from the device.

In order to allow drivers to be incrementally updated to achieve greater
power savings, we provide two additional calls to allow drivers to
manage the pclk - amba_pclk_enable()/amba_pclk_disable().

Signed-off-by: Russell King <>
10 years agoARM: 6278/2: fix regression in RealView after the introduction of pclk
Linus Walleij [Fri, 30 Jul 2010 15:36:25 +0000 (16:36 +0100)]
ARM: 6278/2: fix regression in RealView after the introduction of pclk

The patch to add the apb_pclk to the AMBA/PrimeCell bus broke
RealView, since the clockdevice is not registered at probe() time.
This moves clock initialization to a core_initcall()

[rmk:moved before the problematical commit to avoid bisect problems]

Signed-off-by: Linus Walleij <>
Signed-off-by: Russell King <>
10 years agoARM: 6277/1: mach-shmobile: Allow users to select HZ, default to 128
Magnus Damm [Thu, 29 Jul 2010 13:03:04 +0000 (14:03 +0100)]
ARM: 6277/1: mach-shmobile: Allow users to select HZ, default to 128

Introduce SHMOBILE_TIMER_HZ for SH-Mobile.

Allow users to select HZ on their system to
minimize potential timer drift. Use 128 Hz as
default to work well with the 32768 Hz RCLK.

Signed-off-by: Magnus Damm <>
Signed-off-by: Russell King <>
10 years agoARM: 6276/1: mach-shmobile: remove duplicate NR_IRQS_LEGACY
Magnus Damm [Thu, 29 Jul 2010 12:09:36 +0000 (13:09 +0100)]
ARM: 6276/1: mach-shmobile: remove duplicate NR_IRQS_LEGACY

NR_IRQS_LEGACY is now defined in asm/irq.h,
so drop it in mach/irqs.h.

Signed-off-by: Magnus Damm <>
Signed-off-by: Russell King <>
10 years agoARM: 6246/1: mmci: support larger MMCIDATALENGTH register
Rabin Vincent [Wed, 21 Jul 2010 11:55:59 +0000 (12:55 +0100)]
ARM: 6246/1: mmci: support larger MMCIDATALENGTH register

The Ux500 variant has a 24-bit MMCIDATALENGTH register, as opposed to
the 16-bit one on the ARM version.

Acked-by: Linus Walleij <>
Signed-off-by: Rabin Vincent <>
Signed-off-by: Russell King <>
10 years agoARM: 6245/1: mmci: enable hardware flow control on Ux500 variants
Rabin Vincent [Wed, 21 Jul 2010 11:55:18 +0000 (12:55 +0100)]
ARM: 6245/1: mmci: enable hardware flow control on Ux500 variants

Although both the U300 and Ux500 use ST variants, the HWFCEN bits are at
different positions, so use the variant_data to store the information.

Acked-by: Linus Walleij <>
Signed-off-by: Rabin Vincent <>
Signed-off-by: Russell King <>
10 years agoARM: 6244/1: mmci: add variant data and default MCICLOCK support
Rabin Vincent [Wed, 21 Jul 2010 11:54:40 +0000 (12:54 +0100)]
ARM: 6244/1: mmci: add variant data and default MCICLOCK support

Add a variant_data structure to handle the differences between the
various variants of this peripheral.  Add a first quirk for a default
MCICLOCK value, required on the Ux500 variant where the enable bit needs
to be always set, since it controls access to some registers.

Acked-by: Linus Walleij <>
Signed-off-by: Rabin Vincent <>
Signed-off-by: Russell King <>
10 years agoARM: 6243/1: mmci: pass power_mode to the translate_vdd callback
Rabin Vincent [Wed, 21 Jul 2010 11:53:57 +0000 (12:53 +0100)]
ARM: 6243/1: mmci: pass power_mode to the translate_vdd callback

Platforms may have some external power control which need to be
controlled from board specific code.  Rename the translate_vdd()
callback to vdd_handler() and pass it the power mode.

Acked-by: Linus Walleij <>
Signed-off-by: Rabin Vincent <>
Signed-off-by: Russell King <>
10 years agoARM: 6274/1: add global control registers definition header file for nuc900
wanzongshun [Thu, 29 Jul 2010 02:25:19 +0000 (03:25 +0100)]
ARM: 6274/1: add global control registers definition header file for nuc900

add global control registers definition header file for nuc900

Signed-off-by: Wan ZongShun <>
Signed-off-by: Russell King <>
10 years agoMerge branch 'for_linus' of git://
Linus Torvalds [Thu, 29 Jul 2010 03:01:26 +0000 (20:01 -0700)]
Merge branch 'for_linus' of git://git./linux/kernel/git/jwessel/linux-2.6-kgdb

* 'for_linus' of git://
  x86,kgdb: Fix hw breakpoint regression

10 years agoMerge git://
Linus Torvalds [Thu, 29 Jul 2010 03:00:42 +0000 (20:00 -0700)]
Merge git://git./linux/kernel/git/jejb/scsi-rc-fixes-2.6

* git://
  [SCSI] ibmvscsi: Fix oops when an interrupt is pending during probe
  [SCSI] zfcp: Update status read mempool
  [SCSI] zfcp: Do not wait for SBALs on stopped queue
  [SCSI] zfcp: Fix check whether unchained ct_els is possible
  [SCSI] ipr: fix resource path display and formatting

10 years agoMerge branch 'for-linus' of git://
Linus Torvalds [Thu, 29 Jul 2010 02:59:55 +0000 (19:59 -0700)]
Merge branch 'for-linus' of git://git./linux/kernel/git/lrg/voltage-2.6

* 'for-linus' of git://
  davinci: da850/omap-l138 evm: account for DEFDCDC{2,3} being tied high
  regulator: tps6507x: allow driver to use DEFDCDC{2,3}_HIGH register
  wm8350-regulator: fix wm8350_register_regulator error handling
  ab3100: fix off-by-one value range checking for voltage selector

10 years agoecryptfs: Bugfix for error related to ecryptfs_hash_buckets
Andre Osterhues [Tue, 13 Jul 2010 20:59:17 +0000 (15:59 -0500)]
ecryptfs: Bugfix for error related to ecryptfs_hash_buckets

The function ecryptfs_uid_hash wrongly assumes that the
second parameter to hash_long() is the number of hash
buckets instead of the number of hash bits.
This patch fixes that and renames the variable
ecryptfs_hash_buckets to ecryptfs_hash_bits to make it

Fixes: CVE-2010-2492
Signed-off-by: Andre Osterhues <>
Signed-off-by: Tyler Hicks <>
Signed-off-by: Linus Torvalds <>
10 years agox86,kgdb: Fix hw breakpoint regression
Jason Wessel [Thu, 29 Jul 2010 00:10:30 +0000 (19:10 -0500)]
x86,kgdb: Fix hw breakpoint regression

HW breakpoints events stopped working correctly with kgdb
as a result of commit: 018cbffe6819f6f8db20a0a3acd9bab9bfd667e4
(Merge commit 'v2.6.33' into perf/core).

The regression occurred because the behavior changed for setting
NOTIFY_STOP as the return value to the die notifier if the breakpoint
was known to the HW breakpoint API.  Because kgdb is using the HW
breakpoint API to register HW breakpoints slots, it must also now
implement the overflow_handler call back else kgdb does not get to see
the events from the die notifier.

The kgdb_ll_trap function will be changed to be general purpose code
which can allow an easy way to implement the hw_breakpoint API
overflow call back.

Signed-off-by: Jason Wessel <>
Acked-by: Dongdong Deng <>
Acked-by: Frederic Weisbecker <>
10 years agoMerge branch 'for-linus' of git://
Linus Torvalds [Wed, 28 Jul 2010 18:10:53 +0000 (11:10 -0700)]
Merge branch 'for-linus' of git://git./linux/kernel/git/sage/ceph-client

* 'for-linus' of git://
  ceph: use complete_all and wake_up_all
  ceph: Correct obvious typo of Kconfig variable "CRYPTO_AES"
  ceph: fix dentry lease release
  ceph: fix leak of dentry in ceph_init_dentry() error path
  ceph: fix pg_mapping leak on pg_temp updates
  ceph: fix d_release dop for snapdir, snapped dentries
  ceph: avoid dcache readdir for snapdir

10 years agoGFS2: Use kmalloc when possible for ->readdir()
Steven Whitehouse [Wed, 28 Jul 2010 16:56:23 +0000 (17:56 +0100)]
GFS2: Use kmalloc when possible for ->readdir()

If we don't need a huge amount of memory in ->readdir() then
we can use kmalloc rather than vmalloc to allocate it. This
should cut down on the greater overheads associated with
vmalloc for smaller directories.

We may be able to eliminate vmalloc entirely at some stage,
but this is easy to do right away.

Also using GFP_NOFS to avoid any issues wrt to deleting inodes
while under a glock, and suggestion from Linus to factor out
the alloc/dealloc.

I've given this a test with a variety of different sized
directories and it seems to work ok.

Cc: Andrew Morton <>
Cc: Nick Piggin <>
Cc: Prarit Bhargava <>
Signed-off-by: Steven Whitehouse <>
Signed-off-by: Linus Torvalds <>
10 years agodavinci: da850/omap-l138 evm: account for DEFDCDC{2,3} being tied high
Sekhar Nori [Mon, 12 Jul 2010 12:26:21 +0000 (17:56 +0530)]
davinci: da850/omap-l138 evm: account for DEFDCDC{2,3} being tied high

Per the da850/omap-l138 Beta EVM SOM schematic, the DEFDCDC2 and
DEFDCDC3 lines are tied high. This leads to a 3.3V IO and 1.2V CVDD

Pass the right platform data to the TPS6507x driver so it can operate
on the DEFDCDC{2,3}_HIGH register to read and change voltage levels.

Signed-off-by: Sekhar Nori <>
Acked-by: Mark Brown <>
Signed-off-by: Liam Girdwood <>
10 years agoregulator: tps6507x: allow driver to use DEFDCDC{2,3}_HIGH register
Anuj Aggarwal [Mon, 12 Jul 2010 12:24:06 +0000 (17:54 +0530)]
regulator: tps6507x: allow driver to use DEFDCDC{2,3}_HIGH register

Acked-by: Mark Brown <>
In TPS6507x, depending on the status of DEFDCDC{2,3} pin either
DEFDCDC{2,3}_LOW or DEFDCDC{2,3}_HIGH register needs to be read or
programmed to change the output voltage.

The current driver assumes DEFDCDC{2,3} pins are always tied low
and thus operates only on DEFDCDC{2,3}_LOW register. This need
not always be the case (as is found on OMAP-L138 EVM).

Unfortunately, software cannot read the status of DEFDCDC{2,3} pins.
So, this information is passed through platform data depending on
how the board is wired.

Signed-off-by: Anuj Aggarwal <>
Signed-off-by: Sekhar Nori <>
Signed-off-by: Liam Girdwood <>
10 years agoMerge branch 'for-linus' of git://
Linus Torvalds [Tue, 27 Jul 2010 21:32:59 +0000 (14:32 -0700)]
Merge branch 'for-linus' of git://git./linux/kernel/git/ericvh/v9fs

* 'for-linus' of git://
  9p: Pass the correct end of buffer to p9stat_read

10 years agogpio: fix spurious printk when freeing a gpio
Jon Povey [Tue, 27 Jul 2010 20:18:06 +0000 (13:18 -0700)]
gpio: fix spurious printk when freeing a gpio

When freeing a gpio that has not been exported, gpio_unexport() prints a
debug message when it should just fall through silently.

Example spurious message:

gpio_unexport: gpio0 status -22

Signed-off-by: Jon Povey <>
Cc: David Brownell <>
Acked-by: Uwe Kleine-K?nig <>
Cc: Gregory Bean <>
Signed-off-by: Andrew Morton <>
Signed-off-by: Linus Torvalds <>
10 years agoedac: mpc85xx: fix coldplug/hotplug module autoloading
Anton Vorontsov [Tue, 27 Jul 2010 20:18:05 +0000 (13:18 -0700)]
edac: mpc85xx: fix coldplug/hotplug module autoloading

The MPC85xx EDAC driver is missing module device aliases, so the driver
won't load automatically on boot.  This patch fixes the issue by adding
proper MODULE_DEVICE_TABLE() macros.

Signed-off-by: Anton Vorontsov <>
Cc: Doug Thompson <>
Cc: Peter Tyser <>
Cc: Dave Jiang <>
Cc: Kumar Gala <>
Signed-off-by: Andrew Morton <>
Signed-off-by: Linus Torvalds <>
10 years agodrivers/rtc/rtc-rx8581.c: fix setdatetime
Rudolf Marek [Tue, 27 Jul 2010 20:18:02 +0000 (13:18 -0700)]
drivers/rtc/rtc-rx8581.c: fix setdatetime

Fix the logic while writing new date/time to the chip.  The driver
incorrectly wrote back register values to different registers and even
with wrong mask.  The patch adds clearing of the VLF register, which
should be cleared if all date/time values are set.

Signed-off-by: Rudolf Marek <>
Acked-by: Wan ZongShun <>
Cc: Martyn Welch <>
Cc: Alessandro Zummo <>
Signed-off-by: Andrew Morton <>
Signed-off-by: Linus Torvalds <>
10 years agodynamic debug: move ddebug_remove_module() down into free_module()
Jason Baron [Tue, 27 Jul 2010 20:18:01 +0000 (13:18 -0700)]
dynamic debug: move ddebug_remove_module() down into free_module()

The command

echo "file ec.c +p" >/sys/kernel/debug/dynamic_debug/control

causes an oops.

Move the call to ddebug_remove_module() down into free_module().  In this
way it should be called from all error paths.  Currently, we are missing
the remove if the module init routine fails.

Signed-off-by: Jason Baron <>
Reported-by: Thomas Renninger <>
Tested-by: Thomas Renninger <>
Cc: <> [2.6.32+]
Signed-off-by: Andrew Morton <>
Signed-off-by: Linus Torvalds <>
10 years agoceph: use complete_all and wake_up_all
Yehuda Sadeh [Tue, 27 Jul 2010 20:11:08 +0000 (13:11 -0700)]
ceph: use complete_all and wake_up_all

This fixes an issue triggered by running concurrent syncs. One of the syncs
would go through while the other would just hang indefinitely. In any case, we
never actually want to wake a single waiter, so the *_all functions should
be used.

Signed-off-by: Yehuda Sadeh <>
Signed-off-by: Sage Weil <>
10 years ago9p: Pass the correct end of buffer to p9stat_read
Latchesar Ionkov [Mon, 19 Jul 2010 20:40:03 +0000 (15:40 -0500)]
9p: Pass the correct end of buffer to p9stat_read

Pass the correct end of the buffer to p9stat_read.

Signed-off-by: Latchesar Ionkov <>
Signed-off-by: Eric Van Hensbergen <>
10 years ago[SCSI] ibmvscsi: Fix oops when an interrupt is pending during probe
Anton Blanchard [Tue, 13 Jul 2010 04:59:29 +0000 (14:59 +1000)]
[SCSI] ibmvscsi: Fix oops when an interrupt is pending during probe

A driver needs to be ready to take an interrupt as soon as it registers
an interrupt handler. I noticed the following oops when testing kdump:

ipr: IBM Power RAID SCSI Device Driver version: 2.5.0 (February 11, 2010)
ibmvscsi 30000002: SRP_VERSION: 16.a
ibmvscsi 30000002: SRP_VERSION: 16.a
Unable to handle kernel paging request for data at address 0x00000000
pc: c000000004085e34: .tasklet_action+0xf4/0x1dc
c000000004086fe4 .__do_softirq+0x16c/0x2c0
c00000000403138c .call_do_softirq+0x14/0x24
c00000000400ee14 .do_softirq+0xa0/0x104
c00000000408690c .irq_exit+0x70/0xd0
c00000000400f190 .do_IRQ+0x214/0x2a8
c000000004004804 hardware_interrupt_entry+0x1c/0x98
--- Exception: 501 (Hardware Interrupt) at c00000000400c544 .raw_local_irq_restore+0x48/0x54
c00000000465d2a8 ._raw_spin_unlock_irqrestore+0x74/0xa0
c0000000040e7f00 .__setup_irq+0x2ec/0x3f0
c0000000040e8198 .request_threaded_irq+0x194/0x22c
c00000000446d854 .rpavscsi_init_crq_queue+0x284/0x3f0
c00000000446c764 .ibmvscsi_probe+0x688/0x710
c00000000402903c .vio_bus_probe+0x37c/0x3e4
c000000004403f10 .driver_probe_device+0xec/0x1b8
c000000004404088 .__driver_attach+0xac/0xf4
c000000004403184 .bus_for_each_dev+0x98/0x104
c000000004403c98 .driver_attach+0x40/0x60
c0000000044026f0 .bus_add_driver+0x154/0x324
c0000000044045d0 .driver_register+0xe8/0x1ac
c00000000402b2a8 .vio_register_driver+0x54/0x74
c000000004933ea4 .ibmvscsi_module_init+0x80/0xc0
c000000004009834 .do_one_initcall+0x98/0x1d8
c0000000049005b4 .kernel_init+0x27c/0x33c
c000000004031550 .kernel_thread+0x54/0x70

srp_task needs to be setup before request_irq. The patch below fixes the oops.

Signed-off-by: Anton Blanchard <>
Acked-by: Brian King <>
Signed-off-by: James Bottomley <>
10 years agoMerge branch 'urgent' of git://
Linus Torvalds [Tue, 27 Jul 2010 16:23:39 +0000 (09:23 -0700)]
Merge branch 'urgent' of git://git./linux/kernel/git/paulus/perf

* 'urgent' of git://
  perf, powerpc: Use perf_sample_data_init() for the FSL code

10 years agoMerge git://
Linus Torvalds [Tue, 27 Jul 2010 16:22:55 +0000 (09:22 -0700)]
Merge git://

* git://
  ds2782_battery: Rename get_current to fix build failure / name conflict

10 years agoMerge git://
Linus Torvalds [Tue, 27 Jul 2010 16:21:00 +0000 (09:21 -0700)]
Merge git://git./linux/kernel/git/davem/net-2.6

* git://
  s2io: fixing DBG_PRINT() macro
  ath9k: fix dma direction for map/unmap in ath_rx_tasklet
  net: dev_forward_skb should call nf_reset
  net sched: fix race in mirred device removal
  tun: avoid BUG, dump packet on GSO errors
  bonding: set device in RLB ARP packet handler
  wimax/i2400m: Add PID & VID for Intel WiMAX 6250
  ipv6: Don't add routes to ipv6 disabled interfaces.
  net: Fix skb_copy_expand() handling of ->csum_start
  net: Fix corruption of skb csum field in pskb_expand_head() of net/core/skbuff.c
  macvtap: Limit packet queue length
  ixgbe/igb: catch invalid VF settings
  bnx2x: Advance a module version
  bnx2x: Protect statistics ramrod and sequence number
  bnx2x: Protect a SM state change
  wireless: use netif_rx_ni in ieee80211_send_layer2_update

10 years agoperf, powerpc: Use perf_sample_data_init() for the FSL code
Peter Zijlstra [Fri, 9 Jul 2010 08:21:21 +0000 (10:21 +0200)]
perf, powerpc: Use perf_sample_data_init() for the FSL code

We should use perf_sample_data_init() to initialize struct
perf_sample_data.  As explained in the description of commit dc1d628a
("perf: Provide generic perf_sample_data initialization"), it is
possible for userspace to get the kernel to dereference data.raw,
so if it is not initialized, that means that unprivileged userspace
can possibly oops the kernel.  Using perf_sample_data_init makes sure
it gets initialized to NULL.

This conversion should have been included in commit dc1d628a, but it
got missed.

Signed-off-by: Peter Zijlstra <>
Acked-by: Kumar Gala <>
Signed-off-by: Paul Mackerras <>
10 years agowm8350-regulator: fix wm8350_register_regulator error handling
Axel Lin [Mon, 26 Jul 2010 02:41:58 +0000 (10:41 +0800)]
wm8350-regulator: fix wm8350_register_regulator error handling

In the case of platform_device_add() fail, we should call
platform_device_put() instead of platform_device_del()

Signed-off-by: Axel Lin <>
Acked-by: Mark Brown <>
Signed-off-by: Liam Girdwood <>
10 years agoab3100: fix off-by-one value range checking for voltage selector
Axel Lin [Mon, 26 Jul 2010 07:34:14 +0000 (15:34 +0800)]
ab3100: fix off-by-one value range checking for voltage selector

We use voltage selector as an array index for typ_voltages.
Thus the valid range for voltage selector should be 0..voltages_len-1.

Signed-off-by: Axel Lin <>
Acked-by: Mark Brown <>
Acked-by: Linus Walleij <>
Signed-off-by: Liam Girdwood <>
10 years agoARM: 6239/1: mmci: let core poll for card detection
Rabin Vincent [Wed, 21 Jul 2010 11:50:31 +0000 (12:50 +0100)]
ARM: 6239/1: mmci: let core poll for card detection

Use the MMC core's ability to poll for card detection.  This also has
the advantage of doing the gpio_get_value from a workqueue instead of
timer, allowing the gpio to be on a sleeping gpiochip.

Acked-by: Linus Walleij <>
Signed-off-by: Rabin Vincent <>
Signed-off-by: Russell King <>
10 years agoARM: 6238/1: mmci: fix multi block transfers
Rabin Vincent [Wed, 21 Jul 2010 11:49:49 +0000 (12:49 +0100)]
ARM: 6238/1: mmci: fix multi block transfers

Fix the data transfer size to allow multi block transfers to work.

Acked-by: Linus Walleij <>
Signed-off-by: Rabin Vincent <>
Signed-off-by: Russell King <>
10 years agoARM: 6237/1: mmci: use sg_miter API to fix multi-page sg handling
Rabin Vincent [Wed, 21 Jul 2010 11:44:58 +0000 (12:44 +0100)]
ARM: 6237/1: mmci: use sg_miter API to fix multi-page sg handling

The mmci driver's SG list iteration logic assumes that each SG entry
spans only one page, and only maps and flushes one page of the sg.  This
is not a valid assumption.  Fix it by converting the driver to the
sg_miter API, which correctly handles sgs which span multiple pages.

Acked-by: Linus Walleij <>
Signed-off-by: Rabin Vincent <>
Signed-off-by: Russell King <>
10 years agoARM: Fix section build warnings for AMBA drivers
Russell King [Tue, 27 Jul 2010 07:50:16 +0000 (08:50 +0100)]
ARM: Fix section build warnings for AMBA drivers

Found in the Versatile build:

WARNING: drivers/built-in.o(.data+0x14c): Section mismatch in reference from the variable pl061_gpio_driver to the (unknown reference)
The variable pl061_gpio_driver references
the (unknown reference) __initdata (unknown)

WARNING: drivers/built-in.o(.data+0x40f8): Section mismatch in reference from the variable pl011_driver to the (unknown reference)
The variable pl011_driver references
the (unknown reference) __initdata (unknown)

WARNING: drivers/built-in.o(.data+0x5ab4): Section mismatch in reference from the variable pl031_driver to the (unknown reference)
The variable pl031_driver references
the (unknown reference) __initdata (unknown)

Basically, amba_id structures must not be __initdata.  Also fix:

WARNING: drivers/built-in.o(.data+0x138): Section mismatch in reference from the variable pl061_gpio_driver to the function .init.text:pl061_probe()
The variable pl061_gpio_driver references
the function __init pl061_probe()

which is an incorrectly annotated probe function.  Fix it to reflect
the other AMBA bus probe functions by removing the __init attributation.

Signed-off-by: Russell King <>
10 years agoARM: call machine_shutdown() from machine_halt(), etc
Russell King [Mon, 26 Jul 2010 12:31:27 +0000 (13:31 +0100)]
ARM: call machine_shutdown() from machine_halt(), etc

x86 calls machine_shutdown() from the various machine_*() calls which
take the machine down ready for halting, restarting, etc, and uses
this to bring the system safely to a point where those actions can be
performed.  Such actions are stopping the secondary CPUs.

So, change the ARM implementation of these to reflect what x86 does.

This solves kexec problems on ARM SMP platforms, where the secondary
CPUs were left running across the kexec call.

Signed-off-by: Russell King <>
10 years agoARM: SMP: Always enable clock event broadcast support
Russell King [Mon, 26 Jul 2010 12:19:43 +0000 (13:19 +0100)]
ARM: SMP: Always enable clock event broadcast support

The TWD local timers are unable to wake up the CPU when it is placed
into a low power mode, eg. C3.  Therefore, we need to adapt things
such that the TWD code can cope with this.

We do this by always providing a broadcast tick function, and marking
the fact that the TWD local timer will stop in low power modes.  This
means that when the CPU is placed into a low power mode, the core
timer code marks this fact, and allows an IPI to be given to the core.

Tested-by: Santosh Shilimkar <>
Signed-off-by: Russell King <>
Cc: Catalin Marinas <>
Cc: Thomas Gleixner <>
10 years agoARM: Factor out common code from cpu_proc_fin()
Russell King [Mon, 26 Jul 2010 11:22:12 +0000 (12:22 +0100)]
ARM: Factor out common code from cpu_proc_fin()

All implementations of cpu_proc_fin() start by disabling interrupts
and then flush caches.  Rather than have every processors proc_fin()
implementation do this, move it out into generic code - and move the
cache flush past setup_mm_for_reboot() (so it can benefit from having
caches still enabled.)

This allows cpu_proc_fin() to become independent of the L1/L2 cache
types, and eventually move the L2 cache flushing into the L2 support

Signed-off-by: Russell King <>
10 years agoARM: 6268/1: ARMv6K and ARMv7 use fault statuses 3 and 6 as Access Flag fault
Kirill A. Shutemov [Mon, 26 Jul 2010 10:20:41 +0000 (11:20 +0100)]
ARM: 6268/1: ARMv6K and ARMv7 use fault statuses 3 and 6 as Access Flag fault

Statuses 3 (0b00011) and 6 (0x00110) of DFSR are Access Flags faults on
ARMv6K and ARMv7. Let's patch fsr_info[] at runtime if we are on ARMv7
or later.

Unfortunately, we don't have runtime check for 'K' extension, so we
can't check for it.

Signed-off-by: Kirill A. Shutemov <>
Signed-off-by: Russell King <>
10 years agoARM: 6256/1: Check arch version and modify fsr_info[] depends on it at runtime
Kirill A. Shutemov [Thu, 22 Jul 2010 12:23:25 +0000 (13:23 +0100)]
ARM: 6256/1: Check arch version and modify fsr_info[] depends on it at runtime

Signed-off-by: Kirill A. Shutemov <>
Signed-off-by: Russell King <>
10 years agoARM: 6255/1: Workaround infinity loop in handling of translation faults
Kirill A. Shutemov [Thu, 22 Jul 2010 12:20:22 +0000 (13:20 +0100)]
ARM: 6255/1: Workaround infinity loop in handling of translation faults

On ARM one Linux PGD entry contains two hardware entries (see page
tables layout in pgtable.h). We normally guarantee that we always
fill both L1 entries. But create_mapping() doesn't follow the rule.
It can create inidividual L1 entries, so here we have to call
pmd_none() check in do_translation_fault() for the entry really
corresponded to address, not for the first of pair.

Signed-off-by: Kirill A. Shutemov <>
Signed-off-by: Russell King <>
10 years agoARM: 6269/1: Add 'code' parameter for hook_fault_code()
Kirill A. Shutemov [Thu, 22 Jul 2010 12:18:19 +0000 (13:18 +0100)]
ARM: 6269/1: Add 'code' parameter for hook_fault_code()

Add one more parameter to hook_fault_code() to be able to set 'code'
field of struct fsr_info.

Signed-off-by: Kirill A. Shutemov <>
Signed-off-by: Russell King <>
10 years agoARM: 6252/1: Use SIGBUS for unaligned access instead of SIGILL
Kirill A. Shutemov [Thu, 22 Jul 2010 12:16:49 +0000 (13:16 +0100)]
ARM: 6252/1: Use SIGBUS for unaligned access instead of SIGILL

POSIX specify to use signal SIGBUS with code BUS_ADRALN for invalid
address alignment.

Signed-off-by: Kirill A. Shutemov <>
Signed-off-by: Russell King <>
10 years agoARM: 6251/1: Make SPARSE_IRQ a hidden option
eric miao [Thu, 22 Jul 2010 08:55:53 +0000 (09:55 +0100)]
ARM: 6251/1: Make SPARSE_IRQ a hidden option

SPARSE_IRQ doesn't need to be a visible option, only those platforms
supporting that will select it.

Signed-off-by: Eric Miao <>
Signed-off-by: Russell King <>
10 years agoARM: DMA coherent allocator: align remapped addresses
Russell King [Sun, 25 Jul 2010 07:57:02 +0000 (08:57 +0100)]
ARM: DMA coherent allocator: align remapped addresses

The DMA coherent remap area is used to provide an uncached mapping
of memory for coherency with DMA engines.  Currently, we look for
any free hole which our allocation will fit in with page alignment.

However, this can lead to fragmentation of the area, and allows small
allocations to cross L1 entry boundaries.  This is undesirable as we
want to move towards allocating sections of memory.

Align allocations according to the size, limiting the alignment between
the page and section sizes.

Signed-off-by: Russell King <>
10 years agoARM: use generic ioremap_page_range()
Russell King [Mon, 26 Jul 2010 09:29:13 +0000 (10:29 +0100)]
ARM: use generic ioremap_page_range()

We don't need our own implementation of this, use the generic
library implementation instead.

Signed-off-by: Russell King <>
10 years agoARM: 6158/2: PL011 baudrate extension for ST-Ericssons derivative
Linus Walleij [Wed, 2 Jun 2010 19:40:22 +0000 (20:40 +0100)]
ARM: 6158/2: PL011 baudrate extension for ST-Ericssons derivative

Implementation of the ST-Ericsson baudrate extension in the PL011
block. In this modified variant it is possible to change the
sampling factor from 16 to 8, and thanks to this we can get higher
baudrates while still using the same peripheral clock.

Also replace the simple division to determine the baud divisor
with DIV_ROUND_CLOSEST() rather than a simple integer division.

Cc: Alessandro Rubini <>
Cc: Jerzy Kasenberg <>
Signed-off-by: Marcin Mielczarczyk <>
Signed-off-by: Linus Walleij <>
Signed-off-by: Russell King <>
10 years agoARM: 6157/2: PL011 TX/RX split of LCR for ST-Ericssons derivative
Linus Walleij [Wed, 2 Jun 2010 07:13:52 +0000 (08:13 +0100)]
ARM: 6157/2: PL011 TX/RX split of LCR for ST-Ericssons derivative

In the ST-Ericsson version of the PL011 the TX and RX have different
control registers.

Cc: Alessandro Rubini <>
Signed-off-by: Marcin Mielczarczyk <>
Signed-off-by: Linus Walleij <>
Signed-off-by: Russell King <>
10 years agoARM: 6213/1: atomic64_test: add ARM as supported architecture
Will Deacon [Thu, 8 Jul 2010 09:59:59 +0000 (10:59 +0100)]
ARM: 6213/1: atomic64_test: add ARM as supported architecture

ARM has support for the atomic64_dec_if_positive operation
so ensure that it is tested by the atomic64_test routine.

Acked-by: Nicolas Pitre <>
Signed-off-by: Will Deacon <>
Signed-off-by: Russell King <>
10 years agoMerge branch 'origin' into misc
Russell King [Tue, 27 Jul 2010 09:42:48 +0000 (10:42 +0100)]
Merge branch 'origin' into misc

10 years agoARM: 6225/1: make TCM allocation static and common for all archs
Linus Walleij [Mon, 12 Jul 2010 20:53:28 +0000 (21:53 +0100)]
ARM: 6225/1: make TCM allocation static and common for all archs

This changes the TCM handling so that a fixed area is reserved at
0xfffe0000-0xfffeffff for TCM. This areas is used by XScale but
XScale does not have TCM so the mechanisms are mutually exclusive.

This change is needed to make TCM detection more dynamic while
still being able to compile code into it, and is a must for the
unified ARM goals: the current TCM allocation at different places
in memory for each machine would be a nightmare if you want to
compile a single image for more than one machine with TCM so it
has to be nailed down in one place.

Signed-off-by: Linus Walleij <>
Signed-off-by: Russell King <>
10 years agoARM: Versatile: fix section mismatch
Russell King [Tue, 27 Jul 2010 07:59:55 +0000 (08:59 +0100)]
ARM: Versatile: fix section mismatch

WARNING: vmlinux.o(.text+0xbf38): Section mismatch in reference from the function pci_versatile_scan_bus() to the function .devinit.text:pci_scan_bus_parented()
The function pci_versatile_scan_bus() references
the function __devinit pci_scan_bus_parented().

Signed-off-by: Russell King <>
10 years agoARM: Remove unnecessary call to find_limits()
Russell King [Thu, 1 Jul 2010 17:35:07 +0000 (18:35 +0100)]
ARM: Remove unnecessary call to find_limits()

Signed-off-by: Russell King <>
10 years agoARM: LMB: convert pfn_valid to use LMB
Russell King [Thu, 1 Jul 2010 11:03:29 +0000 (12:03 +0100)]
ARM: LMB: convert pfn_valid to use LMB

Signed-off-by: Russell King <>
10 years agoARM: LMB: Convert arm_memory_present() to use LMB memory information
Russell King [Thu, 1 Jul 2010 11:00:57 +0000 (12:00 +0100)]
ARM: LMB: Convert arm_memory_present() to use LMB memory information

Signed-off-by: Russell King <>
10 years agoARM: OMAP: Convert OMAPFB and VRAM SDRAM reservation to LMB
Russell King [Sat, 22 May 2010 22:59:11 +0000 (23:59 +0100)]
ARM: OMAP: Convert OMAPFB and VRAM SDRAM reservation to LMB

Signed-off-by: Russell King <>
10 years agoARM: Convert platform reservations to use LMB rather than bootmem
Russell King [Sat, 22 May 2010 18:47:18 +0000 (19:47 +0100)]
ARM: Convert platform reservations to use LMB rather than bootmem

Signed-off-by: Russell King <>
10 years agoARM: initial LMB trial
Russell King [Fri, 9 Jul 2010 15:27:52 +0000 (16:27 +0100)]
ARM: initial LMB trial

Acked-by: Tony Lindgren <>
Signed-off-by: Russell King <>
10 years agoARM: early_pte_alloc()
Russell King [Thu, 1 Jul 2010 17:33:29 +0000 (18:33 +0100)]
ARM: early_pte_alloc()

Provide a common function for allocating early PTE tables.

Signed-off-by: Russell King <>
10 years agoARM: 6267/1: mop500: add AB8500 interrupt support
Rabin Vincent [Mon, 26 Jul 2010 10:12:15 +0000 (11:12 +0100)]
ARM: 6267/1: mop500: add AB8500 interrupt support

Add the platform data to enable AB8500 interrupt support.

Acked-by: Linus Walleij <>
Acked-by: Srinidhi Kasagar <>
Signed-off-by: Rabin Vincent <>
Signed-off-by: Russell King <>
10 years agoMerge branch 'x86-fixes-for-linus' of git://
Linus Torvalds [Mon, 26 Jul 2010 23:02:07 +0000 (16:02 -0700)]
Merge branch 'x86-fixes-for-linus' of git://git./linux/kernel/git/tip/linux-2.6-tip

* 'x86-fixes-for-linus' of git://
  x86: Do not try to disable hpet if it hasn't been initialized before
  x86, i8259: Only register sysdev if we have a real 8259 PIC

10 years agos2io: fixing DBG_PRINT() macro
Breno Leitao [Mon, 26 Jul 2010 22:37:30 +0000 (15:37 -0700)]
s2io: fixing DBG_PRINT() macro

Patch 9e39f7c5b311a306977c5471f9e2ce4c456aa038 changed the
DBG_PRINT() macro and the if clause was wrongly changed. It means
that currently all the DBG_PRINT are being printed, flooding the
kernel log buffer with things like:

s2io: eth6: Next block at: c0000000b9c90000
s2io: eth6: In Neterion Tx routine

Signed-off-by: Breno Leitao <>
Acked-by: Sreenivasa Honnur <>
Signed-off-by: David S. Miller <>
10 years agoMerge branch 'fixes' of git://
Linus Torvalds [Mon, 26 Jul 2010 22:35:53 +0000 (15:35 -0700)]
Merge branch 'fixes' of git://git./linux/kernel/git/davej/cpufreq

* 'fixes' of git://
  [CPUFREQ] powernow-k8: Limit Pstate transition latency check
  [CPUFREQ] Fix PCC driver error path
  [CPUFREQ] fix double freeing in error path of pcc-cpufreq
  [CPUFREQ] pcc driver should check for pcch method before calling _OSC
  [CPUFREQ] fix memory leak in cpufreq_add_dev
  [CPUFREQ] revert "[CPUFREQ] remove rwsem lock from CPUFREQ_GOV_STOP call (second call site)"

10 years agoMerge branch 'upstream' of git://
Linus Torvalds [Mon, 26 Jul 2010 22:35:04 +0000 (15:35 -0700)]
Merge branch 'upstream' of git://

* 'upstream' of git://
  MIPS: Set io_map_base for several PCI bridges lacking it
  MIPS: Alchemy: Define eth platform devices in the correct order
  MIPS: BCM63xx: Prevent second enet registration on BCM6338
  MIPS: Quit using undefined behavior of ADDU in 64-bit atomic operations.
  MIPS: N32: Define getdents64.
  MIPS: MTX-1: Fix PCI on the MeshCube and related boards
  MIPS: Make init_vdso a subsys_initcall.
  MIPS: "Fix" useless 'init_vdso successfully' message.
  MIPS: PowerTV: Move register setup to before reading registers.
  SOUND: Au1000: Fix section mismatch
  VIDEO: Au1100fb: Fix section mismatch
  VIDEO: PMAGB-B: Fix section mismatch
  VIDEO: PMAG-BA: Fix section mismatch
  NET: declance: Fix section mismatches
  VIDEO. gbefb: Fix section mismatches.

10 years agodrm/i915: make sure we shut off the panel in eDP configs
Jesse Barnes [Mon, 26 Jul 2010 20:51:22 +0000 (13:51 -0700)]
drm/i915: make sure we shut off the panel in eDP configs

Fix error from the last pull request.  Making sure we shut the panel off
is more correct and saves power.

Signed-off-by: Jesse Barnes <>
Signed-off-by: Linus Torvalds <>
10 years agoMerge branch 'master' of git://
David S. Miller [Mon, 26 Jul 2010 20:26:09 +0000 (13:26 -0700)]
Merge branch 'master' of git://git./linux/kernel/git/linville/wireless-2.6

10 years agoMerge git://
Linus Torvalds [Mon, 26 Jul 2010 20:07:25 +0000 (13:07 -0700)]
Merge git://git./linux/kernel/git/gregkh/driver-core-2.6

* git://
  sysfs: allow creating symlinks from untagged to tagged directories
  sysfs: sysfs_delete_link handle symlinks from untagged to tagged directories.
  sysfs: Don't allow the creation of symlinks we can't remove

10 years agoMerge git://
Linus Torvalds [Mon, 26 Jul 2010 20:06:39 +0000 (13:06 -0700)]
Merge git://git./linux/kernel/git/gregkh/usb-2.6

* git://
  USB: musb: tusb6010: fix compile error with n8x0_defconfig
  USB: FTDI: Add support for the RT System VX-7 radio programming cable
  USB: add quirk for Broadcom BT dongle
  USB: usb-storage: fix initializations of urb fields
  USB: xhci: Set Mult field in endpoint context correctly.
  USB: sisusbvga: Fix for USB 3.0
  USB: adds Artisman USB dongle to list of quirky devices
  USB: xhci: Set EP0 dequeue ptr after reset of configured device.
  USB: Fix USB3.0 Port Speed Downgrade after port reset
  USB: xHCI: Fix another bug in link TRB activation change.
  USB: option: Add support for AMOI Skypephone S2
  USB: New PIDs for Qualcomm gobi 2000 (qcserial)
  USB: ftdi_sio: support for Signalyzer tools based on FTDI chips
  USB: s3c2410_udc: be aware of connected gadget driver
  USB: Expose vendor-specific ACM channel on Nokia 5230
  USB: Add PID for Sierra 250U to drivers/usb/serial/sierra.c
  USB: option: add support for 1da5:4518

10 years agoMerge git://
Linus Torvalds [Mon, 26 Jul 2010 20:06:25 +0000 (13:06 -0700)]
Merge git://git./linux/kernel/git/gregkh/tty-2.6

* git://
  serial: fix rs485 for atmel_serial on avr32

10 years agoMerge branch 'for-linus' of git://
Linus Torvalds [Mon, 26 Jul 2010 20:04:25 +0000 (13:04 -0700)]
Merge branch 'for-linus' of git://git./linux/kernel/git/anholt/drm-intel

* 'for-linus' of git://
  drm/i915: add pipe A force quirks to i915 driver
  drm/i915: Fix panel fitting regression since 734b4157
  drm/i915: fix deadlock in fb teardown
  drm/i915: don't free non-existent compressed llb on ILK+
  agp/intel: Use the correct mask to detect i830 aperture size.
  drm/i915: disable FBC when more than one pipe is active
  drm/i915: Use the correct scanout alignment for fbcon.
  drm/i915: make sure eDP panel is turned on
  drm/i915: add PANEL_UNLOCK_REGS definition
  drm/i915: Make G4X-style PLL search more permissive
  drm/i915: Clear any existing dither mode prior to enabling spatial dithering
  drm/i915: handle shared framebuffers when flipping
  drm/i915: Explosion following OOM in do_execbuffer.
  gpu/drm/i915: Add a blacklist to omit modeset on LID open

10 years ago[CPUFREQ] powernow-k8: Limit Pstate transition latency check
Borislav Petkov [Thu, 8 Jul 2010 15:55:30 +0000 (17:55 +0200)]
[CPUFREQ] powernow-k8: Limit Pstate transition latency check

The Pstate transition latency check was added for broken F10h BIOSen
which wrongly contain a value of 0 for transition and bus master
latency. Fam11h and later, however, (will) have similar transition
latency so extend that behavior for them too.

Signed-off-by: Borislav Petkov <>
Signed-off-by: Dave Jones <>
10 years ago[CPUFREQ] Fix PCC driver error path
Matthew Garrett [Thu, 15 Jul 2010 15:44:00 +0000 (11:44 -0400)]
[CPUFREQ] Fix PCC driver error path

The PCC cpufreq driver unmaps the mailbox address range if any CPUs fail to
initialise, but doesn't do anything to remove the registered CPUs from the
cpufreq core resulting in failures further down the line. We're better off
simply returning a failure - the cpufreq core will unregister us cleanly if
we end up with no successfully registered CPUs. Tidy up the failure path
and also add a sanity check to ensure that the firmware gives us a realistic
frequency - the core deals badly with that being set to 0.

Signed-off-by: Matthew Garrett <>
Cc: Naga Chumbalkar <>
Signed-off-by: Dave Jones <>
10 years ago[CPUFREQ] fix double freeing in error path of pcc-cpufreq
Daniel J Blueman [Fri, 23 Jul 2010 22:06:52 +0000 (23:06 +0100)]
[CPUFREQ] fix double freeing in error path of pcc-cpufreq

Prevent double freeing on error path.

Signed-off-by: Daniel J Blueman <>
Signed-off-by: Dave Jones <>
10 years ago[CPUFREQ] pcc driver should check for pcch method before calling _OSC
Matthew Garrett [Tue, 20 Jul 2010 17:52:00 +0000 (13:52 -0400)]
[CPUFREQ] pcc driver should check for pcch method before calling _OSC

The pcc specification documents an _OSC method that's incompatible with the
one defined as part of the ACPI spec. This shouldn't be a problem as both
are supposed to be guarded with a UUID. Unfortunately approximately nobody
(including HP, who wrote this spec) properly check the UUID on entry to the
_OSC call. Right now this could result in surprising behaviour if the pcc
driver performs an _OSC call on a machine that doesn't implement the pcc
specification. Check whether the PCCH method exists first in order to reduce
this probability.

Signed-off-by: Matthew Garrett <>
Cc: Naga Chumbalkar <>
Signed-off-by: Dave Jones <>
10 years ago[CPUFREQ] fix memory leak in cpufreq_add_dev
Xiaotian Feng [Tue, 20 Jul 2010 12:11:02 +0000 (20:11 +0800)]
[CPUFREQ] fix memory leak in cpufreq_add_dev

We didn't free policy->related_cpus in error path err_unlock_policy.
This is catched by following kmemleak report:

unreferenced object 0xffff88022a0b96d0 (size 512):
  comm "modprobe", pid 886, jiffies 4294689177 (age 780.694s)
  hex dump (first 32 bytes):
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
    [<ffffffff8111ebe5>] create_object+0x186/0x281
    [<ffffffff814fad4f>] kmemleak_alloc+0x60/0xa7
    [<ffffffff8111127a>] kmem_cache_alloc_node_notrace+0x120/0x142
    [<ffffffff81262e4f>] alloc_cpumask_var_node+0x2c/0xd7
    [<ffffffff81262f0b>] alloc_cpumask_var+0x11/0x13
    [<ffffffff81262f1c>] zalloc_cpumask_var+0xf/0x11
    [<ffffffff8140fac0>] cpufreq_add_dev+0x11f/0x547
    [<ffffffff81334bda>] sysdev_driver_register+0xc2/0x11d
    [<ffffffff8140e334>] cpufreq_register_driver+0xcb/0x1b8
    [<ffffffffa032e040>] 0xffffffffa032e040
    [<ffffffff810021ba>] do_one_initcall+0x5e/0x15c
    [<ffffffff81087f94>] sys_init_module+0xa6/0x1e6
    [<ffffffff81009bc2>] system_call_fastpath+0x16/0x1b
    [<ffffffffffffffff>] 0xffffffffffffffff

Signed-off-by: Xiaotian Feng <>
Cc: Thomas Renninger <>
Cc: Prarit Bhargava <>
Signed-off-by: Dave Jones <>
10 years ago[CPUFREQ] revert "[CPUFREQ] remove rwsem lock from CPUFREQ_GOV_STOP call (second...
Andrej Gelenberg [Fri, 14 May 2010 22:15:58 +0000 (15:15 -0700)]
[CPUFREQ] revert "[CPUFREQ] remove rwsem lock from CPUFREQ_GOV_STOP call (second call site)"

395913d0b1db37092ea3d9d69b832183b1dd84c5 ("[CPUFREQ] remove rwsem lock
from CPUFREQ_GOV_STOP call (second call site)") is not needed, because
there is no rwsem lock in cpufreq_ondemand and cpufreq_conservative
anymore.  Lock should not be released until the work done.


Signed-off-by: Andrej Gelenberg <>
Cc: Mathieu Desnoyers <>
Cc: Venkatesh Pallipadi <>
Signed-off-by: Andrew Morton <>
Acked-by: Mathieu Desnoyers <>
Signed-off-by: Dave Jones <>
10 years agosysfs: allow creating symlinks from untagged to tagged directories
Eric W. Biederman [Wed, 21 Jul 2010 05:12:01 +0000 (22:12 -0700)]
sysfs: allow creating symlinks from untagged to tagged directories

Supporting symlinks from untagged to tagged directories is reasonable,
and needed to support CONFIG_SYSFS_DEPRECATED.  So don't fail a prior
allowing that case to work.

Signed-off-by: Eric W. Biederman <>
Signed-off-by: Greg Kroah-Hartman <>
10 years agosysfs: sysfs_delete_link handle symlinks from untagged to tagged directories.
Eric W. Biederman [Wed, 21 Jul 2010 05:10:58 +0000 (22:10 -0700)]
sysfs: sysfs_delete_link handle symlinks from untagged to tagged directories.

This happens for network devices when SYSFS_DEPRECATED is enabled.

Signed-off-by: Eric W. Biederman <>
Signed-off-by: Greg Kroah-Hartman <>
10 years agosysfs: Don't allow the creation of symlinks we can't remove
Eric W. Biederman [Thu, 8 Jul 2010 16:31:24 +0000 (09:31 -0700)]
sysfs: Don't allow the creation of symlinks we can't remove

Recently my tagged sysfs support revealed a flaw in the device core
that a few rare drivers are running into such that we don't always put
network devices in a class subdirectory named net/.

Since we are not creating the class directory the network devices wind
up in a non-tagged directory, but the symlinks to the network devices
from /sys/class/net are in a tagged directory.  All of which works
until we go to remove or rename the symlink.  When we remove or rename
a symlink we look in the namespace of the target of the symlink.
Since the target of the symlink is in a non-tagged sysfs directory we
don't have a namespace to look in, and we fail to remove the symlink.

Detect this problem up front and simply don't create symlinks we won't
be able to remove later.  This prevents symlink leakage and fails in
a much clearer and more understandable way.

Signed-off-by: Eric W. Biederman <>
Cc: Andrew Morton <>
Cc: Rafael J. Wysocki <>
Cc: Maciej W. Rozycki <>
Cc: Kay Sievers <>
Cc: Johannes Berg <>
Signed-off-by: Greg Kroah-Hartman <>
10 years agoUSB: musb: tusb6010: fix compile error with n8x0_defconfig
Felipe Balbi [Mon, 5 Jul 2010 09:12:01 +0000 (12:12 +0300)]
USB: musb: tusb6010: fix compile error with n8x0_defconfig

Drop the unnecessary empty stubs in tusb6010.c and avoid
a compile error when building kernel for n8x0.

Signed-off-by: Felipe Balbi <>
Cc: stable <>
Signed-off-by: Greg Kroah-Hartman <>
10 years agoUSB: FTDI: Add support for the RT System VX-7 radio programming cable
Corey Minyard [Wed, 21 Jul 2010 13:39:22 +0000 (08:39 -0500)]
USB: FTDI: Add support for the RT System VX-7 radio programming cable

RT Systems has put out bunch of ham radio cables based on the FT232RL
chip.  Each cable type has a unique PID, this adds one for the Yaesu VX-7

Signed-off-by: Corey Minyard <>
Cc: stable <>
Signed-off-by: Greg Kroah-Hartman <>
10 years agoUSB: add quirk for Broadcom BT dongle
Oliver Neukum [Wed, 14 Jul 2010 16:26:22 +0000 (18:26 +0200)]
USB: add quirk for Broadcom BT dongle

This device needs to be reset when resuming

Signed-off-by: Oliver Neukum <>
Cc: stable <>
Signed-off-by: Greg Kroah-Hartman <>
10 years agoUSB: usb-storage: fix initializations of urb fields
Bob Copeland [Mon, 12 Jul 2010 15:18:18 +0000 (11:18 -0400)]
USB: usb-storage: fix initializations of urb fields

Commit 0ede76fcec5415ef82a423a95120286895822e2d, "USB: remove uses of
URB_NO_SETUP_DMA_MAP" introduced a regression by inadvertantly removing
initialization of the transfer flags.  This caused initialization
failures in the ums-karma driver.  Fix the regression by zeroing it.

While at it, as Alan Stern points out, the initializers for
actual_length and status are handled by the core and error_count
only matters for isochronous urbs, so they don't need to be set here.
Remove them.

Signed-off-by: Bob Copeland <>
Acked-by: Alan Stern <>
Signed-off-by: Greg Kroah-Hartman <>
10 years agoUSB: xhci: Set Mult field in endpoint context correctly.
Sarah Sharp [Sat, 10 Jul 2010 13:48:01 +0000 (15:48 +0200)]
USB: xhci: Set Mult field in endpoint context correctly.

The bmAttributes field of the SuperSpeed Endpoint Companion Descriptor has
different meanings, depending on the endpoint type.  If the endpoint is
isochronous, the bmAttributes field is the maximum number of packets
within a service interval that this endpoint supports.  If the endpoint is
bulk, it's the number of stream IDs this endpoint supports.

Only set the Mult field of the xHCI endpoint context using the
bmAttributes field if the endpoint is isochronous, and the device is a
SuperSpeed device.

Signed-off-by: Sarah Sharp <>
Cc: stable <>
Signed-off-by: Greg Kroah-Hartman <>
10 years agoUSB: sisusbvga: Fix for USB 3.0
Oliver Neukum [Fri, 16 Jul 2010 15:36:26 +0000 (17:36 +0200)]
USB: sisusbvga: Fix for USB 3.0

Super speed is also fast enough to let sisusbvga operate.
Therefor expand the checks.

Signed-off-by: Oliver Neukum <>
Cc: stable <>
Signed-off-by: Greg Kroah-Hartman <>
10 years agoUSB: adds Artisman USB dongle to list of quirky devices
Paul Mortier [Fri, 9 Jul 2010 12:18:50 +0000 (13:18 +0100)]
USB: adds Artisman USB dongle to list of quirky devices

When an attempt is made to read the interface strings of the Artisman
Watchdog USB dongle (idVendor:idProduct 04b4:0526) an error is written
to the dmesg log (uhci_result_common: failed with status 440000) and the
dongle resets itself, resulting in a disconnect/reconnect loop.

Adding the dongle to the list of devices in quirks.c, with the same
quirk Alan Stern's previous patch for the Saitek Cyborg Gold 3D
joystick, stops the device from resetting and allows it to be used with
no problems.

Signed-off-by: Paul Mortier <>
Cc: stable <>
Signed-off-by: Greg Kroah-Hartman <>
10 years agoUSB: xhci: Set EP0 dequeue ptr after reset of configured device.
Sarah Sharp [Fri, 9 Jul 2010 15:08:54 +0000 (17:08 +0200)]
USB: xhci: Set EP0 dequeue ptr after reset of configured device.

When a configured device is reset, the control endpoint's ring is reused.
If control transfers to the device were issued before the device is reset,
the dequeue pointer will be somewhere in the middle of the ring.  If the
device is then issued an address with the set address command, the xHCI
driver must provide a valid input context for control endpoint zero.

The original code would give the hardware the original input context,
which had a dequeue pointer set to the top of the ring.  This would cause
the host to re-execute any control transfers until it reached the ring's
enqueue pointer.  When issuing a set address command for a device that has
just been configured and then reset, use the control endpoint's enqueue
pointer as the hardware's dequeue pointer.

Assumption:  All control transfers will be completed or cancelled before
the set address command is issued to the device.  If there are any
outstanding control transfers, this code will not work.

Signed-off-by: Sarah Sharp <>
Signed-off-by: Greg Kroah-Hartman <>
10 years agoUSB: Fix USB3.0 Port Speed Downgrade after port reset
Sarah Sharp [Fri, 9 Jul 2010 15:08:48 +0000 (17:08 +0200)]
USB: Fix USB3.0 Port Speed Downgrade after port reset

Without this fix, a USB 3.0 port is downgraded to full speed after a port
reset of a configured device.  The USB 3.0 terminations will be disabled
permanently, and USB 3.0 devices will always enumerate as full speed
devices, until the host controller is unplugged (if it is an ExpressCard)
or the computer is rebooted.

Fajun Chen traced this traced the speed downgrade issue to the port reset
and the interpretation of port status in USB hub driver code.  The hub
code was not testing for the port being a SuperSpeed port, and it fell
through to the else case of Full Speed.

The following patch adds SuperSpeed mapping from the port status, and
fixes the speed downgrade issue.

Reported-by: Fajun Chen <>
Signed-off-by: Sarah Sharp <>
Cc: stable <>
Signed-off-by: Greg Kroah-Hartman <>
10 years agoUSB: xHCI: Fix another bug in link TRB activation change.
Sarah Sharp [Fri, 9 Jul 2010 15:08:38 +0000 (17:08 +0200)]
USB: xHCI: Fix another bug in link TRB activation change.

Commit 6c12db90f19727c76990e7f4801c67a148b30111 also seems to have
introduced a bug that is triggered when the command ring is about to wrap.
The inc_enq() function will not have moved the enqueue pointer past the
link TRB.  It is supposed to be moved past the link TRB in prepare_ring(),
which should be called before a TD is enqueued.  However, the
queue_command() function never calls the prepare_ring() function because
prepare_ring() is only supposed to be used for endpoint rings.  That means
the enqueue pointer will not be moved past the link TRB, and will get

The fix is to make queue_command() call prepare_ring() with a fake
endpoint status (set to running).  Then the enqueue pointer will get moved
past the link TRB.

Signed-off-by: Sarah Sharp <>
Signed-off-by: Greg Kroah-Hartman <>
10 years agoUSB: option: Add support for AMOI Skypephone S2
Dennis Jansen [Fri, 9 Jul 2010 20:03:53 +0000 (22:03 +0200)]
USB: option: Add support for AMOI Skypephone S2

usbserial: Add AMOI Skypephone S2 support.

This patch adds support for the AMOI Skypephone S2 to the usbserial module.

Tested-by: Dennis Jansen <>
Signed-off-by: Dennis Jansen <>
Cc: stable <>
Signed-off-by: Greg Kroah-Hartman <>
10 years agoUSB: New PIDs for Qualcomm gobi 2000 (qcserial)
Andrew Bird [Thu, 1 Jul 2010 19:50:07 +0000 (20:50 +0100)]
USB: New PIDs for Qualcomm gobi 2000 (qcserial)

Adds support for the Generic Qualcomm Gobi 2000 WWAN UMTS/CDMA modem

Signed-off-by: Andrew Bird <>
Signed-off-by: Greg Kroah-Hartman <>
10 years agoUSB: ftdi_sio: support for Signalyzer tools based on FTDI chips
Colin Leitner [Thu, 1 Jul 2010 08:49:55 +0000 (10:49 +0200)]
USB: ftdi_sio: support for Signalyzer tools based on FTDI chips

ftdi_sio: support for Signalyzer tools based on FTDI chips

This patch adds support for the Xverve Signalyzers.

Signed-off-by: Colin Leitner <>
Cc: stable <>
Signed-off-by: Greg Kroah-Hartman <>
10 years agoUSB: s3c2410_udc: be aware of connected gadget driver
Vladimir Zapolskiy [Tue, 29 Jun 2010 19:36:26 +0000 (23:36 +0400)]
USB: s3c2410_udc: be aware of connected gadget driver

To escape from data abort in interrupt handler, it is required to
check for a connected gadget before delivering control requests.

The change fixes the following panic, which occurs with no loaded
gadget driver and input USB_REQ_GET_DESCRIPTOR request:

Kernel panic - not syncing: Fatal exception in interrupt
[<c0025874>] (unwind_backtrace+0x0/0xd8) from [<c0253f14>] (panic+0x40/0x110)
[<c0253f14>] (panic+0x40/0x110) from [<c002470c>] (die+0x154/0x180)
[<c002470c>] (die+0x154/0x180) from [<c0026448>] (__do_kernel_fault+0x64/0x74)
[<c0026448>] (__do_kernel_fault+0x64/0x74) from [<c0026610>] (do_page_fault+0x1b8/0x1cc)
[<c0026610>] (do_page_fault+0x1b8/0x1cc) from [<c00202d4>] (do_DataAbort+0x34/0x94)
[<c00202d4>] (do_DataAbort+0x34/0x94) from [<c0020a60>] (__dabt_svc+0x40/0x60)
Exception stack(0xc0327ea8 to 0xc0327ef0)
7ea0:                   bf0026b0 c0327ef0 c0327ee4 00000000 bf002590 00000093
7ec0: 00000001 bf0026b0 bf002990 00000000 00000008 0000143d 00003f00 c0327ef0
7ee0: bf001364 bf001360 20000093 ffffffff
[<c0020a60>] (__dabt_svc+0x40/0x60) from [<bf001360>] (s3c2410_udc_irq+0x5b8/0x778 [s3c2410_udc])
[<bf001360>] (s3c2410_udc_irq+0x5b8/0x778 [s3c2410_udc]) from [<c0058aa0>] (handle_IRQ_event+0x3c/0x104)
[<c0058aa0>] (handle_IRQ_event+0x3c/0x104) from [<c005a428>] (handle_edge_irq+0x12c/0x164)
[<c005a428>] (handle_edge_irq+0x12c/0x164) from [<c0020068>] (asm_do_IRQ+0x68/0x88)
[<c0020068>] (asm_do_IRQ+0x68/0x88) from [<c0020aa4>] (__irq_svc+0x24/0xa0)

Signed-off-by: Vladimir Zapolskiy <>
Signed-off-by: Greg Kroah-Hartman <>
10 years agoUSB: Expose vendor-specific ACM channel on Nokia 5230
Przemo Firszt [Mon, 28 Jun 2010 20:29:34 +0000 (21:29 +0100)]
USB: Expose vendor-specific ACM channel on Nokia 5230

Nokia S60 phones expose two ACM channels. The first is
a modem, the second is 'vendor-specific' but is treated
as a serial device at the S60 end, so we want to expose
it on Linux too.

Signed-off-by: Przemo Firszt <>
Signed-off-by: Greg Kroah-Hartman <>
10 years agoUSB: Add PID for Sierra 250U to drivers/usb/serial/sierra.c
august huber [Mon, 28 Jun 2010 18:46:05 +0000 (11:46 -0700)]
USB: Add PID for Sierra 250U to drivers/usb/serial/sierra.c

Add VID/PID for Sierra Wireless 250U USB dongle to sierra.c
Allows use of 3G radio only

Signed-off-by: August Huber <>
Cc: Elina Pasheva <>
Cc: stable <>
Signed-off-by: Greg Kroah-Hartman <>
10 years agoUSB: option: add support for 1da5:4518
Ömer Sezgin Ugurlu [Mon, 28 Jun 2010 16:01:58 +0000 (19:01 +0300)]
USB: option: add support for 1da5:4518

Signed-off-by: Omer Sezgin Ugurlu <>
Cc: stable <>
Signed-off-by: Greg Kroah-Hartman <>