Linux wireless drivers development
 help / color / mirror / Atom feed
* Re: [PATCH v4 32/34] wireless: make mac80211 select cfg80211
From: Luis R. Rodriguez @ 2009-08-17 17:00 UTC (permalink / raw)
  To: Johannes Berg; +Cc: linville, linux-wireless, Larry.Finger
In-Reply-To: <1250283993.4411.1.camel@johannes.local>

On Fri, Aug 14, 2009 at 2:06 PM, Johannes Berg<johannes@sipsolutions.net> wrote:
> On Fri, 2009-08-14 at 16:25 -0400, Luis R. Rodriguez wrote:
>> We can now remove that comment about mac80211 requiring
>> cfg80211 and do that for the user.
>
> "now"? What changed to make this possible?
>
> NAK this change, because with it, it's possible to select
> mac80211 = Y
> -> cfg80211 = Y
> while rfkill = M
>
> which will break the kernel build.

I'm able to do this with current kconfig, does this need to be fixed?

  Luis

^ permalink raw reply

* [PATCH 5/7] rt2x00: wireless CLI ID and packet ID must not be 0
From: Ivo van Doorn @ 2009-08-17 16:55 UTC (permalink / raw)
  To: John Linville; +Cc: linux-wireless, users, Benoit PAPILLAULT
In-Reply-To: <200908171854.50790.IvDoorn@gmail.com>

In the TX descriptor the Packet ID must not be 0,
so add 1 to the ID. The wireless CLI ID is not allowed
to be 0 either, but also must be initialized with the
wcid value rather then keyid.

Based on a patch for rt2800pci from Benoit

Signed-off-by: Benoit PAPILLAULT <benoit.papillault@free.fr>
Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com>
---
 drivers/net/wireless/rt2x00/rt2800usb.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/net/wireless/rt2x00/rt2800usb.c b/drivers/net/wireless/rt2x00/rt2800usb.c
index 6de2eda..3633e58 100644
--- a/drivers/net/wireless/rt2x00/rt2800usb.c
+++ b/drivers/net/wireless/rt2x00/rt2800usb.c
@@ -1995,11 +1995,11 @@ static void rt2800usb_write_tx_desc(struct rt2x00_dev *rt2x00dev,
 	rt2x00_set_field32(&word, TXWI_W1_BW_WIN_SIZE, txdesc->ba_size);
 	rt2x00_set_field32(&word, TXWI_W1_WIRELESS_CLI_ID,
 			   test_bit(ENTRY_TXD_ENCRYPT, &txdesc->flags) ?
-			       txdesc->key_idx : 0xff);
+			       (skbdesc->entry->entry_idx + 1) : 0xff);
 	rt2x00_set_field32(&word, TXWI_W1_MPDU_TOTAL_BYTE_COUNT,
 			   skb->len - txdesc->l2pad);
 	rt2x00_set_field32(&word, TXWI_W1_PACKETID,
-			   skbdesc->entry->entry_idx);
+			   skbdesc->entry->queue->qid + 1);
 	rt2x00_desc_write(txwi, 1, word);
 
 	/*
-- 
1.6.4


^ permalink raw reply related

* [PATCH 6/7] rt2x00: Fix MCS register intialization
From: Ivo van Doorn @ 2009-08-17 16:55 UTC (permalink / raw)
  To: John Linville; +Cc: linux-wireless, users, Benoit PAPILLAULT
In-Reply-To: <200908171855.15390.IvDoorn@gmail.com>

According to the original Ralink driver,
LG_FBK_CFG0_OFDMMCS2FBK should be initialized to 9 rather then 3.

Based on a patch for rt2800pci from Benoit

Signed-off-by: Benoit PAPILLAULT <benoit.papillault@free.fr>
Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com>
---
 drivers/net/wireless/rt2x00/rt2800usb.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/drivers/net/wireless/rt2x00/rt2800usb.c b/drivers/net/wireless/rt2x00/rt2800usb.c
index 3633e58..45e02f1 100644
--- a/drivers/net/wireless/rt2x00/rt2800usb.c
+++ b/drivers/net/wireless/rt2x00/rt2800usb.c
@@ -1520,7 +1520,7 @@ static int rt2800usb_init_registers(struct rt2x00_dev *rt2x00dev)
 	rt2x00usb_register_read(rt2x00dev, LG_FBK_CFG0, &reg);
 	rt2x00_set_field32(&reg, LG_FBK_CFG0_OFDMMCS0FBK, 8);
 	rt2x00_set_field32(&reg, LG_FBK_CFG0_OFDMMCS1FBK, 8);
-	rt2x00_set_field32(&reg, LG_FBK_CFG0_OFDMMCS2FBK, 3);
+	rt2x00_set_field32(&reg, LG_FBK_CFG0_OFDMMCS2FBK, 9);
 	rt2x00_set_field32(&reg, LG_FBK_CFG0_OFDMMCS3FBK, 10);
 	rt2x00_set_field32(&reg, LG_FBK_CFG0_OFDMMCS4FBK, 11);
 	rt2x00_set_field32(&reg, LG_FBK_CFG0_OFDMMCS5FBK, 12);
-- 
1.6.4


^ permalink raw reply related

* [PATCH 7/7] rt2x00: Add support for retry rates
From: Ivo van Doorn @ 2009-08-17 16:56 UTC (permalink / raw)
  To: John Linville; +Cc: linux-wireless, users, Benoit PAPILLAULT
In-Reply-To: <200908171855.40486.IvDoorn@gmail.com>

From: Benoit PAPILLAULT <benoit.papillault@free.fr>

rt2800pci can handle different retry rates,
it will always step 1 rate down after a failed
transmission so creating the retry rate list
for mac80211 is quite simple.

Signed-off-by: Benoit PAPILLAULT <benoit.papillault@free.fr>
Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com>
---
 drivers/net/wireless/rt2x00/rt2x00dev.c   |   22 +++++++++++++++++-----
 drivers/net/wireless/rt2x00/rt2x00queue.h |    2 ++
 2 files changed, 19 insertions(+), 5 deletions(-)

diff --git a/drivers/net/wireless/rt2x00/rt2x00dev.c b/drivers/net/wireless/rt2x00/rt2x00dev.c
index b6676c6..9ab70e4 100644
--- a/drivers/net/wireless/rt2x00/rt2x00dev.c
+++ b/drivers/net/wireless/rt2x00/rt2x00dev.c
@@ -220,7 +220,8 @@ void rt2x00lib_txdone(struct queue_entry *entry,
 	struct skb_frame_desc *skbdesc = get_skb_frame_desc(entry->skb);
 	enum data_queue_qid qid = skb_get_queue_mapping(entry->skb);
 	unsigned int header_length = ieee80211_get_hdrlen_from_skb(entry->skb);
-	u8 rate_idx, rate_flags;
+	u8 rate_idx, rate_flags, retry_rates;
+	unsigned int i;
 
 	/*
 	 * Unmap the skb.
@@ -259,16 +260,27 @@ void rt2x00lib_txdone(struct queue_entry *entry,
 
 	rate_idx = skbdesc->tx_rate_idx;
 	rate_flags = skbdesc->tx_rate_flags;
+	retry_rates = test_bit(TXDONE_FALLBACK, &txdesc->flags) ?
+	    (txdesc->retry + 1) : 1;
 
 	/*
 	 * Initialize TX status
 	 */
 	memset(&tx_info->status, 0, sizeof(tx_info->status));
 	tx_info->status.ack_signal = 0;
-	tx_info->status.rates[0].idx = rate_idx;
-	tx_info->status.rates[0].flags = rate_flags;
-	tx_info->status.rates[0].count = txdesc->retry + 1;
-	tx_info->status.rates[1].idx = -1; /* terminate */
+
+	/*
+	 * Frame was send with retries, hardware tried
+	 * different rates to send out the frame, at each
+	 * retry it lowered the rate 1 step.
+	 */
+	for (i = 0; i < retry_rates && i < IEEE80211_TX_MAX_RATES; i++) {
+		tx_info->status.rates[i].idx = rate_idx - i;
+		tx_info->status.rates[i].flags = rate_flags;
+		tx_info->status.rates[i].count = 1;
+	}
+	if (i < (IEEE80211_TX_MAX_RATES -1))
+		tx_info->status.rates[i].idx = -1; /* terminate */
 
 	if (!(tx_info->flags & IEEE80211_TX_CTL_NO_ACK)) {
 		if (test_bit(TXDONE_SUCCESS, &txdesc->flags) ||
diff --git a/drivers/net/wireless/rt2x00/rt2x00queue.h b/drivers/net/wireless/rt2x00/rt2x00queue.h
index 47d175a..a5591fb 100644
--- a/drivers/net/wireless/rt2x00/rt2x00queue.h
+++ b/drivers/net/wireless/rt2x00/rt2x00queue.h
@@ -214,6 +214,7 @@ struct rxdone_entry_desc {
  *
  * @TXDONE_UNKNOWN: Hardware could not determine success of transmission.
  * @TXDONE_SUCCESS: Frame was successfully send
+ * @TXDONE_FALLBACK: Frame was successfully send using a fallback rate.
  * @TXDONE_FAILURE: Frame was not successfully send
  * @TXDONE_EXCESSIVE_RETRY: In addition to &TXDONE_FAILURE, the
  *	frame transmission failed due to excessive retries.
@@ -221,6 +222,7 @@ struct rxdone_entry_desc {
 enum txdone_entry_desc_flags {
 	TXDONE_UNKNOWN,
 	TXDONE_SUCCESS,
+	TXDONE_FALLBACK,
 	TXDONE_FAILURE,
 	TXDONE_EXCESSIVE_RETRY,
 };
-- 
1.6.4


^ permalink raw reply related

* [PATCH 4/7] rt2x00: Set SKBDESC_L2_PADDED in RX path
From: Ivo van Doorn @ 2009-08-17 16:54 UTC (permalink / raw)
  To: John Linville; +Cc: linux-wireless, users
In-Reply-To: <200908171854.19205.IvDoorn@gmail.com>

When the RX descriptor indicates the frame was L2 padded,
the SKBDESC_L2_PADDED flag should be set to make sure the
L2 padding is removed before it is send to mac80211.

Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com>
---
 drivers/net/wireless/rt2x00/rt2800usb.c |    4 +++-
 1 files changed, 3 insertions(+), 1 deletions(-)

diff --git a/drivers/net/wireless/rt2x00/rt2800usb.c b/drivers/net/wireless/rt2x00/rt2800usb.c
index c82474e..6de2eda 100644
--- a/drivers/net/wireless/rt2x00/rt2800usb.c
+++ b/drivers/net/wireless/rt2x00/rt2800usb.c
@@ -2163,8 +2163,10 @@ static void rt2800usb_fill_rxdone(struct queue_entry *entry,
 	if (rt2x00_get_field32(rxd0, RXD_W0_MY_BSS))
 		rxdesc->dev_flags |= RXDONE_MY_BSS;
 
-	if (rt2x00_get_field32(rxd0, RXD_W0_L2PAD))
+	if (rt2x00_get_field32(rxd0, RXD_W0_L2PAD)) {
 		rxdesc->dev_flags |= RXDONE_L2PAD;
+		skbdesc->flags |= SKBDESC_L2_PADDED;
+	}
 
 	if (rt2x00_get_field32(rxwi1, RXWI_W1_SHORT_GI))
 		rxdesc->flags |= RX_FLAG_SHORT_GI;
-- 
1.6.4


^ permalink raw reply related

* [PATCH 3/7] rt2x00: Add new RF chip defines
From: Ivo van Doorn @ 2009-08-17 16:54 UTC (permalink / raw)
  To: John Linville; +Cc: linux-wireless, users
In-Reply-To: <200908171853.57397.IvDoorn@gmail.com>

Add new defines for RF chipsets which can be found
by the driver. We don't have to check for these
chips specifically yet, but it is better to have
the defines in now.

Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com>
---
 drivers/net/wireless/rt2x00/rt2800usb.h |    6 ++++++
 1 files changed, 6 insertions(+), 0 deletions(-)

diff --git a/drivers/net/wireless/rt2x00/rt2800usb.h b/drivers/net/wireless/rt2x00/rt2800usb.h
index a79a6d9..4d9991c 100644
--- a/drivers/net/wireless/rt2x00/rt2800usb.h
+++ b/drivers/net/wireless/rt2x00/rt2800usb.h
@@ -36,6 +36,9 @@
  * RF2750 2.4G/5G 1T2R
  * RF3020 2.4G 1T1R
  * RF2020 2.4G B/G
+ * RF3021 2.4G 1T2R
+ * RF3022 2.4G 2T2R
+ * RF3052 2.4G 2T2R
  */
 #define RF2820				0x0001
 #define RF2850				0x0002
@@ -43,6 +46,9 @@
 #define RF2750				0x0004
 #define RF3020				0x0005
 #define RF2020				0x0006
+#define RF3021				0x0007
+#define RF3022				0x0008
+#define RF3052				0x0009
 
 /*
  * RT2870 version
-- 
1.6.4


^ permalink raw reply related

* [PATCH 2/7] rt2x00: Fix for rt2800usb for SHARED_KEY_TABLE initializations
From: Ivo van Doorn @ 2009-08-17 16:53 UTC (permalink / raw)
  To: John Linville; +Cc: linux-wireless, users, Benoit PAPILLAULT
In-Reply-To: <200908171853.24256.IvDoorn@gmail.com>

Fixed comments about SHARED_KEY_TABLE_BASE and SHARED_KEY_MODE_BASE.
Fixed initialization loop for SHARED_KEY_MODE_ENTRY.

Based on a patch for rt2800pci from Benoit.

Signed-off-by: Benoit PAPILLAULT <benoit.papillault@free.fr>
Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com>
---
 drivers/net/wireless/rt2x00/rt2800usb.c |    8 ++++----
 drivers/net/wireless/rt2x00/rt2800usb.h |    4 ++--
 2 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/drivers/net/wireless/rt2x00/rt2800usb.c b/drivers/net/wireless/rt2x00/rt2800usb.c
index 3856f06..c82474e 100644
--- a/drivers/net/wireless/rt2x00/rt2800usb.c
+++ b/drivers/net/wireless/rt2x00/rt2800usb.c
@@ -1463,6 +1463,10 @@ static int rt2800usb_init_registers(struct rt2x00_dev *rt2x00dev)
 	/*
 	 * ASIC will keep garbage value after boot, clear encryption keys.
 	 */
+	for (i = 0; i < 4; i++)
+		rt2x00usb_register_write(rt2x00dev,
+					 SHARED_KEY_MODE_ENTRY(i), 0);
+
 	for (i = 0; i < 256; i++) {
 		u32 wcid[2] = { 0xffffffff, 0x00ffffff };
 		rt2x00usb_register_multiwrite(rt2x00dev, MAC_WCID_ENTRY(i),
@@ -1472,10 +1476,6 @@ static int rt2800usb_init_registers(struct rt2x00_dev *rt2x00dev)
 		rt2x00usb_register_write(rt2x00dev, MAC_IVEIV_ENTRY(i), 0);
 	}
 
-	for (i = 0; i < 16; i++)
-		rt2x00usb_register_write(rt2x00dev,
-					 SHARED_KEY_MODE_ENTRY(i), 0);
-
 	/*
 	 * Clear all beacons
 	 * For the Beacon base registers we only need to clear
diff --git a/drivers/net/wireless/rt2x00/rt2800usb.h b/drivers/net/wireless/rt2x00/rt2800usb.h
index 2d9dc37..a79a6d9 100644
--- a/drivers/net/wireless/rt2x00/rt2800usb.h
+++ b/drivers/net/wireless/rt2x00/rt2800usb.h
@@ -1300,8 +1300,8 @@
  * PAIRWISE_KEY_TABLE_BASE: 32-byte * 256 entry
  * MAC_IVEIV_TABLE_BASE: 8-byte * 256-entry
  * MAC_WCID_ATTRIBUTE_BASE: 4-byte * 256-entry
- * SHARED_KEY_TABLE_BASE: 32-byte * 16-entry
- * SHARED_KEY_MODE_BASE: 4-byte * 16-entry
+ * SHARED_KEY_TABLE_BASE: 32 bytes * 32-entry
+ * SHARED_KEY_MODE_BASE: 4 bits * 32-entry
  */
 #define MAC_WCID_BASE			0x1800
 #define PAIRWISE_KEY_TABLE_BASE		0x4000
-- 
1.6.4


^ permalink raw reply related

* [PATCH 1/7] rt2x00: Fix RFKILL polling
From: Ivo van Doorn @ 2009-08-17 16:53 UTC (permalink / raw)
  To: John Linville; +Cc: linux-wireless, users

The rfkill_poll callback function in the drivers check a bit
to see if the RFKILL key has been pressed. However when the
bit is set it means the radio is active and the device can be
used.

The wiphy_rfkill_set_hw_state() function expects the inversed,
so '1' must be send when the radio must be disabled.

Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com>
---
 drivers/net/wireless/rt2x00/rt2x00mac.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/net/wireless/rt2x00/rt2x00mac.c b/drivers/net/wireless/rt2x00/rt2x00mac.c
index cb7b6d4..b27a250 100644
--- a/drivers/net/wireless/rt2x00/rt2x00mac.c
+++ b/drivers/net/wireless/rt2x00/rt2x00mac.c
@@ -704,8 +704,8 @@ EXPORT_SYMBOL_GPL(rt2x00mac_conf_tx);
 void rt2x00mac_rfkill_poll(struct ieee80211_hw *hw)
 {
 	struct rt2x00_dev *rt2x00dev = hw->priv;
-	bool blocked = !!rt2x00dev->ops->lib->rfkill_poll(rt2x00dev);
+	bool active = !!rt2x00dev->ops->lib->rfkill_poll(rt2x00dev);
 
-	wiphy_rfkill_set_hw_state(hw->wiphy, blocked);
+	wiphy_rfkill_set_hw_state(hw->wiphy, !active);
 }
 EXPORT_SYMBOL_GPL(rt2x00mac_rfkill_poll);
-- 
1.6.4


^ permalink raw reply related

* Re: [PATCH] mac80211: allow configure_filter callback to sleep
From: Luis R. Rodriguez @ 2009-08-17 16:06 UTC (permalink / raw)
  To: Johannes Berg; +Cc: John Linville, linux-wireless
In-Reply-To: <1250521206.15103.10.camel@johannes.local>

On Mon, Aug 17, 2009 at 8:00 AM, Johannes Berg<johannes@sipsolutions.net> wrote:
> On Mon, 2009-08-17 at 16:16 +0200, Johannes Berg wrote:
>> Over time, a whole bunch of drivers have come up
>> with their own scheme to delay the configure_filter
>> operation to a workqueue. To be able to simplify
>> things, allow configure_filter to sleep, and add
>> a new prepare_multicast callback that drivers that
>> need the multicast address list implement. This new
>> callback must be atomic, but most drivers either
>> don't care or just calculate a hash which can be
>> done atomically and then uploaded to the hardware
>> non-atomically.
>
> Oh I should probably mention that
>  1) I only tested with hwsim, but
>  2) I don't think it will break much since it doesn't really change most
>    drivers.

A pm-suspend->resume test might be nice as well.

  Luis

^ permalink raw reply

* Re: [PATCH] wl1251: correct definitions for 0th bit defines
From: Kalle Valo @ 2009-08-17 15:44 UTC (permalink / raw)
  To: Bob Copeland; +Cc: linville, linux-wireless
In-Reply-To: <20090817151814.GB13125@hash.localnet>

Bob Copeland <me@bobcopeland.com> writes:

> ACX_SLV_SOFT_RESET_BIT and ACX_REG_EEPROM_START_BIT are both defined
> as "1" in the vendor driver code, but they were defined to be BIT(1)
> ("2") here.  
>
> The SOFT_RESET typo ensures that wl1251_boot_soft_reset() doesn't;
> as a result the device hangs when trying to reprogram the PLL
> registers while running.

My bad, thanks for fixing this.

> Signed-off-by: Bob Copeland <me@bobcopeland.com>

Acked-by: Kalle Valo <kalle.valo@nokia.com>

-- 
Kalle Valo

^ permalink raw reply

* Re: [PATCH v4 10/34] wireless: group Broadcom drivers on kconfig
From: Luis R. Rodriguez @ 2009-08-17 15:35 UTC (permalink / raw)
  To: Gábor Stefanik
  Cc: Luis Rodriguez, linville@tuxdriver.com,
	linux-wireless@vger.kernel.org, Larry.Finger@lwfinger.net,
	Michael Buesch, Johannes Berg
In-Reply-To: <69e28c910908160615r7bcb3966s9c09319f607f64b1@mail.gmail.com>

On Sun, Aug 16, 2009 at 06:15:43AM -0700, Gábor Stefanik wrote:
> 2009/8/16 Luis R. Rodriguez <lrodriguez@atheros.com>:
> > 2009/8/15 Gábor Stefanik <netrolller.3d@gmail.com>:
> >> On Fri, Aug 14, 2009 at 10:25 PM, Luis R.
> >> Rodriguez<lrodriguez@atheros.com> wrote:
> >>> This moves Broadcom wireless drivers into their own menu.
> >>> There are only 2 Broadcom specific drivers so we group
> >>> them into a menu which can expand. Although rndis_wlan
> >>> also supports Broadcom devices, RNDIS is a spec and other
> >>> vendors could technically implement solutions with it
> >>> as well so we keep that separate as users most likely
> >>> won't look for those devices under a Broadcom tag.
> >>>
> >>> Cc: Michael Buesch <mb@bu3sch.de>
> >>> Cc: Gábor Stefanik <netrolller.3d@gmail.com>
> >>> Cc: Johannes Berg <johannes@sipsolutions.net>
> >>> Signed-off-by: Luis R. Rodriguez <lrodriguez@atheros.com>
> >>> ---
> >>>  drivers/net/wireless/Kconfig |   13 +++++++++++++
> >>>  1 files changed, 13 insertions(+), 0 deletions(-)
> >>>
> >>> diff --git a/drivers/net/wireless/Kconfig b/drivers/net/wireless/Kconfig
> >>> index c2e88dc..150565d 100644
> >>> --- a/drivers/net/wireless/Kconfig
> >>> +++ b/drivers/net/wireless/Kconfig
> >>> @@ -561,8 +561,21 @@ source "drivers/net/wireless/iwmc3200wifi/Kconfig"
> >>>  endif # INTEL_80211
> >>>
> >>>  source "drivers/net/wireless/hostap/Kconfig"
> >>> +
> >>> +config BROADCOM_80211
> >>> +       bool "Broadcom"
> >>> +       depends on WLAN_80211
> >>> +       ---help---
> >>> +         This will enable the support for Broadcom wireless drivers. This
> >>> +         includes b43 driver, b43legacy driver and the rndis_wlan driver.
> >>
> >> NAK. Again, rndis_wlan is Microsoft, not Broadcom.
> >
> > Yes, the patch does not group rndis with broadcom, please re-read the patch.
> >
> >  Luis
> >
> 
> But it does say "This includes b43 driver, b43legacy driver and the
> rndis_wlan driver.", which is wrong.

Ah indeed. Thanks for the review.

  Luis

^ permalink raw reply

* Re: [PATCH v2] cfg80211: fix deadlock
From: Kalle Valo @ 2009-08-17 15:31 UTC (permalink / raw)
  To: Johannes Berg; +Cc: John Linville, linux-wireless, Christian Lamparter
In-Reply-To: <1250504737.15103.1.camel@johannes.local>

Johannes Berg <johannes@sipsolutions.net> writes:

> When removing an interface with nl80211, cfg80211 will
> deadlock in the netdev notifier because we're already
> holding rdev->mtx and try to acquire it again to verify
> the scan has been done.
>
> This bug was introduced by my patch
> "cfg80211: check for and abort dangling scan requests".

[...]

> Reported-by: Christian Lamparter <chunkeey@web.de>
> Signed-off-by: Johannes Berg <johannes@sipsolutions.net>

I was bitten by the bug as well and this patch fixed it. Thanks.

Tested-by: Kalle Valo <kalle.valo@iki.fi>

-- 
Kalle Valo

^ permalink raw reply

* Re: 2.6.31-rc6 lockdep report
From: John W. Linville @ 2009-08-17 15:24 UTC (permalink / raw)
  To: Johannes Berg; +Cc: Bob Copeland, linux-wireless
In-Reply-To: <1250522209.15103.19.camel@johannes.local>

On Mon, Aug 17, 2009 at 05:16:49PM +0200, Johannes Berg wrote:
> On Mon, 2009-08-17 at 11:12 -0400, Bob Copeland wrote:
> > Haven't looked at it yet, I just hit this one while riding the
> > train this morning and connecting to someone's adhoc station.
> > 
> > [43559.227490] wlan0: Selected IBSS BSSID 2a:51:0a:35:5c:a1 based on configured SSID
> > [43559.258660] ath5k phy0: bf=efb0b680 bf_skb=(null)
> > [43559.291501] phy0: Adding new IBSS station 00:21:e9:94:5e:93 (dev=wlan0)
> > [43559.291518] phy0: Allocated STA 00:21:e9:94:5e:93
> > [43559.292327] phy0: Inserted STA 00:21:e9:94:5e:93
> > [43633.646820] phy0: Adding new IBSS station 00:1e:c2:3b:f4:e3 (dev=wlan0)
> > [43633.646838] phy0: Allocated STA 00:1e:c2:3b:f4:e3
> > [43633.646859] 
> > [43633.646860] =========================================================
> > [43633.646864] [ INFO: possible irq lock inversion dependency detected ]
> > [43633.646867] 2.6.31-rc6 #179
> > [43633.646870] ---------------------------------------------------------
> > [43633.646873] cc1/18756 just changed the state of lock:
> > [43633.646876]  (&local->sta_lock){..-...}, at: [<fa244acd>] sta_info_insert+0x91/0x174 [mac80211]
> > [43633.646900] but this lock took another, SOFTIRQ-unsafe lock in the past:
> > [43633.646903]  (todo_lock){+.+...}
> > [43633.646906] 
> > [43633.646907] and interrupts could create inverse lock ordering between them.
> 
> Yeah, commit 6565a1c6d2e0754b5f1e8160252f6dc9493ed6c4 needs to be
> backported. I suspect it applies as-is, John mind trying that? If not,
> let me know and I'll port it.

Cherry-picked it ok, will send along w/ next batch of fixes...

-- 
John W. Linville		Someday the world will need a hero, and you
linville@tuxdriver.com			might be all we have.  Be ready.

^ permalink raw reply

* [PATCH] wl1251: correct definitions for 0th bit defines
From: Bob Copeland @ 2009-08-17 15:18 UTC (permalink / raw)
  To: linville, Kalle Valo; +Cc: linux-wireless

ACX_SLV_SOFT_RESET_BIT and ACX_REG_EEPROM_START_BIT are both defined
as "1" in the vendor driver code, but they were defined to be BIT(1)
("2") here.  

The SOFT_RESET typo ensures that wl1251_boot_soft_reset() doesn't;
as a result the device hangs when trying to reprogram the PLL
registers while running.

Signed-off-by: Bob Copeland <me@bobcopeland.com>
---
 drivers/net/wireless/wl12xx/wl1251_reg.h |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/net/wireless/wl12xx/wl1251_reg.h b/drivers/net/wireless/wl12xx/wl1251_reg.h
index 2de47cc..86a8666 100644
--- a/drivers/net/wireless/wl12xx/wl1251_reg.h
+++ b/drivers/net/wireless/wl12xx/wl1251_reg.h
@@ -309,8 +309,8 @@ enum wl12xx_acx_int_reg {
 	ACX_REG_TABLE_LEN
 };
 
-#define ACX_SLV_SOFT_RESET_BIT   BIT(1)
-#define ACX_REG_EEPROM_START_BIT BIT(1)
+#define ACX_SLV_SOFT_RESET_BIT   BIT(0)
+#define ACX_REG_EEPROM_START_BIT BIT(0)
 
 /* Command/Information Mailbox Pointers */
 
-- 
1.6.2.5

-- 
Bob Copeland %% www.bobcopeland.com


^ permalink raw reply related

* Re: 2.6.31-rc6 lockdep report
From: Johannes Berg @ 2009-08-17 15:16 UTC (permalink / raw)
  To: Bob Copeland; +Cc: linux-wireless, John Linville
In-Reply-To: <20090817151223.GA13125@hash.localnet>

[-- Attachment #1: Type: text/plain, Size: 1504 bytes --]

On Mon, 2009-08-17 at 11:12 -0400, Bob Copeland wrote:
> Haven't looked at it yet, I just hit this one while riding the
> train this morning and connecting to someone's adhoc station.
> 
> [43559.227490] wlan0: Selected IBSS BSSID 2a:51:0a:35:5c:a1 based on configured SSID
> [43559.258660] ath5k phy0: bf=efb0b680 bf_skb=(null)
> [43559.291501] phy0: Adding new IBSS station 00:21:e9:94:5e:93 (dev=wlan0)
> [43559.291518] phy0: Allocated STA 00:21:e9:94:5e:93
> [43559.292327] phy0: Inserted STA 00:21:e9:94:5e:93
> [43633.646820] phy0: Adding new IBSS station 00:1e:c2:3b:f4:e3 (dev=wlan0)
> [43633.646838] phy0: Allocated STA 00:1e:c2:3b:f4:e3
> [43633.646859] 
> [43633.646860] =========================================================
> [43633.646864] [ INFO: possible irq lock inversion dependency detected ]
> [43633.646867] 2.6.31-rc6 #179
> [43633.646870] ---------------------------------------------------------
> [43633.646873] cc1/18756 just changed the state of lock:
> [43633.646876]  (&local->sta_lock){..-...}, at: [<fa244acd>] sta_info_insert+0x91/0x174 [mac80211]
> [43633.646900] but this lock took another, SOFTIRQ-unsafe lock in the past:
> [43633.646903]  (todo_lock){+.+...}
> [43633.646906] 
> [43633.646907] and interrupts could create inverse lock ordering between them.

Yeah, commit 6565a1c6d2e0754b5f1e8160252f6dc9493ed6c4 needs to be
backported. I suspect it applies as-is, John mind trying that? If not,
let me know and I'll port it.

johannes

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 801 bytes --]

^ permalink raw reply

* 2.6.31-rc6 lockdep report
From: Bob Copeland @ 2009-08-17 15:12 UTC (permalink / raw)
  To: linux-wireless; +Cc: johannes


Haven't looked at it yet, I just hit this one while riding the
train this morning and connecting to someone's adhoc station.

[43559.227490] wlan0: Selected IBSS BSSID 2a:51:0a:35:5c:a1 based on configured SSID
[43559.258660] ath5k phy0: bf=efb0b680 bf_skb=(null)
[43559.291501] phy0: Adding new IBSS station 00:21:e9:94:5e:93 (dev=wlan0)
[43559.291518] phy0: Allocated STA 00:21:e9:94:5e:93
[43559.292327] phy0: Inserted STA 00:21:e9:94:5e:93
[43633.646820] phy0: Adding new IBSS station 00:1e:c2:3b:f4:e3 (dev=wlan0)
[43633.646838] phy0: Allocated STA 00:1e:c2:3b:f4:e3
[43633.646859] 
[43633.646860] =========================================================
[43633.646864] [ INFO: possible irq lock inversion dependency detected ]
[43633.646867] 2.6.31-rc6 #179
[43633.646870] ---------------------------------------------------------
[43633.646873] cc1/18756 just changed the state of lock:
[43633.646876]  (&local->sta_lock){..-...}, at: [<fa244acd>] sta_info_insert+0x91/0x174 [mac80211]
[43633.646900] but this lock took another, SOFTIRQ-unsafe lock in the past:
[43633.646903]  (todo_lock){+.+...}
[43633.646906] 
[43633.646907] and interrupts could create inverse lock ordering between them.
[43633.646908] 
[43633.646911] 
[43633.646912] other info that might help us debug this:
[43633.646915] 2 locks held by cc1/18756:
[43633.646918]  #0:  (&sc->rxbuflock){+.-.-.}, at: [<fa4eca30>] ath5k_tasklet_rx+0x34/0x56c [ath5k]
[43633.646936]  #1:  (rcu_read_lock){.+.+..}, at: [<fa252cbe>] __ieee80211_rx+0x9f/0x581 [mac80211]
[43633.646959] 
[43633.646960] the first lock's dependencies:
[43633.646963] -> (&local->sta_lock){..-...} ops: 0 {
[43633.646969]    IN-SOFTIRQ-W at:
[43633.646973]                                        [<c104c87d>] __lock_acquire+0x558/0x12d3
[43633.646981]                                        [<c104d6a4>] lock_acquire+0xac/0xc9
[43633.646986]                                        [<c1297b78>] _spin_lock_irqsave+0x36/0x69
[43633.646993]                                        [<fa244acd>] sta_info_insert+0x91/0x174 [mac80211]
[43633.647009]                                        [<fa248b2a>] ieee80211_ibss_add_sta+0x119/0x12a [mac80211]
[43633.647009]                                        [<fa25268f>] __ieee80211_rx_handle_packet+0x349/0x552 [mac80211]
[43633.647009]                                        [<fa25311f>] __ieee80211_rx+0x500/0x581 [mac80211]
[43633.647009]                                        [<fa4ecf17>] ath5k_tasklet_rx+0x51b/0x56c [ath5k]
[43633.647009]                                        [<c102e209>] tasklet_action+0x93/0xe6
[43633.647009]                                        [<c102e8d6>] __do_softirq+0xdb/0x1ac
[43633.647009]                                        [<c102e9d7>] do_softirq+0x30/0x48
[43633.647009]                                        [<c102eb53>] irq_exit+0x3d/0x74
[43633.647009]                                        [<c100405b>] do_IRQ+0x88/0x9c
[43633.647009]                                        [<c100302e>] common_interrupt+0x2e/0x34
[43633.647009]                                        [<ffffffff>] 0xffffffff
[43633.647009]    INITIAL USE at:
[43633.647009]                                       [<c104c943>] __lock_acquire+0x61e/0x12d3
[43633.647009]                                       [<c104d6a4>] lock_acquire+0xac/0xc9
[43633.647009]                                       [<c1297b78>] _spin_lock_irqsave+0x36/0x69
[43633.647009]                                       [<fa244acd>] sta_info_insert+0x91/0x174 [mac80211]
[43633.647009]                                       [<fa24b5c7>] ieee80211_rx_mgmt_assoc_resp+0x5fd/0xa13 [mac80211]
[43633.647009]                                       [<fa24c38b>] ieee80211_sta_work+0x776/0xd3b [mac80211]
[43633.647009]                                       [<c1038a94>] worker_thread+0x1aa/0x287
[43633.647009]                                       [<c103c78b>] kthread+0x70/0x75
[43633.647009]                                       [<c10034f7>] kernel_thread_helper+0x7/0x10
[43633.647009]                                       [<ffffffff>] 0xffffffff
[43633.647009]  }
[43633.647009]  ... key      at: [<fa26a9d0>] __key.38684+0x0/0xffff0e77 [mac80211]
[43633.647009]  -> (&local->key_lock){......} ops: 0 {
[43633.647009]     INITIAL USE at:
[43633.647009]                                         [<c104c943>] __lock_acquire+0x61e/0x12d3
[43633.647009]                                         [<c104d6a4>] lock_acquire+0xac/0xc9
[43633.647009]                                         [<c1297b78>] _spin_lock_irqsave+0x36/0x69
[43633.647009]                                         [<fa255f72>] ieee80211_todo_for_each_key+0x2e/0x79 [mac80211]
[43633.647009]                                         [<fa256054>] ieee80211_enable_keys+0x56/0x5b [mac80211]
[43633.647009]                                         [<fa24d7f4>] ieee80211_open+0x47a/0x5f4 [mac80211]
[43633.647009]                                         [<c123430c>] dev_open+0x8b/0xc0
[43633.647009]                                         [<c1233a5c>] dev_change_flags+0x9b/0x14c
[43633.647009]                                         [<c123b01d>] do_setlink+0x2a2/0x348
[43633.647009]                                         [<c123b1a8>] rtnl_setlink+0xe5/0xe9
[43633.647009]                                         [<c123bf67>] rtnetlink_rcv_msg+0x18a/0x1a0
[43633.647009]                                         [<c12442cc>] netlink_rcv_skb+0x35/0x7d
[43633.647009]                                         [<c123bdd6>] rtnetlink_rcv+0x20/0x27
[43633.647009]                                         [<c1243e4c>] netlink_unicast+0x1b1/0x212
[43633.647009]                                         [<c12440d0>] netlink_sendmsg+0x223/0x230
[43633.647009]                                         [<c1226655>] sock_sendmsg+0xcc/0xe2
[43633.647009]                                         [<c12267b9>] sys_sendmsg+0x14e/0x19b
[43633.647009]                                         [<c122770c>] sys_socketcall+0x147/0x170
[43633.647009]                                         [<c1002988>] sysenter_do_call+0x12/0x36
[43633.647009]                                         [<ffffffff>] 0xffffffff
[43633.647009]   }
[43633.647009]   ... key      at: [<fa26a9a0>] __key.38909+0x0/0xffff0ea7 [mac80211]
[43633.647009]   -> (todo_lock){+.+...} ops: 0 {
[43633.647009]      HARDIRQ-ON-W at:
[43633.647009]                                            [<c104c8d3>] __lock_acquire+0x5ae/0x12d3
[43633.647009]                                            [<c104d6a4>] lock_acquire+0xac/0xc9
[43633.647009]                                            [<c1297a4d>] _spin_lock+0x2d/0x5d
[43633.647009]                                            [<fa255e06>] __ieee80211_key_todo+0x1cb/0x1ef [mac80211]
[43633.647009]                                            [<fa255f29>] ieee80211_key_todo+0x19/0x25 [mac80211]
[43633.647009]                                            [<fa255fb6>] ieee80211_todo_for_each_key+0x72/0x79 [mac80211]
[43633.647009]                                            [<fa256054>] ieee80211_enable_keys+0x56/0x5b [mac80211]
[43633.647009]                                            [<fa24d7f4>] ieee80211_open+0x47a/0x5f4 [mac80211]
[43633.647009]                                            [<c123430c>] dev_open+0x8b/0xc0
[43633.647009]                                            [<c1233a5c>] dev_change_flags+0x9b/0x14c
[43633.647009]                                            [<c123b01d>] do_setlink+0x2a2/0x348
[43633.647009]                                            [<c123b1a8>] rtnl_setlink+0xe5/0xe9
[43633.647009]                                            [<c123bf67>] rtnetlink_rcv_msg+0x18a/0x1a0
[43633.647009]                                            [<c12442cc>] netlink_rcv_skb+0x35/0x7d
[43633.647009]                                            [<c123bdd6>] rtnetlink_rcv+0x20/0x27
[43633.647009]                                            [<c1243e4c>] netlink_unicast+0x1b1/0x212
[43633.647009]                                            [<c12440d0>] netlink_sendmsg+0x223/0x230
[43633.647009]                                            [<c1226655>] sock_sendmsg+0xcc/0xe2
[43633.647009]                                            [<c12267b9>] sys_sendmsg+0x14e/0x19b
[43633.647009]                                            [<c122770c>] sys_socketcall+0x147/0x170
[43633.647009]                                            [<c1002988>] sysenter_do_call+0x12/0x36
[43633.647009]                                            [<ffffffff>] 0xffffffff
[43633.647009]      SOFTIRQ-ON-W at:
[43633.647009]                                            [<c104c8f2>] __lock_acquire+0x5cd/0x12d3
[43633.647009]                                            [<c104d6a4>] lock_acquire+0xac/0xc9
[43633.647009]                                            [<c1297a4d>] _spin_lock+0x2d/0x5d
[43633.647009]                                            [<fa255e06>] __ieee80211_key_todo+0x1cb/0x1ef [mac80211]
[43633.647009]                                            [<fa255f29>] ieee80211_key_todo+0x19/0x25 [mac80211]
[43633.647009]                                            [<fa255fb6>] ieee80211_todo_for_each_key+0x72/0x79 [mac80211]
[43633.647009]                                            [<fa256054>] ieee80211_enable_keys+0x56/0x5b [mac80211]
[43633.647009]                                            [<fa24d7f4>] ieee80211_open+0x47a/0x5f4 [mac80211]
[43633.647009]                                            [<c123430c>] dev_open+0x8b/0xc0
[43633.647009]                                            [<c1233a5c>] dev_change_flags+0x9b/0x14c
[43633.647009]                                            [<c123b01d>] do_setlink+0x2a2/0x348
[43633.647009]                                            [<c123b1a8>] rtnl_setlink+0xe5/0xe9
[43633.647009]                                            [<c123bf67>] rtnetlink_rcv_msg+0x18a/0x1a0
[43633.647009]                                            [<c12442cc>] netlink_rcv_skb+0x35/0x7d
[43633.647009]                                            [<c123bdd6>] rtnetlink_rcv+0x20/0x27
[43633.647009]                                            [<c1243e4c>] netlink_unicast+0x1b1/0x212
[43633.647009]                                            [<c12440d0>] netlink_sendmsg+0x223/0x230
[43633.647009]                                            [<c1226655>] sock_sendmsg+0xcc/0xe2
[43633.647009]                                            [<c12267b9>] sys_sendmsg+0x14e/0x19b
[43633.647009]                                            [<c122770c>] sys_socketcall+0x147/0x170
[43633.647009]                                            [<c1002988>] sysenter_do_call+0x12/0x36
[43633.647009]                                            [<ffffffff>] 0xffffffff
[43633.647009]      INITIAL USE at:
[43633.647009]                                           [<c104c943>] __lock_acquire+0x61e/0x12d3
[43633.647009]                                           [<c104d6a4>] lock_acquire+0xac/0xc9
[43633.647009]                                           [<c1297a4d>] _spin_lock+0x2d/0x5d
[43633.647009]                                           [<fa255e06>] __ieee80211_key_todo+0x1cb/0x1ef [mac80211]
[43633.647009]                                           [<fa255f29>] ieee80211_key_todo+0x19/0x25 [mac80211]
[43633.647009]                                           [<fa255fb6>] ieee80211_todo_for_each_key+0x72/0x79 [mac80211]
[43633.647009]                                           [<fa256054>] ieee80211_enable_keys+0x56/0x5b [mac80211]
[43633.647009]                                           [<fa24d7f4>] ieee80211_open+0x47a/0x5f4 [mac80211]
[43633.647009]                                           [<c123430c>] dev_open+0x8b/0xc0
[43633.647009]                                           [<c1233a5c>] dev_change_flags+0x9b/0x14c
[43633.647009]                                           [<c123b01d>] do_setlink+0x2a2/0x348
[43633.647009]                                           [<c123b1a8>] rtnl_setlink+0xe5/0xe9
[43633.647009]                                           [<c123bf67>] rtnetlink_rcv_msg+0x18a/0x1a0
[43633.647009]                                           [<c12442cc>] netlink_rcv_skb+0x35/0x7d
[43633.647009]                                           [<c123bdd6>] rtnetlink_rcv+0x20/0x27
[43633.647009]                                           [<c1243e4c>] netlink_unicast+0x1b1/0x212
[43633.647009]                                           [<c12440d0>] netlink_sendmsg+0x223/0x230
[43633.647009]                                           [<c1226655>] sock_sendmsg+0xcc/0xe2
[43633.647009]                                           [<c12267b9>] sys_sendmsg+0x14e/0x19b
[43633.647009]                                           [<c122770c>] sys_socketcall+0x147/0x170
[43633.647009]                                           [<c1002988>] sysenter_do_call+0x12/0x36
[43633.647009]                                           [<ffffffff>] 0xffffffff
[43633.647009]    }
[43633.647009]    ... key      at: [<fa26a70c>] todo_lock+0x10/0xffff114b [mac80211]
[43633.647009]    -> (&cwq->lock){-.-.-.} ops: 0 {
[43633.647009]       IN-HARDIRQ-W at:
[43633.647009]                                              [<c104c85e>] __lock_acquire+0x539/0x12d3
[43633.647009]                                              [<c104d6a4>] lock_acquire+0xac/0xc9
[43633.647009]                                              [<c1297b78>] _spin_lock_irqsave+0x36/0x69
[43633.647009]                                              [<c10394e5>] __queue_work+0x17/0x34
[43633.647009]                                              [<c103957c>] queue_work_on+0x40/0x49
[43633.647009]                                              [<c10396a2>] queue_work+0x26/0x4a
[43633.647009]                                              [<c1175b27>] __acpi_os_execute+0xf1/0x119
[43633.647009]                                              [<c1175b75>] acpi_os_execute+0xf/0x11
[43633.647009]                                              [<c1179697>] acpi_ec_gpe_handler+0x6f/0xa3
[43633.647009]                                              [<c1184640>] acpi_ev_gpe_dispatch+0x51/0x10f
[43633.647009]                                              [<c118478a>] acpi_ev_gpe_detect+0x8c/0xce
[43633.647009]                                              [<c1182ae9>] acpi_ev_sci_xrupt_handler+0x1a/0x20
[43633.647009]                                              [<c1175373>] acpi_irq+0x13/0x2e
[43633.647009]                                              [<c105fcef>] handle_IRQ_event+0x6a/0x12f
[43633.647009]                                              [<c1061426>] handle_fasteoi_irq+0x7e/0xb5
[43633.647009]                                              [<c100489d>] handle_irq+0x40/0x4b
[43633.647009]                                              [<c100401c>] do_IRQ+0x49/0x9c
[43633.647009]                                              [<c100302e>] common_interrupt+0x2e/0x34
[43633.647009]                                              [<c1021bbc>] finish_task_switch+0x6c/0xe8
[43633.647009]                                              [<c129580d>] schedule+0x7af/0x81f
[43633.647009]                                              [<c1001c11>] cpu_idle+0x79/0x88
[43633.647009]                                              [<c12880c4>] rest_init+0x6c/0x6e
[43633.647009]                                              [<c1448753>] start_kernel+0x28b/0x290
[43633.647009]                                              [<c1448038>] __init_begin+0x38/0x40
[43633.647009]                                              [<ffffffff>] 0xffffffff
[43633.647009]       IN-SOFTIRQ-W at:
[43633.647009]                                              [<c104c87d>] __lock_acquire+0x558/0x12d3
[43633.647009]                                              [<c104d6a4>] lock_acquire+0xac/0xc9
[43633.647009]                                              [<c1297b78>] _spin_lock_irqsave+0x36/0x69
[43633.647009]                                              [<c10394e5>] __queue_work+0x17/0x34
[43633.647009]                                              [<c103957c>] queue_work_on+0x40/0x49
[43633.647009]                                              [<c10396a2>] queue_work+0x26/0x4a
[43633.647009]                                              [<c113dd5e>] kblockd_schedule_work+0x12/0x14
[43633.647009]                                              [<c11496ac>] as_antic_timeout+0x58/0xa4
[43633.647009]                                              [<c10325ca>] run_timer_softirq+0x17b/0x1f0
[43633.647009]                                              [<c102e8d6>] __do_softirq+0xdb/0x1ac
[43633.647009]                                              [<c102e9d7>] do_softirq+0x30/0x48
[43633.647009]                                              [<c102eb53>] irq_exit+0x3d/0x74
[43633.647009]                                              [<c10121a6>] smp_apic_timer_interrupt+0x73/0x81
[43633.647009]                                              [<c100333b>] apic_timer_interrupt+0x2f/0x34
[43633.647009]                                              [<c1001beb>] cpu_idle+0x53/0x88
[43633.647009]                                              [<c12880c4>] rest_init+0x6c/0x6e
[43633.647009]                                              [<c1448753>] start_kernel+0x28b/0x290
[43633.647009]                                              [<c1448038>] __init_begin+0x38/0x40
[43633.647009]                                              [<ffffffff>] 0xffffffff
[43633.647009]       IN-RECLAIM_FS-W at:
[43633.647009]                                                 [<c104c92d>] __lock_acquire+0x608/0x12d3
[43633.647009]                                                 [<c104d6a4>] lock_acquire+0xac/0xc9
[43633.647009]                                                 [<c1297b78>] _spin_lock_irqsave+0x36/0x69
[43633.647009]                                                 [<c10394e5>] __queue_work+0x17/0x34
[43633.647009]                                                 [<c103957c>] queue_work_on+0x40/0x49
[43633.647009]                                                 [<c10396a2>] queue_work+0x26/0x4a
[43633.647009]                                                 [<c113dd5e>] kblockd_schedule_work+0x12/0x14
[43633.647009]                                                 [<c113e21f>] blk_unplug_timeout+0x57/0x5b
[43633.647009]                                                 [<c10325ca>] run_timer_softirq+0x17b/0x1f0
[43633.647009]                                                 [<c102e8d6>] __do_softirq+0xdb/0x1ac
[43633.647009]                                                 [<c102e9d7>] do_softirq+0x30/0x48
[43633.647009]                                                 [<c102eb53>] irq_exit+0x3d/0x74
[43633.647009]                                                 [<c10121a6>] smp_apic_timer_interrupt+0x73/0x81
[43633.647009]                                                 [<c100333b>] apic_timer_interrupt+0x2f/0x34
[43633.647009]                                                 [<c10adf79>] destroy_inode+0x32/0x35
[43633.647009]                                                 [<c10ae3fa>] generic_delete_inode+0xe4/0xe8
[43633.647009]                                                 [<c10ad740>] iput+0x50/0x53
[43633.647009]                                                 [<c10dbd0d>] sysfs_d_iput+0x28/0x2b
[43633.647009]                                                 [<c10ab44e>] dentry_iput+0x96/0xb8
[43633.647009]                                                 [<c10ab50d>] d_kill+0x21/0x3b
[43633.647009]                                                 [<c10ab6fa>] __shrink_dcache_sb+0x1d3/0x255
[43633.647009]                                                 [<c10ab855>] shrink_dcache_memory+0xd9/0x15e
[43633.647009]                                                 [<c108321b>] shrink_slab+0xda/0x15f
[43633.647009]                                                 [<c10836a1>] kswapd+0x401/0x587
[43633.647009]                                                 [<c103c78b>] kthread+0x70/0x75
[43633.647009]                                                 [<c10034f7>] kernel_thread_helper+0x7/0x10
[43633.647009]                                                 [<ffffffff>] 0xffffffff
[43633.647009]       INITIAL USE at:
[43633.647009]                                             [<c104c943>] __lock_acquire+0x61e/0x12d3
[43633.647009]                                             [<c104d6a4>] lock_acquire+0xac/0xc9
[43633.647009]                                             [<c1297b78>] _spin_lock_irqsave+0x36/0x69
[43633.647009]                                             [<c10394e5>] __queue_work+0x17/0x34
[43633.647009]                                             [<c103957c>] queue_work_on+0x40/0x49
[43633.647009]                                             [<c10396a2>] queue_work+0x26/0x4a
[43633.647009]                                             [<c1037fe7>] call_usermodehelper_exec+0x8f/0xe1
[43633.647009]                                             [<c114f357>] kobject_uevent_env+0x333/0x368
[43633.647009]                                             [<c114f396>] kobject_uevent+0xa/0xc
[43633.647009]                                             [<c114eb0c>] kset_register+0x2e/0x34
[43633.647009]                                             [<c11b74fe>] bus_register+0xe4/0x232
[43633.647009]                                             [<c146315e>] platform_bus_init+0x23/0x38
[43633.647009]                                             [<c14631f6>] driver_init+0x1c/0x28
[43633.647009]                                             [<c144828c>] kernel_init+0xf2/0x16a
[43633.647009]                                             [<c10034f7>] kernel_thread_helper+0x7/0x10
[43633.647009]                                             [<ffffffff>] 0xffffffff
[43633.647009]     }
[43633.647009]     ... key      at: [<c16231b4>] __key.25893+0x0/0x8
[43633.647009]     -> (key#3){-.-.-.} ops: 0 {
[43633.647009]        IN-HARDIRQ-W at:
[43633.647009]                                                [<c104c85e>] __lock_acquire+0x539/0x12d3
[43633.647009]                                                [<c104d6a4>] lock_acquire+0xac/0xc9
[43633.647009]                                                [<c1297b78>] _spin_lock_irqsave+0x36/0x69
[43633.647009]                                                [<c101d543>] __wake_up+0x1a/0x40
[43633.647009]                                                [<c1038ccd>] insert_work+0x9a/0xa3
[43633.647009]                                                [<c10394f4>] __queue_work+0x26/0x34
[43633.647009]                                                [<c103957c>] queue_work_on+0x40/0x49
[43633.647009]                                                [<c10396a2>] queue_work+0x26/0x4a
[43633.647009]                                                [<c1175b27>] __acpi_os_execute+0xf1/0x119
[43633.647009]                                                [<c1175b75>] acpi_os_execute+0xf/0x11
[43633.647009]                                                [<c1179697>] acpi_ec_gpe_handler+0x6f/0xa3
[43633.647009]                                                [<c1184640>] acpi_ev_gpe_dispatch+0x51/0x10f
[43633.647009]                                                [<c118478a>] acpi_ev_gpe_detect+0x8c/0xce
[43633.647009]                                                [<c1182ae9>] acpi_ev_sci_xrupt_handler+0x1a/0x20
[43633.647009]                                                [<c1175373>] acpi_irq+0x13/0x2e
[43633.647009]                                                [<c105fcef>] handle_IRQ_event+0x6a/0x12f
[43633.647009]                                                [<c1061426>] handle_fasteoi_irq+0x7e/0xb5
[43633.647009]                                                [<c100489d>] handle_irq+0x40/0x4b
[43633.647009]                                                [<c100401c>] do_IRQ+0x49/0x9c
[43633.647009]                                                [<c100302e>] common_interrupt+0x2e/0x34
[43633.647009]                                                [<c1021bbc>] finish_task_switch+0x6c/0xe8
[43633.647009]                                                [<c129580d>] schedule+0x7af/0x81f
[43633.647009]                                                [<c1001c11>] cpu_idle+0x79/0x88
[43633.647009]                                                [<c12880c4>] rest_init+0x6c/0x6e
[43633.647009]                                                [<c1448753>] start_kernel+0x28b/0x290
[43633.647009]                                                [<c1448038>] __init_begin+0x38/0x40
[43633.647009]                                                [<ffffffff>] 0xffffffff
[43633.647009]        IN-SOFTIRQ-W at:
[43633.647009]                                                [<c104c87d>] __lock_acquire+0x558/0x12d3
[43633.647009]                                                [<c104d6a4>] lock_acquire+0xac/0xc9
[43633.647009]                                                [<c1297b78>] _spin_lock_irqsave+0x36/0x69
[43633.647009]                                                [<c101d543>] __wake_up+0x1a/0x40
[43633.647009]                                                [<c1038ccd>] insert_work+0x9a/0xa3
[43633.647009]                                                [<c10394f4>] __queue_work+0x26/0x34
[43633.647009]                                                [<c103957c>] queue_work_on+0x40/0x49
[43633.647009]                                                [<c10396a2>] queue_work+0x26/0x4a
[43633.647009]                                                [<c113dd5e>] kblockd_schedule_work+0x12/0x14
[43633.647009]                                                [<c11496ac>] as_antic_timeout+0x58/0xa4
[43633.647009]                                                [<c10325ca>] run_timer_softirq+0x17b/0x1f0
[43633.647009]                                                [<c102e8d6>] __do_softirq+0xdb/0x1ac
[43633.647009]                                                [<c102e9d7>] do_softirq+0x30/0x48
[43633.647009]                                                [<c102eb53>] irq_exit+0x3d/0x74
[43633.647009]                                                [<c10121a6>] smp_apic_timer_interrupt+0x73/0x81
[43633.647009]                                                [<c100333b>] apic_timer_interrupt+0x2f/0x34
[43633.647009]                                                [<c1001beb>] cpu_idle+0x53/0x88
[43633.647009]                                                [<c12880c4>] rest_init+0x6c/0x6e
[43633.647009]                                                [<c1448753>] start_kernel+0x28b/0x290
[43633.647009]                                                [<c1448038>] __init_begin+0x38/0x40
[43633.647009]                                                [<ffffffff>] 0xffffffff
[43633.647009]        IN-RECLAIM_FS-W at:
[43633.647009]                                                   [<c104c92d>] __lock_acquire+0x608/0x12d3
[43633.647009]                                                   [<c104d6a4>] lock_acquire+0xac/0xc9
[43633.647009]                                                   [<c1297b78>] _spin_lock_irqsave+0x36/0x69
[43633.647009]                                                   [<c101d543>] __wake_up+0x1a/0x40
[43633.647009]                                                   [<c1038ccd>] insert_work+0x9a/0xa3
[43633.647009]                                                   [<c10394f4>] __queue_work+0x26/0x34
[43633.647009]                                                   [<c103957c>] queue_work_on+0x40/0x49
[43633.647009]                                                   [<c10396a2>] queue_work+0x26/0x4a
[43633.647009]                                                   [<c113dd5e>] kblockd_schedule_work+0x12/0x14
[43633.647009]                                                   [<c113e21f>] blk_unplug_timeout+0x57/0x5b
[43633.647009]                                                   [<c10325ca>] run_timer_softirq+0x17b/0x1f0
[43633.647009]                                                   [<c102e8d6>] __do_softirq+0xdb/0x1ac
[43633.647009]                                                   [<c102e9d7>] do_softirq+0x30/0x48
[43633.647009]                                                   [<c102eb53>] irq_exit+0x3d/0x74
[43633.647009]                                                   [<c10121a6>] smp_apic_timer_interrupt+0x73/0x81
[43633.647009]                                                   [<c100333b>] apic_timer_interrupt+0x2f/0x34
[43633.647009]                                                   [<c10adf79>] destroy_inode+0x32/0x35
[43633.647009]                                                   [<c10ae3fa>] generic_delete_inode+0xe4/0xe8
[43633.647009]                                                   [<c10ad740>] iput+0x50/0x53
[43633.647009]                                                   [<c10dbd0d>] sysfs_d_iput+0x28/0x2b
[43633.647009]                                                   [<c10ab44e>] dentry_iput+0x96/0xb8
[43633.647009]                                                   [<c10ab50d>] d_kill+0x21/0x3b
[43633.647009]                                                   [<c10ab6fa>] __shrink_dcache_sb+0x1d3/0x255
[43633.647009]                                                   [<c10ab855>] shrink_dcache_memory+0xd9/0x15e
[43633.647009]                                                   [<c108321b>] shrink_slab+0xda/0x15f
[43633.647009]                                                   [<c10836a1>] kswapd+0x401/0x587
[43633.647009]                                                   [<c103c78b>] kthread+0x70/0x75
[43633.647009]                                                   [<c10034f7>] kernel_thread_helper+0x7/0x10
[43633.647009]                                                   [<ffffffff>] 0xffffffff
[43633.647009]        INITIAL USE at:
[43633.647009]                                               [<c104c943>] __lock_acquire+0x61e/0x12d3
[43633.647009]                                               [<c104d6a4>] lock_acquire+0xac/0xc9
[43633.647009]                                               [<c1297b78>] _spin_lock_irqsave+0x36/0x69
[43633.647009]                                               [<c103cc23>] prepare_to_wait+0x1c/0x4c
[43633.647009]                                               [<c1038962>] worker_thread+0x78/0x287
[43633.647009]                                               [<c103c78b>] kthread+0x70/0x75
[43633.647009]                                               [<c10034f7>] kernel_thread_helper+0x7/0x10
[43633.647009]                                               [<ffffffff>] 0xffffffff
[43633.647009]      }
[43633.647009]      ... key      at: [<c16231ac>] __key.25894+0x0/0x8
[43633.647009]      -> (&rq->lock){-.-.-.} ops: 0 {
[43633.647009]         IN-HARDIRQ-W at:
[43633.647009]                                                  [<c104c85e>] __lock_acquire+0x539/0x12d3
[43633.647009]                                                  [<c104d6a4>] lock_acquire+0xac/0xc9
[43633.647009]                                                  [<c1297a4d>] _spin_lock+0x2d/0x5d
[43633.647009]                                                  [<c1026192>] scheduler_tick+0x36/0x1dc
[43633.647009]                                                  [<c1032ca6>] update_process_times+0x47/0x53
[43633.647009]                                                  [<c1046e81>] tick_periodic+0x6c/0x79
[43633.647009]                                                  [<c1046eab>] tick_handle_periodic+0x1d/0x76
[43633.647009]                                                  [<c1004c76>] timer_interrupt+0x3e/0x45
[43633.647009]                                                  [<c105fcef>] handle_IRQ_event+0x6a/0x12f
[43633.647009]                                                  [<c10614e4>] handle_level_irq+0x87/0xcd
[43633.647009]                                                  [<c100489d>] handle_irq+0x40/0x4b
[43633.647009]                                                  [<c100401c>] do_IRQ+0x49/0x9c
[43633.647009]                                                  [<c100302e>] common_interrupt+0x2e/0x34
[43633.647009]                                                  [<c114dc68>] get_from_free_list+0x32/0x39
[43633.647009]                                                  [<c114dda8>] idr_get_empty_slot+0x26/0x1e7
[43633.647009]                                                  [<c114df99>] ida_get_new_above+0x30/0x166
[43633.647009]                                                  [<c10b18f0>] alloc_vfsmnt+0x57/0x11d
[43633.647009]                                                  [<c109f585>] vfs_kern_mount+0x2b/0x7b
[43633.647009]                                                  [<c109f5ea>] kern_mount_data+0x15/0x17
[43633.647009]                                                  [<c145d44f>] sysfs_init+0x50/0xa0
[43633.647009]                                                  [<c145c95b>] mnt_init+0x87/0x147
[43633.647009]                                                  [<c145c634>] vfs_caches_init+0xd9/0xeb
[43633.647009]                                                  [<c144872b>] start_kernel+0x263/0x290
[43633.647009]                                                  [<c1448038>] __init_begin+0x38/0x40
[43633.647009]                                                  [<ffffffff>] 0xffffffff
[43633.647009]         IN-SOFTIRQ-W at:
[43633.647009]                                                  [<c104c87d>] __lock_acquire+0x558/0x12d3
[43633.647009]                                                  [<c104d6a4>] lock_acquire+0xac/0xc9
[43633.647009]                                                  [<c1297a4d>] _spin_lock+0x2d/0x5d
[43633.647009]                                                  [<c101d62c>] task_rq_lock+0x3b/0x65
[43633.647009]                                                  [<c10228b1>] try_to_wake_up+0x31/0x20b
[43633.647009]                                                  [<c1022ac2>] wake_up_process+0x14/0x16
[43633.647009]                                                  [<c1032b63>] process_timeout+0xd/0xf
[43633.647009]                                                  [<c10325ca>] run_timer_softirq+0x17b/0x1f0
[43633.647009]                                                  [<c102e8d6>] __do_softirq+0xdb/0x1ac
[43633.647009]                                                  [<c102e9d7>] do_softirq+0x30/0x48
[43633.647009]                                                  [<c102eb53>] irq_exit+0x3d/0x74
[43633.647009]                                                  [<c10121a6>] smp_apic_timer_interrupt+0x73/0x81
[43633.647009]                                                  [<c100333b>] apic_timer_interrupt+0x2f/0x34
[43633.647009]                                                  [<c1001beb>] cpu_idle+0x53/0x88
[43633.647009]                                                  [<c12880c4>] rest_init+0x6c/0x6e
[43633.647009]                                                  [<c1448753>] start_kernel+0x28b/0x290
[43633.647009]                                                  [<c1448038>] __init_begin+0x38/0x40
[43633.647009]                                                  [<ffffffff>] 0xffffffff
[43633.647009]         IN-RECLAIM_FS-W at:
[43633.647009]                                                     [<c104c92d>] __lock_acquire+0x608/0x12d3
[43633.647009]                                                     [<c104d6a4>] lock_acquire+0xac/0xc9
[43633.647009]                                                     [<c1297a4d>] _spin_lock+0x2d/0x5d
[43633.647009]                                                     [<c101d62c>] task_rq_lock+0x3b/0x65
[43633.647009]                                                     [<c1025e97>] set_cpus_allowed_ptr+0x1a/0xdc
[43633.647009]                                                     [<c10832fe>] kswapd+0x5e/0x587
[43633.647009]                                                     [<c103c78b>] kthread+0x70/0x75
[43633.647009]                                                     [<c10034f7>] kernel_thread_helper+0x7/0x10
[43633.647009]                                                     [<ffffffff>] 0xffffffff
[43633.647009]         INITIAL USE at:
[43633.647009]                                                 [<c104c943>] __lock_acquire+0x61e/0x12d3
[43633.647009]                                                 [<c104d6a4>] lock_acquire+0xac/0xc9
[43633.647009]                                                 [<c1297b78>] _spin_lock_irqsave+0x36/0x69
[43633.647009]                                                 [<c1020b4d>] rq_attach_root+0x17/0xa9
[43633.647009]                                                 [<c1456efd>] sched_init+0x290/0x3a1
[43633.647009]                                                 [<c1448625>] start_kernel+0x15d/0x290
[43633.647009]                                                 [<c1448038>] __init_begin+0x38/0x40
[43633.647009]                                                 [<ffffffff>] 0xffffffff
[43633.647009]       }
[43633.647009]       ... key      at: [<c15e035c>] __key.51718+0x0/0x8
[43633.647009]       -> (&vec->lock){..-...} ops: 0 {
[43633.647009]          IN-SOFTIRQ-W at:
[43633.647009]                                                    [<c104c87d>] __lock_acquire+0x558/0x12d3
[43633.647009]                                                    [<c104d6a4>] lock_acquire+0xac/0xc9
[43633.647009]                                                    [<c1297b78>] _spin_lock_irqsave+0x36/0x69
[43633.647009]                                                    [<c1078184>] cpupri_set+0x66/0xf0
[43633.647009]                                                    [<c1027584>] enqueue_task_rt+0xd3/0x232
[43633.647009]                                                    [<c101ad56>] enqueue_task+0x2f/0x3b
[43633.647009]                                                    [<c101ae2c>] activate_task+0x24/0x2a
[43633.647009]                                                    [<c102294b>] try_to_wake_up+0xcb/0x20b
[43633.647009]                                                    [<c1022ac2>] wake_up_process+0x14/0x16
[43633.647009]                                                    [<c1025cf7>] rebalance_domains+0x2d7/0x3b6
[43633.647009]                                                    [<c1025e0a>] run_rebalance_domains+0x34/0xa7
[43633.647009]                                                    [<c102e8d6>] __do_softirq+0xdb/0x1ac
[43633.647009]                                                    [<c102e9d7>] do_softirq+0x30/0x48
[43633.647009]                                                    [<c102eb53>] irq_exit+0x3d/0x74
[43633.647009]                                                    [<c10121a6>] smp_apic_timer_interrupt+0x73/0x81
[43633.647009]                                                    [<c100333b>] apic_timer_interrupt+0x2f/0x34
[43633.647009]                                                    [<c1214ab7>] cpuidle_idle_call+0x6a/0xa3
[43633.647009]                                                    [<c1001beb>] cpu_idle+0x53/0x88
[43633.647009]                                                    [<c12927c1>] start_secondary+0x1ad/0x1b4
[43633.647009]                                                    [<ffffffff>] 0xffffffff
[43633.647009]          INITIAL USE at:
[43633.647009]                                                   [<c104c943>] __lock_acquire+0x61e/0x12d3
[43633.647009]                                                   [<c104d6a4>] lock_acquire+0xac/0xc9
[43633.647009]                                                   [<c1297b78>] _spin_lock_irqsave+0x36/0x69
[43633.647009]                                                   [<c10781c7>] cpupri_set+0xa9/0xf0
[43633.647009]                                                   [<c101f880>] rq_online_rt+0x5e/0x61
[43633.647009]                                                   [<c101cdc8>] set_rq_online+0x40/0x4a
[43633.647009]                                                   [<c1020bbc>] rq_attach_root+0x86/0xa9
[43633.647009]                                                   [<c1456efd>] sched_init+0x290/0x3a1
[43633.647009]                                                   [<c1448625>] start_kernel+0x15d/0x290
[43633.647009]                                                   [<c1448038>] __init_begin+0x38/0x40
[43633.647009]                                                   [<ffffffff>] 0xffffffff
[43633.647009]        }
[43633.647009]        ... key      at: [<c1b5e218>] __key.14809+0x0/0x28
[43633.647009]       ... acquired at:
[43633.647009]    [<c104d315>] __lock_acquire+0xff0/0x12d3
[43633.647009]    [<c104d6a4>] lock_acquire+0xac/0xc9
[43633.647009]    [<c1297b78>] _spin_lock_irqsave+0x36/0x69
[43633.647009]    [<c10781c7>] cpupri_set+0xa9/0xf0
[43633.647009]    [<c101f880>] rq_online_rt+0x5e/0x61
[43633.647009]    [<c101cdc8>] set_rq_online+0x40/0x4a
[43633.647009]    [<c1020bbc>] rq_attach_root+0x86/0xa9
[43633.647009]    [<c1456efd>] sched_init+0x290/0x3a1
[43633.647009]    [<c1448625>] start_kernel+0x15d/0x290
[43633.647009]    [<c1448038>] __init_begin+0x38/0x40
[43633.647009]    [<ffffffff>] 0xffffffff
[43633.647009] 
[43633.647009]       -> (&rt_b->rt_runtime_lock){..-...} ops: 0 {
[43633.647009]          IN-SOFTIRQ-W at:
[43633.647009]                                                    [<c104c87d>] __lock_acquire+0x558/0x12d3
[43633.647009]                                                    [<c104d6a4>] lock_acquire+0xac/0xc9
[43633.647009]                                                    [<c1297a4d>] _spin_lock+0x2d/0x5d
[43633.647009]                                                    [<c1027611>] enqueue_task_rt+0x160/0x232
[43633.647009]                                                    [<c101ad56>] enqueue_task+0x2f/0x3b
[43633.647009]                                                    [<c101ae2c>] activate_task+0x24/0x2a
[43633.647009]                                                    [<c102294b>] try_to_wake_up+0xcb/0x20b
[43633.647009]                                                    [<c1022ac2>] wake_up_process+0x14/0x16
[43633.647009]                                                    [<c1025cf7>] rebalance_domains+0x2d7/0x3b6
[43633.647009]                                                    [<c1025e0a>] run_rebalance_domains+0x34/0xa7
[43633.647009]                                                    [<c102e8d6>] __do_softirq+0xdb/0x1ac
[43633.647009]                                                    [<c102e9d7>] do_softirq+0x30/0x48
[43633.647009]                                                    [<c102eb53>] irq_exit+0x3d/0x74
[43633.647009]                                                    [<c10121a6>] smp_apic_timer_interrupt+0x73/0x81
[43633.647009]                                                    [<c100333b>] apic_timer_interrupt+0x2f/0x34
[43633.647009]                                                    [<c1214ab7>] cpuidle_idle_call+0x6a/0xa3
[43633.647009]                                                    [<c1001beb>] cpu_idle+0x53/0x88
[43633.647009]                                                    [<c12927c1>] start_secondary+0x1ad/0x1b4
[43633.647009]                                                    [<ffffffff>] 0xffffffff
[43633.647009]          INITIAL USE at:
[43633.647009]                                                   [<c104c943>] __lock_acquire+0x61e/0x12d3
[43633.647009]                                                   [<c104d6a4>] lock_acquire+0xac/0xc9
[43633.647009]                                                   [<c1297a4d>] _spin_lock+0x2d/0x5d
[43633.647009]                                                   [<c1027611>] enqueue_task_rt+0x160/0x232
[43633.647009]                                                   [<c101ad56>] enqueue_task+0x2f/0x3b
[43633.647009]                                                   [<c101ae2c>] activate_task+0x24/0x2a
[43633.647009]                                                   [<c102294b>] try_to_wake_up+0xcb/0x20b
[43633.647009]                                                   [<c1022ac2>] wake_up_process+0x14/0x16
[43633.647009]                                                   [<c1293248>] migration_call+0xbc/0x470
[43633.647009]                                                   [<c1457218>] migration_init+0x3b/0x4b
[43633.647009]                                                   [<c1001141>] do_one_initcall+0x4f/0x116
[43633.647009]                                                   [<c14481e7>] kernel_init+0x4d/0x16a
[43633.647009]                                                   [<c10034f7>] kernel_thread_helper+0x7/0x10
[43633.647009]                                                   [<ffffffff>] 0xffffffff
[43633.647009]        }
[43633.647009]        ... key      at: [<c15e0364>] __key.41387+0x0/0x8
[43633.647009]        -> (&cpu_base->lock){-.-.-.} ops: 0 {
[43633.647009]           IN-HARDIRQ-W at:
[43633.647009]                                                      [<c104c85e>] __lock_acquire+0x539/0x12d3
[43633.647009]                                                      [<c104d6a4>] lock_acquire+0xac/0xc9
[43633.647009]                                                      [<c1297a4d>] _spin_lock+0x2d/0x5d
[43633.647009]                                                      [<c103f3a0>] hrtimer_run_queues+0xde/0x11c
[43633.647009]                                                      [<c1032c4e>] run_local_timers+0xd/0x1e
[43633.647009]                                                      [<c1032c88>] update_process_times+0x29/0x53
[43633.647009]                                                      [<c1046e81>] tick_periodic+0x6c/0x79
[43633.647009]                                                      [<c1046eab>] tick_handle_periodic+0x1d/0x76
[43633.647009]                                                      [<c10121a1>] smp_apic_timer_interrupt+0x6e/0x81
[43633.647009]                                                      [<c100333b>] apic_timer_interrupt+0x2f/0x34
[43633.647009]                                                      [<c10991d4>] cache_alloc_debugcheck_after+0x5d/0x194
[43633.647009]                                                      [<c109aa5f>] kmem_cache_alloc+0xd4/0x16e
[43633.647009]                                                      [<c109a3f6>] cache_alloc_refill+0x371/0x5c3
[43633.647009]                                                      [<c109a8d2>] __kmalloc+0xea/0x1a3
[43633.647009]                                                      [<c109adc3>] alloc_arraycache+0x1e/0x50
[43633.647009]                                                      [<c129484a>] cpuup_callback+0x14d/0x261
[43633.647009]                                                      [<c1299ed1>] notifier_call_chain+0x51/0x7e
[43633.647009]                                                      [<c104082e>] __raw_notifier_call_chain+0x13/0x15
[43633.647009]                                                      [<c12936d4>] _cpu_up+0x62/0x105
[43633.647009]                                                      [<c12937c3>] cpu_up+0x4c/0x5c
[43633.647009]                                                      [<c1448233>] kernel_init+0x99/0x16a
[43633.647009]                                                      [<c10034f7>] kernel_thread_helper+0x7/0x10
[43633.647009]                                                      [<ffffffff>] 0xffffffff
[43633.647009]           IN-SOFTIRQ-W at:
[43633.647009]                                                      [<c104c87d>] __lock_acquire+0x558/0x12d3
[43633.647009]                                                      [<c104d6a4>] lock_acquire+0xac/0xc9
[43633.647009]                                                      [<c1297b78>] _spin_lock_irqsave+0x36/0x69
[43633.647009]                                                      [<c103f695>] lock_hrtimer_base+0x1d/0x38
[43633.647009]                                                      [<c103f7b8>] __hrtimer_start_range_ns+0x34/0x326
[43633.647009]                                                      [<c103fade>] hrtimer_start_range_ns+0x18/0x1d
[43633.647009]                                                      [<c1047f3e>] tick_setup_sched_timer+0x10b/0x133
[43633.647009]                                                      [<c103f536>] hrtimer_run_pending+0xb7/0xed
[43633.647009]                                                      [<c1032476>] run_timer_softirq+0x27/0x1f0
[43633.647009]                                                      [<c102e8d6>] __do_softirq+0xdb/0x1ac
[43633.647009]                                                      [<c102e9d7>] do_softirq+0x30/0x48
[43633.647009]                                                      [<c102eb53>] irq_exit+0x3d/0x74
[43633.647009]                                                      [<c10121a6>] smp_apic_timer_interrupt+0x73/0x81
[43633.647009]                                                      [<c100333b>] apic_timer_interrupt+0x2f/0x34
[43633.647009]                                                      [<c1001beb>] cpu_idle+0x53/0x88
[43633.647009]                                                      [<c12927c1>] start_secondary+0x1ad/0x1b4
[43633.647009]                                                      [<ffffffff>] 0xffffffff
[43633.647009]           IN-RECLAIM_FS-W at:
[43633.647009]                                                         [<c104c92d>] __lock_acquire+0x608/0x12d3
[43633.647009]                                                         [<c104d6a4>] lock_acquire+0xac/0xc9
[43633.647009]                                                         [<c1297a4d>] _spin_lock+0x2d/0x5d
[43633.647009]                                                         [<c103fdf4>] hrtimer_interrupt+0xad/0x16c
[43633.647009]                                                         [<c10121a1>] smp_apic_timer_interrupt+0x6e/0x81
[43633.647009]                                                         [<c100333b>] apic_timer_interrupt+0x2f/0x34
[43633.647009]                                                         [<c103c78b>] kthread+0x70/0x75
[43633.647009]                                                         [<c10034f7>] kernel_thread_helper+0x7/0x10
[43633.647009]                                                         [<ffffffff>] 0xffffffff
[43633.647009]           INITIAL USE at:
[43633.647009]                                                     [<c104c943>] __lock_acquire+0x61e/0x12d3
[43633.647009]                                                     [<c104d6a4>] lock_acquire+0xac/0xc9
[43633.647009]                                                     [<c1297b78>] _spin_lock_irqsave+0x36/0x69
[43633.647009]                                                     [<c103f695>] lock_hrtimer_base+0x1d/0x38
[43633.647009]                                                     [<c103f7b8>] __hrtimer_start_range_ns+0x34/0x326
[43633.647009]                                                     [<c1027662>] enqueue_task_rt+0x1b1/0x232
[43633.647009]                                                     [<c101ad56>] enqueue_task+0x2f/0x3b
[43633.647009]                                                     [<c101ae2c>] activate_task+0x24/0x2a
[43633.647009]                                                     [<c102294b>] try_to_wake_up+0xcb/0x20b
[43633.647009]                                                     [<c1022ac2>] wake_up_process+0x14/0x16
[43633.647009]                                                     [<c1293248>] migration_call+0xbc/0x470
[43633.647009]                                                     [<c1457218>] migration_init+0x3b/0x4b
[43633.647009]                                                     [<c1001141>] do_one_initcall+0x4f/0x116
[43633.647009]                                                     [<c14481e7>] kernel_init+0x4d/0x16a
[43633.647009]                                                     [<c10034f7>] kernel_thread_helper+0x7/0x10
[43633.647009]                                                     [<ffffffff>] 0xffffffff
[43633.647009]         }
[43633.647009]         ... key      at: [<c1623538>] __key.20989+0x0/0x8
[43633.647009]         -> (&cpu_base->lock/1){......} ops: 0 {
[43633.647009]            INITIAL USE at:
[43633.647009]                                                       [<c104c943>] __lock_acquire+0x61e/0x12d3
[43633.647009]                                                       [<c104d6a4>] lock_acquire+0xac/0xc9
[43633.647009]                                                       [<c12979f0>] _spin_lock_nested+0x34/0x64
[43633.647009]                                                       [<c1293ed9>] hrtimer_cpu_notify+0xf5/0x17d
[43633.647009]                                                       [<c1299ed1>] notifier_call_chain+0x51/0x7e
[43633.647009]                                                       [<c1040841>] raw_notifier_call_chain+0x11/0x13
[43633.647009]                                                       [<c128883f>] _cpu_down+0x16f/0x23a
[43633.647009]                                                       [<c102ad11>] disable_nonboot_cpus+0x5d/0xf4
[43633.647009]                                                       [<c1057a92>] suspend_devices_and_enter+0xbe/0x178
[43633.647009]                                                       [<c1057c19>] enter_state+0xcd/0x119
[43633.647009]                                                       [<c10573d5>] state_store+0x98/0xac
[43633.647009]                                                       [<c114e6b5>] kobj_attr_store+0x16/0x22
[43633.647009]                                                       [<c10daed5>] sysfs_write_file+0xcd/0xf8
[43633.647009]                                                       [<c109e7af>] vfs_write+0x8f/0x117
[43633.647009]                                                       [<c109e8f3>] sys_write+0x48/0x75
[43633.647009]                                                       [<c1002988>] sysenter_do_call+0x12/0x36
[43633.647009]                                                       [<ffffffff>] 0xffffffff
[43633.647009]          }
[43633.647009]          ... key      at: [<c1623539>] __key.20989+0x1/0x8
[43633.647009]         ... acquired at:
[43633.647009]    [<c104d315>] __lock_acquire+0xff0/0x12d3
[43633.647009]    [<c104d6a4>] lock_acquire+0xac/0xc9
[43633.647009]    [<c12979f0>] _spin_lock_nested+0x34/0x64
[43633.647009]    [<c1293ed9>] hrtimer_cpu_notify+0xf5/0x17d
[43633.647009]    [<c1299ed1>] notifier_call_chain+0x51/0x7e
[43633.647009]    [<c1040841>] raw_notifier_call_chain+0x11/0x13
[43633.647009]    [<c128883f>] _cpu_down+0x16f/0x23a
[43633.647009]    [<c102ad11>] disable_nonboot_cpus+0x5d/0xf4
[43633.647009]    [<c1057a92>] suspend_devices_and_enter+0xbe/0x178
[43633.647009]    [<c1057c19>] enter_state+0xcd/0x119
[43633.647009]    [<c10573d5>] state_store+0x98/0xac
[43633.647009]    [<c114e6b5>] kobj_attr_store+0x16/0x22
[43633.647009]    [<c10daed5>] sysfs_write_file+0xcd/0xf8
[43633.647009]    [<c109e7af>] vfs_write+0x8f/0x117
[43633.647009]    [<c109e8f3>] sys_write+0x48/0x75
[43633.647009]    [<c1002988>] sysenter_do_call+0x12/0x36
[43633.647009]    [<ffffffff>] 0xffffffff
[43633.647009] 
[43633.647009]        ... acquired at:
[43633.647009]    [<c104d315>] __lock_acquire+0xff0/0x12d3
[43633.647009]    [<c104d6a4>] lock_acquire+0xac/0xc9
[43633.647009]    [<c1297b78>] _spin_lock_irqsave+0x36/0x69
[43633.647009]    [<c103f695>] lock_hrtimer_base+0x1d/0x38
[43633.647009]    [<c103f7b8>] __hrtimer_start_range_ns+0x34/0x326
[43633.647009]    [<c1027662>] enqueue_task_rt+0x1b1/0x232
[43633.647009]    [<c101ad56>] enqueue_task+0x2f/0x3b
[43633.647009]    [<c101ae2c>] activate_task+0x24/0x2a
[43633.647009]    [<c102294b>] try_to_wake_up+0xcb/0x20b
[43633.647009]    [<c1022ac2>] wake_up_process+0x14/0x16
[43633.647009]    [<c1293248>] migration_call+0xbc/0x470
[43633.647009]    [<c1457218>] migration_init+0x3b/0x4b
[43633.647009]    [<c1001141>] do_one_initcall+0x4f/0x116
[43633.647009]    [<c14481e7>] kernel_init+0x4d/0x16a
[43633.647009]    [<c10034f7>] kernel_thread_helper+0x7/0x10
[43633.647009]    [<ffffffff>] 0xffffffff
[43633.647009] 
[43633.647009]        -> (&rt_rq->rt_runtime_lock){-.-...} ops: 0 {
[43633.647009]           IN-HARDIRQ-W at:
[43633.647009]                                                      [<c104c85e>] __lock_acquire+0x539/0x12d3
[43633.647009]                                                      [<c104d6a4>] lock_acquire+0xac/0xc9
[43633.647009]                                                      [<c1297a4d>] _spin_lock+0x2d/0x5d
[43633.647009]                                                      [<c101f3eb>] update_curr_rt+0x123/0x1b0
[43633.647009]                                                      [<c101f48c>] task_tick_rt+0x14/0xb1
[43633.647009]                                                      [<c1026234>] scheduler_tick+0xd8/0x1dc
[43633.647009]                                                      [<c1032ca6>] update_process_times+0x47/0x53
[43633.647009]                                                      [<c1047d9b>] tick_sched_timer+0x71/0x9f
[43633.647009]                                                      [<c103f290>] __run_hrtimer+0x6b/0x9d
[43633.647009]                                                      [<c103fe59>] hrtimer_interrupt+0x112/0x16c
[43633.647009]                                                      [<c10121a1>] smp_apic_timer_interrupt+0x6e/0x81
[43633.647009]                                                      [<c100333b>] apic_timer_interrupt+0x2f/0x34
[43633.647009]                                                      [<c1038a94>] worker_thread+0x1aa/0x287
[43633.647009]                                                      [<c103c78b>] kthread+0x70/0x75
[43633.647009]                                                      [<c10034f7>] kernel_thread_helper+0x7/0x10
[43633.647009]                                                      [<ffffffff>] 0xffffffff
[43633.647009]           IN-SOFTIRQ-W at:
[43633.647009]                                                      [<c104c87d>] __lock_acquire+0x558/0x12d3
[43633.647009]                                                      [<c104d6a4>] lock_acquire+0xac/0xc9
[43633.647009]                                                      [<c1297a4d>] _spin_lock+0x2d/0x5d
[43633.647009]                                                      [<c101fc8f>] sched_rt_period_timer+0xbc/0x201
[43633.647009]                                                      [<c103f290>] __run_hrtimer+0x6b/0x9d
[43633.647009]                                                      [<c103fe59>] hrtimer_interrupt+0x112/0x16c
[43633.647009]                                                      [<c1047138>] tick_do_broadcast+0x32/0x5b
[43633.647009]                                                      [<c1047210>] tick_handle_oneshot_broadcast+0xaf/0xe7
[43633.647009]                                                      [<c1004c76>] timer_interrupt+0x3e/0x45
[43633.647009]                                                      [<c105fcef>] handle_IRQ_event+0x6a/0x12f
[43633.647009]                                                      [<c1061365>] handle_edge_irq+0xcf/0x112
[43633.647009]                                                      [<c100489d>] handle_irq+0x40/0x4b
[43633.647009]                                                      [<c100401c>] do_IRQ+0x49/0x9c
[43633.647009]                                                      [<c100302e>] common_interrupt+0x2e/0x34
[43633.647009]                                                      [<c102e9d7>] do_softirq+0x30/0x48
[43633.647009]                                                      [<c102eb53>] irq_exit+0x3d/0x74
[43633.647009]                                                      [<c100405b>] do_IRQ+0x88/0x9c
[43633.647009]                                                      [<c100302e>] common_interrupt+0x2e/0x34
[43633.647009]                                                      [<c1214ab7>] cpuidle_idle_call+0x6a/0xa3
[43633.647009]                                                      [<c1001beb>] cpu_idle+0x53/0x88
[43633.647009]                                                      [<c12880c4>] rest_init+0x6c/0x6e
[43633.647009]                                                      [<c1448753>] start_kernel+0x28b/0x290
[43633.647009]                                                      [<c1448038>] __init_begin+0x38/0x40
[43633.647009]                                                      [<ffffffff>] 0xffffffff
[43633.647009]           INITIAL USE at:
[43633.647009]                                                     [<c104c943>] __lock_acquire+0x61e/0x12d3
[43633.647009]                                                     [<c104d6a4>] lock_acquire+0xac/0xc9
[43633.647009]                                                     [<c1297a4d>] _spin_lock+0x2d/0x5d
[43633.647009]                                                     [<c101f3eb>] update_curr_rt+0x123/0x1b0
[43633.647009]                                                     [<c101fa28>] dequeue_task_rt+0x22/0x62
[43633.647009]                                                     [<c101adfa>] dequeue_task+0x98/0xa6
[43633.647009]                                                     [<c101ae56>] deactivate_task+0x24/0x2a
[43633.647009]                                                     [<c129519c>] schedule+0x13e/0x81f
[43633.647009]                                                     [<c10259bb>] migration_thread+0x179/0x1de
[43633.647009]                                                     [<c103c78b>] kthread+0x70/0x75
[43633.647009]                                                     [<c10034f7>] kernel_thread_helper+0x7/0x10
[43633.647009]                                                     [<ffffffff>] 0xffffffff
[43633.647009]         }
[43633.647009]         ... key      at: [<c15e036c>] __key.51698+0x0/0x8
[43633.647009]        ... acquired at:
[43633.647009]    [<c104d315>] __lock_acquire+0xff0/0x12d3
[43633.647009]    [<c104d6a4>] lock_acquire+0xac/0xc9
[43633.647009]    [<c1297a4d>] _spin_lock+0x2d/0x5d
[43633.647009]    [<c101dc40>] __enable_runtime+0x34/0x7f
[43633.647009]    [<c101f866>] rq_online_rt+0x44/0x61
[43633.647009]    [<c101cdc8>] set_rq_online+0x40/0x4a
[43633.647009]    [<c129327c>] migration_call+0xf0/0x470
[43633.647009]    [<c1299ed1>] notifier_call_chain+0x51/0x7e
[43633.647009]    [<c1040841>] raw_notifier_call_chain+0x11/0x13
[43633.647009]    [<c1293738>] _cpu_up+0xc6/0x105
[43633.647009]    [<c12937c3>] cpu_up+0x4c/0x5c
[43633.647009]    [<c1448233>] kernel_init+0x99/0x16a
[43633.647009]    [<c10034f7>] kernel_thread_helper+0x7/0x10
[43633.647009]    [<ffffffff>] 0xffffffff
[43633.647009] 
[43633.647009]       ... acquired at:
[43633.647009]    [<c104d315>] __lock_acquire+0xff0/0x12d3
[43633.647009]    [<c104d6a4>] lock_acquire+0xac/0xc9
[43633.647009]    [<c1297a4d>] _spin_lock+0x2d/0x5d
[43633.647009]    [<c1027611>] enqueue_task_rt+0x160/0x232
[43633.647009]    [<c101ad56>] enqueue_task+0x2f/0x3b
[43633.647009]    [<c101ae2c>] activate_task+0x24/0x2a
[43633.647009]    [<c102294b>] try_to_wake_up+0xcb/0x20b
[43633.647009]    [<c1022ac2>] wake_up_process+0x14/0x16
[43633.647009]    [<c1293248>] migration_call+0xbc/0x470
[43633.647009]    [<c1457218>] migration_init+0x3b/0x4b
[43633.647009]    [<c1001141>] do_one_initcall+0x4f/0x116
[43633.647009]    [<c14481e7>] kernel_init+0x4d/0x16a
[43633.647009]    [<c10034f7>] kernel_thread_helper+0x7/0x10
[43633.647009]    [<ffffffff>] 0xffffffff
[43633.647009] 
[43633.647009]       ... acquired at:
[43633.647009]    [<c104d315>] __lock_acquire+0xff0/0x12d3
[43633.647009]    [<c104d6a4>] lock_acquire+0xac/0xc9
[43633.647009]    [<c1297a4d>] _spin_lock+0x2d/0x5d
[43633.647009]    [<c101f3eb>] update_curr_rt+0x123/0x1b0
[43633.647009]    [<c101fa28>] dequeue_task_rt+0x22/0x62
[43633.647009]    [<c101adfa>] dequeue_task+0x98/0xa6
[43633.647009]    [<c101ae56>] deactivate_task+0x24/0x2a
[43633.647009]    [<c129519c>] schedule+0x13e/0x81f
[43633.647009]    [<c10259bb>] migration_thread+0x179/0x1de
[43633.647009]    [<c103c78b>] kthread+0x70/0x75
[43633.647009]    [<c10034f7>] kernel_thread_helper+0x7/0x10
[43633.647009]    [<ffffffff>] 0xffffffff
[43633.647009] 
[43633.647009]       -> (&rq->lock/1){..-...} ops: 0 {
[43633.647009]          IN-SOFTIRQ-W at:
[43633.647009]                                                    [<c104c87d>] __lock_acquire+0x558/0x12d3
[43633.647009]                                                    [<c104d6a4>] lock_acquire+0xac/0xc9
[43633.647009]                                                    [<c12979f0>] _spin_lock_nested+0x34/0x64
[43633.647009]                                                    [<c102232a>] double_rq_lock+0x4c/0x7f
[43633.647009]                                                    [<c1025ba9>] rebalance_domains+0x189/0x3b6
[43633.647009]                                                    [<c1025e0a>] run_rebalance_domains+0x34/0xa7
[43633.647009]                                                    [<c102e8d6>] __do_softirq+0xdb/0x1ac
[43633.647009]                                                    [<c102e9d7>] do_softirq+0x30/0x48
[43633.647009]                                                    [<c102eb53>] irq_exit+0x3d/0x74
[43633.647009]                                                    [<c10121a6>] smp_apic_timer_interrupt+0x73/0x81
[43633.647009]                                                    [<c100333b>] apic_timer_interrupt+0x2f/0x34
[43633.647009]                                                    [<c1001beb>] cpu_idle+0x53/0x88
[43633.647009]                                                    [<c12927c1>] start_secondary+0x1ad/0x1b4
[43633.647009]                                                    [<ffffffff>] 0xffffffff
[43633.647009]          INITIAL USE at:
[43633.647009]                                                   [<c104c943>] __lock_acquire+0x61e/0x12d3
[43633.647009]                                                   [<c104d6a4>] lock_acquire+0xac/0xc9
[43633.647009]                                                   [<c12979f0>] _spin_lock_nested+0x34/0x64
[43633.647009]                                                   [<c102232a>] double_rq_lock+0x4c/0x7f
[43633.647009]                                                   [<c1024c11>] __migrate_task+0x4d/0xc1
[43633.647009]                                                   [<c10259ef>] migration_thread+0x1ad/0x1de
[43633.647009]                                                   [<c103c78b>] kthread+0x70/0x75
[43633.647009]                                                   [<c10034f7>] kernel_thread_helper+0x7/0x10
[43633.647009]                                                   [<ffffffff>] 0xffffffff
[43633.647009]        }
[43633.647009]        ... key      at: [<c15e035d>] __key.51718+0x1/0x8
[43633.647009]        -> (&sig->cputimer.lock){-.-...} ops: 0 {
[43633.647009]           IN-HARDIRQ-W at:
[43633.647009]                                                      [<c104c85e>] __lock_acquire+0x539/0x12d3
[43633.647009]                                                      [<c104d6a4>] lock_acquire+0xac/0xc9
[43633.647009]                                                      [<c1297a4d>] _spin_lock+0x2d/0x5d
[43633.647009]                                                      [<c101debd>] account_system_time+0x105/0x157
[43633.647009]                                                      [<c101df78>] account_process_tick+0x69/0x7e
[43633.647009]                                                      [<c1032c83>] update_process_times+0x24/0x53
[43633.647009]                                                      [<c1047d9b>] tick_sched_timer+0x71/0x9f
[43633.647009]                                                      [<c103f290>] __run_hrtimer+0x6b/0x9d
[43633.647009]                                                      [<c103fe59>] hrtimer_interrupt+0x112/0x16c
[43633.647009]                                                      [<c10121a1>] smp_apic_timer_interrupt+0x6e/0x81
[43633.647009]                                                      [<c100333b>] apic_timer_interrupt+0x2f/0x34
[43633.647009]                                                      [<c1297a4d>] _spin_lock+0x2d/0x5d
[43633.647009]                                                      [<c10ac78c>] __d_lookup+0x96/0x140
[43633.647009]                                                      [<c10a50c6>] do_lookup+0x23/0x158
[43633.647009]                                                      [<c10a6584>] __link_path_walk+0x30d/0xae6
[43633.647009]                                                      [<c10a6eb2>] path_walk+0x3e/0x77
[43633.647009]                                                      [<c10a6f78>] do_path_lookup+0x26/0x47
[43633.647009]                                                      [<c10a79fe>] do_filp_open+0xcc/0x6e1
[43633.647009]                                                      [<c109c965>] do_sys_open+0x4d/0xe9
[43633.647009]                                                      [<c109ca4d>] sys_open+0x23/0x2b
[43633.647009]                                                      [<c1002988>] sysenter_do_call+0x12/0x36
[43633.647009]                                                      [<ffffffff>] 0xffffffff
[43633.647009]           IN-SOFTIRQ-W at:
[43633.647009]                                                      [<c104c87d>] __lock_acquire+0x558/0x12d3
[43633.647009]                                                      [<c104d6a4>] lock_acquire+0xac/0xc9
[43633.647009]                                                      [<c1297a4d>] _spin_lock+0x2d/0x5d
[43633.647009]                                                      [<c101d7df>] update_curr+0x128/0x149
[43633.647009]                                                      [<c101ed63>] enqueue_task_fair+0x40/0xdc
[43633.647009]                                                      [<c101ad56>] enqueue_task+0x2f/0x3b
[43633.647009]                                                      [<c101ae2c>] activate_task+0x24/0x2a
[43633.647009]                                                      [<c102294b>] try_to_wake_up+0xcb/0x20b
[43633.647009]                                                      [<c1022a9b>] default_wake_function+0x10/0x12
[43633.647009]                                                      [<c103ca74>] autoremove_wake_function+0x14/0x34
[43633.647009]                                                      [<c103cac3>] wake_bit_function+0x2f/0x3c
[43633.647009]                                                      [<c101b00a>] __wake_up_common+0x39/0x61
[43633.647009]                                                      [<c101d557>] __wake_up+0x2e/0x40
[43633.647009]                                                      [<c103c9fd>] __wake_up_bit+0x2c/0x2f
[43633.647009]                                                      [<c107921f>] end_page_writeback+0x65/0x68
[43633.647009]                                                      [<c10ba9e5>] end_buffer_async_write+0x139/0x189
[43633.647009]                                                      [<c10b9449>] end_bio_bh_io_sync+0x33/0x3d
[43633.647009]                                                      [<c10bc824>] bio_endio+0x28/0x2a
[43633.647009]                                                      [<c113e468>] req_bio_endio+0x89/0xa6
[43633.647009]                                                      [<c113e66b>] blk_update_request+0x1e6/0x379
[43633.647009]                                                      [<c113e811>] blk_update_bidi_request+0x13/0x41
[43633.647009]                                                      [<c1140320>] blk_end_bidi_request+0x1d/0x55
[43633.647009]                                                      [<c1140396>] blk_end_request+0xf/0x11
[43633.647009]                                                      [<c11cb225>] scsi_io_completion+0x196/0x3c4
[43633.647009]                                                      [<c11c5785>] scsi_finish_command+0xd3/0xdb
[43633.647009]                                                      [<c11cb554>] scsi_softirq_done+0xed/0xf5
[43633.647009]                                                      [<c1145c63>] blk_done_softirq+0x63/0x70
[43633.647009]                                                      [<c102e8d6>] __do_softirq+0xdb/0x1ac
[43633.647009]                                                      [<c102e9d7>] do_softirq+0x30/0x48
[43633.647009]                                                      [<c102eb53>] irq_exit+0x3d/0x74
[43633.647009]                                                      [<c100405b>] do_IRQ+0x88/0x9c
[43633.647009]                                                      [<c100302e>] common_interrupt+0x2e/0x34
[43633.647009]                                                      [<c1297a4d>] _spin_lock+0x2d/0x5d
[43633.647009]                                                      [<f8043d41>] unix_stream_recvmsg+0xf7/0x416 [unix]
[43633.647009]                                                      [<c12259bd>] sock_aio_read+0xd7/0xe1
[43633.647009]                                                      [<c109df9b>] do_sync_read+0xb0/0xeb
[43633.647009]                                                      [<c109e9bd>] vfs_read+0x9d/0x115
[43633.647009]                                                      [<c109eaf1>] sys_read+0x48/0x75
[43633.647009]                                                      [<c1002988>] sysenter_do_call+0x12/0x36
[43633.647009]                                                      [<ffffffff>] 0xffffffff
[43633.647009]           INITIAL USE at:
[43633.647009]                                                     [<c104c943>] __lock_acquire+0x61e/0x12d3
[43633.647009]                                                     [<c104d6a4>] lock_acquire+0xac/0xc9
[43633.647009]                                                     [<c1297b78>] _spin_lock_irqsave+0x36/0x69
[43633.647009]                                                     [<c103d893>] thread_group_cputimer+0x26/0xae
[43633.647009]                                                     [<c103d93e>] cpu_timer_sample_group+0x23/0x66
[43633.647009]                                                     [<c103d9af>] set_process_cpu_timer+0x2e/0xb4
[43633.647009]                                                     [<c103da8f>] update_rlimit_cpu+0x5a/0x73
[43633.647009]                                                     [<c1036739>] sys_setrlimit+0xdf/0xf6
[43633.647009]                                                     [<c1002988>] sysenter_do_call+0x12/0x36
[43633.647009]                                                     [<ffffffff>] 0xffffffff
[43633.647009]         }
[43633.647009]         ... key      at: [<c15e1668>] __key.21973+0x0/0x8
[43633.647009]        ... acquired at:
[43633.647009]    [<c104d315>] __lock_acquire+0xff0/0x12d3
[43633.647009]    [<c104d6a4>] lock_acquire+0xac/0xc9
[43633.647009]    [<c1297a4d>] _spin_lock+0x2d/0x5d
[43633.647009]    [<c101d7df>] update_curr+0x128/0x149
[43633.647009]    [<c101ed63>] enqueue_task_fair+0x40/0xdc
[43633.647009]    [<c101ad56>] enqueue_task+0x2f/0x3b
[43633.647009]    [<c101ae2c>] activate_task+0x24/0x2a
[43633.647009]    [<c1024c55>] __migrate_task+0x91/0xc1
[43633.647009]    [<c10259ef>] migration_thread+0x1ad/0x1de
[43633.647009]    [<c103c78b>] kthread+0x70/0x75
[43633.647009]    [<c10034f7>] kernel_thread_helper+0x7/0x10
[43633.647009]    [<ffffffff>] 0xffffffff
[43633.647009] 
[43633.647009]       ... acquired at:
[43633.647009]    [<c104d315>] __lock_acquire+0xff0/0x12d3
[43633.647009]    [<c104d6a4>] lock_acquire+0xac/0xc9
[43633.647009]    [<c12979f0>] _spin_lock_nested+0x34/0x64
[43633.647009]    [<c102232a>] double_rq_lock+0x4c/0x7f
[43633.647009]    [<c1024c11>] __migrate_task+0x4d/0xc1
[43633.647009]    [<c10259ef>] migration_thread+0x1ad/0x1de
[43633.647009]    [<c103c78b>] kthread+0x70/0x75
[43633.647009]    [<c10034f7>] kernel_thread_helper+0x7/0x10
[43633.647009]    [<ffffffff>] 0xffffffff
[43633.647009] 
[43633.647009]       ... acquired at:
[43633.647009]    [<c104d315>] __lock_acquire+0xff0/0x12d3
[43633.647009]    [<c104d6a4>] lock_acquire+0xac/0xc9
[43633.647009]    [<c1297a4d>] _spin_lock+0x2d/0x5d
[43633.647009]    [<c101d7df>] update_curr+0x128/0x149
[43633.647009]    [<c101e7b5>] dequeue_task_fair+0x40/0x188
[43633.647009]    [<c101adfa>] dequeue_task+0x98/0xa6
[43633.647009]    [<c101ae56>] deactivate_task+0x24/0x2a
[43633.647009]    [<c129519c>] schedule+0x13e/0x81f
[43633.647009]    [<c12958a0>] io_schedule+0x23/0x2d
[43633.647009]    [<c1079186>] sync_page+0x47/0x4b
[43633.647009]    [<c1079197>] sync_page_killable+0xd/0x30
[43633.647009]    [<c1295bf3>] __wait_on_bit_lock+0x39/0x75
[43633.647009]    [<c10790ae>] __lock_page_killable+0x74/0x7b
[43633.647009]    [<c107adb5>] generic_file_aio_read+0x383/0x532
[43633.647009]    [<c109df9b>] do_sync_read+0xb0/0xeb
[43633.647009]    [<c109e9ad>] vfs_read+0x8d/0x115
[43633.647009]    [<c109eaf1>] sys_read+0x48/0x75
[43633.647009]    [<c1002988>] sysenter_do_call+0x12/0x36
[43633.647009]    [<ffffffff>] 0xffffffff
[43633.647009] 
[43633.647009]      ... acquired at:
[43633.647009]    [<c104d315>] __lock_acquire+0xff0/0x12d3
[43633.647009]    [<c104d6a4>] lock_acquire+0xac/0xc9
[43633.647009]    [<c1297a4d>] _spin_lock+0x2d/0x5d
[43633.647009]    [<c101d62c>] task_rq_lock+0x3b/0x65
[43633.647009]    [<c10228b1>] try_to_wake_up+0x31/0x20b
[43633.647009]    [<c1022a9b>] default_wake_function+0x10/0x12
[43633.647009]    [<c103ca74>] autoremove_wake_function+0x14/0x34
[43633.647009]    [<c101b00a>] __wake_up_common+0x39/0x61
[43633.647009]    [<c101d557>] __wake_up+0x2e/0x40
[43633.647009]    [<c1038ccd>] insert_work+0x9a/0xa3
[43633.647009]    [<c10394f4>] __queue_work+0x26/0x34
[43633.647009]    [<c103957c>] queue_work_on+0x40/0x49
[43633.647009]    [<c10396a2>] queue_work+0x26/0x4a
[43633.647009]    [<c1037fe7>] call_usermodehelper_exec+0x8f/0xe1
[43633.647009]    [<c114f357>] kobject_uevent_env+0x333/0x368
[43633.647009]    [<c114f396>] kobject_uevent+0xa/0xc
[43633.647009]    [<c114eb0c>] kset_register+0x2e/0x34
[43633.647009]    [<c11b74fe>] bus_register+0xe4/0x232
[43633.647009]    [<c146315e>] platform_bus_init+0x23/0x38
[43633.647009]    [<c14631f6>] driver_init+0x1c/0x28
[43633.647009]    [<c144828c>] kernel_init+0xf2/0x16a
[43633.647009]    [<c10034f7>] kernel_thread_helper+0x7/0x10
[43633.647009]    [<ffffffff>] 0xffffffff
[43633.647009] 
[43633.647009]     ... acquired at:
[43633.647009]    [<c104d315>] __lock_acquire+0xff0/0x12d3
[43633.647009]    [<c104d6a4>] lock_acquire+0xac/0xc9
[43633.647009]    [<c1297b78>] _spin_lock_irqsave+0x36/0x69
[43633.647009]    [<c101d543>] __wake_up+0x1a/0x40
[43633.647009]    [<c1038ccd>] insert_work+0x9a/0xa3
[43633.647009]    [<c10394f4>] __queue_work+0x26/0x34
[43633.647009]    [<c103957c>] queue_work_on+0x40/0x49
[43633.647009]    [<c10396a2>] queue_work+0x26/0x4a
[43633.647009]    [<c1037fe7>] call_usermodehelper_exec+0x8f/0xe1
[43633.647009]    [<c114f357>] kobject_uevent_env+0x333/0x368
[43633.647009]    [<c114f396>] kobject_uevent+0xa/0xc
[43633.647009]    [<c114eb0c>] kset_register+0x2e/0x34
[43633.647009]    [<c11b74fe>] bus_register+0xe4/0x232
[43633.647009]    [<c146315e>] platform_bus_init+0x23/0x38
[43633.647009]    [<c14631f6>] driver_init+0x1c/0x28
[43633.647009]    [<c144828c>] kernel_init+0xf2/0x16a
[43633.647009]    [<c10034f7>] kernel_thread_helper+0x7/0x10
[43633.647009]    [<ffffffff>] 0xffffffff
[43633.647009] 
[43633.647009]    ... acquired at:
[43633.647009]    [<c104d315>] __lock_acquire+0xff0/0x12d3
[43633.647009]    [<c104d6a4>] lock_acquire+0xac/0xc9
[43633.647009]    [<c1297b78>] _spin_lock_irqsave+0x36/0x69
[43633.647009]    [<c10394e5>] __queue_work+0x17/0x34
[43633.647009]    [<c103957c>] queue_work_on+0x40/0x49
[43633.647009]    [<c10396a2>] queue_work+0x26/0x4a
[43633.647009]    [<c10396da>] schedule_work+0x14/0x16
[43633.647009]    [<fa2558ff>] add_todo+0x4a/0x58 [mac80211]
[43633.647009]    [<fa256173>] ieee80211_key_link+0x11a/0x138 [mac80211]
[43633.647009]    [<fa2505ff>] ieee80211_add_key+0xee/0x128 [mac80211]
[43633.647009]    [<f8f34451>] cfg80211_set_encryption+0xf2/0x163 [cfg80211]
[43633.647009]    [<f8f34618>] cfg80211_wext_siwencodeext+0x156/0x16f [cfg80211]
[43633.647009]    [<c128779c>] ioctl_standard_call+0x1cc/0x27f
[43633.647009]    [<c1287922>] wext_handle_ioctl+0xd3/0x15d
[43633.647009]    [<c12353e5>] dev_ioctl+0x564/0x584
[43633.647009]    [<c1225eb5>] sock_ioctl+0x1e6/0x1f2
[43633.647009]    [<c10a8d82>] vfs_ioctl+0x1d/0x76
[43633.647009]    [<c10a9321>] do_vfs_ioctl+0x4a0/0x4de
[43633.647009]    [<c10a9392>] sys_ioctl+0x33/0x4d
[43633.647009]    [<c1002988>] sysenter_do_call+0x12/0x36
[43633.647009]    [<ffffffff>] 0xffffffff
[43633.647009] 
[43633.647009]   ... acquired at:
[43633.647009]    [<c104d315>] __lock_acquire+0xff0/0x12d3
[43633.647009]    [<c104d6a4>] lock_acquire+0xac/0xc9
[43633.647009]    [<c1297a4d>] _spin_lock+0x2d/0x5d
[43633.647009]    [<fa2558d1>] add_todo+0x1c/0x58 [mac80211]
[43633.647009]    [<fa25594d>] ieee80211_set_default_key+0x40/0x54 [mac80211]
[43633.647009]    [<fa2503dc>] ieee80211_config_default_key+0x6a/0xa1 [mac80211]
[43633.647009]    [<f8f34477>] cfg80211_set_encryption+0x118/0x163 [cfg80211]
[43633.647009]    [<f8f34618>] cfg80211_wext_siwencodeext+0x156/0x16f [cfg80211]
[43633.647009]    [<c128779c>] ioctl_standard_call+0x1cc/0x27f
[43633.647009]    [<c1287922>] wext_handle_ioctl+0xd3/0x15d
[43633.647009]    [<c12353e5>] dev_ioctl+0x564/0x584
[43633.647009]    [<c1225eb5>] sock_ioctl+0x1e6/0x1f2
[43633.647009]    [<c10a8d82>] vfs_ioctl+0x1d/0x76
[43633.647009]    [<c10a9321>] do_vfs_ioctl+0x4a0/0x4de
[43633.647009]    [<c10a9392>] sys_ioctl+0x33/0x4d
[43633.647009]    [<c1002988>] sysenter_do_call+0x12/0x36
[43633.647009]    [<ffffffff>] 0xffffffff
[43633.647009] 
[43633.647009]  ... acquired at:
[43633.647009]    [<c104d315>] __lock_acquire+0xff0/0x12d3
[43633.647009]    [<c104d6a4>] lock_acquire+0xac/0xc9
[43633.647009]    [<c1297b78>] _spin_lock_irqsave+0x36/0x69
[43633.647009]    [<fa255e6b>] ieee80211_key_free+0x41/0x60 [mac80211]
[43633.647009]    [<fa2440e0>] __sta_info_unlink+0x69/0x162 [mac80211]
[43633.647009]    [<fa244201>] sta_info_unlink+0x28/0x36 [mac80211]
[43633.647009]    [<fa249908>] ieee80211_set_disassoc+0x27b/0x2bb [mac80211]
[43633.647009]    [<fa249985>] ieee80211_sta_disassociate+0x3d/0x47 [mac80211]
[43633.647009]    [<fa24f085>] ieee80211_disassoc+0x3d/0x3f [mac80211]
[43633.647009]    [<f8f34265>] cfg80211_wext_siwmlme+0xc2/0xd8 [cfg80211]
[43633.647009]    [<c128779c>] ioctl_standard_call+0x1cc/0x27f
[43633.647009]    [<c1287922>] wext_handle_ioctl+0xd3/0x15d
[43633.647009]    [<c12353e5>] dev_ioctl+0x564/0x584
[43633.647009]    [<c1225eb5>] sock_ioctl+0x1e6/0x1f2
[43633.647009]    [<c10a8d82>] vfs_ioctl+0x1d/0x76
[43633.647009]    [<c10a9321>] do_vfs_ioctl+0x4a0/0x4de
[43633.647009]    [<c10a9392>] sys_ioctl+0x33/0x4d
[43633.647009]    [<c1002988>] sysenter_do_call+0x12/0x36
[43633.647009]    [<ffffffff>] 0xffffffff
[43633.647009] 
[43633.647009]  -> (&sta->flaglock){..-.-.} ops: 0 {
[43633.647009]     IN-SOFTIRQ-W at:
[43633.647009]                                          [<c104c87d>] __lock_acquire+0x558/0x12d3
[43633.647009]                                          [<c104d6a4>] lock_acquire+0xac/0xc9
[43633.647009]                                          [<c1297b78>] _spin_lock_irqsave+0x36/0x69
[43633.647009]                                          [<fa2511ff>] ieee80211_invoke_rx_handlers+0x117/0x125e [mac80211]
[43633.647009]                                          [<fa25286b>] __ieee80211_rx_handle_packet+0x525/0x552 [mac80211]
[43633.647009]                                          [<fa25311f>] __ieee80211_rx+0x500/0x581 [mac80211]
[43633.647009]                                          [<fa4ecf17>] ath5k_tasklet_rx+0x51b/0x56c [ath5k]
[43633.647009]                                          [<c102e209>] tasklet_action+0x93/0xe6
[43633.647009]                                          [<c102e8d6>] __do_softirq+0xdb/0x1ac
[43633.647009]                                          [<c102e9d7>] do_softirq+0x30/0x48
[43633.647009]                                          [<c102eb53>] irq_exit+0x3d/0x74
[43633.647009]                                          [<c100405b>] do_IRQ+0x88/0x9c
[43633.647009]                                          [<c100302e>] common_interrupt+0x2e/0x34
[43633.647009]                                          [<c1278acf>] fib_netdev_event+0x6c/0x75
[43633.647009]                                          [<c1299ed1>] notifier_call_chain+0x51/0x7e
[43633.647009]                                          [<c1040841>] raw_notifier_call_chain+0x11/0x13
[43633.647009]                                          [<c123377f>] call_netdevice_notifiers+0x16/0x18
[43633.647009]                                          [<c1233dd9>] netdev_state_change+0x20/0x31
[43633.647009]                                          [<c123cb3d>] __linkwatch_run_queue+0x146/0x16e
[43633.647009]                                          [<c123cb85>] linkwatch_event+0x20/0x27
[43633.647009]                                          [<c1038a94>] worker_thread+0x1aa/0x287
[43633.647009]                                          [<c103c78b>] kthread+0x70/0x75
[43633.647009]                                          [<c10034f7>] kernel_thread_helper+0x7/0x10
[43633.647009]                                          [<ffffffff>] 0xffffffff
[43633.647009]     IN-RECLAIM_FS-W at:
[43633.647009]                                             [<c104c92d>] __lock_acquire+0x608/0x12d3
[43633.647009]                                             [<c104d6a4>] lock_acquire+0xac/0xc9
[43633.647009]                                             [<c1297b78>] _spin_lock_irqsave+0x36/0x69
[43633.647009]                                             [<fa250965>] ieee80211_drop_unencrypted+0x6d/0x19a [mac80211]
[43633.647009]                                             [<fa2510ad>] ieee80211_rx_h_mgmt+0x4b/0x86 [mac80211]
[43633.647009]                                             [<fa252115>] ieee80211_invoke_rx_handlers+0x102d/0x125e [mac80211]
[43633.647009]                                             [<fa25286b>] __ieee80211_rx_handle_packet+0x525/0x552 [mac80211]
[43633.647009]                                             [<fa25311f>] __ieee80211_rx+0x500/0x581 [mac80211]
[43633.647009]                                             [<fa4ecf17>] ath5k_tasklet_rx+0x51b/0x56c [ath5k]
[43633.647009]                                             [<c102e209>] tasklet_action+0x93/0xe6
[43633.647009]                                             [<c102e8d6>] __do_softirq+0xdb/0x1ac
[43633.647009]                                             [<c102e9d7>] do_softirq+0x30/0x48
[43633.647009]                                             [<c102eb53>] irq_exit+0x3d/0x74
[43633.647009]                                             [<c100405b>] do_IRQ+0x88/0x9c
[43633.647009]                                             [<c100302e>] common_interrupt+0x2e/0x34
[43633.647009]                                             [<c107d7e6>] free_hot_cold_page+0x8e/0x1fb
[43633.647009]                                             [<c107d975>] __pagevec_free+0x22/0x2a
[43633.647009]                                             [<c108079a>] release_pages+0x12b/0x165
[43633.647009]                                             [<c1080cea>] __pagevec_release+0x1d/0x26
[43633.647009]                                             [<c10811c5>] invalidate_mapping_pages+0xc3/0xf0
[43633.647009]                                             [<c10ae121>] shrink_icache_memory+0xdf/0x1de
[43633.647009]                                             [<c108321b>] shrink_slab+0xda/0x15f
[43633.647009]                                             [<c10836a1>] kswapd+0x401/0x587
[43633.647009]                                             [<c103c78b>] kthread+0x70/0x75
[43633.647009]                                             [<c10034f7>] kernel_thread_helper+0x7/0x10
[43633.647009]                                             [<ffffffff>] 0xffffffff
[43633.647009]     INITIAL USE at:
[43633.647009]                                         [<c104c943>] __lock_acquire+0x61e/0x12d3
[43633.647009]                                         [<c104d6a4>] lock_acquire+0xac/0xc9
[43633.647009]                                         [<c1297b78>] _spin_lock_irqsave+0x36/0x69
[43633.647009]                                         [<fa24b30e>] ieee80211_rx_mgmt_assoc_resp+0x344/0xa13 [mac80211]
[43633.647009]                                         [<fa24c38b>] ieee80211_sta_work+0x776/0xd3b [mac80211]
[43633.647009]                                         [<c1038a94>] worker_thread+0x1aa/0x287
[43633.647009]                                         [<c103c78b>] kthread+0x70/0x75
[43633.647009]                                         [<c10034f7>] kernel_thread_helper+0x7/0x10
[43633.647009]                                         [<ffffffff>] 0xffffffff
[43633.647009]   }
[43633.647009]   ... key      at: [<fa26a9d8>] __key.38223+0x0/0xffff0e6f [mac80211]
[43633.647009]  ... acquired at:
[43633.647009]    [<c104d315>] __lock_acquire+0xff0/0x12d3
[43633.647009]    [<c104d6a4>] lock_acquire+0xac/0xc9
[43633.647009]    [<c1297b78>] _spin_lock_irqsave+0x36/0x69
[43633.647009]    [<fa24410e>] __sta_info_unlink+0x97/0x162 [mac80211]
[43633.647009]    [<fa244201>] sta_info_unlink+0x28/0x36 [mac80211]
[43633.647009]    [<fa249908>] ieee80211_set_disassoc+0x27b/0x2bb [mac80211]
[43633.647009]    [<fa249985>] ieee80211_sta_disassociate+0x3d/0x47 [mac80211]
[43633.647009]    [<fa24f085>] ieee80211_disassoc+0x3d/0x3f [mac80211]
[43633.647009]    [<f8f34265>] cfg80211_wext_siwmlme+0xc2/0xd8 [cfg80211]
[43633.647009]    [<c128779c>] ioctl_standard_call+0x1cc/0x27f
[43633.647009]    [<c1287922>] wext_handle_ioctl+0xd3/0x15d
[43633.647009]    [<c12353e5>] dev_ioctl+0x564/0x584
[43633.647009]    [<c1225eb5>] sock_ioctl+0x1e6/0x1f2
[43633.647009]    [<c10a8d82>] vfs_ioctl+0x1d/0x76
[43633.647009]    [<c10a9321>] do_vfs_ioctl+0x4a0/0x4de
[43633.647009]    [<c10a9392>] sys_ioctl+0x33/0x4d
[43633.647009]    [<c1002988>] sysenter_do_call+0x12/0x36
[43633.647009]    [<ffffffff>] 0xffffffff
[43633.647009] 
[43633.647009] 
[43633.647009] the second lock's dependencies:
[43633.647009] -> (todo_lock){+.+...} ops: 0 {
[43633.647009]    HARDIRQ-ON-W at:
[43633.647009]                                        [<c104c8d3>] __lock_acquire+0x5ae/0x12d3
[43633.647009]                                        [<c104d6a4>] lock_acquire+0xac/0xc9
[43633.647009]                                        [<c1297a4d>] _spin_lock+0x2d/0x5d
[43633.647009]                                        [<fa255e06>] __ieee80211_key_todo+0x1cb/0x1ef [mac80211]
[43633.647009]                                        [<fa255f29>] ieee80211_key_todo+0x19/0x25 [mac80211]
[43633.647009]                                        [<fa255fb6>] ieee80211_todo_for_each_key+0x72/0x79 [mac80211]
[43633.647009]                                        [<fa256054>] ieee80211_enable_keys+0x56/0x5b [mac80211]
[43633.647009]                                        [<fa24d7f4>] ieee80211_open+0x47a/0x5f4 [mac80211]
[43633.647009]                                        [<c123430c>] dev_open+0x8b/0xc0
[43633.647009]                                        [<c1233a5c>] dev_change_flags+0x9b/0x14c
[43633.647009]                                        [<c123b01d>] do_setlink+0x2a2/0x348
[43633.647009]                                        [<c123b1a8>] rtnl_setlink+0xe5/0xe9
[43633.647009]                                        [<c123bf67>] rtnetlink_rcv_msg+0x18a/0x1a0
[43633.647009]                                        [<c12442cc>] netlink_rcv_skb+0x35/0x7d
[43633.647009]                                        [<c123bdd6>] rtnetlink_rcv+0x20/0x27
[43633.647009]                                        [<c1243e4c>] netlink_unicast+0x1b1/0x212
[43633.647009]                                        [<c12440d0>] netlink_sendmsg+0x223/0x230
[43633.647009]                                        [<c1226655>] sock_sendmsg+0xcc/0xe2
[43633.647009]                                        [<c12267b9>] sys_sendmsg+0x14e/0x19b
[43633.647009]                                        [<c122770c>] sys_socketcall+0x147/0x170
[43633.647009]                                        [<c1002988>] sysenter_do_call+0x12/0x36
[43633.647009]                                        [<ffffffff>] 0xffffffff
[43633.647009]    SOFTIRQ-ON-W at:
[43633.647009]                                        [<c104c8f2>] __lock_acquire+0x5cd/0x12d3
[43633.647009]                                        [<c104d6a4>] lock_acquire+0xac/0xc9
[43633.647009]                                        [<c1297a4d>] _spin_lock+0x2d/0x5d
[43633.647009]                                        [<fa255e06>] __ieee80211_key_todo+0x1cb/0x1ef [mac80211]
[43633.647009]                                        [<fa255f29>] ieee80211_key_todo+0x19/0x25 [mac80211]
[43633.647009]                                        [<fa255fb6>] ieee80211_todo_for_each_key+0x72/0x79 [mac80211]
[43633.647009]                                        [<fa256054>] ieee80211_enable_keys+0x56/0x5b [mac80211]
[43633.647009]                                        [<fa24d7f4>] ieee80211_open+0x47a/0x5f4 [mac80211]
[43633.647009]                                        [<c123430c>] dev_open+0x8b/0xc0
[43633.647009]                                        [<c1233a5c>] dev_change_flags+0x9b/0x14c
[43633.647009]                                        [<c123b01d>] do_setlink+0x2a2/0x348
[43633.647009]                                        [<c123b1a8>] rtnl_setlink+0xe5/0xe9
[43633.647009]                                        [<c123bf67>] rtnetlink_rcv_msg+0x18a/0x1a0
[43633.647009]                                        [<c12442cc>] netlink_rcv_skb+0x35/0x7d
[43633.647009]                                        [<c123bdd6>] rtnetlink_rcv+0x20/0x27
[43633.647009]                                        [<c1243e4c>] netlink_unicast+0x1b1/0x212
[43633.647009]                                        [<c12440d0>] netlink_sendmsg+0x223/0x230
[43633.647009]                                        [<c1226655>] sock_sendmsg+0xcc/0xe2
[43633.647009]                                        [<c12267b9>] sys_sendmsg+0x14e/0x19b
[43633.647009]                                        [<c122770c>] sys_socketcall+0x147/0x170
[43633.647009]                                        [<c1002988>] sysenter_do_call+0x12/0x36
[43633.647009]                                        [<ffffffff>] 0xffffffff
[43633.647009]    INITIAL USE at:
[43633.647009]                                       [<c104c943>] __lock_acquire+0x61e/0x12d3
[43633.647009]                                       [<c104d6a4>] lock_acquire+0xac/0xc9
[43633.647009]                                       [<c1297a4d>] _spin_lock+0x2d/0x5d
[43633.647009]                                       [<fa255e06>] __ieee80211_key_todo+0x1cb/0x1ef [mac80211]
[43633.647009]                                       [<fa255f29>] ieee80211_key_todo+0x19/0x25 [mac80211]
[43633.647009]                                       [<fa255fb6>] ieee80211_todo_for_each_key+0x72/0x79 [mac80211]
[43633.647009]                                       [<fa256054>] ieee80211_enable_keys+0x56/0x5b [mac80211]
[43633.647009]                                       [<fa24d7f4>] ieee80211_open+0x47a/0x5f4 [mac80211]
[43633.647009]                                       [<c123430c>] dev_open+0x8b/0xc0
[43633.647009]                                       [<c1233a5c>] dev_change_flags+0x9b/0x14c
[43633.647009]                                       [<c123b01d>] do_setlink+0x2a2/0x348
[43633.647009]                                       [<c123b1a8>] rtnl_setlink+0xe5/0xe9
[43633.647009]                                       [<c123bf67>] rtnetlink_rcv_msg+0x18a/0x1a0
[43633.647009]                                       [<c12442cc>] netlink_rcv_skb+0x35/0x7d
[43633.647009]                                       [<c123bdd6>] rtnetlink_rcv+0x20/0x27
[43633.647009]                                       [<c1243e4c>] netlink_unicast+0x1b1/0x212
[43633.647009]                                       [<c12440d0>] netlink_sendmsg+0x223/0x230
[43633.647009]                                       [<c1226655>] sock_sendmsg+0xcc/0xe2
[43633.647009]                                       [<c12267b9>] sys_sendmsg+0x14e/0x19b
[43633.647009]                                       [<c122770c>] sys_socketcall+0x147/0x170
[43633.647009]                                       [<c1002988>] sysenter_do_call+0x12/0x36
[43633.647009]                                       [<ffffffff>] 0xffffffff
[43633.647009]  }
[43633.647009]  ... key      at: [<fa26a70c>] todo_lock+0x10/0xffff114b [mac80211]
[43633.647009]  -> (&cwq->lock){-.-.-.} ops: 0 {
[43633.647009]     IN-HARDIRQ-W at:
[43633.647009]                                          [<c104c85e>] __lock_acquire+0x539/0x12d3
[43633.647009]                                          [<c104d6a4>] lock_acquire+0xac/0xc9
[43633.647009]                                          [<c1297b78>] _spin_lock_irqsave+0x36/0x69
[43633.647009]                                          [<c10394e5>] __queue_work+0x17/0x34
[43633.647009]                                          [<c103957c>] queue_work_on+0x40/0x49
[43633.647009]                                          [<c10396a2>] queue_work+0x26/0x4a
[43633.647009]                                          [<c1175b27>] __acpi_os_execute+0xf1/0x119
[43633.647009]                                          [<c1175b75>] acpi_os_execute+0xf/0x11
[43633.647009]                                          [<c1179697>] acpi_ec_gpe_handler+0x6f/0xa3
[43633.647009]                                          [<c1184640>] acpi_ev_gpe_dispatch+0x51/0x10f
[43633.647009]                                          [<c118478a>] acpi_ev_gpe_detect+0x8c/0xce
[43633.647009]                                          [<c1182ae9>] acpi_ev_sci_xrupt_handler+0x1a/0x20
[43633.647009]                                          [<c1175373>] acpi_irq+0x13/0x2e
[43633.647009]                                          [<c105fcef>] handle_IRQ_event+0x6a/0x12f
[43633.647009]                                          [<c1061426>] handle_fasteoi_irq+0x7e/0xb5
[43633.647009]                                          [<c100489d>] handle_irq+0x40/0x4b
[43633.647009]                                          [<c100401c>] do_IRQ+0x49/0x9c
[43633.647009]                                          [<c100302e>] common_interrupt+0x2e/0x34
[43633.647009]                                          [<c1021bbc>] finish_task_switch+0x6c/0xe8
[43633.647009]                                          [<c129580d>] schedule+0x7af/0x81f
[43633.647009]                                          [<c1001c11>] cpu_idle+0x79/0x88
[43633.647009]                                          [<c12880c4>] rest_init+0x6c/0x6e
[43633.647009]                                          [<c1448753>] start_kernel+0x28b/0x290
[43633.647009]                                          [<c1448038>] __init_begin+0x38/0x40
[43633.647009]                                          [<ffffffff>] 0xffffffff
[43633.647009]     IN-SOFTIRQ-W at:
[43633.647009]                                          [<c104c87d>] __lock_acquire+0x558/0x12d3
[43633.647009]                                          [<c104d6a4>] lock_acquire+0xac/0xc9
[43633.647009]                                          [<c1297b78>] _spin_lock_irqsave+0x36/0x69
[43633.647009]                                          [<c10394e5>] __queue_work+0x17/0x34
[43633.647009]                                          [<c103957c>] queue_work_on+0x40/0x49
[43633.647009]                                          [<c10396a2>] queue_work+0x26/0x4a
[43633.647009]                                          [<c113dd5e>] kblockd_schedule_work+0x12/0x14
[43633.647009]                                          [<c11496ac>] as_antic_timeout+0x58/0xa4
[43633.647009]                                          [<c10325ca>] run_timer_softirq+0x17b/0x1f0
[43633.647009]                                          [<c102e8d6>] __do_softirq+0xdb/0x1ac
[43633.647009]                                          [<c102e9d7>] do_softirq+0x30/0x48
[43633.647009]                                          [<c102eb53>] irq_exit+0x3d/0x74
[43633.647009]                                          [<c10121a6>] smp_apic_timer_interrupt+0x73/0x81
[43633.647009]                                          [<c100333b>] apic_timer_interrupt+0x2f/0x34
[43633.647009]                                          [<c1001beb>] cpu_idle+0x53/0x88
[43633.647009]                                          [<c12880c4>] rest_init+0x6c/0x6e
[43633.647009]                                          [<c1448753>] start_kernel+0x28b/0x290
[43633.647009]                                          [<c1448038>] __init_begin+0x38/0x40
[43633.647009]                                          [<ffffffff>] 0xffffffff
[43633.647009]     IN-RECLAIM_FS-W at:
[43633.647009]                                             [<c104c92d>] __lock_acquire+0x608/0x12d3
[43633.647009]                                             [<c104d6a4>] lock_acquire+0xac/0xc9
[43633.647009]                                             [<c1297b78>] _spin_lock_irqsave+0x36/0x69
[43633.647009]                                             [<c10394e5>] __queue_work+0x17/0x34
[43633.647009]                                             [<c103957c>] queue_work_on+0x40/0x49
[43633.647009]                                             [<c10396a2>] queue_work+0x26/0x4a
[43633.647009]                                             [<c113dd5e>] kblockd_schedule_work+0x12/0x14
[43633.647009]                                             [<c113e21f>] blk_unplug_timeout+0x57/0x5b
[43633.647009]                                             [<c10325ca>] run_timer_softirq+0x17b/0x1f0
[43633.647009]                                             [<c102e8d6>] __do_softirq+0xdb/0x1ac
[43633.647009]                                             [<c102e9d7>] do_softirq+0x30/0x48
[43633.647009]                                             [<c102eb53>] irq_exit+0x3d/0x74
[43633.647009]                                             [<c10121a6>] smp_apic_timer_interrupt+0x73/0x81
[43633.647009]                                             [<c100333b>] apic_timer_interrupt+0x2f/0x34
[43633.647009]                                             [<c10adf79>] destroy_inode+0x32/0x35
[43633.647009]                                             [<c10ae3fa>] generic_delete_inode+0xe4/0xe8
[43633.647009]                                             [<c10ad740>] iput+0x50/0x53
[43633.647009]                                             [<c10dbd0d>] sysfs_d_iput+0x28/0x2b
[43633.647009]                                             [<c10ab44e>] dentry_iput+0x96/0xb8
[43633.647009]                                             [<c10ab50d>] d_kill+0x21/0x3b
[43633.647009]                                             [<c10ab6fa>] __shrink_dcache_sb+0x1d3/0x255
[43633.647009]                                             [<c10ab855>] shrink_dcache_memory+0xd9/0x15e
[43633.647009]                                             [<c108321b>] shrink_slab+0xda/0x15f
[43633.647009]                                             [<c10836a1>] kswapd+0x401/0x587
[43633.647009]                                             [<c103c78b>] kthread+0x70/0x75
[43633.647009]                                             [<c10034f7>] kernel_thread_helper+0x7/0x10
[43633.647009]                                             [<ffffffff>] 0xffffffff
[43633.647009]     INITIAL USE at:
[43633.647009]                                         [<c104c943>] __lock_acquire+0x61e/0x12d3
[43633.647009]                                         [<c104d6a4>] lock_acquire+0xac/0xc9
[43633.647009]                                         [<c1297b78>] _spin_lock_irqsave+0x36/0x69
[43633.647009]                                         [<c10394e5>] __queue_work+0x17/0x34
[43633.647009]                                         [<c103957c>] queue_work_on+0x40/0x49
[43633.647009]                                         [<c10396a2>] queue_work+0x26/0x4a
[43633.647009]                                         [<c1037fe7>] call_usermodehelper_exec+0x8f/0xe1
[43633.647009]                                         [<c114f357>] kobject_uevent_env+0x333/0x368
[43633.647009]                                         [<c114f396>] kobject_uevent+0xa/0xc
[43633.647009]                                         [<c114eb0c>] kset_register+0x2e/0x34
[43633.647009]                                         [<c11b74fe>] bus_register+0xe4/0x232
[43633.647009]                                         [<c146315e>] platform_bus_init+0x23/0x38
[43633.647009]                                         [<c14631f6>] driver_init+0x1c/0x28
[43633.647009]                                         [<c144828c>] kernel_init+0xf2/0x16a
[43633.647009]                                         [<c10034f7>] kernel_thread_helper+0x7/0x10
[43633.647009]                                         [<ffffffff>] 0xffffffff
[43633.647009]   }
[43633.647009]   ... key      at: [<c16231b4>] __key.25893+0x0/0x8
[43633.647009]   -> (key#3){-.-.-.} ops: 0 {
[43633.647009]      IN-HARDIRQ-W at:
[43633.647009]                                            [<c104c85e>] __lock_acquire+0x539/0x12d3
[43633.647009]                                            [<c104d6a4>] lock_acquire+0xac/0xc9
[43633.647009]                                            [<c1297b78>] _spin_lock_irqsave+0x36/0x69
[43633.647009]                                            [<c101d543>] __wake_up+0x1a/0x40
[43633.647009]                                            [<c1038ccd>] insert_work+0x9a/0xa3
[43633.647009]                                            [<c10394f4>] __queue_work+0x26/0x34
[43633.647009]                                            [<c103957c>] queue_work_on+0x40/0x49
[43633.647009]                                            [<c10396a2>] queue_work+0x26/0x4a
[43633.647009]                                            [<c1175b27>] __acpi_os_execute+0xf1/0x119
[43633.647009]                                            [<c1175b75>] acpi_os_execute+0xf/0x11
[43633.647009]                                            [<c1179697>] acpi_ec_gpe_handler+0x6f/0xa3
[43633.647009]                                            [<c1184640>] acpi_ev_gpe_dispatch+0x51/0x10f
[43633.647009]                                            [<c118478a>] acpi_ev_gpe_detect+0x8c/0xce
[43633.647009]                                            [<c1182ae9>] acpi_ev_sci_xrupt_handler+0x1a/0x20
[43633.647009]                                            [<c1175373>] acpi_irq+0x13/0x2e
[43633.647009]                                            [<c105fcef>] handle_IRQ_event+0x6a/0x12f
[43633.647009]                                            [<c1061426>] handle_fasteoi_irq+0x7e/0xb5
[43633.647009]                                            [<c100489d>] handle_irq+0x40/0x4b
[43633.647009]                                            [<c100401c>] do_IRQ+0x49/0x9c
[43633.647009]                                            [<c100302e>] common_interrupt+0x2e/0x34
[43633.647009]                                            [<c1021bbc>] finish_task_switch+0x6c/0xe8
[43633.647009]                                            [<c129580d>] schedule+0x7af/0x81f
[43633.647009]                                            [<c1001c11>] cpu_idle+0x79/0x88
[43633.647009]                                            [<c12880c4>] rest_init+0x6c/0x6e
[43633.647009]                                            [<c1448753>] start_kernel+0x28b/0x290
[43633.647009]                                            [<c1448038>] __init_begin+0x38/0x40
[43633.647009]                                            [<ffffffff>] 0xffffffff
[43633.647009]      IN-SOFTIRQ-W at:
[43633.647009]                                            [<c104c87d>] __lock_acquire+0x558/0x12d3
[43633.647009]                                            [<c104d6a4>] lock_acquire+0xac/0xc9
[43633.647009]                                            [<c1297b78>] _spin_lock_irqsave+0x36/0x69
[43633.647009]                                            [<c101d543>] __wake_up+0x1a/0x40
[43633.647009]                                            [<c1038ccd>] insert_work+0x9a/0xa3
[43633.647009]                                            [<c10394f4>] __queue_work+0x26/0x34
[43633.647009]                                            [<c103957c>] queue_work_on+0x40/0x49
[43633.647009]                                            [<c10396a2>] queue_work+0x26/0x4a
[43633.647009]                                            [<c113dd5e>] kblockd_schedule_work+0x12/0x14
[43633.647009]                                            [<c11496ac>] as_antic_timeout+0x58/0xa4
[43633.647009]                                            [<c10325ca>] run_timer_softirq+0x17b/0x1f0
[43633.647009]                                            [<c102e8d6>] __do_softirq+0xdb/0x1ac
[43633.647009]                                            [<c102e9d7>] do_softirq+0x30/0x48
[43633.647009]                                            [<c102eb53>] irq_exit+0x3d/0x74
[43633.647009]                                            [<c10121a6>] smp_apic_timer_interrupt+0x73/0x81
[43633.647009]                                            [<c100333b>] apic_timer_interrupt+0x2f/0x34
[43633.647009]                                            [<c1001beb>] cpu_idle+0x53/0x88
[43633.647009]                                            [<c12880c4>] rest_init+0x6c/0x6e
[43633.647009]                                            [<c1448753>] start_kernel+0x28b/0x290
[43633.647009]                                            [<c1448038>] __init_begin+0x38/0x40
[43633.647009]                                            [<ffffffff>] 0xffffffff
[43633.647009]      IN-RECLAIM_FS-W at:
[43633.647009]                                               [<c104c92d>] __lock_acquire+0x608/0x12d3
[43633.647009]                                               [<c104d6a4>] lock_acquire+0xac/0xc9
[43633.647009]                                               [<c1297b78>] _spin_lock_irqsave+0x36/0x69
[43633.647009]                                               [<c101d543>] __wake_up+0x1a/0x40
[43633.647009]                                               [<c1038ccd>] insert_work+0x9a/0xa3
[43633.647009]                                               [<c10394f4>] __queue_work+0x26/0x34
[43633.647009]                                               [<c103957c>] queue_work_on+0x40/0x49
[43633.647009]                                               [<c10396a2>] queue_work+0x26/0x4a
[43633.647009]                                               [<c113dd5e>] kblockd_schedule_work+0x12/0x14
[43633.647009]                                               [<c113e21f>] blk_unplug_timeout+0x57/0x5b
[43633.647009]                                               [<c10325ca>] run_timer_softirq+0x17b/0x1f0
[43633.647009]                                               [<c102e8d6>] __do_softirq+0xdb/0x1ac
[43633.647009]                                               [<c102e9d7>] do_softirq+0x30/0x48
[43633.647009]                                               [<c102eb53>] irq_exit+0x3d/0x74
[43633.647009]                                               [<c10121a6>] smp_apic_timer_interrupt+0x73/0x81
[43633.647009]                                               [<c100333b>] apic_timer_interrupt+0x2f/0x34
[43633.647009]                                               [<c10adf79>] destroy_inode+0x32/0x35
[43633.647009]                                               [<c10ae3fa>] generic_delete_inode+0xe4/0xe8
[43633.647009]                                               [<c10ad740>] iput+0x50/0x53
[43633.647009]                                               [<c10dbd0d>] sysfs_d_iput+0x28/0x2b
[43633.647009]                                               [<c10ab44e>] dentry_iput+0x96/0xb8
[43633.647009]                                               [<c10ab50d>] d_kill+0x21/0x3b
[43633.647009]                                               [<c10ab6fa>] __shrink_dcache_sb+0x1d3/0x255
[43633.647009]                                               [<c10ab855>] shrink_dcache_memory+0xd9/0x15e
[43633.647009]                                               [<c108321b>] shrink_slab+0xda/0x15f
[43633.647009]                                               [<c10836a1>] kswapd+0x401/0x587
[43633.647009]                                               [<c103c78b>] kthread+0x70/0x75
[43633.647009]                                               [<c10034f7>] kernel_thread_helper+0x7/0x10
[43633.647009]                                               [<ffffffff>] 0xffffffff
[43633.647009]      INITIAL USE at:
[43633.647009]                                           [<c104c943>] __lock_acquire+0x61e/0x12d3
[43633.647009]                                           [<c104d6a4>] lock_acquire+0xac/0xc9
[43633.647009]                                           [<c1297b78>] _spin_lock_irqsave+0x36/0x69
[43633.647009]                                           [<c103cc23>] prepare_to_wait+0x1c/0x4c
[43633.647009]                                           [<c1038962>] worker_thread+0x78/0x287
[43633.647009]                                           [<c103c78b>] kthread+0x70/0x75
[43633.647009]                                           [<c10034f7>] kernel_thread_helper+0x7/0x10
[43633.647009]                                           [<ffffffff>] 0xffffffff
[43633.647009]    }
[43633.647009]    ... key      at: [<c16231ac>] __key.25894+0x0/0x8
[43633.647009]    -> (&rq->lock){-.-.-.} ops: 0 {
[43633.647009]       IN-HARDIRQ-W at:
[43633.647009]                                              [<c104c85e>] __lock_acquire+0x539/0x12d3
[43633.647009]                                              [<c104d6a4>] lock_acquire+0xac/0xc9
[43633.647009]                                              [<c1297a4d>] _spin_lock+0x2d/0x5d
[43633.647009]                                              [<c1026192>] scheduler_tick+0x36/0x1dc
[43633.647009]                                              [<c1032ca6>] update_process_times+0x47/0x53
[43633.647009]                                              [<c1046e81>] tick_periodic+0x6c/0x79
[43633.647009]                                              [<c1046eab>] tick_handle_periodic+0x1d/0x76
[43633.647009]                                              [<c1004c76>] timer_interrupt+0x3e/0x45
[43633.647009]                                              [<c105fcef>] handle_IRQ_event+0x6a/0x12f
[43633.647009]                                              [<c10614e4>] handle_level_irq+0x87/0xcd
[43633.647009]                                              [<c100489d>] handle_irq+0x40/0x4b
[43633.647009]                                              [<c100401c>] do_IRQ+0x49/0x9c
[43633.647009]                                              [<c100302e>] common_interrupt+0x2e/0x34
[43633.647009]                                              [<c114dc68>] get_from_free_list+0x32/0x39
[43633.647009]                                              [<c114dda8>] idr_get_empty_slot+0x26/0x1e7
[43633.647009]                                              [<c114df99>] ida_get_new_above+0x30/0x166
[43633.647009]                                              [<c10b18f0>] alloc_vfsmnt+0x57/0x11d
[43633.647009]                                              [<c109f585>] vfs_kern_mount+0x2b/0x7b
[43633.647009]                                              [<c109f5ea>] kern_mount_data+0x15/0x17
[43633.647009]                                              [<c145d44f>] sysfs_init+0x50/0xa0
[43633.647009]                                              [<c145c95b>] mnt_init+0x87/0x147
[43633.647009]                                              [<c145c634>] vfs_caches_init+0xd9/0xeb
[43633.647009]                                              [<c144872b>] start_kernel+0x263/0x290
[43633.647009]                                              [<c1448038>] __init_begin+0x38/0x40
[43633.647009]                                              [<ffffffff>] 0xffffffff
[43633.647009]       IN-SOFTIRQ-W at:
[43633.647009]                                              [<c104c87d>] __lock_acquire+0x558/0x12d3
[43633.647009]                                              [<c104d6a4>] lock_acquire+0xac/0xc9
[43633.647009]                                              [<c1297a4d>] _spin_lock+0x2d/0x5d
[43633.647009]                                              [<c101d62c>] task_rq_lock+0x3b/0x65
[43633.647009]                                              [<c10228b1>] try_to_wake_up+0x31/0x20b
[43633.647009]                                              [<c1022ac2>] wake_up_process+0x14/0x16
[43633.647009]                                              [<c1032b63>] process_timeout+0xd/0xf
[43633.647009]                                              [<c10325ca>] run_timer_softirq+0x17b/0x1f0
[43633.647009]                                              [<c102e8d6>] __do_softirq+0xdb/0x1ac
[43633.647009]                                              [<c102e9d7>] do_softirq+0x30/0x48
[43633.647009]                                              [<c102eb53>] irq_exit+0x3d/0x74
[43633.647009]                                              [<c10121a6>] smp_apic_timer_interrupt+0x73/0x81
[43633.647009]                                              [<c100333b>] apic_timer_interrupt+0x2f/0x34
[43633.647009]                                              [<c1001beb>] cpu_idle+0x53/0x88
[43633.647009]                                              [<c12880c4>] rest_init+0x6c/0x6e
[43633.647009]                                              [<c1448753>] start_kernel+0x28b/0x290
[43633.647009]                                              [<c1448038>] __init_begin+0x38/0x40
[43633.647009]                                              [<ffffffff>] 0xffffffff
[43633.647009]       IN-RECLAIM_FS-W at:
[43633.647009]                                                 [<c104c92d>] __lock_acquire+0x608/0x12d3
[43633.647009]                                                 [<c104d6a4>] lock_acquire+0xac/0xc9
[43633.647009]                                                 [<c1297a4d>] _spin_lock+0x2d/0x5d
[43633.647009]                                                 [<c101d62c>] task_rq_lock+0x3b/0x65
[43633.647009]                                                 [<c1025e97>] set_cpus_allowed_ptr+0x1a/0xdc
[43633.647009]                                                 [<c10832fe>] kswapd+0x5e/0x587
[43633.647009]                                                 [<c103c78b>] kthread+0x70/0x75
[43633.647009]                                                 [<c10034f7>] kernel_thread_helper+0x7/0x10
[43633.647009]                                                 [<ffffffff>] 0xffffffff
[43633.647009]       INITIAL USE at:
[43633.647009]                                             [<c104c943>] __lock_acquire+0x61e/0x12d3
[43633.647009]                                             [<c104d6a4>] lock_acquire+0xac/0xc9
[43633.647009]                                             [<c1297b78>] _spin_lock_irqsave+0x36/0x69
[43633.647009]                                             [<c1020b4d>] rq_attach_root+0x17/0xa9
[43633.647009]                                             [<c1456efd>] sched_init+0x290/0x3a1
[43633.647009]                                             [<c1448625>] start_kernel+0x15d/0x290
[43633.647009]                                             [<c1448038>] __init_begin+0x38/0x40
[43633.647009]                                             [<ffffffff>] 0xffffffff
[43633.647009]     }
[43633.647009]     ... key      at: [<c15e035c>] __key.51718+0x0/0x8
[43633.647009]     -> (&vec->lock){..-...} ops: 0 {
[43633.647009]        IN-SOFTIRQ-W at:
[43633.647009]                                                [<c104c87d>] __lock_acquire+0x558/0x12d3
[43633.647009]                                                [<c104d6a4>] lock_acquire+0xac/0xc9
[43633.647009]                                                [<c1297b78>] _spin_lock_irqsave+0x36/0x69
[43633.647009]                                                [<c1078184>] cpupri_set+0x66/0xf0
[43633.647009]                                                [<c1027584>] enqueue_task_rt+0xd3/0x232
[43633.647009]                                                [<c101ad56>] enqueue_task+0x2f/0x3b
[43633.647009]                                                [<c101ae2c>] activate_task+0x24/0x2a
[43633.647009]                                                [<c102294b>] try_to_wake_up+0xcb/0x20b
[43633.647009]                                                [<c1022ac2>] wake_up_process+0x14/0x16
[43633.647009]                                                [<c1025cf7>] rebalance_domains+0x2d7/0x3b6
[43633.647009]                                                [<c1025e0a>] run_rebalance_domains+0x34/0xa7
[43633.647009]                                                [<c102e8d6>] __do_softirq+0xdb/0x1ac
[43633.647009]                                                [<c102e9d7>] do_softirq+0x30/0x48
[43633.647009]                                                [<c102eb53>] irq_exit+0x3d/0x74
[43633.647009]                                                [<c10121a6>] smp_apic_timer_interrupt+0x73/0x81
[43633.647009]                                                [<c100333b>] apic_timer_interrupt+0x2f/0x34
[43633.647009]                                                [<c1214ab7>] cpuidle_idle_call+0x6a/0xa3
[43633.647009]                                                [<c1001beb>] cpu_idle+0x53/0x88
[43633.647009]                                                [<c12927c1>] start_secondary+0x1ad/0x1b4
[43633.647009]                                                [<ffffffff>] 0xffffffff
[43633.647009]        INITIAL USE at:
[43633.647009]                                               [<c104c943>] __lock_acquire+0x61e/0x12d3
[43633.647009]                                               [<c104d6a4>] lock_acquire+0xac/0xc9
[43633.647009]                                               [<c1297b78>] _spin_lock_irqsave+0x36/0x69
[43633.647009]                                               [<c10781c7>] cpupri_set+0xa9/0xf0
[43633.647009]                                               [<c101f880>] rq_online_rt+0x5e/0x61
[43633.647009]                                               [<c101cdc8>] set_rq_online+0x40/0x4a
[43633.647009]                                               [<c1020bbc>] rq_attach_root+0x86/0xa9
[43633.647009]                                               [<c1456efd>] sched_init+0x290/0x3a1
[43633.647009]                                               [<c1448625>] start_kernel+0x15d/0x290
[43633.647009]                                               [<c1448038>] __init_begin+0x38/0x40
[43633.647009]                                               [<ffffffff>] 0xffffffff
[43633.647009]      }
[43633.647009]      ... key      at: [<c1b5e218>] __key.14809+0x0/0x28
[43633.647009]     ... acquired at:
[43633.647009]    [<c104d315>] __lock_acquire+0xff0/0x12d3
[43633.647009]    [<c104d6a4>] lock_acquire+0xac/0xc9
[43633.647009]    [<c1297b78>] _spin_lock_irqsave+0x36/0x69
[43633.647009]    [<c10781c7>] cpupri_set+0xa9/0xf0
[43633.647009]    [<c101f880>] rq_online_rt+0x5e/0x61
[43633.647009]    [<c101cdc8>] set_rq_online+0x40/0x4a
[43633.647009]    [<c1020bbc>] rq_attach_root+0x86/0xa9
[43633.647009]    [<c1456efd>] sched_init+0x290/0x3a1
[43633.647009]    [<c1448625>] start_kernel+0x15d/0x290
[43633.647009]    [<c1448038>] __init_begin+0x38/0x40
[43633.647009]    [<ffffffff>] 0xffffffff
[43633.647009] 
[43633.647009]     -> (&rt_b->rt_runtime_lock){..-...} ops: 0 {
[43633.647009]        IN-SOFTIRQ-W at:
[43633.647009]                                                [<c104c87d>] __lock_acquire+0x558/0x12d3
[43633.647009]                                                [<c104d6a4>] lock_acquire+0xac/0xc9
[43633.647009]                                                [<c1297a4d>] _spin_lock+0x2d/0x5d
[43633.647009]                                                [<c1027611>] enqueue_task_rt+0x160/0x232
[43633.647009]                                                [<c101ad56>] enqueue_task+0x2f/0x3b
[43633.647009]                                                [<c101ae2c>] activate_task+0x24/0x2a
[43633.647009]                                                [<c102294b>] try_to_wake_up+0xcb/0x20b
[43633.647009]                                                [<c1022ac2>] wake_up_process+0x14/0x16
[43633.647009]                                                [<c1025cf7>] rebalance_domains+0x2d7/0x3b6
[43633.647009]                                                [<c1025e0a>] run_rebalance_domains+0x34/0xa7
[43633.647009]                                                [<c102e8d6>] __do_softirq+0xdb/0x1ac
[43633.647009]                                                [<c102e9d7>] do_softirq+0x30/0x48
[43633.647009]                                                [<c102eb53>] irq_exit+0x3d/0x74
[43633.647009]                                                [<c10121a6>] smp_apic_timer_interrupt+0x73/0x81
[43633.647009]                                                [<c100333b>] apic_timer_interrupt+0x2f/0x34
[43633.647009]                                                [<c1214ab7>] cpuidle_idle_call+0x6a/0xa3
[43633.647009]                                                [<c1001beb>] cpu_idle+0x53/0x88
[43633.647009]                                                [<c12927c1>] start_secondary+0x1ad/0x1b4
[43633.647009]                                                [<ffffffff>] 0xffffffff
[43633.647009]        INITIAL USE at:
[43633.647009]                                               [<c104c943>] __lock_acquire+0x61e/0x12d3
[43633.647009]                                               [<c104d6a4>] lock_acquire+0xac/0xc9
[43633.647009]                                               [<c1297a4d>] _spin_lock+0x2d/0x5d
[43633.647009]                                               [<c1027611>] enqueue_task_rt+0x160/0x232
[43633.647009]                                               [<c101ad56>] enqueue_task+0x2f/0x3b
[43633.647009]                                               [<c101ae2c>] activate_task+0x24/0x2a
[43633.647009]                                               [<c102294b>] try_to_wake_up+0xcb/0x20b
[43633.647009]                                               [<c1022ac2>] wake_up_process+0x14/0x16
[43633.647009]                                               [<c1293248>] migration_call+0xbc/0x470
[43633.647009]                                               [<c1457218>] migration_init+0x3b/0x4b
[43633.647009]                                               [<c1001141>] do_one_initcall+0x4f/0x116
[43633.647009]                                               [<c14481e7>] kernel_init+0x4d/0x16a
[43633.647009]                                               [<c10034f7>] kernel_thread_helper+0x7/0x10
[43633.647009]                                               [<ffffffff>] 0xffffffff
[43633.647009]      }
[43633.647009]      ... key      at: [<c15e0364>] __key.41387+0x0/0x8
[43633.647009]      -> (&cpu_base->lock){-.-.-.} ops: 0 {
[43633.647009]         IN-HARDIRQ-W at:
[43633.647009]                                                  [<c104c85e>] __lock_acquire+0x539/0x12d3
[43633.647009]                                                  [<c104d6a4>] lock_acquire+0xac/0xc9
[43633.647009]                                                  [<c1297a4d>] _spin_lock+0x2d/0x5d
[43633.647009]                                                  [<c103f3a0>] hrtimer_run_queues+0xde/0x11c
[43633.647009]                                                  [<c1032c4e>] run_local_timers+0xd/0x1e
[43633.647009]                                                  [<c1032c88>] update_process_times+0x29/0x53
[43633.647009]                                                  [<c1046e81>] tick_periodic+0x6c/0x79
[43633.647009]                                                  [<c1046eab>] tick_handle_periodic+0x1d/0x76
[43633.647009]                                                  [<c10121a1>] smp_apic_timer_interrupt+0x6e/0x81
[43633.647009]                                                  [<c100333b>] apic_timer_interrupt+0x2f/0x34
[43633.647009]                                                  [<c10991d4>] cache_alloc_debugcheck_after+0x5d/0x194
[43633.647009]                                                  [<c109aa5f>] kmem_cache_alloc+0xd4/0x16e
[43633.647009]                                                  [<c109a3f6>] cache_alloc_refill+0x371/0x5c3
[43633.647009]                                                  [<c109a8d2>] __kmalloc+0xea/0x1a3
[43633.647009]                                                  [<c109adc3>] alloc_arraycache+0x1e/0x50
[43633.647009]                                                  [<c129484a>] cpuup_callback+0x14d/0x261
[43633.647009]                                                  [<c1299ed1>] notifier_call_chain+0x51/0x7e
[43633.647009]                                                  [<c104082e>] __raw_notifier_call_chain+0x13/0x15
[43633.647009]                                                  [<c12936d4>] _cpu_up+0x62/0x105
[43633.647009]                                                  [<c12937c3>] cpu_up+0x4c/0x5c
[43633.647009]                                                  [<c1448233>] kernel_init+0x99/0x16a
[43633.647009]                                                  [<c10034f7>] kernel_thread_helper+0x7/0x10
[43633.647009]                                                  [<ffffffff>] 0xffffffff
[43633.647009]         IN-SOFTIRQ-W at:
[43633.647009]                                                  [<c104c87d>] __lock_acquire+0x558/0x12d3
[43633.647009]                                                  [<c104d6a4>] lock_acquire+0xac/0xc9
[43633.647009]                                                  [<c1297b78>] _spin_lock_irqsave+0x36/0x69
[43633.647009]                                                  [<c103f695>] lock_hrtimer_base+0x1d/0x38
[43633.647009]                                                  [<c103f7b8>] __hrtimer_start_range_ns+0x34/0x326
[43633.647009]                                                  [<c103fade>] hrtimer_start_range_ns+0x18/0x1d
[43633.647009]                                                  [<c1047f3e>] tick_setup_sched_timer+0x10b/0x133
[43633.647009]                                                  [<c103f536>] hrtimer_run_pending+0xb7/0xed
[43633.647009]                                                  [<c1032476>] run_timer_softirq+0x27/0x1f0
[43633.647009]                                                  [<c102e8d6>] __do_softirq+0xdb/0x1ac
[43633.647009]                                                  [<c102e9d7>] do_softirq+0x30/0x48
[43633.647009]                                                  [<c102eb53>] irq_exit+0x3d/0x74
[43633.647009]                                                  [<c10121a6>] smp_apic_timer_interrupt+0x73/0x81
[43633.647009]                                                  [<c100333b>] apic_timer_interrupt+0x2f/0x34
[43633.647009]                                                  [<c1001beb>] cpu_idle+0x53/0x88
[43633.647009]                                                  [<c12927c1>] start_secondary+0x1ad/0x1b4
[43633.647009]                                                  [<ffffffff>] 0xffffffff
[43633.647009]         IN-RECLAIM_FS-W at:
[43633.647009]                                                     [<c104c92d>] __lock_acquire+0x608/0x12d3
[43633.647009]                                                     [<c104d6a4>] lock_acquire+0xac/0xc9
[43633.647009]                                                     [<c1297a4d>] _spin_lock+0x2d/0x5d
[43633.647009]                                                     [<c103fdf4>] hrtimer_interrupt+0xad/0x16c
[43633.647009]                                                     [<c10121a1>] smp_apic_timer_interrupt+0x6e/0x81
[43633.647009]                                                     [<c100333b>] apic_timer_interrupt+0x2f/0x34
[43633.647009]                                                     [<c103c78b>] kthread+0x70/0x75
[43633.647009]                                                     [<c10034f7>] kernel_thread_helper+0x7/0x10
[43633.647009]                                                     [<ffffffff>] 0xffffffff
[43633.647009]         INITIAL USE at:
[43633.647009]                                                 [<c104c943>] __lock_acquire+0x61e/0x12d3
[43633.647009]                                                 [<c104d6a4>] lock_acquire+0xac/0xc9
[43633.647009]                                                 [<c1297b78>] _spin_lock_irqsave+0x36/0x69
[43633.647009]                                                 [<c103f695>] lock_hrtimer_base+0x1d/0x38
[43633.647009]                                                 [<c103f7b8>] __hrtimer_start_range_ns+0x34/0x326
[43633.647009]                                                 [<c1027662>] enqueue_task_rt+0x1b1/0x232
[43633.647009]                                                 [<c101ad56>] enqueue_task+0x2f/0x3b
[43633.647009]                                                 [<c101ae2c>] activate_task+0x24/0x2a
[43633.647009]                                                 [<c102294b>] try_to_wake_up+0xcb/0x20b
[43633.647009]                                                 [<c1022ac2>] wake_up_process+0x14/0x16
[43633.647009]                                                 [<c1293248>] migration_call+0xbc/0x470
[43633.647009]                                                 [<c1457218>] migration_init+0x3b/0x4b
[43633.647009]                                                 [<c1001141>] do_one_initcall+0x4f/0x116
[43633.647009]                                                 [<c14481e7>] kernel_init+0x4d/0x16a
[43633.647009]                                                 [<c10034f7>] kernel_thread_helper+0x7/0x10
[43633.647009]                                                 [<ffffffff>] 0xffffffff
[43633.647009]       }
[43633.647009]       ... key      at: [<c1623538>] __key.20989+0x0/0x8
[43633.647009]       -> (&cpu_base->lock/1){......} ops: 0 {
[43633.647009]          INITIAL USE at:
[43633.647009]                                                   [<c104c943>] __lock_acquire+0x61e/0x12d3
[43633.647009]                                                   [<c104d6a4>] lock_acquire+0xac/0xc9
[43633.647009]                                                   [<c12979f0>] _spin_lock_nested+0x34/0x64
[43633.647009]                                                   [<c1293ed9>] hrtimer_cpu_notify+0xf5/0x17d
[43633.647009]                                                   [<c1299ed1>] notifier_call_chain+0x51/0x7e
[43633.647009]                                                   [<c1040841>] raw_notifier_call_chain+0x11/0x13
[43633.647009]                                                   [<c128883f>] _cpu_down+0x16f/0x23a
[43633.647009]                                                   [<c102ad11>] disable_nonboot_cpus+0x5d/0xf4
[43633.647009]                                                   [<c1057a92>] suspend_devices_and_enter+0xbe/0x178
[43633.647009]                                                   [<c1057c19>] enter_state+0xcd/0x119
[43633.647009]                                                   [<c10573d5>] state_store+0x98/0xac
[43633.647009]                                                   [<c114e6b5>] kobj_attr_store+0x16/0x22
[43633.647009]                                                   [<c10daed5>] sysfs_write_file+0xcd/0xf8
[43633.647009]                                                   [<c109e7af>] vfs_write+0x8f/0x117
[43633.647009]                                                   [<c109e8f3>] sys_write+0x48/0x75
[43633.647009]                                                   [<c1002988>] sysenter_do_call+0x12/0x36
[43633.647009]                                                   [<ffffffff>] 0xffffffff
[43633.647009]        }
[43633.647009]        ... key      at: [<c1623539>] __key.20989+0x1/0x8
[43633.647009]       ... acquired at:
[43633.647009]    [<c104d315>] __lock_acquire+0xff0/0x12d3
[43633.647009]    [<c104d6a4>] lock_acquire+0xac/0xc9
[43633.647009]    [<c12979f0>] _spin_lock_nested+0x34/0x64
[43633.647009]    [<c1293ed9>] hrtimer_cpu_notify+0xf5/0x17d
[43633.647009]    [<c1299ed1>] notifier_call_chain+0x51/0x7e
[43633.647009]    [<c1040841>] raw_notifier_call_chain+0x11/0x13
[43633.647009]    [<c128883f>] _cpu_down+0x16f/0x23a
[43633.647009]    [<c102ad11>] disable_nonboot_cpus+0x5d/0xf4
[43633.647009]    [<c1057a92>] suspend_devices_and_enter+0xbe/0x178
[43633.647009]    [<c1057c19>] enter_state+0xcd/0x119
[43633.647009]    [<c10573d5>] state_store+0x98/0xac
[43633.647009]    [<c114e6b5>] kobj_attr_store+0x16/0x22
[43633.647009]    [<c10daed5>] sysfs_write_file+0xcd/0xf8
[43633.647009]    [<c109e7af>] vfs_write+0x8f/0x117
[43633.647009]    [<c109e8f3>] sys_write+0x48/0x75
[43633.647009]    [<c1002988>] sysenter_do_call+0x12/0x36
[43633.647009]    [<ffffffff>] 0xffffffff
[43633.647009] 
[43633.647009]      ... acquired at:
[43633.647009]    [<c104d315>] __lock_acquire+0xff0/0x12d3
[43633.647009]    [<c104d6a4>] lock_acquire+0xac/0xc9
[43633.647009]    [<c1297b78>] _spin_lock_irqsave+0x36/0x69
[43633.647009]    [<c103f695>] lock_hrtimer_base+0x1d/0x38
[43633.647009]    [<c103f7b8>] __hrtimer_start_range_ns+0x34/0x326
[43633.647009]    [<c1027662>] enqueue_task_rt+0x1b1/0x232
[43633.647009]    [<c101ad56>] enqueue_task+0x2f/0x3b
[43633.647009]    [<c101ae2c>] activate_task+0x24/0x2a
[43633.647009]    [<c102294b>] try_to_wake_up+0xcb/0x20b
[43633.647009]    [<c1022ac2>] wake_up_process+0x14/0x16
[43633.647009]    [<c1293248>] migration_call+0xbc/0x470
[43633.647009]    [<c1457218>] migration_init+0x3b/0x4b
[43633.647009]    [<c1001141>] do_one_initcall+0x4f/0x116
[43633.647009]    [<c14481e7>] kernel_init+0x4d/0x16a
[43633.647009]    [<c10034f7>] kernel_thread_helper+0x7/0x10
[43633.647009]    [<ffffffff>] 0xffffffff
[43633.647009] 
[43633.647009]      -> (&rt_rq->rt_runtime_lock){-.-...} ops: 0 {
[43633.647009]         IN-HARDIRQ-W at:
[43633.647009]                                                  [<c104c85e>] __lock_acquire+0x539/0x12d3
[43633.647009]                                                  [<c104d6a4>] lock_acquire+0xac/0xc9
[43633.647009]                                                  [<c1297a4d>] _spin_lock+0x2d/0x5d
[43633.647009]                                                  [<c101f3eb>] update_curr_rt+0x123/0x1b0
[43633.647009]                                                  [<c101f48c>] task_tick_rt+0x14/0xb1
[43633.647009]                                                  [<c1026234>] scheduler_tick+0xd8/0x1dc
[43633.647009]                                                  [<c1032ca6>] update_process_times+0x47/0x53
[43633.647009]                                                  [<c1047d9b>] tick_sched_timer+0x71/0x9f
[43633.647009]                                                  [<c103f290>] __run_hrtimer+0x6b/0x9d
[43633.647009]                                                  [<c103fe59>] hrtimer_interrupt+0x112/0x16c
[43633.647009]                                                  [<c10121a1>] smp_apic_timer_interrupt+0x6e/0x81
[43633.647009]                                                  [<c100333b>] apic_timer_interrupt+0x2f/0x34
[43633.647009]                                                  [<c1038a94>] worker_thread+0x1aa/0x287
[43633.647009]                                                  [<c103c78b>] kthread+0x70/0x75
[43633.647009]                                                  [<c10034f7>] kernel_thread_helper+0x7/0x10
[43633.647009]                                                  [<ffffffff>] 0xffffffff
[43633.647009]         IN-SOFTIRQ-W at:
[43633.647009]                                                  [<c104c87d>] __lock_acquire+0x558/0x12d3
[43633.647009]                                                  [<c104d6a4>] lock_acquire+0xac/0xc9
[43633.647009]                                                  [<c1297a4d>] _spin_lock+0x2d/0x5d
[43633.647009]                                                  [<c101fc8f>] sched_rt_period_timer+0xbc/0x201
[43633.647009]                                                  [<c103f290>] __run_hrtimer+0x6b/0x9d
[43633.647009]                                                  [<c103fe59>] hrtimer_interrupt+0x112/0x16c
[43633.647009]                                                  [<c1047138>] tick_do_broadcast+0x32/0x5b
[43633.647009]                                                  [<c1047210>] tick_handle_oneshot_broadcast+0xaf/0xe7
[43633.647009]                                                  [<c1004c76>] timer_interrupt+0x3e/0x45
[43633.647009]                                                  [<c105fcef>] handle_IRQ_event+0x6a/0x12f
[43633.647009]                                                  [<c1061365>] handle_edge_irq+0xcf/0x112
[43633.647009]                                                  [<c100489d>] handle_irq+0x40/0x4b
[43633.647009]                                                  [<c100401c>] do_IRQ+0x49/0x9c
[43633.647009]                                                  [<c100302e>] common_interrupt+0x2e/0x34
[43633.647009]                                                  [<c102e9d7>] do_softirq+0x30/0x48
[43633.647009]                                                  [<c102eb53>] irq_exit+0x3d/0x74
[43633.647009]                                                  [<c100405b>] do_IRQ+0x88/0x9c
[43633.647009]                                                  [<c100302e>] common_interrupt+0x2e/0x34
[43633.647009]                                                  [<c1214ab7>] cpuidle_idle_call+0x6a/0xa3
[43633.647009]                                                  [<c1001beb>] cpu_idle+0x53/0x88
[43633.647009]                                                  [<c12880c4>] rest_init+0x6c/0x6e
[43633.647009]                                                  [<c1448753>] start_kernel+0x28b/0x290
[43633.647009]                                                  [<c1448038>] __init_begin+0x38/0x40
[43633.647009]                                                  [<ffffffff>] 0xffffffff
[43633.647009]         INITIAL USE at:
[43633.647009]                                                 [<c104c943>] __lock_acquire+0x61e/0x12d3
[43633.647009]                                                 [<c104d6a4>] lock_acquire+0xac/0xc9
[43633.647009]                                                 [<c1297a4d>] _spin_lock+0x2d/0x5d
[43633.647009]                                                 [<c101f3eb>] update_curr_rt+0x123/0x1b0
[43633.647009]                                                 [<c101fa28>] dequeue_task_rt+0x22/0x62
[43633.647009]                                                 [<c101adfa>] dequeue_task+0x98/0xa6
[43633.647009]                                                 [<c101ae56>] deactivate_task+0x24/0x2a
[43633.647009]                                                 [<c129519c>] schedule+0x13e/0x81f
[43633.647009]                                                 [<c10259bb>] migration_thread+0x179/0x1de
[43633.647009]                                                 [<c103c78b>] kthread+0x70/0x75
[43633.647009]                                                 [<c10034f7>] kernel_thread_helper+0x7/0x10
[43633.647009]                                                 [<ffffffff>] 0xffffffff
[43633.647009]       }
[43633.647009]       ... key      at: [<c15e036c>] __key.51698+0x0/0x8
[43633.647009]      ... acquired at:
[43633.647009]    [<c104d315>] __lock_acquire+0xff0/0x12d3
[43633.647009]    [<c104d6a4>] lock_acquire+0xac/0xc9
[43633.647009]    [<c1297a4d>] _spin_lock+0x2d/0x5d
[43633.647009]    [<c101dc40>] __enable_runtime+0x34/0x7f
[43633.647009]    [<c101f866>] rq_online_rt+0x44/0x61
[43633.647009]    [<c101cdc8>] set_rq_online+0x40/0x4a
[43633.647009]    [<c129327c>] migration_call+0xf0/0x470
[43633.647009]    [<c1299ed1>] notifier_call_chain+0x51/0x7e
[43633.647009]    [<c1040841>] raw_notifier_call_chain+0x11/0x13
[43633.647009]    [<c1293738>] _cpu_up+0xc6/0x105
[43633.647009]    [<c12937c3>] cpu_up+0x4c/0x5c
[43633.647009]    [<c1448233>] kernel_init+0x99/0x16a
[43633.647009]    [<c10034f7>] kernel_thread_helper+0x7/0x10
[43633.647009]    [<ffffffff>] 0xffffffff
[43633.647009] 
[43633.647009]     ... acquired at:
[43633.647009]    [<c104d315>] __lock_acquire+0xff0/0x12d3
[43633.647009]    [<c104d6a4>] lock_acquire+0xac/0xc9
[43633.647009]    [<c1297a4d>] _spin_lock+0x2d/0x5d
[43633.647009]    [<c1027611>] enqueue_task_rt+0x160/0x232
[43633.647009]    [<c101ad56>] enqueue_task+0x2f/0x3b
[43633.647009]    [<c101ae2c>] activate_task+0x24/0x2a
[43633.647009]    [<c102294b>] try_to_wake_up+0xcb/0x20b
[43633.647009]    [<c1022ac2>] wake_up_process+0x14/0x16
[43633.647009]    [<c1293248>] migration_call+0xbc/0x470
[43633.647009]    [<c1457218>] migration_init+0x3b/0x4b
[43633.647009]    [<c1001141>] do_one_initcall+0x4f/0x116
[43633.647009]    [<c14481e7>] kernel_init+0x4d/0x16a
[43633.647009]    [<c10034f7>] kernel_thread_helper+0x7/0x10
[43633.647009]    [<ffffffff>] 0xffffffff
[43633.647009] 
[43633.647009]     ... acquired at:
[43633.647009]    [<c104d315>] __lock_acquire+0xff0/0x12d3
[43633.647009]    [<c104d6a4>] lock_acquire+0xac/0xc9
[43633.647009]    [<c1297a4d>] _spin_lock+0x2d/0x5d
[43633.647009]    [<c101f3eb>] update_curr_rt+0x123/0x1b0
[43633.647009]    [<c101fa28>] dequeue_task_rt+0x22/0x62
[43633.647009]    [<c101adfa>] dequeue_task+0x98/0xa6
[43633.647009]    [<c101ae56>] deactivate_task+0x24/0x2a
[43633.647009]    [<c129519c>] schedule+0x13e/0x81f
[43633.647009]    [<c10259bb>] migration_thread+0x179/0x1de
[43633.647009]    [<c103c78b>] kthread+0x70/0x75
[43633.647009]    [<c10034f7>] kernel_thread_helper+0x7/0x10
[43633.647009]    [<ffffffff>] 0xffffffff
[43633.647009] 
[43633.647009]     -> (&rq->lock/1){..-...} ops: 0 {
[43633.647009]        IN-SOFTIRQ-W at:
[43633.647009]                                                [<c104c87d>] __lock_acquire+0x558/0x12d3
[43633.647009]                                                [<c104d6a4>] lock_acquire+0xac/0xc9
[43633.647009]                                                [<c12979f0>] _spin_lock_nested+0x34/0x64
[43633.647009]                                                [<c102232a>] double_rq_lock+0x4c/0x7f
[43633.647009]                                                [<c1025ba9>] rebalance_domains+0x189/0x3b6
[43633.647009]                                                [<c1025e0a>] run_rebalance_domains+0x34/0xa7
[43633.647009]                                                [<c102e8d6>] __do_softirq+0xdb/0x1ac
[43633.647009]                                                [<c102e9d7>] do_softirq+0x30/0x48
[43633.647009]                                                [<c102eb53>] irq_exit+0x3d/0x74
[43633.647009]                                                [<c10121a6>] smp_apic_timer_interrupt+0x73/0x81
[43633.647009]                                                [<c100333b>] apic_timer_interrupt+0x2f/0x34
[43633.647009]                                                [<c1001beb>] cpu_idle+0x53/0x88
[43633.647009]                                                [<c12927c1>] start_secondary+0x1ad/0x1b4
[43633.647009]                                                [<ffffffff>] 0xffffffff
[43633.647009]        INITIAL USE at:
[43633.647009]                                               [<c104c943>] __lock_acquire+0x61e/0x12d3
[43633.647009]                                               [<c104d6a4>] lock_acquire+0xac/0xc9
[43633.647009]                                               [<c12979f0>] _spin_lock_nested+0x34/0x64
[43633.647009]                                               [<c102232a>] double_rq_lock+0x4c/0x7f
[43633.647009]                                               [<c1024c11>] __migrate_task+0x4d/0xc1
[43633.647009]                                               [<c10259ef>] migration_thread+0x1ad/0x1de
[43633.647009]                                               [<c103c78b>] kthread+0x70/0x75
[43633.647009]                                               [<c10034f7>] kernel_thread_helper+0x7/0x10
[43633.647009]                                               [<ffffffff>] 0xffffffff
[43633.647009]      }
[43633.647009]      ... key      at: [<c15e035d>] __key.51718+0x1/0x8
[43633.647009]      -> (&sig->cputimer.lock){-.-...} ops: 0 {
[43633.647009]         IN-HARDIRQ-W at:
[43633.647009]                                                  [<c104c85e>] __lock_acquire+0x539/0x12d3
[43633.647009]                                                  [<c104d6a4>] lock_acquire+0xac/0xc9
[43633.647009]                                                  [<c1297a4d>] _spin_lock+0x2d/0x5d
[43633.647009]                                                  [<c101debd>] account_system_time+0x105/0x157
[43633.647009]                                                  [<c101df78>] account_process_tick+0x69/0x7e
[43633.647009]                                                  [<c1032c83>] update_process_times+0x24/0x53
[43633.647009]                                                  [<c1047d9b>] tick_sched_timer+0x71/0x9f
[43633.647009]                                                  [<c103f290>] __run_hrtimer+0x6b/0x9d
[43633.647009]                                                  [<c103fe59>] hrtimer_interrupt+0x112/0x16c
[43633.647009]                                                  [<c10121a1>] smp_apic_timer_interrupt+0x6e/0x81
[43633.647009]                                                  [<c100333b>] apic_timer_interrupt+0x2f/0x34
[43633.647009]                                                  [<c1297a4d>] _spin_lock+0x2d/0x5d
[43633.647009]                                                  [<c10ac78c>] __d_lookup+0x96/0x140
[43633.647009]                                                  [<c10a50c6>] do_lookup+0x23/0x158
[43633.647009]                                                  [<c10a6584>] __link_path_walk+0x30d/0xae6
[43633.647009]                                                  [<c10a6eb2>] path_walk+0x3e/0x77
[43633.647009]                                                  [<c10a6f78>] do_path_lookup+0x26/0x47
[43633.647009]                                                  [<c10a79fe>] do_filp_open+0xcc/0x6e1
[43633.647009]                                                  [<c109c965>] do_sys_open+0x4d/0xe9
[43633.647009]                                                  [<c109ca4d>] sys_open+0x23/0x2b
[43633.647009]                                                  [<c1002988>] sysenter_do_call+0x12/0x36
[43633.647009]                                                  [<ffffffff>] 0xffffffff
[43633.647009]         IN-SOFTIRQ-W at:
[43633.647009]                                                  [<c104c87d>] __lock_acquire+0x558/0x12d3
[43633.647009]                                                  [<c104d6a4>] lock_acquire+0xac/0xc9
[43633.647009]                                                  [<c1297a4d>] _spin_lock+0x2d/0x5d
[43633.647009]                                                  [<c101d7df>] update_curr+0x128/0x149
[43633.647009]                                                  [<c101ed63>] enqueue_task_fair+0x40/0xdc
[43633.647009]                                                  [<c101ad56>] enqueue_task+0x2f/0x3b
[43633.647009]                                                  [<c101ae2c>] activate_task+0x24/0x2a
[43633.647009]                                                  [<c102294b>] try_to_wake_up+0xcb/0x20b
[43633.647009]                                                  [<c1022a9b>] default_wake_function+0x10/0x12
[43633.647009]                                                  [<c103ca74>] autoremove_wake_function+0x14/0x34
[43633.647009]                                                  [<c103cac3>] wake_bit_function+0x2f/0x3c
[43633.647009]                                                  [<c101b00a>] __wake_up_common+0x39/0x61
[43633.647009]                                                  [<c101d557>] __wake_up+0x2e/0x40
[43633.647009]                                                  [<c103c9fd>] __wake_up_bit+0x2c/0x2f
[43633.647009]                                                  [<c107921f>] end_page_writeback+0x65/0x68
[43633.647009]                                                  [<c10ba9e5>] end_buffer_async_write+0x139/0x189
[43633.647009]                                                  [<c10b9449>] end_bio_bh_io_sync+0x33/0x3d
[43633.647009]                                                  [<c10bc824>] bio_endio+0x28/0x2a
[43633.647009]                                                  [<c113e468>] req_bio_endio+0x89/0xa6
[43633.647009]                                                  [<c113e66b>] blk_update_request+0x1e6/0x379
[43633.647009]                                                  [<c113e811>] blk_update_bidi_request+0x13/0x41
[43633.647009]                                                  [<c1140320>] blk_end_bidi_request+0x1d/0x55
[43633.647009]                                                  [<c1140396>] blk_end_request+0xf/0x11
[43633.647009]                                                  [<c11cb225>] scsi_io_completion+0x196/0x3c4
[43633.647009]                                                  [<c11c5785>] scsi_finish_command+0xd3/0xdb
[43633.647009]                                                  [<c11cb554>] scsi_softirq_done+0xed/0xf5
[43633.647009]                                                  [<c1145c63>] blk_done_softirq+0x63/0x70
[43633.647009]                                                  [<c102e8d6>] __do_softirq+0xdb/0x1ac
[43633.647009]                                                  [<c102e9d7>] do_softirq+0x30/0x48
[43633.647009]                                                  [<c102eb53>] irq_exit+0x3d/0x74
[43633.647009]                                                  [<c100405b>] do_IRQ+0x88/0x9c
[43633.647009]                                                  [<c100302e>] common_interrupt+0x2e/0x34
[43633.647009]                                                  [<c1297a4d>] _spin_lock+0x2d/0x5d
[43633.647009]                                                  [<f8043d41>] unix_stream_recvmsg+0xf7/0x416 [unix]
[43633.647009]                                                  [<c12259bd>] sock_aio_read+0xd7/0xe1
[43633.647009]                                                  [<c109df9b>] do_sync_read+0xb0/0xeb
[43633.647009]                                                  [<c109e9bd>] vfs_read+0x9d/0x115
[43633.647009]                                                  [<c109eaf1>] sys_read+0x48/0x75
[43633.647009]                                                  [<c1002988>] sysenter_do_call+0x12/0x36
[43633.647009]                                                  [<ffffffff>] 0xffffffff
[43633.647009]         INITIAL USE at:
[43633.647009]                                                 [<c104c943>] __lock_acquire+0x61e/0x12d3
[43633.647009]                                                 [<c104d6a4>] lock_acquire+0xac/0xc9
[43633.647009]                                                 [<c1297b78>] _spin_lock_irqsave+0x36/0x69
[43633.647009]                                                 [<c103d893>] thread_group_cputimer+0x26/0xae
[43633.647009]                                                 [<c103d93e>] cpu_timer_sample_group+0x23/0x66
[43633.647009]                                                 [<c103d9af>] set_process_cpu_timer+0x2e/0xb4
[43633.647009]                                                 [<c103da8f>] update_rlimit_cpu+0x5a/0x73
[43633.647009]                                                 [<c1036739>] sys_setrlimit+0xdf/0xf6
[43633.647009]                                                 [<c1002988>] sysenter_do_call+0x12/0x36
[43633.647009]                                                 [<ffffffff>] 0xffffffff
[43633.647009]       }
[43633.647009]       ... key      at: [<c15e1668>] __key.21973+0x0/0x8
[43633.647009]      ... acquired at:
[43633.647009]    [<c104d315>] __lock_acquire+0xff0/0x12d3
[43633.647009]    [<c104d6a4>] lock_acquire+0xac/0xc9
[43633.647009]    [<c1297a4d>] _spin_lock+0x2d/0x5d
[43633.647009]    [<c101d7df>] update_curr+0x128/0x149
[43633.647009]    [<c101ed63>] enqueue_task_fair+0x40/0xdc
[43633.647009]    [<c101ad56>] enqueue_task+0x2f/0x3b
[43633.647009]    [<c101ae2c>] activate_task+0x24/0x2a
[43633.647009]    [<c1024c55>] __migrate_task+0x91/0xc1
[43633.647009]    [<c10259ef>] migration_thread+0x1ad/0x1de
[43633.647009]    [<c103c78b>] kthread+0x70/0x75
[43633.647009]    [<c10034f7>] kernel_thread_helper+0x7/0x10
[43633.647009]    [<ffffffff>] 0xffffffff
[43633.647009] 
[43633.647009]     ... acquired at:
[43633.647009]    [<c104d315>] __lock_acquire+0xff0/0x12d3
[43633.647009]    [<c104d6a4>] lock_acquire+0xac/0xc9
[43633.647009]    [<c12979f0>] _spin_lock_nested+0x34/0x64
[43633.647009]    [<c102232a>] double_rq_lock+0x4c/0x7f
[43633.647009]    [<c1024c11>] __migrate_task+0x4d/0xc1
[43633.647009]    [<c10259ef>] migration_thread+0x1ad/0x1de
[43633.647009]    [<c103c78b>] kthread+0x70/0x75
[43633.647009]    [<c10034f7>] kernel_thread_helper+0x7/0x10
[43633.647009]    [<ffffffff>] 0xffffffff
[43633.647009] 
[43633.647009]     ... acquired at:
[43633.647009]    [<c104d315>] __lock_acquire+0xff0/0x12d3
[43633.647009]    [<c104d6a4>] lock_acquire+0xac/0xc9
[43633.647009]    [<c1297a4d>] _spin_lock+0x2d/0x5d
[43633.647009]    [<c101d7df>] update_curr+0x128/0x149
[43633.647009]    [<c101e7b5>] dequeue_task_fair+0x40/0x188
[43633.647009]    [<c101adfa>] dequeue_task+0x98/0xa6
[43633.647009]    [<c101ae56>] deactivate_task+0x24/0x2a
[43633.647009]    [<c129519c>] schedule+0x13e/0x81f
[43633.647009]    [<c12958a0>] io_schedule+0x23/0x2d
[43633.647009]    [<c1079186>] sync_page+0x47/0x4b
[43633.647009]    [<c1079197>] sync_page_killable+0xd/0x30
[43633.647009]    [<c1295bf3>] __wait_on_bit_lock+0x39/0x75
[43633.647009]    [<c10790ae>] __lock_page_killable+0x74/0x7b
[43633.647009]    [<c107adb5>] generic_file_aio_read+0x383/0x532
[43633.647009]    [<c109df9b>] do_sync_read+0xb0/0xeb
[43633.647009]    [<c109e9ad>] vfs_read+0x8d/0x115
[43633.647009]    [<c109eaf1>] sys_read+0x48/0x75
[43633.647009]    [<c1002988>] sysenter_do_call+0x12/0x36
[43633.647009]    [<ffffffff>] 0xffffffff
[43633.647009] 
[43633.647009]    ... acquired at:
[43633.647009]    [<c104d315>] __lock_acquire+0xff0/0x12d3
[43633.647009]    [<c104d6a4>] lock_acquire+0xac/0xc9
[43633.647009]    [<c1297a4d>] _spin_lock+0x2d/0x5d
[43633.647009]    [<c101d62c>] task_rq_lock+0x3b/0x65
[43633.647009]    [<c10228b1>] try_to_wake_up+0x31/0x20b
[43633.647009]    [<c1022a9b>] default_wake_function+0x10/0x12
[43633.647009]    [<c103ca74>] autoremove_wake_function+0x14/0x34
[43633.647009]    [<c101b00a>] __wake_up_common+0x39/0x61
[43633.647009]    [<c101d557>] __wake_up+0x2e/0x40
[43633.647009]    [<c1038ccd>] insert_work+0x9a/0xa3
[43633.647009]    [<c10394f4>] __queue_work+0x26/0x34
[43633.647009]    [<c103957c>] queue_work_on+0x40/0x49
[43633.647009]    [<c10396a2>] queue_work+0x26/0x4a
[43633.647009]    [<c1037fe7>] call_usermodehelper_exec+0x8f/0xe1
[43633.647009]    [<c114f357>] kobject_uevent_env+0x333/0x368
[43633.647009]    [<c114f396>] kobject_uevent+0xa/0xc
[43633.647009]    [<c114eb0c>] kset_register+0x2e/0x34
[43633.647009]    [<c11b74fe>] bus_register+0xe4/0x232
[43633.647009]    [<c146315e>] platform_bus_init+0x23/0x38
[43633.647009]    [<c14631f6>] driver_init+0x1c/0x28
[43633.647009]    [<c144828c>] kernel_init+0xf2/0x16a
[43633.647009]    [<c10034f7>] kernel_thread_helper+0x7/0x10
[43633.647009]    [<ffffffff>] 0xffffffff
[43633.647009] 
[43633.647009]   ... acquired at:
[43633.647009]    [<c104d315>] __lock_acquire+0xff0/0x12d3
[43633.647009]    [<c104d6a4>] lock_acquire+0xac/0xc9
[43633.647009]    [<c1297b78>] _spin_lock_irqsave+0x36/0x69
[43633.647009]    [<c101d543>] __wake_up+0x1a/0x40
[43633.647009]    [<c1038ccd>] insert_work+0x9a/0xa3
[43633.647009]    [<c10394f4>] __queue_work+0x26/0x34
[43633.647009]    [<c103957c>] queue_work_on+0x40/0x49
[43633.647009]    [<c10396a2>] queue_work+0x26/0x4a
[43633.647009]    [<c1037fe7>] call_usermodehelper_exec+0x8f/0xe1
[43633.647009]    [<c114f357>] kobject_uevent_env+0x333/0x368
[43633.647009]    [<c114f396>] kobject_uevent+0xa/0xc
[43633.647009]    [<c114eb0c>] kset_register+0x2e/0x34
[43633.647009]    [<c11b74fe>] bus_register+0xe4/0x232
[43633.647009]    [<c146315e>] platform_bus_init+0x23/0x38
[43633.647009]    [<c14631f6>] driver_init+0x1c/0x28
[43633.647009]    [<c144828c>] kernel_init+0xf2/0x16a
[43633.647009]    [<c10034f7>] kernel_thread_helper+0x7/0x10
[43633.647009]    [<ffffffff>] 0xffffffff
[43633.647009] 
[43633.647009]  ... acquired at:
[43633.647009]    [<c104d315>] __lock_acquire+0xff0/0x12d3
[43633.647009]    [<c104d6a4>] lock_acquire+0xac/0xc9
[43633.647009]    [<c1297b78>] _spin_lock_irqsave+0x36/0x69
[43633.647009]    [<c10394e5>] __queue_work+0x17/0x34
[43633.647009]    [<c103957c>] queue_work_on+0x40/0x49
[43633.647009]    [<c10396a2>] queue_work+0x26/0x4a
[43633.647009]    [<c10396da>] schedule_work+0x14/0x16
[43633.647009]    [<fa2558ff>] add_todo+0x4a/0x58 [mac80211]
[43633.647009]    [<fa256173>] ieee80211_key_link+0x11a/0x138 [mac80211]
[43633.647009]    [<fa2505ff>] ieee80211_add_key+0xee/0x128 [mac80211]
[43633.647009]    [<f8f34451>] cfg80211_set_encryption+0xf2/0x163 [cfg80211]
[43633.647009]    [<f8f34618>] cfg80211_wext_siwencodeext+0x156/0x16f [cfg80211]
[43633.647009]    [<c128779c>] ioctl_standard_call+0x1cc/0x27f
[43633.647009]    [<c1287922>] wext_handle_ioctl+0xd3/0x15d
[43633.647009]    [<c12353e5>] dev_ioctl+0x564/0x584
[43633.647009]    [<c1225eb5>] sock_ioctl+0x1e6/0x1f2
[43633.647009]    [<c10a8d82>] vfs_ioctl+0x1d/0x76
[43633.647009]    [<c10a9321>] do_vfs_ioctl+0x4a0/0x4de
[43633.647009]    [<c10a9392>] sys_ioctl+0x33/0x4d
[43633.647009]    [<c1002988>] sysenter_do_call+0x12/0x36
[43633.647009]    [<ffffffff>] 0xffffffff
[43633.647009] 
[43633.647009] 
[43633.647009] stack backtrace:
[43633.647009] Pid: 18756, comm: cc1 Not tainted 2.6.31-rc6 #179
[43633.647009] Call Trace:
[43633.647009]  [<c1294dcf>] ? printk+0x14/0x1d
[43633.647009]  [<c104bbdb>] print_irq_inversion_bug+0x12d/0x139
[43633.647009]  [<c104bc5c>] check_usage_forwards+0x75/0x7e
[43633.647009]  [<c104bbe7>] ? check_usage_forwards+0x0/0x7e
[43633.647009]  [<c104b447>] mark_lock+0x2bc/0x49f
[43633.647009]  [<c104c87d>] __lock_acquire+0x558/0x12d3
[43633.647009]  [<fa244acd>] ? sta_info_insert+0x91/0x174 [mac80211]
[43633.647009]  [<fa244acd>] ? sta_info_insert+0x91/0x174 [mac80211]
[43633.647009]  [<c104d6a4>] lock_acquire+0xac/0xc9
[43633.647009]  [<fa244acd>] ? sta_info_insert+0x91/0x174 [mac80211]
[43633.647009]  [<c1297b78>] _spin_lock_irqsave+0x36/0x69
[43633.647009]  [<fa244acd>] ? sta_info_insert+0x91/0x174 [mac80211]
[43633.647009]  [<fa244acd>] sta_info_insert+0x91/0x174 [mac80211]
[43633.647009]  [<fa248b2a>] ieee80211_ibss_add_sta+0x119/0x12a [mac80211]
[43633.647009]  [<c104b66d>] ? mark_held_locks+0x43/0x5b
[43633.647009]  [<fa25268f>] __ieee80211_rx_handle_packet+0x349/0x552 [mac80211]
[43633.647009]  [<c104c943>] ? __lock_acquire+0x61e/0x12d3
[43633.647009]  [<fa252cbe>] ? __ieee80211_rx+0x9f/0x581 [mac80211]
[43633.647009]  [<c104b8a6>] ? trace_hardirqs_on_caller+0xf7/0x131
[43633.647009]  [<fa252cbe>] ? __ieee80211_rx+0x9f/0x581 [mac80211]
[43633.647009]  [<fa25311f>] __ieee80211_rx+0x500/0x581 [mac80211]
[43633.647009]  [<fa4ecf17>] ath5k_tasklet_rx+0x51b/0x56c [ath5k]
[43633.647009]  [<c102e209>] tasklet_action+0x93/0xe6
[43633.647009]  [<c102e8d6>] __do_softirq+0xdb/0x1ac
[43633.647009]  [<c102e9d7>] do_softirq+0x30/0x48
[43633.647009]  [<c102eb53>] irq_exit+0x3d/0x74
[43633.647009]  [<c100405b>] do_IRQ+0x88/0x9c
[43633.647009]  [<c100302e>] common_interrupt+0x2e/0x34
[43633.647009] phy0: Inserted STA 00:1e:c2:3b:f4:e3
[43646.000209] phy0: Removed STA 00:21:e9:94:5e:93
[43646.003063] phy0: Destroyed STA 00:21:e9:94:5e:93
[43713.997314] wlan0: No active IBSS STAs - trying to scan for other IBSS networks with same SSID (merge)

-- 
Bob Copeland %% www.bobcopeland.com


^ permalink raw reply

* Re: [PATCH] mac80211: allow configure_filter callback to sleep
From: Johannes Berg @ 2009-08-17 15:00 UTC (permalink / raw)
  To: John Linville; +Cc: linux-wireless
In-Reply-To: <1250518613.15103.7.camel@johannes.local>

[-- Attachment #1: Type: text/plain, Size: 725 bytes --]

On Mon, 2009-08-17 at 16:16 +0200, Johannes Berg wrote:
> Over time, a whole bunch of drivers have come up
> with their own scheme to delay the configure_filter
> operation to a workqueue. To be able to simplify
> things, allow configure_filter to sleep, and add
> a new prepare_multicast callback that drivers that
> need the multicast address list implement. This new
> callback must be atomic, but most drivers either
> don't care or just calculate a hash which can be
> done atomically and then uploaded to the hardware
> non-atomically.

Oh I should probably mention that
 1) I only tested with hwsim, but
 2) I don't think it will break much since it doesn't really change most
    drivers.

johannes

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 801 bytes --]

^ permalink raw reply

* Re: [PATCH] mac80211: allow configure_filter callback to sleep
From: Kalle Valo @ 2009-08-17 14:24 UTC (permalink / raw)
  To: Johannes Berg; +Cc: John Linville, linux-wireless
In-Reply-To: <1250518613.15103.7.camel@johannes.local>

Johannes Berg <johannes@sipsolutions.net> writes:

> Over time, a whole bunch of drivers have come up
> with their own scheme to delay the configure_filter
> operation to a workqueue. To be able to simplify
> things, allow configure_filter to sleep, and add
> a new prepare_multicast callback that drivers that
> need the multicast address list implement. This new
> callback must be atomic, but most drivers either
> don't care or just calculate a hash which can be
> done atomically and then uploaded to the hardware
> non-atomically.
>
> A cursory look suggests that at76c50x-usb,

BTW, at76c50x-usb is broken currently. The change of providing bssid to
the driver only after association broke it. I don't have time to fix it
right now, but I try to find some time next week.

> ar9170, mwl8k (which is actually very broken now), rt2x00, wl1251,
> wl1271 and zd1211 should make use of this new capability.

This will make things a lot easier for wl1251 and wl1271. Thank you for
this.

-- 
Kalle Valo

^ permalink raw reply

* Re: [PATCH] mac80211: remove deprecated API
From: Kalle Valo @ 2009-08-17 14:21 UTC (permalink / raw)
  To: Johannes Berg; +Cc: John Linville, linux-wireless
In-Reply-To: <1250518687.15103.9.camel@johannes.local>

Johannes Berg <johannes@sipsolutions.net> writes:

> All but two drivers have now stopped using the two
> deprecated members radio_enabled and beacon_int,
> so it's about time to remove them for good.
>
> Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
> ---
>  drivers/net/wireless/at76c50x-usb.c |    5 ++---

For the at76 part:

Acked-by: Kalle Valo <kalle.valo@iki.fi>

-- 
Kalle Valo

^ permalink raw reply

* [PATCH] mac80211: remove deprecated API
From: Johannes Berg @ 2009-08-17 14:18 UTC (permalink / raw)
  To: John Linville; +Cc: linux-wireless

All but two drivers have now stopped using the two
deprecated members radio_enabled and beacon_int,
so it's about time to remove them for good.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
---
 drivers/net/wireless/at76c50x-usb.c |    5 ++---
 drivers/net/wireless/mwl8k.c        |    7 -------
 include/net/mac80211.h              |   15 ---------------
 net/mac80211/main.c                 |    4 ----
 4 files changed, 2 insertions(+), 29 deletions(-)

--- wireless-testing.orig/drivers/net/wireless/at76c50x-usb.c	2009-08-17 15:39:28.000000000 +0200
+++ wireless-testing/drivers/net/wireless/at76c50x-usb.c	2009-08-17 15:47:48.000000000 +0200
@@ -1950,9 +1950,8 @@ static int at76_config(struct ieee80211_
 {
 	struct at76_priv *priv = hw->priv;
 
-	at76_dbg(DBG_MAC80211, "%s(): channel %d radio %d",
-		 __func__, hw->conf.channel->hw_value,
-		 hw->conf.radio_enabled);
+	at76_dbg(DBG_MAC80211, "%s(): channel %d",
+		 __func__, hw->conf.channel->hw_value);
 	at76_dbg_dump(DBG_MAC80211, priv->bssid, ETH_ALEN, "bssid:");
 
 	mutex_lock(&priv->mtx);
--- wireless-testing.orig/drivers/net/wireless/mwl8k.c	2009-08-17 15:39:28.000000000 +0200
+++ wireless-testing/drivers/net/wireless/mwl8k.c	2009-08-17 15:47:48.000000000 +0200
@@ -3031,13 +3031,6 @@ static int mwl8k_config_wt(struct work_s
 	struct mwl8k_priv *priv = hw->priv;
 	int rc = 0;
 
-	if (!conf->radio_enabled) {
-		mwl8k_cmd_802_11_radio_control(hw, MWL8K_RADIO_DISABLE);
-		priv->current_channel = NULL;
-		rc = 0;
-		goto mwl8k_config_exit;
-	}
-
 	if (mwl8k_cmd_802_11_radio_control(hw, MWL8K_RADIO_ENABLE)) {
 		rc = -EINVAL;
 		goto mwl8k_config_exit;
--- wireless-testing.orig/include/net/mac80211.h	2009-08-17 15:39:28.000000000 +0200
+++ wireless-testing/include/net/mac80211.h	2009-08-17 15:47:48.000000000 +0200
@@ -583,7 +583,6 @@ enum ieee80211_conf_flags {
 /**
  * enum ieee80211_conf_changed - denotes which configuration changed
  *
- * @_IEEE80211_CONF_CHANGE_RADIO_ENABLED: DEPRECATED
  * @IEEE80211_CONF_CHANGE_LISTEN_INTERVAL: the listen interval changed
  * @IEEE80211_CONF_CHANGE_RADIOTAP: the radiotap flag changed
  * @IEEE80211_CONF_CHANGE_PS: the PS flag or dynamic PS timeout changed
@@ -593,7 +592,6 @@ enum ieee80211_conf_flags {
  * @IEEE80211_CONF_CHANGE_IDLE: Idle flag changed
  */
 enum ieee80211_conf_changed {
-	_IEEE80211_CONF_CHANGE_RADIO_ENABLED	= BIT(0),
 	IEEE80211_CONF_CHANGE_LISTEN_INTERVAL	= BIT(2),
 	IEEE80211_CONF_CHANGE_RADIOTAP		= BIT(3),
 	IEEE80211_CONF_CHANGE_PS		= BIT(4),
@@ -603,14 +601,6 @@ enum ieee80211_conf_changed {
 	IEEE80211_CONF_CHANGE_IDLE		= BIT(8),
 };
 
-static inline __deprecated enum ieee80211_conf_changed
-__IEEE80211_CONF_CHANGE_RADIO_ENABLED(void)
-{
-	return _IEEE80211_CONF_CHANGE_RADIO_ENABLED;
-}
-#define IEEE80211_CONF_CHANGE_RADIO_ENABLED \
-	__IEEE80211_CONF_CHANGE_RADIO_ENABLED()
-
 /**
  * struct ieee80211_conf - configuration of the device
  *
@@ -618,9 +608,6 @@ __IEEE80211_CONF_CHANGE_RADIO_ENABLED(vo
  *
  * @flags: configuration flags defined above
  *
- * @radio_enabled: when zero, driver is required to switch off the radio.
- * @beacon_int: DEPRECATED, DO NOT USE
- *
  * @listen_interval: listen interval in units of beacon interval
  * @max_sleep_period: the maximum number of beacon intervals to sleep for
  *	before checking the beacon for a TIM bit (managed mode only); this
@@ -644,13 +631,11 @@ __IEEE80211_CONF_CHANGE_RADIO_ENABLED(vo
  *    number of transmissions not the number of retries
  */
 struct ieee80211_conf {
-	int __deprecated beacon_int;
 	u32 flags;
 	int power_level, dynamic_ps_timeout;
 	int max_sleep_period;
 
 	u16 listen_interval;
-	bool __deprecated radio_enabled;
 
 	u8 long_frame_max_tx_count, short_frame_max_tx_count;
 
--- wireless-testing.orig/net/mac80211/main.c	2009-08-17 15:39:28.000000000 +0200
+++ wireless-testing/net/mac80211/main.c	2009-08-17 15:47:48.000000000 +0200
@@ -241,9 +241,6 @@ void ieee80211_bss_info_change_notify(st
 
 	drv_bss_info_changed(local, &sdata->vif,
 			     &sdata->vif.bss_conf, changed);
-
-	/* DEPRECATED */
-	local->hw.conf.beacon_int = sdata->vif.bss_conf.beacon_int;
 }
 
 u32 ieee80211_reset_erp_info(struct ieee80211_sub_if_data *sdata)
@@ -687,7 +684,6 @@ struct ieee80211_hw *ieee80211_alloc_hw(
 	local->hw.max_rates = 1;
 	local->hw.conf.long_frame_max_tx_count = wiphy->retry_long;
 	local->hw.conf.short_frame_max_tx_count = wiphy->retry_short;
-	local->hw.conf.radio_enabled = true;
 	local->user_power_level = -1;
 
 	INIT_LIST_HEAD(&local->interfaces);



^ permalink raw reply

* [PATCH] mac80211: allow configure_filter callback to sleep
From: Johannes Berg @ 2009-08-17 14:16 UTC (permalink / raw)
  To: John Linville; +Cc: linux-wireless

Over time, a whole bunch of drivers have come up
with their own scheme to delay the configure_filter
operation to a workqueue. To be able to simplify
things, allow configure_filter to sleep, and add
a new prepare_multicast callback that drivers that
need the multicast address list implement. This new
callback must be atomic, but most drivers either
don't care or just calculate a hash which can be
done atomically and then uploaded to the hardware
non-atomically.

A cursory look suggests that at76c50x-usb, ar9170,
mwl8k (which is actually very broken now), rt2x00,
wl1251, wl1271 and zd1211 should make use of this
new capability.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
---
 drivers/net/wireless/adm8211.c             |   42 ++++++++++++-------
 drivers/net/wireless/at76c50x-usb.c        |    7 +--
 drivers/net/wireless/ath/ar9170/main.c     |   43 +++++++++++--------
 drivers/net/wireless/ath/ath5k/base.c      |   64 +++++++++++++++++------------
 drivers/net/wireless/ath/ath9k/main.c      |    3 -
 drivers/net/wireless/b43/main.c            |    2 
 drivers/net/wireless/b43legacy/main.c      |    4 -
 drivers/net/wireless/iwlwifi/iwl-core.c    |    2 
 drivers/net/wireless/iwlwifi/iwl-core.h    |    3 -
 drivers/net/wireless/libertas_tf/main.c    |   37 +++++++++++-----
 drivers/net/wireless/mac80211_hwsim.c      |    4 -
 drivers/net/wireless/mwl8k.c               |   34 ++++++++++++---
 drivers/net/wireless/p54/main.c            |    2 
 drivers/net/wireless/rt2x00/rt2x00.h       |    2 
 drivers/net/wireless/rt2x00/rt2x00mac.c    |    2 
 drivers/net/wireless/rtl818x/rtl8180_dev.c |   11 ++++
 drivers/net/wireless/rtl818x/rtl8187_dev.c |   11 ++++
 drivers/net/wireless/wl12xx/wl1251_main.c  |    4 -
 drivers/net/wireless/wl12xx/wl1271_main.c  |    4 -
 drivers/net/wireless/zd1211rw/zd_mac.c     |   44 +++++++++++++------
 include/net/mac80211.h                     |   21 ++++++---
 net/mac80211/driver-ops.h                  |   24 +++++++++-
 net/mac80211/driver-trace.h                |   36 +++++++++++++---
 net/mac80211/ieee80211_i.h                 |    3 +
 net/mac80211/iface.c                       |   15 +-----
 net/mac80211/main.c                        |   24 ++++++++--
 net/mac80211/scan.c                        |   16 -------
 net/mac80211/util.c                        |    2 
 28 files changed, 297 insertions(+), 169 deletions(-)

--- wireless-testing.orig/include/net/mac80211.h	2009-08-17 15:13:13.000000000 +0200
+++ wireless-testing/include/net/mac80211.h	2009-08-17 15:50:50.000000000 +0200
@@ -1219,10 +1219,13 @@ ieee80211_get_alt_retry_rate(const struc
  * the driver's configure_filter() function which frames should be
  * passed to mac80211 and which should be filtered out.
  *
- * The configure_filter() callback is invoked with the parameters
- * @mc_count and @mc_list for the combined multicast address list
- * of all virtual interfaces, @changed_flags telling which flags
- * were changed and @total_flags with the new flag states.
+ * Before configure_filter() is invoked, the prepare_multicast()
+ * callback is invoked with the parameters @mc_count and @mc_list
+ * for the combined multicast address list of all virtual interfaces.
+ * It's use is optional, and it returns a u64 that is passed to
+ * configure_filter(). Additionally, configure_filter() has the
+ * arguments @changed_flags telling which flags were changed and
+ * @total_flags with the new flag states.
  *
  * If your device has no multicast address filters your driver will
  * need to check both the %FIF_ALLMULTI flag and the @mc_count
@@ -1375,9 +1378,13 @@ enum ieee80211_ampdu_mlme_action {
  *	for association indication. The @changed parameter indicates which
  *	of the bss parameters has changed when a call is made.
  *
+ * @prepare_multicast: Prepare for multicast filter configuration.
+ *	This callback is optional, and its return value is passed
+ *	to configure_filter(). This callback must be atomic.
+ *
  * @configure_filter: Configure the device's RX filter.
  *	See the section "Frame filtering" for more information.
- *	This callback must be implemented and atomic.
+ *	This callback must be implemented.
  *
  * @set_tim: Set TIM bit. mac80211 calls this function when a TIM bit
  * 	must be set or cleared for a given STA. Must be atomic.
@@ -1479,10 +1486,12 @@ struct ieee80211_ops {
 				 struct ieee80211_vif *vif,
 				 struct ieee80211_bss_conf *info,
 				 u32 changed);
+	u64 (*prepare_multicast)(struct ieee80211_hw *hw,
+				 int mc_count, struct dev_addr_list *mc_list);
 	void (*configure_filter)(struct ieee80211_hw *hw,
 				 unsigned int changed_flags,
 				 unsigned int *total_flags,
-				 int mc_count, struct dev_addr_list *mc_list);
+				 u64 multicast);
 	int (*set_tim)(struct ieee80211_hw *hw, struct ieee80211_sta *sta,
 		       bool set);
 	int (*set_key)(struct ieee80211_hw *hw, enum set_key_cmd cmd,
--- wireless-testing.orig/net/mac80211/driver-ops.h	2009-08-17 15:12:58.000000000 +0200
+++ wireless-testing/net/mac80211/driver-ops.h	2009-08-17 15:53:56.000000000 +0200
@@ -55,16 +55,32 @@ static inline void drv_bss_info_changed(
 	trace_drv_bss_info_changed(local, vif, info, changed);
 }
 
+static inline u64 drv_prepare_multicast(struct ieee80211_local *local,
+					int mc_count,
+					struct dev_addr_list *mc_list)
+{
+	u64 ret = 0;
+
+	if (local->ops->prepare_multicast)
+		ret = local->ops->prepare_multicast(&local->hw, mc_count,
+						    mc_list);
+
+	trace_drv_prepare_multicast(local, mc_count, ret);
+
+	return ret;
+}
+
 static inline void drv_configure_filter(struct ieee80211_local *local,
 					unsigned int changed_flags,
 					unsigned int *total_flags,
-					int mc_count,
-					struct dev_addr_list *mc_list)
+					u64 multicast)
 {
+	might_sleep();
+
 	local->ops->configure_filter(&local->hw, changed_flags, total_flags,
-				     mc_count, mc_list);
+				     multicast);
 	trace_drv_configure_filter(local, changed_flags, total_flags,
-					    mc_count);
+				   multicast);
 }
 
 static inline int drv_set_tim(struct ieee80211_local *local,
--- wireless-testing.orig/net/mac80211/driver-trace.h	2009-08-17 15:12:58.000000000 +0200
+++ wireless-testing/net/mac80211/driver-trace.h	2009-08-17 15:13:18.000000000 +0200
@@ -191,31 +191,55 @@ TRACE_EVENT(drv_bss_info_changed,
 	)
 );
 
+TRACE_EVENT(drv_prepare_multicast,
+	TP_PROTO(struct ieee80211_local *local, int mc_count, u64 ret),
+
+	TP_ARGS(local, mc_count, ret),
+
+	TP_STRUCT__entry(
+		LOCAL_ENTRY
+		__field(int, mc_count)
+		__field(u64, ret)
+	),
+
+	TP_fast_assign(
+		LOCAL_ASSIGN;
+		__entry->mc_count = mc_count;
+		__entry->ret = ret;
+	),
+
+	TP_printk(
+		LOCAL_PR_FMT " prepare mc (%d): %llx",
+		LOCAL_PR_ARG, __entry->mc_count,
+		(unsigned long long) __entry->ret
+	)
+);
+
 TRACE_EVENT(drv_configure_filter,
 	TP_PROTO(struct ieee80211_local *local,
 		 unsigned int changed_flags,
 		 unsigned int *total_flags,
-		 int mc_count),
+		 u64 multicast),
 
-	TP_ARGS(local, changed_flags, total_flags, mc_count),
+	TP_ARGS(local, changed_flags, total_flags, multicast),
 
 	TP_STRUCT__entry(
 		LOCAL_ENTRY
 		__field(unsigned int, changed)
 		__field(unsigned int, total)
-		__field(int, mc)
+		__field(u64, multicast)
 	),
 
 	TP_fast_assign(
 		LOCAL_ASSIGN;
 		__entry->changed = changed_flags;
 		__entry->total = *total_flags;
-		__entry->mc = mc_count;
+		__entry->multicast = multicast;
 	),
 
 	TP_printk(
-		LOCAL_PR_FMT " changed:%#x total:%#x mc:%d",
-		LOCAL_PR_ARG, __entry->changed, __entry->total, __entry->mc
+		LOCAL_PR_FMT " changed:%#x total:%#x",
+		LOCAL_PR_ARG, __entry->changed, __entry->total
 	)
 );
 
--- wireless-testing.orig/net/mac80211/iface.c	2009-08-17 15:12:58.000000000 +0200
+++ wireless-testing/net/mac80211/iface.c	2009-08-17 15:13:18.000000000 +0200
@@ -227,9 +227,7 @@ static int ieee80211_open(struct net_dev
 		if (sdata->u.mntr_flags & MONITOR_FLAG_OTHER_BSS)
 			local->fif_other_bss++;
 
-		spin_lock_bh(&local->filter_lock);
 		ieee80211_configure_filter(local);
-		spin_unlock_bh(&local->filter_lock);
 		break;
 	default:
 		conf.vif = &sdata->vif;
@@ -241,17 +239,13 @@ static int ieee80211_open(struct net_dev
 
 		if (ieee80211_vif_is_mesh(&sdata->vif)) {
 			local->fif_other_bss++;
-			spin_lock_bh(&local->filter_lock);
 			ieee80211_configure_filter(local);
-			spin_unlock_bh(&local->filter_lock);
 
 			ieee80211_start_mesh(sdata);
 		} else if (sdata->vif.type == NL80211_IFTYPE_AP) {
 			local->fif_pspoll++;
 
-			spin_lock_bh(&local->filter_lock);
 			ieee80211_configure_filter(local);
-			spin_unlock_bh(&local->filter_lock);
 		}
 
 		changed |= ieee80211_reset_erp_info(sdata);
@@ -404,10 +398,11 @@ static int ieee80211_stop(struct net_dev
 	spin_lock_bh(&local->filter_lock);
 	__dev_addr_unsync(&local->mc_list, &local->mc_count,
 			  &dev->mc_list, &dev->mc_count);
-	ieee80211_configure_filter(local);
 	spin_unlock_bh(&local->filter_lock);
 	netif_addr_unlock_bh(dev);
 
+	ieee80211_configure_filter(local);
+
 	del_timer_sync(&local->dynamic_ps_timer);
 	cancel_work_sync(&local->dynamic_ps_enable_work);
 
@@ -458,9 +453,7 @@ static int ieee80211_stop(struct net_dev
 		if (sdata->u.mntr_flags & MONITOR_FLAG_OTHER_BSS)
 			local->fif_other_bss--;
 
-		spin_lock_bh(&local->filter_lock);
 		ieee80211_configure_filter(local);
-		spin_unlock_bh(&local->filter_lock);
 		break;
 	case NL80211_IFTYPE_STATION:
 		del_timer_sync(&sdata->u.mgd.chswitch_timer);
@@ -503,9 +496,7 @@ static int ieee80211_stop(struct net_dev
 			local->fif_other_bss--;
 			atomic_dec(&local->iff_allmultis);
 
-			spin_lock_bh(&local->filter_lock);
 			ieee80211_configure_filter(local);
-			spin_unlock_bh(&local->filter_lock);
 
 			ieee80211_stop_mesh(sdata);
 		}
@@ -622,8 +613,8 @@ static void ieee80211_set_multicast_list
 	spin_lock_bh(&local->filter_lock);
 	__dev_addr_sync(&local->mc_list, &local->mc_count,
 			&dev->mc_list, &dev->mc_count);
-	ieee80211_configure_filter(local);
 	spin_unlock_bh(&local->filter_lock);
+	ieee80211_queue_work(&local->hw, &local->reconfig_filter);
 }
 
 /*
--- wireless-testing.orig/net/mac80211/main.c	2009-08-17 15:12:58.000000000 +0200
+++ wireless-testing/net/mac80211/main.c	2009-08-17 16:13:09.000000000 +0200
@@ -50,9 +50,9 @@ struct ieee80211_tx_status_rtap_hdr {
 } __attribute__ ((packed));
 
 
-/* must be called under mdev tx lock */
 void ieee80211_configure_filter(struct ieee80211_local *local)
 {
+	u64 mc;
 	unsigned int changed_flags;
 	unsigned int new_flags = 0;
 
@@ -62,7 +62,7 @@ void ieee80211_configure_filter(struct i
 	if (atomic_read(&local->iff_allmultis))
 		new_flags |= FIF_ALLMULTI;
 
-	if (local->monitors)
+	if (local->monitors || local->scanning)
 		new_flags |= FIF_BCN_PRBRESP_PROMISC;
 
 	if (local->fif_fcsfail)
@@ -80,20 +80,30 @@ void ieee80211_configure_filter(struct i
 	if (local->fif_pspoll)
 		new_flags |= FIF_PSPOLL;
 
+	spin_lock_bh(&local->filter_lock);
 	changed_flags = local->filter_flags ^ new_flags;
 
+	mc = drv_prepare_multicast(local, local->mc_count, local->mc_list);
+	spin_unlock_bh(&local->filter_lock);
+
 	/* be a bit nasty */
 	new_flags |= (1<<31);
 
-	drv_configure_filter(local, changed_flags, &new_flags,
-			     local->mc_count,
-			     local->mc_list);
+	drv_configure_filter(local, changed_flags, &new_flags, mc);
 
 	WARN_ON(new_flags & (1<<31));
 
 	local->filter_flags = new_flags & ~(1<<31);
 }
 
+static void ieee80211_reconfig_filter(struct work_struct *work)
+{
+	struct ieee80211_local *local =
+		container_of(work, struct ieee80211_local, reconfig_filter);
+
+	ieee80211_configure_filter(local);
+}
+
 int ieee80211_hw_config(struct ieee80211_local *local, u32 changed)
 {
 	struct ieee80211_channel *chan, *scan_chan;
@@ -692,6 +702,8 @@ struct ieee80211_hw *ieee80211_alloc_hw(
 
 	INIT_WORK(&local->restart_work, ieee80211_restart_work);
 
+	INIT_WORK(&local->reconfig_filter, ieee80211_reconfig_filter);
+
 	INIT_WORK(&local->dynamic_ps_enable_work,
 		  ieee80211_dynamic_ps_enable_work);
 	INIT_WORK(&local->dynamic_ps_disable_work,
@@ -946,6 +958,8 @@ void ieee80211_unregister_hw(struct ieee
 
 	rtnl_unlock();
 
+	cancel_work_sync(&local->reconfig_filter);
+
 	ieee80211_clear_tx_pending(local);
 	sta_info_stop(local);
 	rate_control_deinitialize(local);
--- wireless-testing.orig/net/mac80211/scan.c	2009-08-17 15:12:58.000000000 +0200
+++ wireless-testing/net/mac80211/scan.c	2009-08-17 15:13:18.000000000 +0200
@@ -292,13 +292,7 @@ void ieee80211_scan_completed(struct iee
 	if (was_hw_scan)
 		goto done;
 
-	spin_lock_bh(&local->filter_lock);
-	local->filter_flags &= ~FIF_BCN_PRBRESP_PROMISC;
-	drv_configure_filter(local, FIF_BCN_PRBRESP_PROMISC,
-			     &local->filter_flags,
-			     local->mc_count,
-			     local->mc_list);
-	spin_unlock_bh(&local->filter_lock);
+	ieee80211_configure_filter(local);
 
 	drv_sw_scan_complete(local);
 
@@ -376,13 +370,7 @@ static int ieee80211_start_sw_scan(struc
 	local->next_scan_state = SCAN_DECISION;
 	local->scan_channel_idx = 0;
 
-	spin_lock_bh(&local->filter_lock);
-	local->filter_flags |= FIF_BCN_PRBRESP_PROMISC;
-	drv_configure_filter(local, FIF_BCN_PRBRESP_PROMISC,
-			     &local->filter_flags,
-			     local->mc_count,
-			     local->mc_list);
-	spin_unlock_bh(&local->filter_lock);
+	ieee80211_configure_filter(local);
 
 	/* TODO: start scan as soon as all nullfunc frames are ACKed */
 	ieee80211_queue_delayed_work(&local->hw,
--- wireless-testing.orig/net/mac80211/util.c	2009-08-17 15:12:58.000000000 +0200
+++ wireless-testing/net/mac80211/util.c	2009-08-17 15:13:18.000000000 +0200
@@ -1076,9 +1076,7 @@ int ieee80211_reconfig(struct ieee80211_
 	/* reconfigure hardware */
 	ieee80211_hw_config(local, ~0);
 
-	spin_lock_bh(&local->filter_lock);
 	ieee80211_configure_filter(local);
-	spin_unlock_bh(&local->filter_lock);
 
 	/* Finally also reconfigure all the BSS information */
 	list_for_each_entry(sdata, &local->interfaces, list) {
--- wireless-testing.orig/net/mac80211/ieee80211_i.h	2009-08-17 15:12:58.000000000 +0200
+++ wireless-testing/net/mac80211/ieee80211_i.h	2009-08-17 15:13:18.000000000 +0200
@@ -636,6 +636,9 @@ struct ieee80211_local {
 	/* protects the aggregated multicast list and filter calls */
 	spinlock_t filter_lock;
 
+	/* used for uploading changed mc list */
+	struct work_struct reconfig_filter;
+
 	/* aggregated multicast list */
 	struct dev_addr_list *mc_list;
 	int mc_count;
--- wireless-testing.orig/drivers/net/wireless/at76c50x-usb.c	2009-08-17 15:12:59.000000000 +0200
+++ wireless-testing/drivers/net/wireless/at76c50x-usb.c	2009-08-17 15:50:50.000000000 +0200
@@ -1997,15 +1997,14 @@ static void at76_bss_info_changed(struct
 /* must be atomic */
 static void at76_configure_filter(struct ieee80211_hw *hw,
 				  unsigned int changed_flags,
-				  unsigned int *total_flags, int mc_count,
-				  struct dev_addr_list *mc_list)
+				  unsigned int *total_flags, u64 multicast)
 {
 	struct at76_priv *priv = hw->priv;
 	int flags;
 
 	at76_dbg(DBG_MAC80211, "%s(): changed_flags=0x%08x "
-		 "total_flags=0x%08x mc_count=%d",
-		 __func__, changed_flags, *total_flags, mc_count);
+		 "total_flags=0x%08x",
+		 __func__, changed_flags, *total_flags);
 
 	flags = changed_flags & AT76_SUPPORTED_FILTERS;
 	*total_flags = AT76_SUPPORTED_FILTERS;
--- wireless-testing.orig/drivers/net/wireless/b43/main.c	2009-08-17 15:12:58.000000000 +0200
+++ wireless-testing/drivers/net/wireless/b43/main.c	2009-08-17 15:13:18.000000000 +0200
@@ -3646,7 +3646,7 @@ out_unlock:
 
 static void b43_op_configure_filter(struct ieee80211_hw *hw,
 				    unsigned int changed, unsigned int *fflags,
-				    int mc_count, struct dev_addr_list *mc_list)
+				    u64 multicast)
 {
 	struct b43_wl *wl = hw_to_b43_wl(hw);
 	struct b43_wldev *dev = wl->current_dev;
--- wireless-testing.orig/drivers/net/wireless/b43legacy/main.c	2009-08-17 15:12:58.000000000 +0200
+++ wireless-testing/drivers/net/wireless/b43legacy/main.c	2009-08-17 15:13:18.000000000 +0200
@@ -2836,9 +2836,7 @@ static void b43legacy_op_bss_info_change
 
 static void b43legacy_op_configure_filter(struct ieee80211_hw *hw,
 					  unsigned int changed,
-					  unsigned int *fflags,
-					  int mc_count,
-					  struct dev_addr_list *mc_list)
+					  unsigned int *fflags,u64 multicast)
 {
 	struct b43legacy_wl *wl = hw_to_b43legacy_wl(hw);
 	struct b43legacy_wldev *dev = wl->current_dev;
--- wireless-testing.orig/drivers/net/wireless/mac80211_hwsim.c	2009-08-17 15:12:59.000000000 +0200
+++ wireless-testing/drivers/net/wireless/mac80211_hwsim.c	2009-08-17 15:13:18.000000000 +0200
@@ -582,9 +582,7 @@ static int mac80211_hwsim_config(struct 
 
 static void mac80211_hwsim_configure_filter(struct ieee80211_hw *hw,
 					    unsigned int changed_flags,
-					    unsigned int *total_flags,
-					    int mc_count,
-					    struct dev_addr_list *mc_list)
+					    unsigned int *total_flags,u64 multicast)
 {
 	struct mac80211_hwsim_data *data = hw->priv;
 
--- wireless-testing.orig/drivers/net/wireless/mwl8k.c	2009-08-17 15:12:58.000000000 +0200
+++ wireless-testing/drivers/net/wireless/mwl8k.c	2009-08-17 15:50:50.000000000 +0200
@@ -3251,31 +3251,50 @@ mwl8k_configure_filter_exit:
 	return rc;
 }
 
+static u64 mwl8k_prepare_multicast(struct ieee80211_hw *hw,
+				   int mc_count, struct dev_addr_list *mclist)
+{
+	struct mwl8k_configure_filter_worker *worker;
+
+	worker = kzalloc(sizeof(*worker), GFP_ATOMIC);
+
+	if (!worker)
+		return 0;
+
+	/*
+	 * XXX: This is _HORRIBLY_ broken!!
+	 *
+	 *	No locking, the mclist pointer might be invalid as soon as this
+	 *	function returns, something in the list might be invalidated
+	 *	once we get to the worker, etc...
+	 */
+	worker->mc_count = mc_count;
+	worker->mclist = mclist;
+
+	return (u64)worker;
+}
+
 static void mwl8k_configure_filter(struct ieee80211_hw *hw,
 				   unsigned int changed_flags,
 				   unsigned int *total_flags,
-				   int mc_count,
-				   struct dev_addr_list *mclist)
+				   u64 multicast)
 {
 
-	struct mwl8k_configure_filter_worker *worker;
+	struct mwl8k_configure_filter_worker *worker = (void *)multicast;
 	struct mwl8k_priv *priv = hw->priv;
 
 	/* Clear unsupported feature flags */
 	*total_flags &= MWL8K_SUPPORTED_IF_FLAGS;
 
-	if (!(changed_flags & MWL8K_SUPPORTED_IF_FLAGS) && !mc_count)
+	if (!(changed_flags & MWL8K_SUPPORTED_IF_FLAGS))
 		return;
 
-	worker = kzalloc(sizeof(*worker), GFP_ATOMIC);
 	if (worker == NULL)
 		return;
 
 	worker->header.options = MWL8K_WQ_QUEUE_ONLY | MWL8K_WQ_TX_WAIT_EMPTY;
 	worker->changed_flags = changed_flags;
 	worker->total_flags = total_flags;
-	worker->mc_count = mc_count;
-	worker->mclist = mclist;
 
 	mwl8k_queue_work(hw, &worker->header, priv->config_wq,
 			 mwl8k_configure_filter_wt);
@@ -3441,6 +3460,7 @@ static const struct ieee80211_ops mwl8k_
 	.remove_interface	= mwl8k_remove_interface,
 	.config			= mwl8k_config,
 	.bss_info_changed	= mwl8k_bss_info_changed,
+	.prepare_multicast	= mwl8k_prepare_multicast,
 	.configure_filter	= mwl8k_configure_filter,
 	.set_rts_threshold	= mwl8k_set_rts_threshold,
 	.conf_tx		= mwl8k_conf_tx,
--- wireless-testing.orig/drivers/net/wireless/rtl818x/rtl8180_dev.c	2009-08-17 15:12:58.000000000 +0200
+++ wireless-testing/drivers/net/wireless/rtl818x/rtl8180_dev.c	2009-08-17 15:13:18.000000000 +0200
@@ -728,10 +728,16 @@ static void rtl8180_bss_info_changed(str
 	        priv->rf->conf_erp(dev, info);
 }
 
+static u64 rtl8180_prepare_multicast(struct ieee80211_hw *dev, int mc_count,
+				     struct dev_addr_list *mc_list)
+{
+	return mc_count;
+}
+
 static void rtl8180_configure_filter(struct ieee80211_hw *dev,
 				     unsigned int changed_flags,
 				     unsigned int *total_flags,
-				     int mc_count, struct dev_addr_list *mclist)
+				     u64 multicast)
 {
 	struct rtl8180_priv *priv = dev->priv;
 
@@ -741,7 +747,7 @@ static void rtl8180_configure_filter(str
 		priv->rx_conf ^= RTL818X_RX_CONF_CTRL;
 	if (changed_flags & FIF_OTHER_BSS)
 		priv->rx_conf ^= RTL818X_RX_CONF_MONITOR;
-	if (*total_flags & FIF_ALLMULTI || mc_count > 0)
+	if (*total_flags & FIF_ALLMULTI || multicast > 0)
 		priv->rx_conf |= RTL818X_RX_CONF_MULTICAST;
 	else
 		priv->rx_conf &= ~RTL818X_RX_CONF_MULTICAST;
@@ -768,6 +774,7 @@ static const struct ieee80211_ops rtl818
 	.remove_interface	= rtl8180_remove_interface,
 	.config			= rtl8180_config,
 	.bss_info_changed	= rtl8180_bss_info_changed,
+	.prepare_multicast	= rtl8180_prepare_multicast,
 	.configure_filter	= rtl8180_configure_filter,
 };
 
--- wireless-testing.orig/drivers/net/wireless/rtl818x/rtl8187_dev.c	2009-08-17 15:12:58.000000000 +0200
+++ wireless-testing/drivers/net/wireless/rtl818x/rtl8187_dev.c	2009-08-17 15:13:18.000000000 +0200
@@ -1192,10 +1192,16 @@ static void rtl8187_bss_info_changed(str
 				 info->use_short_preamble);
 }
 
+static u64 rtl8187_prepare_multicast(struct ieee80211_hw *dev,
+				     int mc_count, struct dev_addr_list *mc_list)
+{
+	return mc_count;
+}
+
 static void rtl8187_configure_filter(struct ieee80211_hw *dev,
 				     unsigned int changed_flags,
 				     unsigned int *total_flags,
-				     int mc_count, struct dev_addr_list *mclist)
+				     u64 multicast)
 {
 	struct rtl8187_priv *priv = dev->priv;
 
@@ -1205,7 +1211,7 @@ static void rtl8187_configure_filter(str
 		priv->rx_conf ^= RTL818X_RX_CONF_CTRL;
 	if (changed_flags & FIF_OTHER_BSS)
 		priv->rx_conf ^= RTL818X_RX_CONF_MONITOR;
-	if (*total_flags & FIF_ALLMULTI || mc_count > 0)
+	if (*total_flags & FIF_ALLMULTI || multicast > 0)
 		priv->rx_conf |= RTL818X_RX_CONF_MULTICAST;
 	else
 		priv->rx_conf &= ~RTL818X_RX_CONF_MULTICAST;
@@ -1268,6 +1274,7 @@ static const struct ieee80211_ops rtl818
 	.remove_interface	= rtl8187_remove_interface,
 	.config			= rtl8187_config,
 	.bss_info_changed	= rtl8187_bss_info_changed,
+	.prepare_multicast	= rtl8187_prepare_multicast,
 	.configure_filter	= rtl8187_configure_filter,
 	.conf_tx		= rtl8187_conf_tx
 };
--- wireless-testing.orig/drivers/net/wireless/wl12xx/wl1251_main.c	2009-08-17 15:12:59.000000000 +0200
+++ wireless-testing/drivers/net/wireless/wl12xx/wl1251_main.c	2009-08-17 15:13:18.000000000 +0200
@@ -652,9 +652,7 @@ out:
 
 static void wl1251_op_configure_filter(struct ieee80211_hw *hw,
 				       unsigned int changed,
-				       unsigned int *total,
-				       int mc_count,
-				       struct dev_addr_list *mc_list)
+				       unsigned int *total,u64 multicast)
 {
 	struct wl1251 *wl = hw->priv;
 
--- wireless-testing.orig/drivers/net/wireless/wl12xx/wl1271_main.c	2009-08-17 15:12:59.000000000 +0200
+++ wireless-testing/drivers/net/wireless/wl12xx/wl1271_main.c	2009-08-17 15:13:18.000000000 +0200
@@ -793,9 +793,7 @@ out:
 
 static void wl1271_op_configure_filter(struct ieee80211_hw *hw,
 				       unsigned int changed,
-				       unsigned int *total,
-				       int mc_count,
-				       struct dev_addr_list *mc_list)
+				       unsigned int *total,u64 multicast)
 {
 	struct wl1271 *wl = hw->priv;
 
--- wireless-testing.orig/drivers/net/wireless/adm8211.c	2009-08-17 15:12:59.000000000 +0200
+++ wireless-testing/drivers/net/wireless/adm8211.c	2009-08-17 15:46:38.000000000 +0200
@@ -1328,16 +1328,39 @@ static void adm8211_bss_info_changed(str
 	}
 }
 
+static u64 adm8211_prepare_multicast(struct ieee80211_hw *hw,
+				     int mc_count, struct dev_addr_list *mclist)
+{
+	unsigned int bit_nr, i;
+	u32 mc_filter[2];
+
+	mc_filter[1] = mc_filter[0] = 0;
+
+	for (i = 0; i < mc_count; i++) {
+		if (!mclist)
+			break;
+		bit_nr = ether_crc(ETH_ALEN, mclist->dmi_addr) >> 26;
+
+		bit_nr &= 0x3F;
+		mc_filter[bit_nr >> 5] |= 1 << (bit_nr & 31);
+		mclist = mclist->next;
+	}
+
+	return mc_filter[0] | ((u64)(mc_filter[1]) << 32);
+}
+
 static void adm8211_configure_filter(struct ieee80211_hw *dev,
 				     unsigned int changed_flags,
 				     unsigned int *total_flags,
-				     int mc_count, struct dev_mc_list *mclist)
+				     u64 multicast)
 {
 	static const u8 bcast[ETH_ALEN] = { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF };
 	struct adm8211_priv *priv = dev->priv;
-	unsigned int bit_nr, new_flags;
+	unsigned int new_flags;
 	u32 mc_filter[2];
-	int i;
+
+	mc_filter[0] = multicast;
+	mc_filter[1] = multicast >> 32;
 
 	new_flags = 0;
 
@@ -1346,23 +1369,13 @@ static void adm8211_configure_filter(str
 		priv->nar |= ADM8211_NAR_PR;
 		priv->nar &= ~ADM8211_NAR_MM;
 		mc_filter[1] = mc_filter[0] = ~0;
-	} else if ((*total_flags & FIF_ALLMULTI) || (mc_count > 32)) {
+	} else if (*total_flags & FIF_ALLMULTI || multicast == ~(0ULL)) {
 		new_flags |= FIF_ALLMULTI;
 		priv->nar &= ~ADM8211_NAR_PR;
 		priv->nar |= ADM8211_NAR_MM;
 		mc_filter[1] = mc_filter[0] = ~0;
 	} else {
 		priv->nar &= ~(ADM8211_NAR_MM | ADM8211_NAR_PR);
-		mc_filter[1] = mc_filter[0] = 0;
-		for (i = 0; i < mc_count; i++) {
-			if (!mclist)
-				break;
-			bit_nr = ether_crc(ETH_ALEN, mclist->dmi_addr) >> 26;
-
-			bit_nr &= 0x3F;
-			mc_filter[bit_nr >> 5] |= 1 << (bit_nr & 31);
-			mclist = mclist->next;
-		}
 	}
 
 	ADM8211_IDLE_RX();
@@ -1757,6 +1770,7 @@ static const struct ieee80211_ops adm821
 	.remove_interface	= adm8211_remove_interface,
 	.config			= adm8211_config,
 	.bss_info_changed	= adm8211_bss_info_changed,
+	.prepare_multicast	= adm8211_prepare_multicast,
 	.configure_filter	= adm8211_configure_filter,
 	.get_stats		= adm8211_get_stats,
 	.get_tx_stats		= adm8211_get_tx_stats,
--- wireless-testing.orig/drivers/net/wireless/ath/ar9170/main.c	2009-08-17 15:12:59.000000000 +0200
+++ wireless-testing/drivers/net/wireless/ath/ar9170/main.c	2009-08-17 15:45:42.000000000 +0200
@@ -2100,10 +2100,29 @@ unlock:
 	mutex_unlock(&ar->mutex);
 }
 
+static u64 ar9170_op_prepare_multicast(struct ieee80211_hw *hw, int mc_count,
+				       struct dev_addr_list *mclist)
+{
+	u64 mchash;
+	int i;
+
+	/* always get broadcast frames */
+	mchash = 1ULL << (0xff >> 2);
+
+	for (i = 0; i < mc_count; i++) {
+		if (WARN_ON(!mclist))
+			break;
+		mchash |= 1ULL << (mclist->dmi_addr[5] >> 2);
+		mclist = mclist->next;
+	}
+
+	return mchash;
+}
+
 static void ar9170_op_configure_filter(struct ieee80211_hw *hw,
 				       unsigned int changed_flags,
 				       unsigned int *new_flags,
-				       int mc_count, struct dev_mc_list *mclist)
+				       u64 multicast)
 {
 	struct ar9170 *ar = hw->priv;
 
@@ -2116,24 +2135,11 @@ static void ar9170_op_configure_filter(s
 	 * then checking the error flags, later.
 	 */
 
-	if (changed_flags & FIF_ALLMULTI) {
-		if (*new_flags & FIF_ALLMULTI) {
-			ar->want_mc_hash = ~0ULL;
-		} else {
-			u64 mchash;
-			int i;
-
-			/* always get broadcast frames */
-			mchash = 1ULL << (0xff >> 2);
+	if (changed_flags & FIF_ALLMULTI && *new_flags & FIF_ALLMULTI)
+			multicast = ~0ULL;
 
-			for (i = 0; i < mc_count; i++) {
-				if (WARN_ON(!mclist))
-					break;
-				mchash |= 1ULL << (mclist->dmi_addr[5] >> 2);
-				mclist = mclist->next;
-			}
-		ar->want_mc_hash = mchash;
-		}
+	if (multicast != ar->want_mc_hash) {
+		ar->want_mc_hash = multicast;
 		set_bit(AR9170_FILTER_CHANGED_MULTICAST, &ar->filter_changed);
 	}
 
@@ -2543,6 +2549,7 @@ static const struct ieee80211_ops ar9170
 	.add_interface		= ar9170_op_add_interface,
 	.remove_interface	= ar9170_op_remove_interface,
 	.config			= ar9170_op_config,
+	.prepare_multicast	= ar9170_op_prepare_multicast,
 	.configure_filter	= ar9170_op_configure_filter,
 	.conf_tx		= ar9170_conf_tx,
 	.bss_info_changed	= ar9170_op_bss_info_changed,
--- wireless-testing.orig/drivers/net/wireless/ath/ath5k/base.c	2009-08-17 15:12:59.000000000 +0200
+++ wireless-testing/drivers/net/wireless/ath/ath5k/base.c	2009-08-17 15:13:18.000000000 +0200
@@ -229,10 +229,12 @@ static int ath5k_add_interface(struct ie
 static void ath5k_remove_interface(struct ieee80211_hw *hw,
 		struct ieee80211_if_init_conf *conf);
 static int ath5k_config(struct ieee80211_hw *hw, u32 changed);
+static u64 ath5k_prepare_multicast(struct ieee80211_hw *hw,
+				   int mc_count, struct dev_addr_list *mc_list);
 static void ath5k_configure_filter(struct ieee80211_hw *hw,
 		unsigned int changed_flags,
 		unsigned int *new_flags,
-		int mc_count, struct dev_mc_list *mclist);
+		u64 multicast);
 static int ath5k_set_key(struct ieee80211_hw *hw,
 		enum set_key_cmd cmd,
 		struct ieee80211_vif *vif, struct ieee80211_sta *sta,
@@ -260,6 +262,7 @@ static const struct ieee80211_ops ath5k_
 	.add_interface 	= ath5k_add_interface,
 	.remove_interface = ath5k_remove_interface,
 	.config 	= ath5k_config,
+	.prepare_multicast = ath5k_prepare_multicast,
 	.configure_filter = ath5k_configure_filter,
 	.set_key 	= ath5k_set_key,
 	.get_stats 	= ath5k_get_stats,
@@ -2853,6 +2856,37 @@ unlock:
 	return ret;
 }
 
+static u64 ath5k_prepare_multicast(struct ieee80211_hw *hw,
+				   int mc_count, struct dev_addr_list *mclist)
+{
+	u32 mfilt[2], val;
+	int i;
+	u8 pos;
+
+	mfilt[0] = 0;
+	mfilt[1] = 1;
+
+	for (i = 0; i < mc_count; i++) {
+		if (!mclist)
+			break;
+		/* calculate XOR of eight 6-bit values */
+		val = get_unaligned_le32(mclist->dmi_addr + 0);
+		pos = (val >> 18) ^ (val >> 12) ^ (val >> 6) ^ val;
+		val = get_unaligned_le32(mclist->dmi_addr + 3);
+		pos ^= (val >> 18) ^ (val >> 12) ^ (val >> 6) ^ val;
+		pos &= 0x3f;
+		mfilt[pos / 32] |= (1 << (pos % 32));
+		/* XXX: we might be able to just do this instead,
+		* but not sure, needs testing, if we do use this we'd
+		* neet to inform below to not reset the mcast */
+		/* ath5k_hw_set_mcast_filterindex(ah,
+		 *      mclist->dmi_addr[5]); */
+		mclist = mclist->next;
+	}
+
+	return ((u64)(mfilt[1]) << 32) | mfilt[0];
+}
+
 #define SUPPORTED_FIF_FLAGS \
 	FIF_PROMISC_IN_BSS |  FIF_ALLMULTI | FIF_FCSFAIL | \
 	FIF_PLCPFAIL | FIF_CONTROL | FIF_OTHER_BSS | \
@@ -2878,16 +2912,14 @@ unlock:
 static void ath5k_configure_filter(struct ieee80211_hw *hw,
 		unsigned int changed_flags,
 		unsigned int *new_flags,
-		int mc_count, struct dev_mc_list *mclist)
+		u64 multicast)
 {
 	struct ath5k_softc *sc = hw->priv;
 	struct ath5k_hw *ah = sc->ah;
-	u32 mfilt[2], val, rfilt;
-	u8 pos;
-	int i;
+	u32 mfilt[2], rfilt;
 
-	mfilt[0] = 0;
-	mfilt[1] = 0;
+	mfilt[0] = multicast;
+	mfilt[1] = multicast >> 32;
 
 	/* Only deal with supported flags */
 	changed_flags &= SUPPORTED_FIF_FLAGS;
@@ -2913,24 +2945,6 @@ static void ath5k_configure_filter(struc
 	if (*new_flags & FIF_ALLMULTI) {
 		mfilt[0] =  ~0;
 		mfilt[1] =  ~0;
-	} else {
-		for (i = 0; i < mc_count; i++) {
-			if (!mclist)
-				break;
-			/* calculate XOR of eight 6-bit values */
-			val = get_unaligned_le32(mclist->dmi_addr + 0);
-			pos = (val >> 18) ^ (val >> 12) ^ (val >> 6) ^ val;
-			val = get_unaligned_le32(mclist->dmi_addr + 3);
-			pos ^= (val >> 18) ^ (val >> 12) ^ (val >> 6) ^ val;
-			pos &= 0x3f;
-			mfilt[pos / 32] |= (1 << (pos % 32));
-			/* XXX: we might be able to just do this instead,
-			* but not sure, needs testing, if we do use this we'd
-			* neet to inform below to not reset the mcast */
-			/* ath5k_hw_set_mcast_filterindex(ah,
-			 *      mclist->dmi_addr[5]); */
-			mclist = mclist->next;
-		}
 	}
 
 	/* This is the best we can do */
--- wireless-testing.orig/drivers/net/wireless/ath/ath9k/main.c	2009-08-17 15:12:59.000000000 +0200
+++ wireless-testing/drivers/net/wireless/ath/ath9k/main.c	2009-08-17 15:13:18.000000000 +0200
@@ -2389,8 +2389,7 @@ skip_chan_change:
 static void ath9k_configure_filter(struct ieee80211_hw *hw,
 				   unsigned int changed_flags,
 				   unsigned int *total_flags,
-				   int mc_count,
-				   struct dev_mc_list *mclist)
+				   u64 multicast)
 {
 	struct ath_wiphy *aphy = hw->priv;
 	struct ath_softc *sc = aphy->sc;
--- wireless-testing.orig/drivers/net/wireless/libertas_tf/main.c	2009-08-17 15:12:59.000000000 +0200
+++ wireless-testing/drivers/net/wireless/libertas_tf/main.c	2009-08-17 15:13:18.000000000 +0200
@@ -366,15 +366,35 @@ static int lbtf_op_config(struct ieee802
 	return 0;
 }
 
+static u64 lbtf_op_prepare_multicast(struct ieee80211_hw *hw,
+				     int mc_count, struct dev_addr_list *mclist)
+{
+	struct lbtf_private *priv = hw->priv;
+	int i;
+
+	if (!mc_count || mc_count > MRVDRV_MAX_MULTICAST_LIST_SIZE)
+		return mc_count;
+
+	priv->nr_of_multicastmacaddr = mc_count;
+	for (i = 0; i < mc_count; i++) {
+		if (!mclist)
+			break;
+		memcpy(&priv->multicastlist[i], mclist->da_addr,
+				ETH_ALEN);
+		mclist = mclist->next;
+	}
+
+	return mc_count;
+}
+
 #define SUPPORTED_FIF_FLAGS  (FIF_PROMISC_IN_BSS | FIF_ALLMULTI)
 static void lbtf_op_configure_filter(struct ieee80211_hw *hw,
 			unsigned int changed_flags,
 			unsigned int *new_flags,
-			int mc_count, struct dev_mc_list *mclist)
+			u64 multicast)
 {
 	struct lbtf_private *priv = hw->priv;
 	int old_mac_control = priv->mac_control;
-	int i;
 	changed_flags &= SUPPORTED_FIF_FLAGS;
 	*new_flags &= SUPPORTED_FIF_FLAGS;
 
@@ -386,20 +406,12 @@ static void lbtf_op_configure_filter(str
 	else
 		priv->mac_control &= ~CMD_ACT_MAC_PROMISCUOUS_ENABLE;
 	if (*new_flags & (FIF_ALLMULTI) ||
-	    mc_count > MRVDRV_MAX_MULTICAST_LIST_SIZE) {
+	    multicast > MRVDRV_MAX_MULTICAST_LIST_SIZE) {
 		priv->mac_control |= CMD_ACT_MAC_ALL_MULTICAST_ENABLE;
 		priv->mac_control &= ~CMD_ACT_MAC_MULTICAST_ENABLE;
-	} else if (mc_count) {
+	} else if (multicast) {
 		priv->mac_control |= CMD_ACT_MAC_MULTICAST_ENABLE;
 		priv->mac_control &= ~CMD_ACT_MAC_ALL_MULTICAST_ENABLE;
-		priv->nr_of_multicastmacaddr = mc_count;
-		for (i = 0; i < mc_count; i++) {
-			if (!mclist)
-				break;
-			memcpy(&priv->multicastlist[i], mclist->da_addr,
-					ETH_ALEN);
-			mclist = mclist->next;
-		}
 		lbtf_cmd_set_mac_multicast_addr(priv);
 	} else {
 		priv->mac_control &= ~(CMD_ACT_MAC_MULTICAST_ENABLE |
@@ -461,6 +473,7 @@ static const struct ieee80211_ops lbtf_o
 	.add_interface		= lbtf_op_add_interface,
 	.remove_interface	= lbtf_op_remove_interface,
 	.config			= lbtf_op_config,
+	.prepare_multicast	= lbtf_op_prepare_multicast,
 	.configure_filter	= lbtf_op_configure_filter,
 	.bss_info_changed	= lbtf_op_bss_info_changed,
 };
--- wireless-testing.orig/drivers/net/wireless/p54/main.c	2009-08-17 15:12:59.000000000 +0200
+++ wireless-testing/drivers/net/wireless/p54/main.c	2009-08-17 15:13:18.000000000 +0200
@@ -302,7 +302,7 @@ out:
 static void p54_configure_filter(struct ieee80211_hw *dev,
 				 unsigned int changed_flags,
 				 unsigned int *total_flags,
-				 int mc_count, struct dev_mc_list *mclist)
+				 u64 multicast)
 {
 	struct p54_common *priv = dev->priv;
 
--- wireless-testing.orig/drivers/net/wireless/zd1211rw/zd_mac.c	2009-08-17 15:12:59.000000000 +0200
+++ wireless-testing/drivers/net/wireless/zd1211rw/zd_mac.c	2009-08-17 15:13:18.000000000 +0200
@@ -796,18 +796,40 @@ static void set_rx_filter_handler(struct
 		dev_err(zd_mac_dev(mac), "set_rx_filter_handler error %d\n", r);
 }
 
+static u64 zd_op_prepare_multicast(struct ieee80211_hw *hw,
+				   int mc_count, struct dev_addr_list *mclist)
+{
+	struct zd_mac *mac = zd_hw_mac(hw);
+	struct zd_mc_hash hash;
+	int i;
+
+	zd_mc_clear(&hash);
+
+	for (i = 0; i < mc_count; i++) {
+		if (!mclist)
+			break;
+		dev_dbg_f(zd_mac_dev(mac), "mc addr %pM\n", mclist->dmi_addr);
+		zd_mc_add_addr(&hash, mclist->dmi_addr);
+		mclist = mclist->next;
+	}
+
+	return hash.low | ((u64)hash.high << 32);
+}
+
 #define SUPPORTED_FIF_FLAGS \
 	(FIF_PROMISC_IN_BSS | FIF_ALLMULTI | FIF_FCSFAIL | FIF_CONTROL | \
 	FIF_OTHER_BSS | FIF_BCN_PRBRESP_PROMISC)
 static void zd_op_configure_filter(struct ieee80211_hw *hw,
 			unsigned int changed_flags,
 			unsigned int *new_flags,
-			int mc_count, struct dev_mc_list *mclist)
+			u64 multicast)
 {
-	struct zd_mc_hash hash;
+	struct zd_mc_hash hash = {
+		.low = multicast,
+		.high = multicast >> 32,
+	};
 	struct zd_mac *mac = zd_hw_mac(hw);
 	unsigned long flags;
-	int i;
 
 	/* Only deal with supported flags */
 	changed_flags &= SUPPORTED_FIF_FLAGS;
@@ -819,25 +841,16 @@ static void zd_op_configure_filter(struc
 	if (!changed_flags)
 		return;
 
-	if (*new_flags & (FIF_PROMISC_IN_BSS | FIF_ALLMULTI)) {
+	if (*new_flags & (FIF_PROMISC_IN_BSS | FIF_ALLMULTI))
 		zd_mc_add_all(&hash);
-	} else {
-		zd_mc_clear(&hash);
-		for (i = 0; i < mc_count; i++) {
-			if (!mclist)
-				break;
-			dev_dbg_f(zd_mac_dev(mac), "mc addr %pM\n",
-				  mclist->dmi_addr);
-			zd_mc_add_addr(&hash, mclist->dmi_addr);
-			mclist = mclist->next;
-		}
-	}
 
 	spin_lock_irqsave(&mac->lock, flags);
 	mac->pass_failed_fcs = !!(*new_flags & FIF_FCSFAIL);
 	mac->pass_ctrl = !!(*new_flags & FIF_CONTROL);
 	mac->multicast_hash = hash;
 	spin_unlock_irqrestore(&mac->lock, flags);
+
+	/* XXX: these can be called here now, can sleep now! */
 	queue_work(zd_workqueue, &mac->set_multicast_hash_work);
 
 	if (changed_flags & FIF_CONTROL)
@@ -940,6 +953,7 @@ static const struct ieee80211_ops zd_ops
 	.add_interface		= zd_op_add_interface,
 	.remove_interface	= zd_op_remove_interface,
 	.config			= zd_op_config,
+	.prepare_multicast	= zd_op_prepare_multicast,
 	.configure_filter	= zd_op_configure_filter,
 	.bss_info_changed	= zd_op_bss_info_changed,
 	.get_tsf		= zd_op_get_tsf,
--- wireless-testing.orig/drivers/net/wireless/iwlwifi/iwl-core.c	2009-08-17 15:12:59.000000000 +0200
+++ wireless-testing/drivers/net/wireless/iwlwifi/iwl-core.c	2009-08-17 15:13:18.000000000 +0200
@@ -1513,7 +1513,7 @@ EXPORT_SYMBOL(iwl_irq_handle_error);
 void iwl_configure_filter(struct ieee80211_hw *hw,
 			  unsigned int changed_flags,
 			  unsigned int *total_flags,
-			  int mc_count, struct dev_addr_list *mc_list)
+			  u64 multicast)
 {
 	struct iwl_priv *priv = hw->priv;
 	__le32 *filter_flags = &priv->staging_rxon.filter_flags;
--- wireless-testing.orig/drivers/net/wireless/iwlwifi/iwl-core.h	2009-08-17 15:12:58.000000000 +0200
+++ wireless-testing/drivers/net/wireless/iwlwifi/iwl-core.h	2009-08-17 15:13:18.000000000 +0200
@@ -277,8 +277,7 @@ int iwl_set_decrypted_flag(struct iwl_pr
 void iwl_irq_handle_error(struct iwl_priv *priv);
 void iwl_configure_filter(struct ieee80211_hw *hw,
 			  unsigned int changed_flags,
-			  unsigned int *total_flags,
-			  int mc_count, struct dev_addr_list *mc_list);
+			  unsigned int *total_flags, u64 multicast);
 int iwl_hw_nic_init(struct iwl_priv *priv);
 int iwl_setup_mac(struct iwl_priv *priv);
 int iwl_set_hw_params(struct iwl_priv *priv);
--- wireless-testing.orig/drivers/net/wireless/rt2x00/rt2x00.h	2009-08-17 15:12:59.000000000 +0200
+++ wireless-testing/drivers/net/wireless/rt2x00/rt2x00.h	2009-08-17 15:13:18.000000000 +0200
@@ -978,7 +978,7 @@ int rt2x00mac_config(struct ieee80211_hw
 void rt2x00mac_configure_filter(struct ieee80211_hw *hw,
 				unsigned int changed_flags,
 				unsigned int *total_flags,
-				int mc_count, struct dev_addr_list *mc_list);
+				u64 multicast);
 int rt2x00mac_set_tim(struct ieee80211_hw *hw, struct ieee80211_sta *sta,
 		      bool set);
 #ifdef CONFIG_RT2X00_LIB_CRYPTO
--- wireless-testing.orig/drivers/net/wireless/rt2x00/rt2x00mac.c	2009-08-17 15:12:59.000000000 +0200
+++ wireless-testing/drivers/net/wireless/rt2x00/rt2x00mac.c	2009-08-17 15:13:18.000000000 +0200
@@ -379,7 +379,7 @@ EXPORT_SYMBOL_GPL(rt2x00mac_config);
 void rt2x00mac_configure_filter(struct ieee80211_hw *hw,
 				unsigned int changed_flags,
 				unsigned int *total_flags,
-				int mc_count, struct dev_addr_list *mc_list)
+				u64 multicast)
 {
 	struct rt2x00_dev *rt2x00dev = hw->priv;
 



^ permalink raw reply

* Re: question about ieee80211_tx.c (fwd)
From: Gábor Stefanik @ 2009-08-17 11:50 UTC (permalink / raw)
  To: Julia Lawall; +Cc: linux-wireless, gregkh
In-Reply-To: <Pine.LNX.4.64.0908171000500.20447@pc-004.diku.dk>

On Mon, Aug 17, 2009 at 10:03 AM, Julia Lawall<julia@diku.dk> wrote:
> The files ieee80211_tx.c in the directories
> drivers/staging/rtl8192su/ieee80211 and drivers/staging/rtl8192e/ieee80211
> both contain the following code in the function
> ieee80211_query_protectionmode:
>
>       if (ieee->mode == IW_MODE_MASTER)
>                        goto NO_PROTECTION;
>
> Elsewhere in these files when there is a comparison against an IW_MODE
> value, the field that is compared is iw_mode.  Should that be the case
> here as well?
>
> thanks,
> julia

I don't know; rtl8192su & rtl8192e use a modified version of the
libipw stack, rather than the mac80211 stack found behind non-staging
drivers.

> --
> To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>



-- 
Vista: [V]iruses, [I]ntruders, [S]pyware, [T]rojans and [A]dware. :-)

^ permalink raw reply

* Re: [RFT] Threaded IRQ handlers for b43
From: Michael Buesch @ 2009-08-17 11:48 UTC (permalink / raw)
  To: bcm43xx-dev; +Cc: linux-wireless
In-Reply-To: <200908161539.57917.mb@bu3sch.de>

On Sunday 16 August 2009 15:39:57 Michael Buesch wrote:
> This request-for-test patch converts the b43 driver to use threaded
> interrupt handlers. This is needed to support b43 on SDIO. But it also
> simplifies the locking by removal of the wl->irq_lock spinlock.
> 
> http://bu3sch.de/patches/wireless-testing/20090816-1535/patches/002-b43-threaded-irq-handler.patch
> 
> A known regression is a new race between the interrupt handler and the
> beacon update handler. But as long as you don't run AP mode, it won't hurt.
> I'm working on a solution...
> 
> Please test this patch whether it creates other regressions (performance and crashes).
> 
> The patch also needs the following hack to the threaded IRQ code:
> http://bu3sch.de/patches/wireless-testing/20090816-1535/patches/001-hack-threaded-irqs.patch
> 

This is the correct fix for the threaded IRQ code. Apply this instead of the hack:
http://bu3sch.de/patches/wireless-testing/20090817-1347/patches/001-fix-irq-thread-wakeup.patch

-- 
Greetings, Michael.

^ permalink raw reply

* Re: [PATCH] iw: fix output qualifier for unsigned values
From: Johannes Berg @ 2009-08-17 10:58 UTC (permalink / raw)
  To: Arnd Hannemann; +Cc: linux-wireless@vger.kernel.org
In-Reply-To: <4A893520.1010901@nets.rwth-aachen.de>

[-- Attachment #1: Type: text/plain, Size: 253 bytes --]

On Mon, 2009-08-17 at 12:46 +0200, Arnd Hannemann wrote:

> Seems to be the output qualifier %d is used wrongly in some cases.
> This patch fixes that.

Applied, thanks, but please CC me in the future as explained in the
README file.

johannes

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 801 bytes --]

^ permalink raw reply

* [PATCH] iw: fix output qualifier for unsigned values
From: Arnd Hannemann @ 2009-08-17 10:46 UTC (permalink / raw)
  To: linux-wireless@vger.kernel.org

[-- Attachment #1: Type: text/plain, Size: 353 bytes --]

Hi,

with 0.9.16 a "iw wlan0 station dump" gives the following output:

Station XX:XX:XX:XX:XX:XX (on wlan0)
	inactive time:	4 ms
	rx bytes:	-1611945626
	rx packets:	7643414
	tx bytes:	1527923993
	tx packets:	4829428
	signal:  	-63 dBm
	tx bitrate:	54.0 MBit/s


Seems to be the output qualifier %d is used wrongly in some cases.
This patch fixes that.

[-- Attachment #2: iw_use_unsigned.patch --]
[-- Type: text/x-patch, Size: 1198 bytes --]

Signed-off-by: Arnd Hannemann <hannemann@nets.rwth-aachen.de>

diff -Naur iw-0.9.16.orig/station.c iw-0.9.16/station.c
--- iw-0.9.16.orig/station.c	2009-08-16 16:03:36.000000000 +0200
+++ iw-0.9.16/station.c	2009-08-17 12:31:58.119502558 +0200
@@ -80,19 +80,19 @@
 	printf("Station %s (on %s)", mac_addr, dev);
 
 	if (sinfo[NL80211_STA_INFO_INACTIVE_TIME])
-		printf("\n\tinactive time:\t%d ms",
+		printf("\n\tinactive time:\t%u ms",
 			nla_get_u32(sinfo[NL80211_STA_INFO_INACTIVE_TIME]));
 	if (sinfo[NL80211_STA_INFO_RX_BYTES])
-		printf("\n\trx bytes:\t%d",
+		printf("\n\trx bytes:\t%u",
 			nla_get_u32(sinfo[NL80211_STA_INFO_RX_BYTES]));
 	if (sinfo[NL80211_STA_INFO_RX_PACKETS])
-		printf("\n\trx packets:\t%d",
+		printf("\n\trx packets:\t%u",
 			nla_get_u32(sinfo[NL80211_STA_INFO_RX_PACKETS]));
 	if (sinfo[NL80211_STA_INFO_TX_BYTES])
-		printf("\n\ttx bytes:\t%d",
+		printf("\n\ttx bytes:\t%u",
 			nla_get_u32(sinfo[NL80211_STA_INFO_TX_BYTES]));
 	if (sinfo[NL80211_STA_INFO_TX_PACKETS])
-		printf("\n\ttx packets:\t%d",
+		printf("\n\ttx packets:\t%u",
 			nla_get_u32(sinfo[NL80211_STA_INFO_TX_PACKETS]));
 	if (sinfo[NL80211_STA_INFO_SIGNAL])
 		printf("\n\tsignal:  \t%d dBm",

^ permalink raw reply


This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox