1. 18 6月, 2013 6 次提交
    • P
      a6e54319
    • P
      n_tty: Encapsulate minimum_to_wake within N_TTY · f6c8dbe6
      Peter Hurley 提交于
      minimum_to_wake is unique to N_TTY processing, and belongs in
      per-ldisc data.
      
      Add the ldisc method, ldisc_ops::fasync(), to notify line disciplines
      when signal-driven I/O is enabled or disabled. When enabled for N_TTY
      (by fcntl(F_SETFL, O_ASYNC)), blocking reader/polls will be woken
      for any readable input. When disabled, blocking reader/polls are not
      woken until the read buffer is full.
      
      Canonical mode (L_ICANON(tty), n_tty_data::icanon) is not affected by
      the minimum_to_wake setting.
      Signed-off-by: NPeter Hurley <peter@hurleysoftware.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      f6c8dbe6
    • T
      serial: omap: Fix device tree based PM runtime · a630fbfb
      Tony Lindgren 提交于
      In the runtime_suspend function pdata is not being used, and
      also blocks the function in device tree based booting. Fix it
      by removing the unused pdata from the runtime_suspend function.
      
      Further, context loss count is not being passed in pdata, so
      let's just reinitialize the port every time for those case.
      This can be further optimized later on for the device tree
      case by adding detection for the hardware state and possibly
      by adding a driver specific autosuspend timeout.
      
      And doing this, we can then make the related dev_err into a
      dev_dbg message instead of an error.
      
      In order for the wake-up events to work, we also need to set
      autosuspend_timeout to -1 if 0, and also device_init_wakeup()
      as that's not being done by the platform init code for the
      device tree case.
      
      Note that this does not affect legacy booting, and in fact
      might make it work for the cases where the context loss info
      is not being passed in pdata.
      
      Thanks to Kevin Hilman <khilman@linaro.org> for debugging
      and suggesting fixes for the autosuspend_timeout and
      device_init_wakeup() related initializiation.
      Reviewed-by: NKevin Hilman <khilman@linaro.org>
      Tested-by: NKevin Hilman <khilman@linaro.org>
      Signed-off-by: NTony Lindgren <tony@atomide.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      a630fbfb
    • F
      serial: imx: Fix serial clock unbalance · 80c48497
      Fabio Estevam 提交于
      Since commit 0c375501 (serial: imx: enable the clocks for console), the
      imx_startup() function calls clk_prepare_enable conditionally, so we
      need to call clk_disable_unprepare inside imx_shutdown() under the same
      condition to avoid unbalanced clock calls.
      
      This avoids the following warning:
      
      ------------[ cut here ]------------
      WARNING: CPU: 0 PID: 70 at drivers/clk/clk.c:780 __clk_disable+0x68/0x84()
      Modules linked in:
      CPU: 0 PID: 70 Comm: mountall Not tainted 3.10.0-rc4-next-20130607+ #435
      Backtrace:
      [<800116a4>] (dump_backtrace+0x0/0x10c) from [<80011844>] (show_stack+0x18/0x1c)
       r6:8069f4e8 r5:0000030c r4:00000000 r3:00000000
      [<8001182c>] (show_stack+0x0/0x1c) from [<8053bce0>] (dump_stack+0x78/0x94)
      [<8053bc68>] (dump_stack+0x0/0x94) from [<80023df8>] (warn_slowpath_common+0x6c/0x8c)
       r4:00000000 r3:00000000
      [<80023d8c>] (warn_slowpath_common+0x0/0x8c) from [<80023e3c>] (warn_slowpath_null+0x24/0x2c)
       r8:bf2ed008 r7:bfaa9810 r6:000f0013 r5:bf824b80 r4:bf824b80
      [<80023e18>] (warn_slowpath_null+0x0/0x2c) from [<8041af84>] (__clk_disable+0x68/0x84)
      [<8041af1c>] (__clk_disable+0x0/0x84) from [<8041b098>] (clk_disable+0x20/0x2c)
       r4:600f0013 r3:00000001
      [<8041b078>] (clk_disable+0x0/0x2c) from [<802c93e8>] (imx_shutdown+0xbc/0xec)
       r5:bf824b80 r4:bfaa9810
      [<802c932c>] (imx_shutdown+0x0/0xec) from [<802c63a0>] (uart_port_shutdown+0x34/0x40)
       r5:bf86f860 r4:bfaa9810
      [<802c636c>] (uart_port_shutdown+0x0/0x40) from [<802c68c0>] (uart_shutdown+0x98/0xc4)
       r4:bf86f800 r3:00000000
      [<802c6828>] (uart_shutdown+0x0/0xc4) from [<802c7514>] (uart_close+0x5c/0x198)
       r7:bfaa9810 r6:bf274400 r5:bf86f86c r4:bf86f800
      [<802c74b8>] (uart_close+0x0/0x198) from [<802ac648>] (tty_release+0xf8/0x500)
      [<802ac550>] (tty_release+0x0/0x500) from [<800c5a30>] (__fput+0x9c/0x208)
      [<800c5994>] (__fput+0x0/0x208) from [<800c5bac>] (____fput+0x10/0x14)
      [<800c5b9c>] (____fput+0x0/0x14) from [<80040234>] (task_work_run+0xb4/0xec)
      [<80040180>] (task_work_run+0x0/0xec) from [<80029238>] (do_exit+0x2b0/0x920)
       r8:8000e144 r7:000000f8 r6:bf306300 r5:00000000 r4:bfac1180
      [<80028f88>] (do_exit+0x0/0x920) from [<80029a4c>] (do_group_exit+0x50/0xd4)
       r7:000000f8
      [<800299fc>] (do_group_exit+0x0/0xd4) from [<80029ae8>] (__wake_up_parent+0x0/0x28)
       r7:000000f8 r6:00000001 r5:0006f7ae r4:0006f79a
      [<80029ad0>] (SyS_exit_group+0x0/0x18) from [<8000dfc0>] (ret_fast_syscall+0x0/0x30)
      ---[ end trace 16d080eb7efea4e9 ]---
      Reported-by: NShawn Guo <shawn.guo@linaro.org>
      Signed-off-by: NFabio Estevam <fabio.estevam@freescale.com>
      Tested-by: NShawn Guo <shawn.guo@linaro.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      80c48497
    • M
      serial/mpc52xx_uart: fix kernel panic when system reboot · 8a29dfb8
      Matteo Facchinetti 提交于
      This bug appear when a second PSC based driver appends an interrupt
      routine to the FIFO controller shared interrupt (like spi-mpc512x-psc).
      When reboot, uart_shutdown() remove the serial console interrupt handler
      while spi-mpc512x-psc isr is still activate and cause the following kernel
      panic:
      
      The system is going down for reboot NOW!rpc (ttyPSC0) (Mon Jun 10 12:26:07 20
      INIT: Sending processirq 40: nobody cared (try booting with the "irqpoll" option)
      CPU: 0 PID: 0 Comm: swapper Not tainted 3.10.0-rc4-next-20130607-00001-ga0bceb3-dirty #5
      Call Trace:
      [cfff9f00] [c0007910] show_stack+0x48/0x150 (unreliable)
      [cfff9f40] [c005ae60] __report_bad_irq.isra.6+0x34/0xe0
      [cfff9f60] [c005b194] note_interrupt+0x214/0x26c
      [cfff9f90] [c00590fc] handle_irq_event_percpu+0xd0/0x1bc
      [cfff9fd0] [c005921c] handle_irq_event+0x34/0x54
      [cfff9fe0] [c005b8f4] handle_level_irq+0x90/0xf4
      [cfff9ff0] [c000cb98] call_handle_irq+0x18/0x28
      [c050dd60] [c000575c] do_IRQ+0xcc/0x124
      [c050dd90] [c000eb04] ret_from_except+0x0/0x14
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      8a29dfb8
    • F
      serial: mfd: Add sysrq support · fcd2bb9b
      Feng Tang 提交于
      When using MFD HSU based console, sometime we need the sysrq function
      to help debugging kernel. The sysrq code is basically there, this
      patch just simply enable it.
      Signed-off-by: NFeng Tang <feng.tang@intel.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      fcd2bb9b
  2. 14 6月, 2013 6 次提交
    • T
      mei: me: clear interrupts on the resume path · 42f132fe
      Tomas Winkler 提交于
      We need to clear pending interrupts on the resume
      path. This brings the device into defined state
      before starting the reset flow
      
      This should solve suspend/resume issues:
      
      mei_me : wait hw ready failed. status = 0x0
      mei_me : version message write failed
      Signed-off-by: NTomas Winkler <tomas.winkler@intel.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      42f132fe
    • T
      mei: nfc: fix nfc device freeing · 2753ff53
      Tomas Winkler 提交于
      The nfc_dev is a static variable and is not cleaned properly upon reset
      mainly ndev->cl and ndev->cl_info are not set to NULL after freeing which
      
      mei_stop:198: mei_me 0000:00:16.0: stopping the device.
      [  404.253427] general protection fault: 0000 [#2] SMP
      [  404.253437] Modules linked in: mei_me(-) binfmt_misc snd_pcm_oss snd_mixer_oss snd_seq snd_seq_device edd af_packet cpufreq_conservative cpufreq_userspace cpufreq_powersave fuse loop dm_mod hid_generic usbhid hid coretemp acpi_cpufreq mperf kvm_intel kvm crc32c_intel ghash_clmulni_intel aesni_intel ablk_helper cryptd lrw gf128mul snd_hda_codec_hdmi glue_helper aes_x86_64 e1000e snd_hda_intel snd_hda_codec ehci_pci iTCO_wdt iTCO_vendor_support ehci_hcd snd_hwdep xhci_hcd snd_pcm usbcore ptp mei sg microcode snd_timer pps_core i2c_i801 snd pcspkr battery rtc_cmos lpc_ich mfd_core soundcore usb_common snd_page_alloc ac ext3 jbd mbcache drm_kms_helper drm intel_agp i2c_algo_bit intel_gtt i2c_core sd_mod crc_t10dif thermal fan video button processor thermal_sys hwmon ahci libahci libata scsi_mod [last unloaded: mei_me]
      [  404.253591] CPU: 0 PID: 5551 Comm: modprobe Tainted: G      D W    3.10.0-rc3 #1
      [  404.253611] task: ffff880143cd8300 ti: ffff880144a2a000 task.ti: ffff880144a2a000
      [  404.253619] RIP: 0010:[<ffffffff81334e5d>]  [<ffffffff81334e5d>] device_del+0x1d/0x1d0
      [  404.253638] RSP: 0018:ffff880144a2bcf8  EFLAGS: 00010206
      [  404.253645] RAX: 2020302e30202030 RBX: ffff880144fdb000 RCX: 0000000000000086
      [  404.253652] RDX: 0000000000000001 RSI: 0000000000000086 RDI: ffff880144fdb000
      [  404.253659] RBP: ffff880144a2bd18 R08: 0000000000000651 R09: 0000000000000006
      [  404.253666] R10: 0000000000000651 R11: 0000000000000006 R12: ffff880144fdb000
      [  404.253673] R13: ffff880149371098 R14: ffff880144482c00 R15: ffffffffa04710e0
      [  404.253681] FS:  00007f251c59a700(0000) GS:ffff88014e200000(0000) knlGS:0000000000000000
      [  404.253689] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      [  404.253696] CR2: ffffffffff600400 CR3: 0000000145319000 CR4: 00000000001407f0
      [  404.253703] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
      [  404.253710] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
      [  404.253716] Stack:
      [  404.253720]  ffff880144fdb000 ffff880143ffe000 ffff880149371098 ffffffffa0471000
      [  404.253732]  ffff880144a2bd38 ffffffff8133502d ffff88014e20cf48 ffff880143ffe1d8
      [  404.253744]  ffff880144a2bd48 ffffffffa02a4749 ffff880144a2bd58 ffffffffa02a4ba1
      [  404.253755] Call Trace:
      [  404.253766]  [<ffffffff8133502d>] device_unregister+0x1d/0x60
      [  404.253787]  [<ffffffffa02a4749>] mei_cl_remove_device+0x9/0x10 [mei]
      [  404.253804]  [<ffffffffa02a4ba1>] mei_nfc_host_exit+0x21/0x30 [mei]
      [  404.253819]  [<ffffffffa029c2dd>] mei_stop+0x3d/0x90 [mei]
      [  404.253830]  [<ffffffffa046e220>] mei_me_remove+0x60/0xe0 [mei_me]
      [  404.253843]  [<ffffffff81278f37>] pci_device_remove+0x37/0xb0
      [  404.253855]  [<ffffffff81337c68>] __device_release_driver+0x98/0x100
      [  404.253865]  [<ffffffff81337d80>] driver_detach+0xb0/0xc0
      [  404.253876]  [<ffffffff81336b4f>] bus_remove_driver+0x8f/0x120
      [  404.253891]  [<ffffffff81075990>] ? try_to_wake_up+0x2b0/0x2b0
      [  404.253903]  [<ffffffff81338a48>] driver_unregister+0x58/0x90
      [  404.253913]  [<ffffffff8127906b>] pci_unregister_driver+0x2b/0xb0
      [  404.253924]  [<ffffffffa046f244>] mei_me_driver_exit+0x10/0xdcc [mei_me]
      [  404.253936]  [<ffffffff810a50d8>] SyS_delete_module+0x198/0x2b0
      [  404.253949]  [<ffffffff814850d9>] ? do_page_fault+0x9/0x10
      [  404.253961]  [<ffffffff81489692>] system_call_fastpath+0x16/0x1b
      [  404.253967] Code: 41 5c 41 5d 41 5e 41 5f c9 c3 0f 1f 40 00 55 48 89 e5 41 56 41 55 41 54 49 89 fc 53 48 8b 87 88 00 00 00 4c 8b 37 48 85 c0 74 18 <48> 8b 78 78 4c 89 e2 be 02 00 00 00 48 81 c7 f8 00 00 00 e8 3b
      [  404.254048] RIP  [<ffffffff81334e5d>] device_del+0x1d/0x1d0
      
      Cc: Samuel Ortiz <sameo@linux.intel.com>
      Signed-off-by: NTomas Winkler <tomas.winkler@intel.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      2753ff53
    • S
      mei: init: Flush scheduled work before resetting the device · 5e85b364
      Samuel Ortiz 提交于
      Flushing pending work items before resetting the device makes more
      sense than doing so afterwards. Some of them, like e.g. the NFC
      initialization one, find themselves with client IDs changed after
      the reset, eventually leading to trigger a client.c:mei_me_cl_by_id()
      warning after a few modprobe/rmmod cycles.
      Signed-off-by: NSamuel Ortiz <sameo@linux.intel.com>
      Signed-off-by: NTomas Winkler <tomas.winkler@intel.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      5e85b364
    • B
      netiucv: Hold rtnl between name allocation and device registration. · aaf9522d
      Benjamin Poirier 提交于
      fixes a race condition between concurrent initializations of netiucv devices
      that try to use the same name.
      
      sysfs: cannot create duplicate filename '/devices/iucv/netiucv2'
      [...]
      Call Trace:
      ([<00000000002edea4>] sysfs_add_one+0xb0/0xdc)
       [<00000000002eecd4>] create_dir+0x80/0xfc
       [<00000000002eee38>] sysfs_create_dir+0xe8/0x118
       [<00000000003835a8>] kobject_add_internal+0x120/0x2d0
       [<00000000003839d6>] kobject_add+0x62/0x9c
       [<00000000003d9564>] device_add+0xcc/0x510
       [<000003e00212c7b4>] netiucv_register_device+0xc0/0x1ec [netiucv]
      Signed-off-by: NBenjamin Poirier <bpoirier@suse.de>
      Tested-by: NUrsula Braun <braunu@de.ibm.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      aaf9522d
    • N
      tulip: Properly check dma mapping result · c9bfbb31
      Neil Horman 提交于
      Tulip throws an error when dma debugging is enabled, as it doesn't properly
      check dma mapping results with dma_mapping_error() durring tx ring refills.
      
      Easy fix, just add it in, and drop the frame if the mapping is bad
      Signed-off-by: NNeil Horman <nhorman@tuxdriver.com>
      CC: Grant Grundler <grundler@parisc-linux.org>
      CC: "David S. Miller" <davem@davemloft.net>
      Reviewed-by: NGrant Grundler <grundler@parisc-linux.org>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      c9bfbb31
    • B
      of: Fix locking vs. interrupts · d25d8694
      Benjamin Herrenschmidt 提交于
      The OF code uses irqsafe locks everywhere except in a handful of functions
      for no obvious reasons. Since the conversion from the old rwlocks, this
      now triggers lockdep warnings when used at interrupt time. At least one
      driver (ibmvscsi) seems to be doing that from softirq context.
      
      This converts the few non-irqsafe locks into irqsafe ones, making them
      consistent with the rest of the code.
      Signed-off-by: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
      Acked-by: NThomas Gleixner <tglx@linutronix.de>
      Acked-by: NDavid S. Miller <davem@davemloft.net>
      Signed-off-by: NGrant Likely <grant.likely@linaro.org>
      d25d8694
  3. 13 6月, 2013 24 次提交
  4. 12 6月, 2013 4 次提交