1. 01 11月, 2011 1 次提交
  2. 25 10月, 2011 1 次提交
  3. 20 10月, 2011 1 次提交
    • D
      TTY: serial_core: Fix crash if DCD drop during suspend · d208a3bf
      Doug Anderson 提交于
      This crash was showing up 100% of the time on Tegra CPUs when an
      agetty was running on the serial port and the console was not running
      on the serial port.  The reason the Tegra saw it so reliably is that
      the Tegra CPU internally ties DTR to DCD/DSR.  That means when we
      dropped DTR during suspend we would get always get an immediate DCD
      drop.
      
      The specific order of operations that were running:
      * uart_suspend_port() would be called to put the uart in suspend mode
      * we'd drop DTR (ops->set_mctrl(uport, 0)).
      * the DTR drop would be looped back in the CPU to be a DCD drop.
      * the DCD drop would look to the serial driver as a hangup
      * the hangup would call uart_shutdown()
      * ... suspend / resume happens ...
      * uart_resume_port() would be called and run the code in the
        (port->flags & ASYNC_SUSPENDED) block, which would startup the port
        (and enable tx again).
      * Since the UART would be available for tx, we'd immediately get
        an interrupt, eventually calling transmit_chars()
      * The transmit_chars() function would crash.  The first crash would
        be a dereference of a NULL tty member, but since the port has been
        shutdown that was just a symptom.
      
      I have proposed a patch that would fix the Tegra CPUs here (see
      https://lkml.org/lkml/2011/10/11/444 - tty/serial: Prevent drop of DCD
      on suspend for Tegra UARTs).  However, even with that fix it is still
      possible for systems that have an externally visible DCD line to see a
      crash if the DCD drops at just the right time during suspend: thus
      this patch is still useful.
      Signed-off-by: NDoug Anderson <dianders@chromium.org>
      Acked-by: NAlan Cox <alan@linux.intel.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      d208a3bf
  4. 19 10月, 2011 13 次提交
  5. 17 10月, 2011 1 次提交
    • H
      PM / VT: Cleanup #if defined uglyness and fix compile error · 37cce26b
      H Hartley Sweeten 提交于
      Introduce the config option CONFIG_VT_CONSOLE_SLEEP in order to cleanup
      the #if defined ugliness for the vt suspend support functions. Note that
      CONFIG_VT_CONSOLE is already dependant on CONFIG_VT.
      
      The function pm_set_vt_switch is actually dependant on CONFIG_VT and not
      CONFIG_PM_SLEEP. This fixes a compile error when CONFIG_PM_SLEEP is
      not set:
      
      drivers/tty/vt/vt_ioctl.c:1794: error: redefinition of 'pm_set_vt_switch'
      include/linux/suspend.h:17: error: previous definition of 'pm_set_vt_switch' was here
      
      Also, remove the incorrect path from the comment in console.c.
      
      [rjw: Replaced #if defined() with #ifdef in suspend.h.]
      Signed-off-by: NH Hartley Sweeten <hsweeten@visionengravers.com>
      Acked-by: NArnd Bergmann <arnd@arndb.de>
      Signed-off-by: NRafael J. Wysocki <rjw@sisk.pl>
      37cce26b
  6. 13 10月, 2011 1 次提交
  7. 06 10月, 2011 1 次提交
    • G
      devicetree: fix build error on drivers/tty/serial/altera_jtaguart.c · 6b3754d6
      Grant Likely 提交于
      This patch fixes the following build error caused by commit
      85888069 ("tty: use of_match_ptr() for of_match_table entry").
      The problem was a missing #include <linux/of.h> which is where
      of_match_ptr() is defined.
      
      drivers/tty/serial/altera_jtaguart.c:483:3: error: implicit declaration of function 'of_match_ptr' [-Werror=implicit-function-declaration]
      drivers/tty/serial/altera_jtaguart.c:483:34: error: 'altera_jtaguart_match' undeclared here (not in a function)
      Signed-off-by: NGrant Likely <grant.likely@secretlab.ca>
      Cc: Ben Dooks <ben-linux@fluff.org>
      Cc: Tobias Klauser <tklauser@distanz.ch> (maintainer:ALTERA UART/JTAG...)
      Cc: Alan Cox <alan@linux.intel.com> (maintainer:SERIAL DRIVERS)
      6b3754d6
  8. 30 9月, 2011 2 次提交
  9. 27 9月, 2011 7 次提交
  10. 23 9月, 2011 12 次提交
    • Y
      TTY: irq: Remove IRQF_DISABLED · 9cfb5c05
      Yong Zhang 提交于
      Since commit [e58aa3d2: genirq: Run irq handlers with interrupts disabled],
      We run all interrupt handlers with interrupts disabled
      and we even check and yell when an interrupt handler
      returns with interrupts enabled (see commit [b738a50a:
      genirq: Warn when handler enables interrupts]).
      
      So now this flag is a NOOP and can be removed.
      Signed-off-by: NYong Zhang <yong.zhang0@gmail.com>
      Acked-by: NTobias Klauser <tklauser@distanz.ch>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      9cfb5c05
    • N
      serial-core: power up uart port early before we do set_termios when resuming · 94abc56f
      Ning Jiang 提交于
      The following patch removed uart_change_pm() in uart_resume_port():
      
      commit 5933a161
      Author: Yin Kangkai <kangkai.yin@linux.intel.com>
          serial-core: reset the console speed on resume
      
      It will break the pxa serial driver when the system resumes from suspend mode
      as it will try to set baud rate divider register in set_termios but with
      clock off. The register value can not be set correctly on some platform if
      the clock is disabled. The pxa driver will check the value and report the
      following warning:
      
      ------------[ cut here ]------------
      WARNING: at drivers/tty/serial/pxa.c:545 serial_pxa_set_termios+0x1dc/0x250()
      Modules linked in:
      [<c0281f30>] (unwind_backtrace+0x0/0xf0) from [<c029341c>] (warn_slowpath_common+0x4c/0x64)
      [<c029341c>] (warn_slowpath_common+0x4c/0x64) from [<c029344c>] (warn_slowpath_null+0x18/0x1c)
      [<c029344c>] (warn_slowpath_null+0x18/0x1c) from [<c044b1e4>] (serial_pxa_set_termios+0x1dc/0x250)
      [<c044b1e4>] (serial_pxa_set_termios+0x1dc/0x250) from [<c044a840>] (uart_resume_port+0x128/0x2dc)
      [<c044a840>] (uart_resume_port+0x128/0x2dc) from [<c044bbe0>] (serial_pxa_resume+0x18/0x24)
      [<c044bbe0>] (serial_pxa_resume+0x18/0x24) from [<c0454d34>] (platform_pm_resume+0x40/0x4c)
      [<c0454d34>] (platform_pm_resume+0x40/0x4c) from [<c0457ebc>] (pm_op+0x68/0xb4)
      [<c0457ebc>] (pm_op+0x68/0xb4) from [<c0458368>] (device_resume+0xb0/0xec)
      [<c0458368>] (device_resume+0xb0/0xec) from [<c04584c8>] (dpm_resume+0xe0/0x194)
      [<c04584c8>] (dpm_resume+0xe0/0x194) from [<c0458588>] (dpm_resume_end+0xc/0x18)
      [<c0458588>] (dpm_resume_end+0xc/0x18) from [<c02c518c>] (suspend_devices_and_enter+0x16c/0x1ac)
      [<c02c518c>] (suspend_devices_and_enter+0x16c/0x1ac) from [<c02c5278>] (enter_state+0xac/0xdc)
      [<c02c5278>] (enter_state+0xac/0xdc) from [<c02c48ec>] (state_store+0xa0/0xbc)
      [<c02c48ec>] (state_store+0xa0/0xbc) from [<c0408f7c>] (kobj_attr_store+0x18/0x1c)
      [<c0408f7c>] (kobj_attr_store+0x18/0x1c) from [<c034a6a4>] (sysfs_write_file+0x108/0x140)
      [<c034a6a4>] (sysfs_write_file+0x108/0x140) from [<c02fb798>] (vfs_write+0xac/0x134)
      [<c02fb798>] (vfs_write+0xac/0x134) from [<c02fb8cc>] (sys_write+0x3c/0x68)
      [<c02fb8cc>] (sys_write+0x3c/0x68) from [<c027c700>] (ret_fast_syscall+0x0/0x2c)
      ---[ end trace 88289eceb4675b04 ]---
      
      This patch fix the problem by adding the power on opertion back for uart
      console when console_suspend_enabled is true.
      Signed-off-by: NNing Jiang <ning.jiang@marvell.com>
      Tested-by: NMayank Rana <mrana@codeaurora.org>
      Cc: stable <stable@kernel.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      94abc56f
    • A
      serial: mfd: Initconst section fixes · 153d3d9b
      Andi Kleen 提交于
      Cc: gregkh@suse.de
      Signed-off-by: NAndi Kleen <ak@linux.intel.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      153d3d9b
    • G
      keyboard: Do not include <linux/irq.> · 98c2b373
      Geert Uytterhoeven 提交于
      The top of <linux/irq.h> has this comment:
      
       * Please do not include this file in generic code.  There is currently
       * no requirement for any architecture to implement anything held
       * within this file.
       *
       * Thanks. --rmk
      
      Remove inclusion of <linux/irq.>, to prevent the following compile error
      from happening soon:
      
      | include/linux/irq.h:132: error: redefinition of ‘struct irq_data’
      | include/linux/irq.h:286: error: redefinition of ‘struct irq_chip’
      
      drivers/tty/vt/keyboard.c needs to include <asm/irq_regs.h> for get_irq_regs():
      
      | drivers/tty/vt/keyboard.c:497: error: implicit declaration of function ‘get_irq_regs’
      | drivers/tty/vt/keyboard.c:497: warning: initialization makes pointer from integer without a cast
      Signed-off-by: NGeert Uytterhoeven <geert@linux-m68k.org>
      Acked-by: NThomas Gleixner <tglx@linutronix.de>
      Cc: Greg Kroah-Hartman <gregkh@suse.de>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      98c2b373
    • J
      TTY: serial, move 68360 driver to staging · 3a0db721
      Jiri Slaby 提交于
      This driver has been broken at least since 2008. At that time,
      a88487c7 (Fix compile errors in SGI console drivers) broke this
      driver completely.
      
      And since nobody noticed for the past 3 years, move it into staging. I
      think this will rot there and we will throw it away completely after
      some time. Or maybe someone will volunteer to fix it ;).
      Signed-off-by: NJiri Slaby <jslaby@suse.cz>
      Cc: Geert Uytterhoeven <geert@linux-m68k.org>
      Cc: Alan Cox <alan@linux.intel.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      3a0db721
    • W
      cris: lower the printk level in cris serial driver · 3d43b7d5
      WANG Cong 提交于
      KERN_CRIT is too high, replace those KERN_CRIT with KERN_ERR or KERN_WARNING.
      
      Cc: Geert Uytterhoeven <geert@linux-m68k.org>
      Cc: Mikael Starvik <starvik@axis.com>
      Cc: Jesper Nilsson <jesper.nilsson@axis.com>
      Signed-off-by: NWANG Cong <xiyou.wangcong@gmail.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      3d43b7d5
    • S
      serial: Support the EFR-register of XR1715x uarts. · 06315348
      Søren Holm 提交于
      The EFR (Enhenced-Features-Register) is located at a different offset
      than the other devices supporting UART_CAP_EFR. This change add a special
      setup quick to set UPF_EXAR_EFR on the port. UPF_EXAR_EFR is then used to
      the port type to PORT_XR17D15X since it is for sure a XR17D15X uart.
      Signed-off-by: NSøren Holm <sgh@sgh.dk>
      Acked-by: NAlan Cox <alan@linux.intel.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      06315348
    • W
      cris: fix a build error in drivers/tty/serial/crisv10.c · 2f7861de
      WANG Cong 提交于
      This patch fixes the following build error:
      
      drivers/tty/serial/crisv10.c:4453: error: 'if_ser0' undeclared (first use in this function): 2 errors in 2 logs
              v3.1-rc4/cris/cris-allmodconfig v3.1-rc4/cris/cris-allyesconfig
      drivers/tty/serial/crisv10.c:4453: error: (Each undeclared identifier is reported only once: 2 errors in 2 logs
              v3.1-rc4/cris/cris-allmodconfig v3.1-rc4/cris/cris-allyesconfig
      drivers/tty/serial/crisv10.c:4453: error: for each function it appears in.): 2 errors in 2 logs
              v3.1-rc4/cris/cris-allmodconfig v3.1-rc4/cris/cris-allyesconfig
      
      "if_ser0" is a typo, it should be "if_serial_0".
      
      Cc: Mikael Starvik <starvik@axis.com>
      Cc: Jesper Nilsson <jesper.nilsson@axis.com>
      Signed-off-by: NWANG Cong <xiyou.wangcong@gmail.com>
      Cc: stable <stable@kernel.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      2f7861de
    • J
      TTY: serial, fix includes in some drivers · ee160a38
      Jiri Slaby 提交于
      linux/tty_flip.h is included in linux/serial_core.h. But this may (and
      will) change in the future. Then we would get build errors such as:
      .../tty/serial/max3107.c: In function ‘put_data_to_circ_buf’:
      .../tty/serial/max3107.c:149:2: error: implicit declaration of function ‘tty_insert_flip_string’
      
      So fix all the drviers which call tty flip buffer helpers to really
      include linux/tty_flip.h. And also make sure that those include
      linux/tty.h when operating with struct tty_struct.
      Signed-off-by: NJiri Slaby <jslaby@suse.cz>
      Cc: Alan Cox <alan@linux.intel.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      ee160a38
    • J
      TTY: serial, remove dead code from 68328 · 2c16a353
      Jiri Slaby 提交于
      The code is dead at least since 2002. So remove it to not distort git
      grep output (about port.tty usage).
      
      Remove the whole do_softirq tasklet as it's noop now.
      Signed-off-by: NJiri Slaby <jslaby@suse.cz>
      Cc: Geert Uytterhoeven <geert@linux-m68k.org>
      Cc: Alan Cox <alan@linux.intel.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      2c16a353
    • N
      TTY: serial: Move mutex_unlock in uart_close function · 55956216
      Nobuhiro Iwamatsu 提交于
      When mutex_lock is not called, mutex_unlock is sometimes called.
      This deletes unnecessary goto and makes modifications so that
      mutex_unlock is called.
      
      [    8.304000] WARNING: at kernel/muex-debug.c:78
      [    8.304000] Modules linked in:
      [    8.304000]
      [    8.304000] Pid : 114, Comm:                 modprobe
      [    8.304000] CPU : 0                  Not tainted  (3.1.0-rc3-next-20110826 #810)
      [    8.304000]
      [    8.304000] PC is at debug_mutex_unlock+0xf4/0x120
      [    8.304000] PR is at debug_mutex_unlock+0xe6/0x120
      [    8.304000] PC  : 80051114 SP  : 9f02de58 SR  : 400081f1 TEA : 295cf4f2
      [    8.304000] R0  : 00000001 R1  : 00000000 R2  : 0000000f R3  : 00000000
      [    8.304000] R4  : 9fc63158 R5  : 00000000 R6  : 00000001 R7  : 9fe1de78
      [    8.304000] R8  : 805c6b2c R9  : 80003920 R10 : 00000000 R11 : 805c6b2c
      [    8.304000] R12 : 80425ca0 R13 : 00000000 R14 : 9f02de58
      [    8.304000] MACH: 00000003 MACL: 00000000 GBR : 296e1678 PR  : 80051106
      [    8.304000]
      [    8.304000] Call trace:
      [    8.304000]  [<804236c6>] __mutex_unlock_slowpath+0x46/0x120
      [    8.304000]  [<804237aa>] mutex_unlock+0xa/0x20
      [    8.304000]  [<80240ed6>] uart_close+0x76/0x2c0
      [    8.304000]  [<80223b98>] tty_release+0xf8/0x5c0
      [    8.304000]  [<800a93a6>] lookup_object+0x26/0xa0
      [    8.304000]  [<80063f6a>] call_rcu+0x8a/0xc0
      [    8.304000]  [<800a944a>] put_object+0x2a/0x60
      [    8.304000]  [<80003920>] arch_local_irq_restore+0x0/0x40
      [    8.304000]  [<800af320>] fput+0x180/0x2c0
      [    8.304000]  [<800af248>] fput+0xa8/0x2c0
      [    8.304000]  [<800ab1a8>] filp_close+0x48/0xc0
      [    8.304000]  [<800ab29a>] sys_close+0x7a/0x100
      [    8.304000]  [<8000825a>] syscall_call+0xc/0x10
      [    8.304000]  [<800ab220>] sys_close+0x0/0x100
      [    8.304000]
      [    8.304000] Code:
      [    8.304000]   8005110e:  mov.l     @r1, r1
      [    8.304000]   80051110:  tst       r1, r1
      [    8.304000]   80051112:  bf        80051116
      [    8.304000] ->80051114:  trapa     #62
      [    8.304000]   80051116:  mov.l     @r8, r1
      [    8.304000]   80051118:  tst       r1, r1
      [    8.304000]   8005111a:  bt.s      8005104c
      [    8.304000]   8005111c:  mov       #0, r1
      [    8.304000]   8005111e:  bra       80051056
      [    8.304000]
      [    8.304000] ---[ end trace e8f8e04c313f429b ]---
      Signed-off-by: NNobuhiro Iwamatsu <nobuhiro.iwamatsu.yj@renesas.com>
      Signed-off-by: NJiri Slaby <jslaby@suse.cz>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      55956216
    • M
      serial: pxa: work around for errata #20 · e44aabd6
      Marcus Folkesson 提交于
      Errata E20: UART: Character Timeout interrupt remains set under certain
      software conditions.
      
      Implication: The software servicing the UART can be trapped in an infinite loop.
      Signed-off-by: NMarcus Folkesson <marcus.folkesson@gmail.com>
      Cc: stable <stable@kernel.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      e44aabd6