2010-11-08 21:54:44

by Andi Kleen

[permalink] [raw]
Subject: [PATCH] iwl3945: Fix oops at module load

From: Andi Kleen <[email protected]>

On my laptop the iwl3945 driver oopsed at boot with 2.6.37-rc1
in __dev_printk.

The problem is that for some reason it prints the sw scan
warning, but does that before the pci device is initialized
in the driver private structure. This leads to an oops
in the warning print code.

Move the warning after the device has been initialized.

Cc: [email protected]
Signed-off-by: Andi Kleen <[email protected]>
---
drivers/net/wireless/iwlwifi/iwl3945-base.c | 11 +++++------
1 files changed, 5 insertions(+), 6 deletions(-)

diff --git a/drivers/net/wireless/iwlwifi/iwl3945-base.c b/drivers/net/wireless/iwlwifi/iwl3945-base.c
index 8f8c4b7..3910ec2 100644
--- a/drivers/net/wireless/iwlwifi/iwl3945-base.c
+++ b/drivers/net/wireless/iwlwifi/iwl3945-base.c
@@ -3995,6 +3995,11 @@ static int iwl3945_pci_probe(struct pci_dev *pdev, const struct pci_device_id *e
priv->contexts[IWL_RXON_CTX_BSS].station_devtype = RXON_DEV_TYPE_ESS;
priv->contexts[IWL_RXON_CTX_BSS].unused_devtype = RXON_DEV_TYPE_ESS;

+ IWL_DEBUG_INFO(priv, "*** LOAD DRIVER ***\n");
+ priv->cfg = cfg;
+ priv->pci_dev = pdev;
+ priv->inta_mask = CSR_INI_SET_MASK;
+
/*
* Disabling hardware scan means that mac80211 will perform scans
* "the hard way", rather than using device's scan.
@@ -4004,12 +4009,6 @@ static int iwl3945_pci_probe(struct pci_dev *pdev, const struct pci_device_id *e
iwl3945_hw_ops.hw_scan = NULL;
}

-
- IWL_DEBUG_INFO(priv, "*** LOAD DRIVER ***\n");
- priv->cfg = cfg;
- priv->pci_dev = pdev;
- priv->inta_mask = CSR_INI_SET_MASK;
-
if (iwl_alloc_traffic_mem(priv))
IWL_ERR(priv, "Not enough memory to generate traffic log\n");

--
1.7.1



2010-11-09 03:08:41

by Wey-Yi Guy

[permalink] [raw]
Subject: Re: [PATCH] iwl3945: Fix oops at module load

On Mon, 2010-11-08 at 17:46 -0800, Andi Kleen wrote:
> > I believe the fix already in
> > http://git.kernel.org/?p=linux/kernel/git/iwlwifi/iwlwifi-2.6.git;a=summary
> > commit#6e0922e0781884ff4eb3638f10a91b63b6120207
>
> Thanks. Can that please be sent to Linus ASAP? It doesn't really
> help my laptop if it's in some obscure git tree.
>
Done, thanks to let me know

Wey
>



2010-11-09 01:46:01

by Andi Kleen

[permalink] [raw]
Subject: Re: [PATCH] iwl3945: Fix oops at module load

> I believe the fix already in
> http://git.kernel.org/?p=linux/kernel/git/iwlwifi/iwlwifi-2.6.git;a=summary
> commit#6e0922e0781884ff4eb3638f10a91b63b6120207

Thanks. Can that please be sent to Linus ASAP? It doesn't really
help my laptop if it's in some obscure git tree.

-Andi

--
[email protected] -- Speaking for myself only.

2010-11-08 22:12:42

by Wey-Yi Guy

[permalink] [raw]
Subject: Re: [PATCH] iwl3945: Fix oops at module load

Hi Andi,

On Mon, 2010-11-08 at 13:54 -0800, Andi Kleen wrote:
> From: Andi Kleen <[email protected]>
>
> On my laptop the iwl3945 driver oopsed at boot with 2.6.37-rc1
> in __dev_printk.
>
> The problem is that for some reason it prints the sw scan
> warning, but does that before the pci device is initialized
> in the driver private structure. This leads to an oops
> in the warning print code.
>
> Move the warning after the device has been initialized.
>
> Cc: [email protected]
> Signed-off-by: Andi Kleen <[email protected]>
> ---
> drivers/net/wireless/iwlwifi/iwl3945-base.c | 11 +++++------
> 1 files changed, 5 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/net/wireless/iwlwifi/iwl3945-base.c b/drivers/net/wireless/iwlwifi/iwl3945-base.c
> index 8f8c4b7..3910ec2 100644
> --- a/drivers/net/wireless/iwlwifi/iwl3945-base.c
> +++ b/drivers/net/wireless/iwlwifi/iwl3945-base.c
> @@ -3995,6 +3995,11 @@ static int iwl3945_pci_probe(struct pci_dev *pdev, const struct pci_device_id *e
> priv->contexts[IWL_RXON_CTX_BSS].station_devtype = RXON_DEV_TYPE_ESS;
> priv->contexts[IWL_RXON_CTX_BSS].unused_devtype = RXON_DEV_TYPE_ESS;
>
> + IWL_DEBUG_INFO(priv, "*** LOAD DRIVER ***\n");
> + priv->cfg = cfg;
> + priv->pci_dev = pdev;
> + priv->inta_mask = CSR_INI_SET_MASK;
> +
> /*
> * Disabling hardware scan means that mac80211 will perform scans
> * "the hard way", rather than using device's scan.
> @@ -4004,12 +4009,6 @@ static int iwl3945_pci_probe(struct pci_dev *pdev, const struct pci_device_id *e
> iwl3945_hw_ops.hw_scan = NULL;
> }
>
> -
> - IWL_DEBUG_INFO(priv, "*** LOAD DRIVER ***\n");
> - priv->cfg = cfg;
> - priv->pci_dev = pdev;
> - priv->inta_mask = CSR_INI_SET_MASK;
> -
> if (iwl_alloc_traffic_mem(priv))
> IWL_ERR(priv, "Not enough memory to generate traffic log\n");
>

I believe the fix already in
http://git.kernel.org/?p=linux/kernel/git/iwlwifi/iwlwifi-2.6.git;a=summary
commit#6e0922e0781884ff4eb3638f10a91b63b6120207

Thanks
Wey


2010-11-08 22:01:31

by Berg, Johannes

[permalink] [raw]
Subject: RE: [PATCH] iwl3945: Fix oops at module load

> From: Andi Kleen <[email protected]>
>
> On my laptop the iwl3945 driver oopsed at boot with 2.6.37-rc1
> in __dev_printk.
>
> The problem is that for some reason it prints the sw scan
> warning, but does that before the pci device is initialized
> in the driver private structure. This leads to an oops
> in the warning print code.
>
> Move the warning after the device has been initialized.

Yup, something like this is needed, sorry about this!
I believe we have a fix for this in the pipeline somewhere.

johannes
--------------------------------------------------------------------------------------
Intel GmbH
Dornacher Strasse 1
85622 Feldkirchen/Muenchen, Deutschland
Sitz der Gesellschaft: Feldkirchen bei Muenchen
Geschaeftsfuehrer: Douglas Lusk, Peter Gleissner, Hannes Schwaderer
Registergericht: Muenchen HRB 47456
Ust.-IdNr./VAT Registration No.: DE129385895
Citibank Frankfurt a.M. (BLZ 502 109 00) 600119052