mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Greg KH <gregkh@linuxfoundation.org>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: torvalds@linux-foundation.org, akpm@linux-foundation.org,
	alan@lxorguk.ukuu.org.uk,
	Alexander Stein <alexander.stein@systec-electronic.com>,
	Tomoya MORINAGA <tomoya-linux@dsn.okisemi.com>,
	Vinod Koul <vinod.koul@intel.com>,
	Tomoya MORINAGA <tomoya.rohm@gmail.com>
Subject: [ 49/59] pch_dma: Fix channel locking
Date: Thu, 19 Apr 2012 14:07:00 -0700	[thread overview]
Message-ID: <20120419210615.313404377@linuxfoundation.org> (raw)
In-Reply-To: <20120419210623.GA12156@kroah.com>

3.0-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Alexander Stein <alexander.stein@systec-electronic.com>

commit 70f18915846f092e0e1c988f1726a532fa3ab3a1 upstream.

Fix for the following INFO message

=================================
[ INFO: inconsistent lock state ]
2.6.39+ #89
---------------------------------
inconsistent {HARDIRQ-ON-W} -> {IN-HARDIRQ-W} usage.
rs232/822 [HC1[1]:SC0[0]:HE0:SE1] takes:
 (&(&pd_chan->lock)->rlock){?.....}, at: [<c123b9a1>] pdc_desc_get+0x16/0xab
{HARDIRQ-ON-W} state was registered at:
  [<c104fe28>] mark_irqflags+0xbd/0x11a
  [<c1050386>] __lock_acquire+0x501/0x6bb
  [<c1050945>] lock_acquire+0x63/0x7b
  [<c131c51d>] _raw_spin_lock_bh+0x43/0x51
  [<c123bee4>] pd_alloc_chan_resources+0x92/0x11e
  [<c123ad62>] dma_chan_get+0x9b/0x107
  [<c123b2d1>] __dma_request_channel+0x61/0xdc
  [<c11ba24b>] pch_request_dma+0x61/0x19e
  [<c11bb3b8>] pch_uart_startup+0x16a/0x1a2
  [<c11b8446>] uart_startup+0x87/0x147
  [<c11b9183>] uart_open+0x117/0x13e
  [<c11a5c7d>] tty_open+0x23c/0x34c
  [<c1097705>] chrdev_open+0x140/0x15f
  [<c10930a6>] __dentry_open.clone.14+0x14a/0x22b
  [<c1093dfb>] nameidata_to_filp+0x36/0x40
  [<c109f28b>] do_last+0x513/0x635
  [<c109f4af>] path_openat+0x9c/0x2aa
  [<c109f6e4>] do_filp_open+0x27/0x69
  [<c1093f02>] do_sys_open+0xfd/0x184
  [<c1093fad>] sys_open+0x24/0x2a
  [<c131d58c>] sysenter_do_call+0x12/0x32
irq event stamp: 2522
hardirqs last  enabled at (2521): [<c131ca3b>] _raw_spin_unlock_irqrestore+0x36/0x52
hardirqs last disabled at (2522): [<c131db27>] common_interrupt+0x27/0x34
softirqs last  enabled at (2354): [<c102fa11>] __do_softirq+0x10a/0x11a
softirqs last disabled at (2299): [<c10041a4>] do_softirq+0x57/0xa4

other info that might help us debug this:
2 locks held by rs232/822:
 #0:  (&tty->atomic_write_lock){+.+.+.}, at: [<c11a4b7a>] tty_write_lock+0x14/0x3c
 #1:  (&port_lock_key){-.....}, at: [<c11bad72>] pch_uart_interrupt+0x17/0x1e9

stack backtrace:
Pid: 822, comm: rs232 Not tainted 2.6.39+ #89
Call Trace:
 [<c1319f90>] ? printk+0x19/0x1b
 [<c104f893>] print_usage_bug+0x184/0x18f
 [<c104e5b1>] ? print_irq_inversion_bug+0x10e/0x10e
 [<c104f943>] mark_lock_irq+0xa5/0x1f6
 [<c104fc9c>] mark_lock+0x208/0x2d7
 [<c104fdc0>] mark_irqflags+0x55/0x11a
 [<c1050386>] __lock_acquire+0x501/0x6bb
 [<c10042ee>] ? dump_trace+0x92/0xb6
 [<c1050945>] lock_acquire+0x63/0x7b
 [<c123b9a1>] ? pdc_desc_get+0x16/0xab
 [<c131c2d0>] _raw_spin_lock+0x3e/0x4c
 [<c123b9a1>] ? pdc_desc_get+0x16/0xab
 [<c123b9a1>] pdc_desc_get+0x16/0xab
 [<c10504d8>] ? __lock_acquire+0x653/0x6bb
 [<c123bb2c>] pd_prep_slave_sg+0x7c/0x1cb
 [<c1006c3f>] ? nommu_map_sg+0x6e/0x81
 [<c11bace6>] dma_handle_tx+0x2cf/0x344
 [<c11bad72>] ? pch_uart_interrupt+0x17/0x1e9
 [<c11baebb>] pch_uart_interrupt+0x160/0x1e9
 [<c10642fb>] handle_irq_event_percpu+0x25/0x127
 [<c1064429>] handle_irq_event+0x2c/0x43
 [<c1065e0d>] ? handle_fasteoi_irq+0x84/0x84
 [<c1065eb9>] handle_edge_irq+0xac/0xce
 <IRQ>  [<c1003ecb>] ? do_IRQ+0x38/0x9d
 [<c131db2e>] ? common_interrupt+0x2e/0x34
 [<c105007b>] ? __lock_acquire+0x1f6/0x6bb
 [<c131ca3d>] ? _raw_spin_unlock_irqrestore+0x38/0x52
 [<c11b798b>] ? uart_start+0x2d/0x32
 [<c11b7998>] ? uart_flush_chars+0x8/0xa
 [<c11a7962>] ? n_tty_write+0x12c/0x1c6
 [<c1027a73>] ? try_to_wake_up+0x251/0x251
 [<c11a4d0b>] ? tty_write+0x169/0x1dc
 [<c11a7836>] ? n_tty_ioctl+0xb7/0xb7
 [<c1094841>] ? vfs_write+0x91/0x10d
 [<c11a4ba2>] ? tty_write_lock+0x3c/0x3c
 [<c1094a69>] ? sys_write+0x3e/0x63
 [<c131d58c>] ? sysenter_do_call+0x12/0x32

Signed-off-by: Alexander Stein <alexander.stein@systec-electronic.com>
Tested-by: Tomoya MORINAGA <tomoya-linux@dsn.okisemi.com>
Signed-off-by: Vinod Koul <vinod.koul@intel.com>
Signed-off-by: Tomoya MORINAGA <tomoya.rohm@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/dma/pch_dma.c |   16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

--- a/drivers/dma/pch_dma.c
+++ b/drivers/dma/pch_dma.c
@@ -521,11 +521,11 @@ static int pd_alloc_chan_resources(struc
 		list_add_tail(&desc->desc_node, &tmp_list);
 	}
 
-	spin_lock_bh(&pd_chan->lock);
+	spin_lock_irq(&pd_chan->lock);
 	list_splice(&tmp_list, &pd_chan->free_list);
 	pd_chan->descs_allocated = i;
 	pd_chan->completed_cookie = chan->cookie = 1;
-	spin_unlock_bh(&pd_chan->lock);
+	spin_unlock_irq(&pd_chan->lock);
 
 	pdc_enable_irq(chan, 1);
 
@@ -543,10 +543,10 @@ static void pd_free_chan_resources(struc
 	BUG_ON(!list_empty(&pd_chan->active_list));
 	BUG_ON(!list_empty(&pd_chan->queue));
 
-	spin_lock_bh(&pd_chan->lock);
+	spin_lock_irq(&pd_chan->lock);
 	list_splice_init(&pd_chan->free_list, &tmp_list);
 	pd_chan->descs_allocated = 0;
-	spin_unlock_bh(&pd_chan->lock);
+	spin_unlock_irq(&pd_chan->lock);
 
 	list_for_each_entry_safe(desc, _d, &tmp_list, desc_node)
 		pci_pool_free(pd->pool, desc, desc->txd.phys);
@@ -562,10 +562,10 @@ static enum dma_status pd_tx_status(stru
 	dma_cookie_t last_completed;
 	int ret;
 
-	spin_lock_bh(&pd_chan->lock);
+	spin_lock_irq(&pd_chan->lock);
 	last_completed = pd_chan->completed_cookie;
 	last_used = chan->cookie;
-	spin_unlock_bh(&pd_chan->lock);
+	spin_unlock_irq(&pd_chan->lock);
 
 	ret = dma_async_is_complete(cookie, last_completed, last_used);
 
@@ -680,7 +680,7 @@ static int pd_device_control(struct dma_
 	if (cmd != DMA_TERMINATE_ALL)
 		return -ENXIO;
 
-	spin_lock_bh(&pd_chan->lock);
+	spin_lock_irq(&pd_chan->lock);
 
 	pdc_set_mode(&pd_chan->chan, DMA_CTL0_DISABLE);
 
@@ -690,7 +690,7 @@ static int pd_device_control(struct dma_
 	list_for_each_entry_safe(desc, _d, &list, desc_node)
 		pdc_chain_complete(pd_chan, desc);
 
-	spin_unlock_bh(&pd_chan->lock);
+	spin_unlock_irq(&pd_chan->lock);
 
 	return 0;
 }



  parent reply	other threads:[~2012-04-19 21:38 UTC|newest]

Thread overview: 60+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-04-19 21:06 [ 00/59] 3.0.29-stable review Greg KH
2012-04-19 21:06 ` [ 01/59] drm/i915/ringbuffer: Exclude last 2 cachlines of ring on 845g Greg KH
2012-04-19 21:06 ` [ 02/59] drm/radeon: only add the mm i2c bus if the hw_i2c module param is set Greg KH
2012-04-19 21:06 ` [ 03/59] rtlwifi: Add missing DMA buffer unmapping for PCI drivers Greg KH
2012-04-19 21:06 ` [ 04/59] ARM: 7384/1: ThumbEE: Disable userspace TEEHBR access for !CONFIG_ARM_THUMBEE Greg KH
2012-04-19 21:06 ` [ 05/59] [PATCH] Bluetooth: uart-ldisc: Fix memory leak Greg KH
2012-04-19 21:06 ` [ 06/59] Bluetooth: hci_ldisc: fix NULL-pointer dereference on tty_close Greg KH
2012-04-19 21:06 ` [ 07/59] ia64: fix futex_atomic_cmpxchg_inatomic() Greg KH
2012-04-19 21:06 ` [ 08/59] drivers/rtc/rtc-pl031.c: enable clock on all ST variants Greg KH
2012-04-19 21:06 ` [ 09/59] hugetlb: fix race condition in hugetlb_fault() Greg KH
2012-04-19 21:06 ` [ 10/59] staging: iio: hmc5843: Fix crash in probe function Greg KH
2012-04-19 21:06 ` [ 11/59] tty: serial: altera_uart: Check for NULL platform_data in probe Greg KH
2012-04-19 21:06 ` [ 12/59] sparc64: Eliminate obsolete __handle_softirq() function Greg KH
2012-04-19 21:06 ` [ 13/59] sparc64: Fix bootup crash on sun4v Greg KH
2012-04-19 21:06 ` [ 14/59] cciss: Initialize scsi host max_sectors for tape drive support Greg KH
2012-04-19 21:06 ` [ 15/59] cciss: Fix scsi tape io with more than 255 scatter gather elements Greg KH
2012-04-19 21:06 ` [ 16/59] perf hists: Catch and handle out-of-date hist entry maps Greg KH
2012-04-19 21:06 ` [ 17/59] video:uvesafb: Fix oops that uvesafb try to execute NX-protected page Greg KH
2012-04-19 21:06 ` [ 18/59] nohz: Fix stale jiffies update in tick_nohz_restart() Greg KH
2012-04-19 21:06 ` [ 19/59] USB: serial: fix race between probe and open Greg KH
2012-04-19 21:06 ` [ 20/59] USB: pl2303: fix DTR/RTS being raised on baud rate change Greg KH
2012-04-19 21:06 ` [ 21/59] USB: option: re-add NOVATELWIRELESS_PRODUCT_HSPA_HIGHSPEED to option_id array Greg KH
2012-04-19 21:06 ` [ 22/59] USB: sierra: add support for Sierra Wireless MC7710 Greg KH
2012-04-19 21:06 ` [ 23/59] USB: dont clear urb->dev in scatter-gather library Greg KH
2012-04-19 21:06 ` [ 24/59] xhci: dont re-enable IE constantly Greg KH
2012-04-19 21:06 ` [ 25/59] xhci: Dont write zeroed pointers to xHC registers Greg KH
2012-04-19 21:06 ` [ 26/59] xhci: Restore event ring dequeue pointer on resume Greg KH
2012-04-19 21:06 ` [ 27/59] xHCI: Correct the #define XHCI_LEGACY_DISABLE_SMI Greg KH
2012-04-19 21:06 ` [ 28/59] xHCI: add XHCI_RESET_ON_RESUME quirk for VIA xHCI host Greg KH
2012-04-19 21:06 ` [ 29/59] serial: PL011: clear pending interrupts Greg KH
2012-04-19 21:06 ` [ 30/59] serial: PL011: move interrupt clearing Greg KH
2012-04-19 21:06 ` [ 31/59] fcaps: clear the same personality flags as suid when fcaps are used Greg KH
2012-04-19 21:06 ` [ 32/59] [PATCH] ath9k: fix max noise floor threshold Greg KH
2012-04-19 21:06 ` [ 33/59] xhci: Fix register save/restore order Greg KH
2012-04-19 21:06 ` [ 34/59] Bluetooth: hci_core: fix NULL-pointer dereference at unregister Greg KH
2012-04-19 21:06 ` [ 35/59] pch_phub: Fix register miss-setting issue Greg KH
2012-04-19 21:06 ` [ 36/59] pch_phub: Care FUNCSEL register in PM Greg KH
2012-04-19 21:06 ` [ 37/59] pch_phub: Improve ADE(Address Decode Enable) control Greg KH
2012-04-19 21:06 ` [ 38/59] usb: gadget: pch_udc: Fix disconnect issue Greg KH
2012-04-19 21:06 ` [ 39/59] usb: gadget: pch_udc: Fix wrong return value Greg KH
2012-04-19 21:06 ` [ 40/59] usb: gadget: pch_udc: Fix USB suspend issue Greg KH
2012-04-19 21:06 ` [ 41/59] usb: gadget: pch_udc: Fix usb/gadget/pch_udc: Fix ether gadget connect/disconnect issue Greg KH
2012-04-19 21:06 ` [ 42/59] usb: gadget: pch_udc: Reduce redundant interrupt Greg KH
2012-04-19 21:06 ` [ 43/59] USB: pch_udc: Support new device LAPIS Semiconductor ML7831 IOH Greg KH
2012-04-19 21:06 ` [ 44/59] ACPICA: Fix to allow region arguments to reference other scopes Greg KH
2012-04-19 21:06 ` [ 45/59] security: fix compile error in commoncap.c Greg KH
2012-04-19 21:06 ` [ 46/59] pch_uart: Set PCIe bus number using probe parameter Greg KH
2012-04-19 21:06 ` [ 47/59] 8250_pci: Fix kernel panic when pch_uart is disabled Greg KH
2012-04-19 21:06 ` [ 48/59] pch_dma: fix DMA issue(ch8-ch11) Greg KH
2012-04-19 21:07 ` Greg KH [this message]
2012-04-19 21:07 ` [ 50/59] pch_dma: Fix CTL register access issue Greg KH
2012-04-19 21:07 ` [ 51/59] pch_dma: Fix suspend issue Greg KH
2012-04-19 21:07 ` [ 52/59] pch_dma: Support new device LAPIS Semiconductor ML7831 IOH Greg KH
2012-04-19 21:07 ` [ 53/59] md/bitmap: prevent bitmap_daemon_work running while initialising bitmap Greg KH
2012-04-19 21:07 ` [ 54/59] Bluetooth: Adding USB device 13d3:3375 as an Atheros AR3012 Greg KH
2012-04-19 21:07 ` [ 55/59] Bluetooth: Add Atheros maryann PIDVID support Greg KH
2012-04-19 21:07 ` [ 56/59] futex: Do not leak robust list to unprivileged process Greg KH
2012-04-19 21:07 ` [ 57/59] drm/radeon/kms: fix the regression of DVI connector check Greg KH
2012-04-19 21:07 ` [ 58/59] drm/radeon: disable MSI on RV515 Greg KH
2012-04-19 21:07 ` [ 59/59] drm/radeon: fix load detect on rn50 with hardcoded EDIDs Greg KH

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20120419210615.313404377@linuxfoundation.org \
    --to=gregkh@linuxfoundation.org \
    --cc=akpm@linux-foundation.org \
    --cc=alan@lxorguk.ukuu.org.uk \
    --cc=alexander.stein@systec-electronic.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=stable@vger.kernel.org \
    --cc=tomoya-linux@dsn.okisemi.com \
    --cc=tomoya.rohm@gmail.com \
    --cc=torvalds@linux-foundation.org \
    --cc=vinod.koul@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

Powered by JetHome