1. 08 5月, 2012 3 次提交
    • G
      USB: serial: remove usb_serial_disconnect call in all drivers · 32078f91
      Greg Kroah-Hartman 提交于
      This is now set by the usb-serial core, no need for the driver to
      individually set it.
      
      Thanks to Alan Stern for the idea to get rid of it.
      
      Cc: William Greathouse <wgreathouse@smva.com>
      Cc: Matthias Bruestle and Harald Welte <support@reiner-sct.com>
      Cc: Lonnie Mendez <dignome@gmail.com>
      Cc: Peter Berger <pberger@brimson.com>
      Cc: Al Borchers <alborchers@steinerpoint.com>
      Cc: Gary Brubaker <xavyer@ix.netcom.com>
      Cc: Oliver Neukum <oliver@neukum.name>
      Cc: Matthias Urlichs <smurf@smurf.noris.de>
      Cc: Support Department <support@connecttech.com>
      Cc: Rusty Russell <rusty@rustcorp.com.au>
      Cc: Alan Stern <stern@rowland.harvard.edu>
      Cc: Mauro Carvalho Chehab <mchehab@redhat.com>
      Cc: Kautuk Consul <consul.kautuk@gmail.com>
      Cc: Bill Pemberton <wfp5p@virginia.edu>
      Cc: Paul Gortmaker <paul.gortmaker@windriver.com>
      Cc: Bart Hartgers <bart.hartgers@gmail.com>
      Cc: Johan Hovold <jhovold@gmail.com>
      Cc: Preston Fick <preston.fick@silabs.com>
      Cc: Uwe Bonnes <bon@elektron.ikp.physik.tu-darmstadt.de>
      Cc: Simon Arlott <simon@fire.lp0.eu>
      Cc: Andrew Worsley <amworsley@gmail.com>
      Cc: "Michał Wróbel" <michal.wrobel@flytronic.pl>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Cc: Eric Dumazet <eric.dumazet@gmail.com>
      Cc: "Eric W. Biederman" <ebiederm@xmission.com>
      Cc: Felipe Balbi <balbi@ti.com>
      Cc: Aleksey Babahin <tamerlan311@gmail.com>
      Cc: Dan Carpenter <error27@gmail.com>
      Cc: Jiri Kosina <jkosina@suse.cz>
      Cc: Donald Lee <donald@asix.com.tw>
      Cc: Julia Lawall <julia@diku.dk>
      Cc: Michal Sroczynski <msroczyn@gmail.com>
      Cc: Wang YanQing <Udknight@gmail.com>
      Cc: Dan Williams <dcbw@redhat.com>
      Cc: Thomas Tuttle <ttuttle@chromium.org>
      Cc: Rigbert Hamisch <rigbert@gmx.de>
      Cc: "Rafael J. Wysocki" <rjw@sisk.pl>
      Cc: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
      Cc: Jesper Juhl <jj@chaosbits.net>
      Cc: Adhir Ramjiawan <adhirramjiawan0@gmail.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      32078f91
    • G
      USB: serial: remove usb_serial_probe call in all drivers · 5026bb07
      Greg Kroah-Hartman 提交于
      This is now set by the usb-serial core, no need for the driver to
      individually set it.
      
      Thanks to Alan Stern for the idea to get rid of it.
      
      Cc: William Greathouse <wgreathouse@smva.com>
      Cc: Matthias Bruestle and Harald Welte <support@reiner-sct.com>
      Cc: Lonnie Mendez <dignome@gmail.com>
      Cc: Peter Berger <pberger@brimson.com>
      Cc: Al Borchers <alborchers@steinerpoint.com>
      Cc: Gary Brubaker <xavyer@ix.netcom.com>
      Cc: Oliver Neukum <oliver@neukum.name>
      Cc: Matthias Urlichs <smurf@smurf.noris.de>
      Cc: Support Department <support@connecttech.com>
      Cc: Rusty Russell <rusty@rustcorp.com.au>
      Cc: Alan Stern <stern@rowland.harvard.edu>
      Cc: Mauro Carvalho Chehab <mchehab@redhat.com>
      Cc: Kautuk Consul <consul.kautuk@gmail.com>
      Cc: Bill Pemberton <wfp5p@virginia.edu>
      Cc: Paul Gortmaker <paul.gortmaker@windriver.com>
      Cc: Bart Hartgers <bart.hartgers@gmail.com>
      Cc: Johan Hovold <jhovold@gmail.com>
      Cc: Preston Fick <preston.fick@silabs.com>
      Cc: Uwe Bonnes <bon@elektron.ikp.physik.tu-darmstadt.de>
      Cc: Simon Arlott <simon@fire.lp0.eu>
      Cc: Andrew Worsley <amworsley@gmail.com>
      Cc: "Michał Wróbel" <michal.wrobel@flytronic.pl>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Cc: Eric Dumazet <eric.dumazet@gmail.com>
      Cc: "Eric W. Biederman" <ebiederm@xmission.com>
      Cc: Felipe Balbi <balbi@ti.com>
      Cc: Aleksey Babahin <tamerlan311@gmail.com>
      Cc: Dan Carpenter <error27@gmail.com>
      Cc: Jiri Kosina <jkosina@suse.cz>
      Cc: Donald Lee <donald@asix.com.tw>
      Cc: Julia Lawall <julia@diku.dk>
      Cc: Michal Sroczynski <msroczyn@gmail.com>
      Cc: Wang YanQing <Udknight@gmail.com>
      Cc: Dan Williams <dcbw@redhat.com>
      Cc: Thomas Tuttle <ttuttle@chromium.org>
      Cc: Rigbert Hamisch <rigbert@gmx.de>
      Cc: "Rafael J. Wysocki" <rjw@sisk.pl>
      Cc: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
      Cc: Jesper Juhl <jj@chaosbits.net>
      Cc: Adhir Ramjiawan <adhirramjiawan0@gmail.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      5026bb07
    • A
      usb-serial: ftdi_sio: fix oops during autosuspend · 5cbe61c5
      Alan Stern 提交于
      This patch (as1550) fixes a bug in the usb-serial core that affects
      the ftdi_sio driver and most likely others as well.  The core
      implements suspend and resume routines, but it doesn't store pointers
      to those routines in the usb_driver structures that it registers,
      even though it does set those drivers' supports_autosuspend flag.  The
      end result is that when one of these devices is autosuspended, we try
      to call through a NULL pointer.
      
      The patch fixes the problem by setting the suspend and resume method
      pointers to the appropriate routines in the USB serial core, along
      with the supports_autosuspend field, in each driver as it is
      registered.
      
      This should be back-ported to all the stable kernels that have the new
      usb_serial_register_drivers() interface.
      Signed-off-by: NAlan Stern <stern@rowland.harvard.edu>
      Reported-and-tested-by: NFrank Schäfer <schaefer.frank@gmx.net>
      Cc: stable <stable@vger.kernel.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      5cbe61c5
  2. 26 4月, 2012 1 次提交
  3. 11 4月, 2012 1 次提交
    • J
      USB: serial: fix race between probe and open · a65a6f14
      Johan Hovold 提交于
      Fix race between probe and open by making sure that the disconnected
      flag is not cleared until all ports have been registered.
      
      A call to tty_open while probe is running may get a reference to the
      serial structure in serial_install before its ports have been
      registered. This may lead to usb_serial_core calling driver open before
      port is fully initialised.
      
      With ftdi_sio this result in the following NULL-pointer dereference as
      the private data has not been initialised at open:
      
      [  199.698286] IP: [<f811a089>] ftdi_open+0x59/0xe0 [ftdi_sio]
      [  199.698297] *pde = 00000000
      [  199.698303] Oops: 0000 [#1] PREEMPT SMP
      [  199.698313] Modules linked in: ftdi_sio usbserial
      [  199.698323]
      [  199.698327] Pid: 1146, comm: ftdi_open Not tainted 3.2.11 #70 Dell Inc. Vostro 1520/0T816J
      [  199.698339] EIP: 0060:[<f811a089>] EFLAGS: 00010286 CPU: 0
      [  199.698344] EIP is at ftdi_open+0x59/0xe0 [ftdi_sio]
      [  199.698348] EAX: 0000003e EBX: f5067000 ECX: 00000000 EDX: 80000600
      [  199.698352] ESI: f48d8800 EDI: 00000001 EBP: f515dd54 ESP: f515dcfc
      [  199.698356]  DS: 007b ES: 007b FS: 00d8 GS: 0033 SS: 0068
      [  199.698361] Process ftdi_open (pid: 1146, ti=f515c000 task=f481e040 task.ti=f515c000)
      [  199.698364] Stack:
      [  199.698368]  f811a9fe f811a9e0 f811b3ef 00000000 00000000 00001388 00000000 f4a86800
      [  199.698387]  00000002 00000000 f806e68e 00000000 f532765c f481e040 00000246 22222222
      [  199.698479]  22222222 22222222 22222222 f5067004 f5327600 f5327638 f515dd74 f806e6ab
      [  199.698496] Call Trace:
      [  199.698504]  [<f806e68e>] ? serial_activate+0x2e/0x70 [usbserial]
      [  199.698511]  [<f806e6ab>] serial_activate+0x4b/0x70 [usbserial]
      [  199.698521]  [<c126380c>] tty_port_open+0x7c/0xd0
      [  199.698527]  [<f806e660>] ? serial_set_termios+0xa0/0xa0 [usbserial]
      [  199.698534]  [<f806e76f>] serial_open+0x2f/0x70 [usbserial]
      [  199.698540]  [<c125d07c>] tty_open+0x20c/0x510
      [  199.698546]  [<c10e9eb7>] chrdev_open+0xe7/0x230
      [  199.698553]  [<c10e48f2>] __dentry_open+0x1f2/0x390
      [  199.698559]  [<c144bfec>] ? _raw_spin_unlock+0x2c/0x50
      [  199.698565]  [<c10e4b76>] nameidata_to_filp+0x66/0x80
      [  199.698570]  [<c10e9dd0>] ? cdev_put+0x20/0x20
      [  199.698576]  [<c10f3e08>] do_last+0x198/0x730
      [  199.698581]  [<c10f4440>] path_openat+0xa0/0x350
      [  199.698587]  [<c10f47d5>] do_filp_open+0x35/0x80
      [  199.698593]  [<c144bfec>] ? _raw_spin_unlock+0x2c/0x50
      [  199.698599]  [<c10ff110>] ? alloc_fd+0xc0/0x100
      [  199.698605]  [<c10f0b72>] ? getname_flags+0x72/0x120
      [  199.698611]  [<c10e4450>] do_sys_open+0xf0/0x1c0
      [  199.698617]  [<c11fcc08>] ? trace_hardirqs_on_thunk+0xc/0x10
      [  199.698623]  [<c10e458e>] sys_open+0x2e/0x40
      [  199.698628]  [<c144c990>] sysenter_do_call+0x12/0x36
      [  199.698632] Code: 85 89 00 00 00 8b 16 8b 4d c0 c1 e2 08 c7 44 24 14 88 13 00 00 81 ca 00 00 00 80 c7 44 24 10 00 00 00 00 c7 44 24 0c 00 00 00 00 <0f> b7 41 78 31 c9 89 44 24 08 c7 44 24 04 00 00 00 00 c7 04 24
      [  199.698884] EIP: [<f811a089>] ftdi_open+0x59/0xe0 [ftdi_sio] SS:ESP 0068:f515dcfc
      [  199.698893] CR2: 0000000000000078
      [  199.698925] ---[ end trace 77c43ec023940cff ]---
      Reported-and-tested-by: NKen Huang <csuhgw@gmail.com>
      Cc: stable <stable@vger.kernel.org>
      Signed-off-by: NJohan Hovold <jhovold@gmail.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      a65a6f14
  4. 10 4月, 2012 1 次提交
    • A
      USB: fix bug in serial driver unregistration · 891a3b1f
      Alan Stern 提交于
      This patch (as1536) fixes a bug in the USB serial core.  Unloading and
      reloading a serial driver while a serial device is plugged in causes
      errors because of the code in usb_serial_disconnect() that tries to
      make sure the port_remove method is called.  With the new order of
      driver registration introduced in the 3.4 kernel, this is definitely
      not the right thing to do (if indeed it ever was).
      
      The patch removes that whole section code, along with the mechanism
      for keeping track of each port's registration state, which is no
      longer needed.  The driver core can handle all that stuff for us.
      
      Note: This has been tested only with one or two USB serial drivers.
      In theory, other drivers might still run into trouble.  But if they
      do, it will be the fault of the drivers, not of this patch -- that is,
      the drivers will need to be fixed.
      Signed-off-by: NAlan Stern <stern@rowland.harvard.edu>
      Reported-and-tested-by: NJohan Hovold <jhovold@gmail.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      891a3b1f
  5. 09 3月, 2012 1 次提交
  6. 25 2月, 2012 2 次提交
    • G
      USB: serial: remove usb_serial_register and usb_serial_deregister · f799e767
      Greg Kroah-Hartman 提交于
      No one uses them anymore, they should be using the safer
      usb_serial_register_drivers() and usb_serial_deregister_drivers()
      functions instead.
      
      Thanks to Alan Stern for writing these functions and porting all
      in-kernel users to them.
      
      Cc: Alan Stern <stern@rowland.harvard.edu>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      f799e767
    • A
      usb-serial: new API for driver registration · 765e0ba6
      Alan Stern 提交于
      This patch (as1522) adds two new routines to the usb-serial core, for
      registering and unregistering serial drivers.  Instead of registering
      the usb_driver and usb_serial_drivers separately, with error checking
      for each one, the drivers can all be registered and unregistered by a
      single function call.  This reduces duplicated code.
      
      More importantly, the new core routines change the order in which the
      drivers are registered.  Currently the usb-serial drivers are all
      registered first and the usb_driver is done last, which leaves a
      window for problems.  A udev script may quickly add a new dynamic-ID
      for a usb-serial driver, causing the corresponding usb_driver to be
      probed.  If the usb_driver hasn't been registered yet then an oops
      will occur.
      
      The new routine prevents such problems by registering the usb_driver
      first.  To insure that it gets probed properly for already-attached
      serial devices, we call driver_attach() after all the usb-serial
      drivers have been registered.
      
      Along with adding the new routines, the patch modifies the "generic"
      serial driver to use them.  Further patches will similarly modify all
      the other in-tree USB serial drivers.
      Signed-off-by: NAlan Stern <stern@rowland.harvard.edu>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      765e0ba6
  7. 03 2月, 2012 1 次提交
  8. 13 1月, 2012 1 次提交
  9. 27 11月, 2011 1 次提交
  10. 16 11月, 2011 5 次提交
  11. 24 8月, 2011 1 次提交
    • K
      USB: use usb_endpoint_maxp() instead of le16_to_cpu() · 29cc8897
      Kuninori Morimoto 提交于
      Now ${LINUX}/drivers/usb/* can use usb_endpoint_maxp(desc) to get maximum packet size
      instead of le16_to_cpu(desc->wMaxPacketSize).
      This patch fix it up
      
      Cc: Armin Fuerst <fuerst@in.tum.de>
      Cc: Pavel Machek <pavel@ucw.cz>
      Cc: Johannes Erdfelt <johannes@erdfelt.com>
      Cc: Vojtech Pavlik <vojtech@suse.cz>
      Cc: Oliver Neukum <oliver@neukum.name>
      Cc: David Kubicek <dave@awk.cz>
      Cc: Johan Hovold <jhovold@gmail.com>
      Cc: Brad Hards <bhards@bigpond.net.au>
      Acked-by: NFelipe Balbi <balbi@ti.com>
      Cc: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
      Cc: Thomas Dahlmann <dahlmann.thomas@arcor.de>
      Cc: David Brownell <david-b@pacbell.net>
      Cc: David Lopo <dlopo@chipidea.mips.com>
      Cc: Alan Stern <stern@rowland.harvard.edu>
      Cc: Michal Nazarewicz <m.nazarewicz@samsung.com>
      Cc: Xie Xiaobo <X.Xie@freescale.com>
      Cc: Li Yang <leoli@freescale.com>
      Cc: Jiang Bo <tanya.jiang@freescale.com>
      Cc: Yuan-hsin Chen <yhchen@faraday-tech.com>
      Cc: Darius Augulis <augulis.darius@gmail.com>
      Cc: Xiaochen Shen <xiaochen.shen@intel.com>
      Cc: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
      Cc: OKI SEMICONDUCTOR, <toshiharu-linux@dsn.okisemi.com>
      Cc: Robert Jarzmik <robert.jarzmik@free.fr>
      Cc: Ben Dooks <ben@simtec.co.uk>
      Cc: Thomas Abraham <thomas.ab@samsung.com>
      Cc: Herbert Pötzl <herbert@13thfloor.at>
      Cc: Arnaud Patard <arnaud.patard@rtp-net.org>
      Cc: Roman Weissgaerber <weissg@vienna.at>
      Acked-by: NSarah Sharp <sarah.a.sharp@linux.intel.com>
      Cc: Tony Olech <tony.olech@elandigitalsystems.com>
      Cc: Florian Floe Echtler <echtler@fs.tum.de>
      Cc: Christian Lucht <lucht@codemercs.com>
      Cc: Juergen Stuber <starblue@sourceforge.net>
      Cc: Georges Toth <g.toth@e-biz.lu>
      Cc: Bill Ryder <bryder@sgi.com>
      Cc: Kuba Ober <kuba@mareimbrium.org>
      Cc: Inaky Perez-Gonzalez <inaky.perez-gonzalez@intel.com>
      Signed-off-by: NKuninori Morimoto <kuninori.morimoto.gx@renesas.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      29cc8897
  12. 26 2月, 2011 1 次提交
    • A
      USB: serial drivers need to use larger bulk-in buffers · 969e3033
      Alan Stern 提交于
      When a driver doesn't know how much data a device is going to send,
      the buffer size should be at least as big as the endpoint's maxpacket
      value.  The serial drivers don't follow this rule; many of them
      request only 256-byte bulk-in buffers.  As a result, they suffer
      overflow errors if a high-speed device wants to send a lot of data,
      because high-speed bulk endpoints are required to have a maxpacket
      size of 512.
      
      This patch (as1450) fixes the problem by using the driver's
      bulk_in_size value as a minimum, always allocating buffers no smaller
      than the endpoint's maxpacket size.
      Signed-off-by: NAlan Stern <stern@rowland.harvard.edu>
      Tested-by: NFlynn Marquardt <flynn@flynnux.de>
      CC: <stable@kernel.org> [after .39-rc1 is out]
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      969e3033
  13. 18 2月, 2011 4 次提交
  14. 23 1月, 2011 1 次提交
  15. 01 12月, 2010 1 次提交
  16. 18 11月, 2010 1 次提交
  17. 23 10月, 2010 1 次提交
    • A
      tty: Make tiocgicount a handler · d281da7f
      Alan Cox 提交于
      Dan Rosenberg noted that various drivers return the struct with uncleared
      fields. Instead of spending forever trying to stomp all the drivers that
      get it wrong (and every new driver) do the job in one place.
      
      This first patch adds the needed operations and hooks them up, including
      the needed USB midlayer and serial core plumbing.
      Signed-off-by: NAlan Cox <alan@linux.intel.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      d281da7f
  18. 24 8月, 2010 1 次提交
    • M
      USB: serial: fix leak of usb serial module refrence count · d92a3ca6
      Ming Lei 提交于
      The patch with title below makes reference count of usb serial module
      always more than one after driver is bound.
      
      	USB-BKL: Remove BKL use for usb serial driver probing
      
      In fact, the patch above only replaces lock_kernel() with try_module_get()
      , and does not use module_put() to do what unlock_kernel() did, so casue leak
      of reference count of usb serial module and the module can not be unloaded
      after serial driver is bound with device.
      
      This patch fixes the issue, also simplifies such things:
      	-only call try_module_get() once in the entry of usb_serial_probe()
      	-only call module_put() once in the exit of usb_serial_probe
      Signed-off-by: NMing Lei <tom.leiming@gmail.com>
      Cc: Johan Hovold <jhovold@gmail.com>
      Cc: Andi Kleen <ak@linux.intel.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      d92a3ca6
  19. 11 8月, 2010 2 次提交
  20. 21 5月, 2010 5 次提交
    • J
      USB: serial: reimplement generic fifo-based writes · 27c7acf2
      Johan Hovold 提交于
      Reimplement fifo-based writes in the generic driver using a multiple
      pre-allocated urb scheme.
      
      In contrast to multi-urb writes, no allocations (of urbs or buffers) are
      made during run-time and there is less pressure on the host stack
      queues as currently only two urbs are used (implementation is generic
      and can handle more than two urbs as well, though).
      
      Initial tests using ftdi_sio show that the implementation achieves the
      same (maximum) throughput at high baudrates as multi-urb writes. The CPU
      usage is much lower than for multi-urb writes for small write requests
      and only slightly higher for large (e.g. 2k) requests (due to extra copy
      via fifo?).
      
      Also outperforms multi-urb writes for small write requests on an
      embedded arm-9 system, where multi-urb writes are CPU-bound at high
      baudrates (perf reveals that a lot of time is spent in the host stack
      enqueue function -- could perhaps be a bug as well).
      
      Keeping the original write_urb, buffer and flag for now as there are
      other drivers depending on them.
      Signed-off-by: NJohan Hovold <jhovold@gmail.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      27c7acf2
    • J
      USB: serial: generalise write buffer preparation · eaa3bcb0
      Johan Hovold 提交于
      Generalise write buffer preparation.
      
      This allows for drivers to manipulate (e.g. add headers) to bulk out
      data before it is sent.
      
      This adds a new function pointer to usb_serial_driver:
      
      int (*prepare_write_buffer)(struct usb_serial_port *port,
      		void **dest, size_t size, const void *src, size_t count);
      
      The function is generic and can be used with either kfifo-based or
      multi-urb writes:
      
      If *dest is NULL the implementation should allocate dest.
      If src is NULL the implementation should use the port write fifo.
      
      If not set, a generic implementation is used which simply uses memcpy or
      kfifo_out.
      Signed-off-by: NJohan Hovold <jhovold@gmail.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      eaa3bcb0
    • J
      USB: serial: generalise generic read implementation · 23154320
      Johan Hovold 提交于
      Add process_read_urb to usb_serial_driver so that a driver can rely on
      the generic read (and throttle) mechanism but still do device specific
      processing of incoming data (such as adding tty_flags before pushing to
      line discipline).
      
      The default generic implementation handles sysrq for consoles but
      otherwise simply pushes to tty.
      Signed-off-by: NJohan Hovold <jhovold@gmail.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      23154320
    • J
      USB: serial: allow drivers to define bulk buffer sizes · bbcb2b90
      Johan Hovold 提交于
      Allow drivers to define custom bulk in/out buffer sizes in struct
      usb_serial_driver. If not set, fall back to the default buffer size
      which matches the endpoint size.
      
      Three drivers are currently freeing the pre-allocated buffers and
      allocating larger ones to achieve this at port probe (ftdi_sio) or even
      at port open (ipaq and iuu_phoenix), which needless to say is suboptimal.
      Signed-off-by: NJohan Hovold <jhovold@gmail.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      bbcb2b90
    • J
      usb-serial: Use tty_port version console instead of usb_serial_port · bd5afa9e
      Jason Wessel 提交于
      Replace all instances of using the console variable in struct
      usb_serial_port with the struct tty_port version.
      
      CC: Alan Cox <alan@linux.intel.com>
      CC: Alan Stern <stern@rowland.harvard.edu>
      CC: Oliver Neukum <oliver@neukum.org>
      CC: Andrew Morton <akpm@linux-foundation.org>
      CC: linux-usb@vger.kernel.org
      CC: linux-kernel@vger.kernel.org
      Signed-off-by: NJason Wessel <jason.wessel@windriver.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      bd5afa9e
  21. 03 3月, 2010 2 次提交
  22. 24 12月, 2009 1 次提交
  23. 23 12月, 2009 2 次提交
    • S
      kfifo: move out spinlock · c1e13f25
      Stefani Seibold 提交于
      Move the pointer to the spinlock out of struct kfifo.  Most users in
      tree do not actually use a spinlock, so the few exceptions now have to
      call kfifo_{get,put}_locked, which takes an extra argument to a
      spinlock.
      Signed-off-by: NStefani Seibold <stefani@seibold.net>
      Acked-by: NGreg Kroah-Hartman <gregkh@suse.de>
      Acked-by: NMauro Carvalho Chehab <mchehab@redhat.com>
      Acked-by: NAndi Kleen <ak@linux.intel.com>
      Acked-by: NArnd Bergmann <arnd@arndb.de>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      c1e13f25
    • S
      kfifo: move struct kfifo in place · 45465487
      Stefani Seibold 提交于
      This is a new generic kernel FIFO implementation.
      
      The current kernel fifo API is not very widely used, because it has to
      many constrains.  Only 17 files in the current 2.6.31-rc5 used it.
      FIFO's are like list's a very basic thing and a kfifo API which handles
      the most use case would save a lot of development time and memory
      resources.
      
      I think this are the reasons why kfifo is not in use:
      
       - The API is to simple, important functions are missing
       - A fifo can be only allocated dynamically
       - There is a requirement of a spinlock whether you need it or not
       - There is no support for data records inside a fifo
      
      So I decided to extend the kfifo in a more generic way without blowing up
      the API to much.  The new API has the following benefits:
      
       - Generic usage: For kernel internal use and/or device driver.
       - Provide an API for the most use case.
       - Slim API: The whole API provides 25 functions.
       - Linux style habit.
       - DECLARE_KFIFO, DEFINE_KFIFO and INIT_KFIFO Macros
       - Direct copy_to_user from the fifo and copy_from_user into the fifo.
       - The kfifo itself is an in place member of the using data structure, this save an
         indirection access and does not waste the kernel allocator.
       - Lockless access: if only one reader and one writer is active on the fifo,
         which is the common use case, no additional locking is necessary.
       - Remove spinlock - give the user the freedom of choice what kind of locking to use if
         one is required.
       - Ability to handle records. Three type of records are supported:
         - Variable length records between 0-255 bytes, with a record size
           field of 1 bytes.
         - Variable length records between 0-65535 bytes, with a record size
           field of 2 bytes.
         - Fixed size records, which no record size field.
       - Preserve memory resource.
       - Performance!
       - Easy to use!
      
      This patch:
      
      Since most users want to have the kfifo as part of another object,
      reorganize the code to allow including struct kfifo in another data
      structure.  This requires changing the kfifo_alloc and kfifo_init
      prototypes so that we pass an existing kfifo pointer into them.  This
      patch changes the implementation and all existing users.
      
      [akpm@linux-foundation.org: fix warning]
      Signed-off-by: NStefani Seibold <stefani@seibold.net>
      Acked-by: NGreg Kroah-Hartman <gregkh@suse.de>
      Acked-by: NMauro Carvalho Chehab <mchehab@redhat.com>
      Acked-by: NAndi Kleen <ak@linux.intel.com>
      Acked-by: NArnd Bergmann <arnd@arndb.de>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      45465487