Commit Graph

310704 Commits

Author SHA1 Message Date
Benjamin Herrenschmidt
9424fabf86 powerpc: Fix 64-bit BookE FP unavailable exceptions
We were using CR0.EQ after EXCEPTION_COMMON, hoping it still
contained whether we came from userspace or kernel space.

However, under some circumstances, EXCEPTION_COMMON will
call C code and clobber non-volatile registers, so we really
need to re-load the previous MSR from the stackframe and
re-test.

While there, invert the condition to make the fast path more
obvious and remove the BUG_OPCODE which was a debugging
leftover and call .ret_from_except as we should.

Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
2012-03-09 10:55:18 +11:00
Benjamin Herrenschmidt
990118c84b powerpc: Fix register clobbering when accumulating stolen time
When running under a hypervisor that supports stolen time accounting,
we may call C code from the macro EXCEPTION_PROLOG_COMMON in the
exception entry path, which clobbers CR0.

However, the FPU and vector traps rely on CR0 indicating whether we
are coming from userspace or kernel to decide what to do.

So we need to restore that value after the C call

Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
2012-03-09 10:55:16 +11:00
Benjamin Herrenschmidt
7ac21cd465 powerpc/xmon: Add display of soft & hard irq states
Also use local_paca instead of get_paca() to avoid getting into
the smp_processor_id() debugging code from the debugger

Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
2012-03-09 10:55:14 +11:00
Benjamin Herrenschmidt
9be72573a8 powerpc: Add support for page fault retry and fatal signals
Other architectures such as x86 and ARM have been growing
new support for features like retrying page faults after
dropping the mm semaphore to break contention, or being
able to return from a stuck page fault when a SIGKILL is
pending.

This refactors our implementation of do_page_fault() to
move the error handling out of line in a way similar to
x86 and adds support for those two features.

Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
2012-03-09 10:55:12 +11:00
Benjamin Herrenschmidt
9f2f79e3a3 powerpc: Disable interrupts in 64-bit kernel FP and vector faults
If we get a floating point, altivec or vsx unavaible interrupt in
kernel, we trigger a kernel error. There is no point preserving
the interrupt state, in fact, that can even make debugging harder
as the processor state might change (we may even preempt) between
taking the exception and landing in a debugger.

So just make those 3 disable interrupts unconditionally.

Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
---

v2: On BookE only disable when hitting the kernel unavailable
    path, otherwise it will fail to restore softe as
    fast_exception_return doesn't do it.
2012-03-09 10:55:10 +11:00
Benjamin Herrenschmidt
a546498f3b powerpc: Call do_page_fault() with interrupts off
We currently turn interrupts back to their previous state before
calling do_page_fault(). This can be annoying when debugging as
a bad fault will potentially have lost some processor state before
getting into the debugger.

We also end up calling some generic code with interrupts enabled
such as notify_page_fault() with interrupts enabled, which could
be unexpected.

This changes our code to behave more like other architectures,
and make the assembly entry code call into do_page_faults() with
interrupts disabled. They are conditionally re-enabled from
within do_page_fault() in the same spot x86 does it.

While there, add the might_sleep() test in the case of a successful
trylock of the mmap semaphore, again like x86.

Also fix a bug in the existing assembly where r12 (_MSR) could get
clobbered by C calls (the DTL accounting in the exception common
macro and DISABLE_INTS) in some cases.

Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
---

v2. Add the r12 clobber fix
2012-03-09 10:55:08 +11:00
Benjamin Herrenschmidt
1b70117924 powerpc: Improve behaviour of irq tracing on 64-bit exception entry
Some exceptions would unconditionally disable interrupts on entry,
which is fine, but calling lockdep every time not only adds more
overhead than strictly needed, but also means we get quite a few
"redudant" disable logged, which makes it hard to spot the really
bad ones.

So instead, split the macro used by the exception code into a
normal one and a separate one used when CONFIG_TRACE_IRQFLAGS is
enabled, and make the later skip th tracing if interrupts were
already disabled.

Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
2012-03-09 10:55:06 +11:00
Benjamin Herrenschmidt
1421ae0b29 powerpc: Improve 64-bit syscall entry/exit
We unconditionally hard enable interrupts. This is unnecessary as
syscalls are expected to always be called with interrupts enabled.

While at it, we add a WARN_ON if that is not the case and
CONFIG_TRACE_IRQFLAGS is enabled (we don't want to add overhead
to the fast path when this is not set though).

Thus let's remove the enabling (and associated irq tracing) from
the syscall entry path. Also on Book3S, replace a few mfmsr
instructions with loads of PACAMSR from the PACA, which should be
faster & schedule better.

Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
2012-03-09 10:55:04 +11:00
Benjamin Herrenschmidt
fe1952fc0a powerpc: Rework runlatch code
This moves the inlines into system.h and changes the runlatch
code to use the thread local flags (non-atomic) rather than
the TIF flags (atomic) to keep track of the latch state.

The code to turn it back on in an asynchronous interrupt is
now simplified and partially inlined.

Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
2012-03-09 10:55:02 +11:00
Benjamin Herrenschmidt
7450f6f03e powerpc: Use the same interrupt prolog for perfmon as other interrupts
The perfmon interrupt is the sole user of a special variant of the
interrupt prolog which differs from the one used by external and timer
interrupts in that it saves the non-volatile GPRs and doesn't turn the
runlatch on.

The former is unnecessary and the later is arguably incorrect, so
let's clean that up by using the same prolog. While at it we rename
that prolog to use the _ASYNC prefix.

Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
2012-03-09 10:55:00 +11:00
Benjamin Herrenschmidt
4f8cf36f48 powerpc: Remove legacy iSeries bits from assembly files
This removes the various bits of assembly in the kernel entry,
exception handling and SLB management code that were specific
to running under the legacy iSeries hypervisor which is no
longer supported.

Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
2012-03-09 10:54:59 +11:00
Stephen Rothwell
b078766026 powerpc: clean up vio.c
This cleans up vio.c after the removal of the legacy iSeries platform.
It also removes some no longer referenced include files.

Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
2012-03-09 10:35:23 +11:00
Stephen Rothwell
fcd6f76202 driver-core: remove legacy iSeries hack
The PowerPC legacy iSeries plateform is being removed along with the
"one looney iseries driver", so this code can now be removed as well.

cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
2012-03-09 10:35:21 +11:00
Stephen Rothwell
c17a9d4c84 tty: powerpc: remove SERIAL_ICOM dependency on PPC_ISERIES
The PowerPC legacy iSeries platform is being removed so this is no
longer selectable.

Cc: Alan Cox <alan@linux.intel.com>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: linux-serial@vger.kernel.org
Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
2012-03-09 10:35:19 +11:00
Stephen Rothwell
b66808910d tty: powerpc: remove hvc_iseries
The PowerPC legacy iSeries platform is being removed, so this code is no
longer needed.

Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
2012-03-09 10:35:17 +11:00
Stephen Rothwell
7834799a6c powerpc: remove the legacy iSeries part of ibmvscsi
The PowerPC legacy iSeries platform is being removed and this code is
no longer selectable.  There is more clean up that can be done, but this
just gets the old code out of the way.

Cc: "James E.J. Bottomley" <JBottomley@parallels.com>
Cc: Brian King <brking@linux.vnet.ibm.com>
Cc: linux-scsi@vger.kernel.org
Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
2012-03-09 10:35:15 +11:00
Stephen Rothwell
e92a665949 net: powerpc: remove the legacy iSeries ethernet driver
This driver is specific to the PowerPC legcay iSeries platform which is
being removed.

Cc: David Miller <davem@davemloft.net>
Cc: <netdev@vger.kernel.org>
Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au>
Acked-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
2012-03-09 10:35:13 +11:00
Stephen Rothwell
8ee3e0d696 powerpc: Remove the main legacy iSerie platform code
Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
2012-03-09 10:35:11 +11:00
Greg Kroah-Hartman
5db51b50c1 USB: serial: metro-usb: move to use dev_dbg() instead of dbg()
This properly ties the driver into the dynamic debug system and provides
the needed device identification when the messages are printed out.

It also removes a ton of checkpatch warnings as well, which is always a
nice validation that it's the correct thing to do.

Cc: Aleksey Babahin <tamerlan311@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2012-03-08 14:16:12 -08:00
Greg Kroah-Hartman
8111e4ecf9 USB: serial: metro-usb: remove unneeded cast and function call
We should use kzalloc() instead of kmalloc() and memset(), and remove an
unneeded void * cast as well.

Cc: Aleksey Babahin <tamerlan311@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2012-03-08 14:00:11 -08:00
Greg Kroah-Hartman
dd63b0b4d6 USB: serial: metro-usb: remove function header comments
They aren't needed, make the checkpatch tool unhappy, and in some
places, aren't even correct.  So just remove them, they get in the way
and are messy.

Cc: Aleksey Babahin <tamerlan311@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2012-03-08 13:58:13 -08:00
Greg Kroah-Hartman
9fbd1649d5 USB: serial: metro-usb: remove function prototypes
By rearranging the functions a bit, we can remove all function
prototypes.

Note, this also deleted the _close function, as it wasn't needed, it was
doing the same thing the cleanup function did, so just call that
instead.

Cc: Aleksey Babahin <tamerlan311@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2012-03-08 13:55:41 -08:00
Haiyang Zhang
d31b20fcc8 net/hyperv: Use the built-in macro KBUILD_MODNAME for this driver
Signed-off-by: Haiyang Zhang <haiyangz@microsoft.com>
Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
Cc: Olaf Hering <olaf@aepfle.de>
Signed-off-by: David S. Miller <davem@davemloft.net>
2012-03-08 13:55:27 -08:00
Benjamin Poirier
2f2d76cc3e dlm: Do not allocate a fd for peeloff
avoids allocating a fd that a) propagates to every kernel thread and
usermodehelper b) is not properly released.

References: http://article.gmane.org/gmane.linux.network.drbd/22529
Signed-off-by: Benjamin Poirier <bpoirier@suse.de>
Signed-off-by: David S. Miller <davem@davemloft.net>
2012-03-08 13:52:09 -08:00
Benjamin Poirier
0343c5543b sctp: Export sctp_do_peeloff
lookup sctp_association within sctp_do_peeloff() to enable its use outside of
the sctp code with minimal knowledge of the former.

Signed-off-by: Benjamin Poirier <bpoirier@suse.de>
Acked-by: Vlad Yasevich <vladislav.yasevich@hp.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2012-03-08 13:52:08 -08:00
Greg Kroah-Hartman
d4cbd6e990 USB: serial: metro-usb: fix up coding style errors
This fixes up all of the coding style errors, and removes the initial,
unneeded comments on how to load the module and the old changelog which
are no longer needed.

There are still a number of coding style warnings left, I'll get to them
later.

Cc: Aleksey Babahin <tamerlan311@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2012-03-08 13:50:54 -08:00
Greg Kroah-Hartman
159d4d8d5e USB: serial: metro-usb: remove the .h file
A driver doesn't need a .h file just for simple things like vendor ids
and a private structure.  So move it into the .c file instead, saving
some overall lines.

Cc: Aleksey Babahin <tamerlan311@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2012-03-08 13:42:41 -08:00
Greg Kroah-Hartman
1935e357bb USB: serial: metro-usb: convert to use module_usb_serial_driver
Now that we aren't doing anything special in the init function, move to
use the easier module_usb_serial_driver() call instead, saving a lot of
lines of unnecessary code.

Cc: Aleksey Babahin <tamerlan311@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2012-03-08 13:39:53 -08:00
Greg Kroah-Hartman
fdac0f647a USB: serial: metro-usb: remove vendor and product module parameters
All new usb serial drivers should be using the dynamic id function, not
having module parameters for this type of thing.  So remove them before
anyone gets used to them being there.

Cc: Aleksey Babahin <tamerlan311@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2012-03-08 13:37:32 -08:00
Greg Kroah-Hartman
62f2a83de0 USB: serial: metro-usb: add to the build
This adds the metro-usb driver to the build system properly.

Cc: Aleksey Babahin <tamerlan311@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2012-03-08 13:34:01 -08:00
Greg Kroah-Hartman
11a4f40064 USB: serial: metro-usb: fix up usb_serial_register calls
The usb serial core has changed how the driver is to be registered and
unregistered recently.  Make these changes to the driver so that it will
properly build and work.

Cc: Aleksey Babahin <tamerlan311@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2012-03-08 13:33:04 -08:00
Aleksey Babahin
43d186fe99 USB: serial: add metro-usb driver to the tree
This driver is for the Metrologic barcode scanner.

Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2012-03-08 13:24:09 -08:00
Frank Benkert
e0955acecf mpc5200b/uart: select more tolerant uart prescaler on low baudrates
In addition to the /32 prescaler, the MPC5200B supports a second
baudrate prescaler /4 to reach higher baudrates.

The current calculation (introduced with commit 0d1f22e4) in the kernel
preferes this low prescaler as often as possible, but with some
imprecise counterparts the communication on low baudrates fails.

According a support-mail from freescale the low prescaler (/4) allows
just 1% tolerance in bittiming in contrast to 4% of the high prescaler
(/32).  The prescaler not only affects the baudrate-calculation, but
also the sampling of the bits on the wire.

With this patch, we use the slightly less precise, but higher tolerant
prescaler calculation on low baudrates up to (and including) 115200 baud
and the more precise calculation above.

Tested on a custom MPC5200B board with "fsl,mpc5200b-psc-uart".

Calculation Examples with prescaler (PS) 4 and 32 and divisor (DIV) on
various baudrates. Real stands for the real baudrate generated and Diff
for the differences between:
     50 Baud PS 32 DIV 0xa122 Real      50 Diff   0.00%
     75 Baud PS 32 DIV 0x6b6c Real      75 Diff   0.00%
    110 Baud PS 32 DIV 0x493e Real     110 Diff   0.00%
    134 Baud PS 32 DIV 0x3c20 Real     133 Diff   0.75%
    150 Baud PS 32 DIV 0x35b6 Real     150 Diff   0.00%
    200 Baud PS 32 DIV 0x2849 Real     199 Diff   0.50%
    300 Baud PS  4 DIV 0xd6d8 Real     300 Diff   0.00%
             PS 32 DIV 0x1adb Real     300 Diff   0.00%
    600 Baud PS  4 DIV 0x6b6c Real     600 Diff   0.00%
             PS 32 DIV 0x0d6e Real     599 Diff   0.17%
   1200 Baud PS  4 DIV 0x35b6 Real    1200 Diff   0.00%
             PS 32 DIV 0x06b7 Real    1199 Diff   0.08%
   1800 Baud PS  4 DIV 0x23cf Real    1799 Diff   0.06%
             PS 32 DIV 0x047a Real    1799 Diff   0.06%
   2400 Baud PS  4 DIV 0x1adb Real    2400 Diff   0.00%
             PS 32 DIV 0x035b Real    2401 Diff - 0.04%
   4800 Baud PS  4 DIV 0x0d6e Real    4799 Diff   0.02%
             PS 32 DIV 0x01ae Real    4796 Diff   0.08%
   9600 Baud PS  4 DIV 0x06b7 Real    9598 Diff   0.02%
             PS 32 DIV 0x00d7 Real    9593 Diff   0.07%
  19200 Baud PS  4 DIV 0x035b Real   19208 Diff - 0.04%
             PS 32 DIV 0x006b Real   19275 Diff - 0.39%
  38400 Baud PS  4 DIV 0x01ae Real   38372 Diff   0.07%
             PS 32 DIV 0x0036 Real   38194 Diff   0.54%
  57600 Baud PS  4 DIV 0x011e Real   57692 Diff - 0.16%
             PS 32 DIV 0x0024 Real   57291 Diff   0.54%
  76800 Baud PS  4 DIV 0x00d7 Real   76744 Diff   0.07%
             PS 32 DIV 0x001b Real   76388 Diff   0.54%
 115200 Baud PS  4 DIV 0x008f Real  115384 Diff - 0.16%
             PS 32 DIV 0x0012 Real  114583 Diff   0.54%
 153600 Baud PS  4 DIV 0x006b Real  154205 Diff - 0.39%
             PS 32 DIV 0x000d Real  158653 Diff - 3.29%
 230400 Baud PS  4 DIV 0x0048 Real  229166 Diff   0.54%
             PS 32 DIV 0x0009 Real  229166 Diff   0.54%
 307200 Baud PS  4 DIV 0x0036 Real  305555 Diff   0.54%
             PS 32 DIV 0x0007 Real  294642 Diff   4.09%
 460800 Baud PS  4 DIV 0x0024 Real  458333 Diff   0.54%
             PS 32 DIV 0x0005 Real  412500 Diff  10.48%
 500000 Baud PS  4 DIV 0x0021 Real  500000 Diff   0.00%
             PS 32 DIV 0x0004 Real  515625 Diff - 3.13%
 576000 Baud PS  4 DIV 0x001d Real  568965 Diff   1.22%
             PS 32 DIV 0x0004 Real  515625 Diff  10.48%
 614400 Baud PS  4 DIV 0x001b Real  611111 Diff   0.54%
             PS 32 DIV 0x0003 Real  687500 Diff -11.90%
 921600 Baud PS  4 DIV 0x0012 Real  916666 Diff   0.54%
             PS 32 DIV 0x0002 Real 1031250 Diff -11.90%
1000000 Baud PS  4 DIV 0x0011 Real  970588 Diff   2.94%
             PS 32 DIV 0x0002 Real 1031250 Diff - 3.13%
1152000 Baud PS  4 DIV 0x000e Real 1178571 Diff - 2.31%
             PS 32 DIV 0x0002 Real 1031250 Diff  10.48%
1500000 Baud PS  4 DIV 0x000b Real 1500000 Diff   0.00%
             PS 32 DIV 0x0001 Real 2062500 Diff -37.50%
2000000 Baud PS  4 DIV 0x0008 Real 2062500 Diff - 3.13%
             PS 32 DIV 0x0001 Real 2062500 Diff - 3.13%
2500000 Baud PS  4 DIV 0x0007 Real 2357142 Diff   5.71%
             PS 32 DIV 0x0001 Real 2062500 Diff  17.50%
3000000 Baud PS  4 DIV 0x0006 Real 2750000 Diff   8.33%
             PS 32 DIV 0x0001 Real 2062500 Diff  31.25%
3500000 Baud PS  4 DIV 0x0005 Real 3300000 Diff   5.71%
             PS 32 DIV 0x0001 Real 2062500 Diff  41.07%
4000000 Baud PS  4 DIV 0x0004 Real 4125000 Diff - 3.13%
             PS 32 DIV 0x0001 Real 2062500 Diff  48.44%

Signed-off-by: Frank Benkert <frank.benkert@avat.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2012-03-08 13:15:50 -08:00
Orjan Friberg
33d2832ab0 USB: gadget: Make g_hid device class conform to spec.
HID devices should specify this in their interface descriptors, not in the
device descriptor. This fixes a "missing hardware id" bug under Windows 7 with
a VIA VL800 (3.0) controller.

Signed-off-by: Orjan Friberg <of@flatfrog.com>
Cc: Felipe Balbi <balbi@ti.com>
Cc: stable <stable@vger.kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2012-03-08 13:11:34 -08:00
Bjørn Mork
3cc3615749 usb: cdc-wdm: adding usb_cdc_wdm_register subdriver support
This driver can be used as a subdriver of another USB driver, allowing
it to export a Device Managment interface consisting of a single interrupt
endpoint with no dedicated USB interface.

Some devices provide a Device Management function combined with a wwan
function in a single USB interface having three endpoints (bulk in/out
+ interrupt).  If the interrupt endpoint is used exclusively for DM
notifications, then this driver can support that as a subdriver
provided that the wwan driver calls the appropriate entry points on
probe, suspend, resume, pre_reset, post_reset and disconnect.

The main driver must have full control over all interface related
settings, including the needs_remote_wakeup flag. A manage_power
function must be provided by the main driver.

A manage_power stub doing direct flag manipulation is used in normal
driver mode.

Signed-off-by: Bjørn Mork <bjorn@mork.no>
Acked-by: Oliver Neukum <oneukum@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2012-03-08 13:06:48 -08:00
Bjørn Mork
b0c1386080 usb: cdc-wdm: adding list lookup indirection
Register all interfaces handled by this driver in a list, getting
rid of the dependency on usb_set_intfdata.  This allows further
generalization and simplification of the probe/create functions.

This is needed to decouple wdm_open from the driver owning the
interface, and it also allows us to share all the code in
wdm_create with drivers unable to do usb_set_intfdata.

Signed-off-by: Bjørn Mork <bjorn@mork.no>
Acked-by: Oliver Neukum <oneukum@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2012-03-08 13:06:48 -08:00
Bjørn Mork
0dffb4862a usb: cdc-wdm: split out reusable parts of probe
Preparing for the addition of subdriver registering as an alternative
to probe for interface-less usage.  This should not change anything
apart from minor code reordering.

Signed-off-by: Bjørn Mork <bjorn@mork.no>
Acked-by: Oliver Neukum <oneukum@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2012-03-08 13:06:48 -08:00
Bruno Thomsen
c1cee1d840 USB: Microchip VID mislabeled as Hornby VID in ftdi_sio.
Microchip VID (0x04d8) was mislabeled as Hornby VID according to USB-IDs.

A Full Speed USB Demo Board PID (0x000a) was mislabeled as
Hornby Elite (an Digital Command Controller Console for model railways).

Most likely the Hornby based their design on
PIC18F87J50 Full Speed USB Demo Board.

Signed-off-by: Bruno Thomsen <bruno.thomsen@gmail.com>
Cc: stable <stable@vger.kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2012-03-08 13:05:47 -08:00
Jingoo Han
88555a63ca USB: ehci-s5p: add DMA burst support
DMA burst support is added to improve performance in EHCI data
transfer. The USB EHCI controller on Exynos SoCs can use INCR16,
INCR8, and INCR4 mode. These modes of INSNREG00 register should
be set in order to enable DMA burst transfer. This feature is
also related to AHB spec.

Signed-off-by: Jingoo Han <jg1.han@samsung.com>
Signed-off-by: Sangwook Lee <sangwook.lee@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2012-03-08 13:05:47 -08:00
Greg Kroah-Hartman
54d20f006c Revert "sysfs: Kill nlink counting."
This reverts commit 524b6c5b39.

It has shown to break userspace tools, which is not acceptable.

Reported-by: Jiri Slaby <jslaby@suse.cz>
Cc: Eric W. Biederman <ebiederm@xmission.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2012-03-08 13:03:10 -08:00
Andrew Vagin
7b60a18da3 uevent: send events in correct order according to seqnum (v3)
The queue handling in the udev daemon assumes that the events are
ordered.

Before this patch uevent_seqnum is incremented under sequence_lock,
than an event is send uner uevent_sock_mutex. I want to say that code
contained a window between incrementing seqnum and sending an event.

This patch locks uevent_sock_mutex before incrementing uevent_seqnum.

v2: delete sequence_lock, uevent_seqnum is protected by uevent_sock_mutex
v3: unlock the mutex before the goto exit

Thanks for Kay for the comments.

Signed-off-by: Andrew Vagin <avagin@openvz.org>
Tested-By: Kay Sievers <kay.sievers@vrfy.org>
Cc: stable <stable@vger.kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2012-03-08 12:56:40 -08:00
Dan Carpenter
58112dfbfe tty: moxa: fix bit test in moxa_start()
This is supposed to be doing a shift before the comparison instead of
just doing a bitwise AND directly.  The current code means the start()
just returns without doing anything.

Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Acked-by: Jiri Slaby <jslaby@suse.cz>
Cc: stable <stable@vger.kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2012-03-08 12:55:48 -08:00
Jiri Slaby
48a7466f4d TTY: isdn/gigaset, use tty_port
Let us port the code to use tty_port. We now use open_count and tty
from there. This allows us also to use tty_port_tty_set with tty
refcounting instead of hand-written locking and logic.

Note that tty and open_count are no longer protected by cs->lock. It is
protected by tty_port->lock. But since all the places where they were
used are now switched to the helpers, we are fine.

Signed-off-by: Jiri Slaby <jslaby@suse.cz>
Cc: Hansjoerg Lipp <hjlipp@web.de>
Acked-by: Tilman Schmidt <tilman@imap.cc>
Cc: <gigaset307x-common@lists.sourceforge.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2012-03-08 12:51:13 -08:00
Jiri Slaby
fc258f8940 TTY: isdn/gigaset, do not set tty->driver_data to NULL
Close the window in open where driver_data is reset to NULL on each
open. It could cause other processes to get invalid retval from the
tty->ops operations because of the checks all over the code.

With this change we may do other cleanups. Now, the only valid check
for tty->driver_data != NULL is in close. This can happen only if open
fails at gigaset_get_cs_by_tty or try_module_get. The rest of checks
in various tty->ops->* are invalid as driver_data cannot be NULL
there. The same holds for cs->open_count. So remove them.

Signed-off-by: Jiri Slaby <jslaby@suse.cz>
Cc: Hansjoerg Lipp <hjlipp@web.de>
Cc: Tilman Schmidt <tilman@imap.cc>
Cc: gigaset307x-common@lists.sourceforge.net
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2012-03-08 12:51:13 -08:00
Jiri Slaby
5dd5bc40f3 TTY: pdc_cons, use tty_port
Instead of digging a tty out of the tty_driver struct, which is not
defined to work, use tty_port properly. This includes proper tty
refcounting even though there is no possible race currently. But we
will need tty_port for tty buffers in the future anyway.

Signed-off-by: Jiri Slaby <jslaby@suse.cz>
Cc: Kyle McMartin <kyle@mcmartin.ca>
Cc: Helge Deller <deller@gmx.de>
Cc: "James E.J. Bottomley" <jejb@parisc-linux.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2012-03-08 12:51:13 -08:00
Jiri Slaby
0b479d54ae TTY: pdc_cons, fix open vs pdc_console_tty_driver race
Assign the pointer to pdc_console_tty_driver (a tty_driver) earlier.
Otherwise the timer may dereference NULL.

Signed-off-by: Jiri Slaby <jslaby@suse.cz>
Cc: Kyle McMartin <kyle@mcmartin.ca>
Cc: Helge Deller <deller@gmx.de>
Cc: "James E.J. Bottomley" <jejb@parisc-linux.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2012-03-08 12:51:13 -08:00
Jiri Slaby
52b762f7a9 TTY: pdc_cons, fix open vs timer race
The timer is initialized too late. tty->open may fire an invalid
timer. So initialize the timer earlier using DEFINE_TIMER.

Signed-off-by: Jiri Slaby <jslaby@suse.cz>
Cc: Kyle McMartin <kyle@mcmartin.ca>
Cc: Helge Deller <deller@gmx.de>
Cc: "James E.J. Bottomley" <jejb@parisc-linux.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2012-03-08 12:51:13 -08:00
Jiri Slaby
e380a81e34 TTY: pdc_cons, fix racy tty test
The tty->count test in the timer was racy. Let's remove the test and
properly delete the timer and wait for the body to finish using _sync
version of del_timer.

Signed-off-by: Jiri Slaby <jslaby@suse.cz>
Cc: Kyle McMartin <kyle@mcmartin.ca>
Cc: Helge Deller <deller@gmx.de>
Cc: "James E.J. Bottomley" <jejb@parisc-linux.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2012-03-08 12:51:13 -08:00
Jiri Slaby
9b937421e8 TTY: amiserial, use tty_port_close_start
Again, no need to duplicate the code. Let's use the helper.

Amiserial changes are only free of compilation errors. I have no
access to the hardware.

Signed-off-by: Jiri Slaby <jslaby@suse.cz>
Cc: Geert Uytterhoeven <geert@linux-m68k.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2012-03-08 12:50:02 -08:00
Jiri Slaby
b8edebe4b8 TTY: amiserial, use tty_port_close_end
Hmm, the code was sleeping with interrupts disabled. This was not
good. Fix this by turning interrupts at an appropriate place. (The
race is protected by CLOSING flag.)

After the move, the code is identical to tty_port_close_end, so use
it!

Signed-off-by: Jiri Slaby <jslaby@suse.cz>
Cc: Geert Uytterhoeven <geert@linux-m68k.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2012-03-08 12:50:02 -08:00