1. 11 8月, 2010 1 次提交
  2. 05 8月, 2010 1 次提交
  3. 21 5月, 2010 1 次提交
    • J
      kgdb,8250,pl011: Return immediately from console poll · f5316b4a
      Jason Wessel 提交于
      The design of the kdb shell requires that every device that can
      provide input to kdb have a polling routine that exits immediately if
      there is no character available.  This is required in order to get the
      page scrolling mechanism working.
      
      Changing the kernel debugger I/O API to require all polling character
      routines to exit immediately if there is no data allows the kernel
      debugger to process multiple input channels.
      
      NO_POLL_CHAR will be the return code to the polling routine when ever
      there is no character available.
      
      CC: linux-serial@vger.kernel.org
      Signed-off-by: NJason Wessel <jason.wessel@windriver.com>
      f5316b4a
  4. 30 3月, 2010 1 次提交
    • T
      include cleanup: Update gfp.h and slab.h includes to prepare for breaking... · 5a0e3ad6
      Tejun Heo 提交于
      include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h
      
      percpu.h is included by sched.h and module.h and thus ends up being
      included when building most .c files.  percpu.h includes slab.h which
      in turn includes gfp.h making everything defined by the two files
      universally available and complicating inclusion dependencies.
      
      percpu.h -> slab.h dependency is about to be removed.  Prepare for
      this change by updating users of gfp and slab facilities include those
      headers directly instead of assuming availability.  As this conversion
      needs to touch large number of source files, the following script is
      used as the basis of conversion.
      
        http://userweb.kernel.org/~tj/misc/slabh-sweep.py
      
      The script does the followings.
      
      * Scan files for gfp and slab usages and update includes such that
        only the necessary includes are there.  ie. if only gfp is used,
        gfp.h, if slab is used, slab.h.
      
      * When the script inserts a new include, it looks at the include
        blocks and try to put the new include such that its order conforms
        to its surrounding.  It's put in the include block which contains
        core kernel includes, in the same order that the rest are ordered -
        alphabetical, Christmas tree, rev-Xmas-tree or at the end if there
        doesn't seem to be any matching order.
      
      * If the script can't find a place to put a new include (mostly
        because the file doesn't have fitting include block), it prints out
        an error message indicating which .h file needs to be added to the
        file.
      
      The conversion was done in the following steps.
      
      1. The initial automatic conversion of all .c files updated slightly
         over 4000 files, deleting around 700 includes and adding ~480 gfp.h
         and ~3000 slab.h inclusions.  The script emitted errors for ~400
         files.
      
      2. Each error was manually checked.  Some didn't need the inclusion,
         some needed manual addition while adding it to implementation .h or
         embedding .c file was more appropriate for others.  This step added
         inclusions to around 150 files.
      
      3. The script was run again and the output was compared to the edits
         from #2 to make sure no file was left behind.
      
      4. Several build tests were done and a couple of problems were fixed.
         e.g. lib/decompress_*.c used malloc/free() wrappers around slab
         APIs requiring slab.h to be added manually.
      
      5. The script was run on all .h files but without automatically
         editing them as sprinkling gfp.h and slab.h inclusions around .h
         files could easily lead to inclusion dependency hell.  Most gfp.h
         inclusion directives were ignored as stuff from gfp.h was usually
         wildly available and often used in preprocessor macros.  Each
         slab.h inclusion directive was examined and added manually as
         necessary.
      
      6. percpu.h was updated not to include slab.h.
      
      7. Build test were done on the following configurations and failures
         were fixed.  CONFIG_GCOV_KERNEL was turned off for all tests (as my
         distributed build env didn't work with gcov compiles) and a few
         more options had to be turned off depending on archs to make things
         build (like ipr on powerpc/64 which failed due to missing writeq).
      
         * x86 and x86_64 UP and SMP allmodconfig and a custom test config.
         * powerpc and powerpc64 SMP allmodconfig
         * sparc and sparc64 SMP allmodconfig
         * ia64 SMP allmodconfig
         * s390 SMP allmodconfig
         * alpha SMP allmodconfig
         * um on x86_64 SMP allmodconfig
      
      8. percpu.h modifications were reverted so that it could be applied as
         a separate patch and serve as bisection point.
      
      Given the fact that I had only a couple of failures from tests on step
      6, I'm fairly confident about the coverage of this conversion patch.
      If there is a breakage, it's likely to be something in one of the arch
      headers which should be easily discoverable easily on most builds of
      the specific arch.
      Signed-off-by: NTejun Heo <tj@kernel.org>
      Guess-its-ok-by: NChristoph Lameter <cl@linux-foundation.org>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: Lee Schermerhorn <Lee.Schermerhorn@hp.com>
      5a0e3ad6
  5. 13 3月, 2010 1 次提交
  6. 03 3月, 2010 1 次提交
  7. 27 2月, 2010 1 次提交
    • M
      SERIAL 8250: Fixes for Alchemy UARTs. · b2b13cdf
      Manuel Lauss 提交于
      Limit the amount of address space claimed for Alchemy serial ports to
      0x1000.  On the Au1300, ports are only 0x1000 apart, and the registers
      only extend to 0x110 at most on all supported alchemy models.
      
      On the Au1300 the autodetect logic no longer works and this makes it
      necessary to specify the port type through platform data.  Because of
      this the MSR quirk needs to be moved outside the autoconfig() function
      which will no longer be called when UPF_FIXED_TYPE is specified.
      Signed-off-by: NManuel Lauss <manuel.lauss@gmail.com>
      Cc: Andrew Morton <akpm@linux-foundation.org>,
      Cc: linux-serial@vger.kernel.org
      Cc: linux-kernel@vger.kernel.org
      Cc: linux-mips@linux-mips.org
      Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
      b2b13cdf
  8. 17 2月, 2010 1 次提交
    • D
      serial: 8250: add serial transmitter fully empty test · bca47613
      Dick Hollenbeck 提交于
      When controlling an industrial radio modem it can be necessary to
      manipulate the handshake lines in order to control the radio modem's
      transmitter, from userspace.
      
      The transmitter should not be turned off before all characters have been
      transmitted.  serial8250_tx_empty() was reporting that all characters were
      transmitted before they actually were.
      
      ===
      
      Discovered in parallel with more testing and analysis by Kees Schoenmakers
      as follows:
      
      I ran into an NetMos 9835 serial pci board which behaves a little
      different than the standard.  This type of expansion board is very common.
      
      "Standard" 8250 compatible devices clear the 'UART_LST_TEMT" bit together
      with the "UART_LSR_THRE" bit when writing data to the device.
      
      The NetMos device does it slightly different
      
      I believe that the TEMT bit is coupled to the shift register.  The problem
      is that after writing data to the device and very quickly after that one
      does call serial8250_tx_empty, it returns the wrong information.
      
      My patch makes the test more robust (and solves the problem) and it does
      not affect the already correct devices.
      
      Alan:
      
        We may yet need to quirk this but now we know which chips we have a
        way to do that should we find this breaks some other 8250 clone with
        dodgy THRE.
      Signed-off-by: NDick Hollenbeck <dick@softplc.com>
      Signed-off-by: NAlan Cox <alan@linux.intel.com>
      Cc: Kees Schoenmakers <k.schoenmakers@sigmae.nl>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Cc: stable <stable@kernel.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      bca47613
  9. 12 12月, 2009 2 次提交
  10. 12 11月, 2009 1 次提交
  11. 02 10月, 2009 1 次提交
  12. 20 9月, 2009 4 次提交
    • A
      serial: move delta_msr_wait into the tty_port · bdc04e31
      Alan Cox 提交于
      This is used by various drivers not just serial and can be extracted
      as commonality
      Signed-off-by: NAlan Cox <alan@linux.intel.com>
      bdc04e31
    • A
      serial: kill off uart_info · ebd2c8f6
      Alan Cox 提交于
      We moved this into uart_state, now move the fields out of the separate
      structure and kill it off.
      Signed-off-by: NAlan Cox <alan@linux.intel.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      ebd2c8f6
    • A
      8250: Now honours baud rate lower bounds · 24d481ec
      Anton Vorontsov 提交于
      A platform clock drives 8250 ports in most SOC systems, the clock
      might run at high frequencies, and so it's not always possible to
      downscale uart clock to a desired value.
      
      Currently the 8250 uart driver accepts not supported baud rates, and
      what is worse, it is doing this silently, and then passes not accepted
      values to a new termios, so userspace has no chance to catch this kind
      of errors (userspace verifies that settings were accepted by reading
      back and comparing the settings).
      
      This patch fixes the issue by passing minimum baud rate to the
      uart_get_baud_rate() call, the call should take care of all bounds,
      so userspace should now report:
      
        # stty -F /dev/ttyS0 speed 300
        115200
        stty: /dev/ttyS0: unable to perform all requested operations
      
      p.s. uart_get_baud_rate() falls back to 9600, which still might be too
           low for some 10 GHz platforms, but that's a separate issue, and
           we can wait with fixing this till we find such a platform.
      Signed-off-by: NAnton Vorontsov <avorontsov@ru.mvista.com>
      Signed-off-by: NAlan Cox <alan@linux.intel.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      24d481ec
    • V
      serial: 8250: add IRQ trigger support · 1c2f0493
      Vikram Pandita 提交于
      There is currently no provision for passing IRQ trigger flags for
      serial IRQs with triggering requirements (such as GPIO IRQs)
      
      This patch adds irqflags to plat_serial8250_port that can be passed
      from board file to reqest_irq() of 8250 driver
      
      Changes are backward compatible with boards passing UPF_SHARE_IRQ flag
      
      Tested on Zoom2 board that has IRQF_TRIGGER_RISING requirement for 8250 irq
      
      [Moved new flag to end to fix bugs in the original with the old_serial array
      	-- Alan]
      Signed-off-by: NVikram Pandita <vikram.pandita@ti.com>
      Signed-off-by: NAlan Cox <alan@linux.intel.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      1c2f0493
  13. 11 6月, 2009 1 次提交
  14. 29 5月, 2009 1 次提交
  15. 21 2月, 2009 1 次提交
    • M
      8250: fix boot hang with serial console when using with Serial Over Lan port · b6adea33
      Mauro Carvalho Chehab 提交于
      Intel 8257x Ethernet boards have a feature called Serial Over Lan.
      
      This feature works by emulating a serial port, and it is detected by
      kernel as a normal 8250 port.  However, this emulation is not perfect, as
      also noticed on changeset 7500b1f6.
      
      Before this patch, the kernel were trying to check if the serial TX is
      capable of work using IRQ's.
      
      This were done with a code similar this:
      
              serial_outp(up, UART_IER, UART_IER_THRI);
              lsr = serial_in(up, UART_LSR);
              iir = serial_in(up, UART_IIR);
              serial_outp(up, UART_IER, 0);
      
              if (lsr & UART_LSR_TEMT && iir & UART_IIR_NO_INT)
      		up->bugs |= UART_BUG_TXEN;
      
      This works fine for other 8250 ports, but, on 8250-emulated SoL port, the
      chip is a little lazy to down UART_IIR_NO_INT at UART_IIR register.
      
      Due to that, UART_BUG_TXEN is sometimes enabled.  However, as TX IRQ keeps
      working, and the TX polling is now enabled, the driver miss-interprets the
      IRQ received later, hanging up the machine until a key is pressed at the
      serial console.
      
      This is the 6 version of this patch.  Previous versions were trying to
      introduce a large enough delay between serial_outp and serial_in(up,
      UART_IIR), but not taking forever.  However, the needed delay couldn't be
      safely determined.
      
      At the experimental tests, a delay of 1us solves most of the cases, but
      still hangs sometimes.  Increasing the delay to 5us was better, but still
      doesn't solve.  A very high delay of 50 ms seemed to work every time.
      
      However, poking around with delays and pray for it to be enough doesn't
      seem to be a good approach, even for a quirk.
      
      So, instead of playing with random large arbitrary delays, let's just
      disable UART_BUG_TXEN for all SoL ports.
      
      [akpm@linux-foundation.org: fix warnings]
      Signed-off-by: NMauro Carvalho Chehab <mchehab@redhat.com>
      Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>
      Cc: <stable@kernel.org>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      b6adea33
  16. 14 1月, 2009 1 次提交
    • H
      fix early_serial_setup() regression · 125c97d8
      Helge Deller 提交于
      Commit b430428a ("8250: Don't clobber
      spinlocks.") introduced a regression on the parisc architecture, which
      broke the handover to the serial port at boottime.
      
      early_serial_setup() was changed to only copy a subset of the uart_port
      fields, and sadly the "type" and "line" fields were forgotten and thus
      the serial port was not initialized and could not be used for a
      handover.  This patch fixes this by copying the missing fields.
      
      As this change to early_serial_setup() doesn't need an initialized
      spinlock in the uart_port struct any longer, we can drop the spinlock
      initialization in the superio driver.
      
      Cc: David Daney <ddaney@caviumnetworks.com>
      Cc: Tomaso Paoletti <tpaoletti@caviumnetworks.com>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>
      Acked-by: NKyle McMartin <kyle@mcmartin.ca>
      Cc: linux-parisc@vger.kernel.org
      Signed-off-by: NHelge Deller <deller@gmx.de>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      125c97d8
  17. 06 1月, 2009 1 次提交
  18. 03 1月, 2009 4 次提交
  19. 16 10月, 2008 2 次提交
  20. 15 10月, 2008 1 次提交
  21. 14 10月, 2008 3 次提交
  22. 06 9月, 2008 2 次提交
  23. 03 9月, 2008 1 次提交
    • W
      8250: improve workaround for UARTs that don't re-assert THRE correctly · 363f66fe
      Will Newton 提交于
      Recent changes to tighten the check for UARTs that don't correctly
      re-assert THRE (01c194d9: "serial 8250:
      tighten test for using backup timer") caused problems when such a UART was
      opened for the second time - the bug could only successfully be detected
      at first initialization.  For users of this version of this particular
      UART IP it is fatal.
      
      This patch stores the information about the bug in the bugs field of the
      port structure when the port is first started up so subsequent opens can
      check this bit even if the test for the bug fails.
      
      David Brownell: "My own exposure to this is that the UART on DaVinci
      hardware, which TI allegedly derived from its original 16550 logic, has
      periodically gone from working to unusable with the mainline 8250.c ...
      and back and forth a bunch.  Currently it's "unusable", a regression from
      some previous versions.  With this patch from Will, it's usable."
      Signed-off-by: NWill Newton <will.newton@gmail.com>
      Acked-by: NAlex Williamson <alex.williamson@hp.com>
      Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>
      Cc: David Brownell <david-b@pacbell.net>
      Cc: <stable@kernel.org>		[2.6.26.x]
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      363f66fe
  24. 31 7月, 2008 1 次提交
  25. 25 7月, 2008 1 次提交
  26. 23 7月, 2008 1 次提交
    • A
      serial: 8250: fix shared interrupts issues with SMP and RT kernels · 768aec0b
      Anton Vorontsov 提交于
      With SMP kernels _irqsave spinlock disables only local interrupts, while
      the shared serial interrupt could be assigned to the CPU that is not
      currently starting up the serial port.
      
      This might cause issues because serial8250_startup() routine issues
      IRQ-triggering operations before registering the port in the IRQ chain
      (though, this is fine to do and done explicitly because we don't want to
      process any interrupts on the port startup).
      
      With RT kernels and preemptable hardirqs, _irqsave spinlock does not
      disable local hardirqs, and the bug could be reproduced much easily:
      
      $ cat /dev/ttyS0 &
      $ cat /dev/ttyS1
      irq 42: nobody cared (try booting with the "irqpoll" option)
      Call Trace:
      [C0475EB0] [C0008A98] show_stack+0x4c/0x1ac (unreliable)
      [C0475EF0] [C004BBD4] __report_bad_irq+0x34/0xb8
      [C0475F10] [C004BD38] note_interrupt+0xe0/0x308
      [C0475F50] [C004B09C] thread_simple_irq+0xdc/0x104
      [C0475F70] [C004B3FC] do_irqd+0x338/0x3c8
      [C0475FC0] [C00398E0] kthread+0xf8/0x100
      [C0475FF0] [C0011FE0] original_kernel_thread+0x44/0x60
      handlers:
      [<c02112c4>] (serial8250_interrupt+0x0/0x138)
      Disabling IRQ #42
      
      After this, all serial ports on the given IRQ are non-functional.
      
      To fix the issue we should explicitly disable shared IRQ before
      issuing any IRQ-triggering operations.
      
      I also changed spin_lock_irqsave to the ordinary spin_lock, since it
      seems to be safe: chain does not contain new port (yet), thus nobody
      will interfere us from the ISRs.
      Signed-off-by: NAnton Vorontsov <avorontsov@ru.mvista.com>
      Signed-off-by: NAlan Cox <alan@redhat.com>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      768aec0b
  27. 21 7月, 2008 2 次提交
  28. 13 7月, 2008 1 次提交