2007-02-14 20:06:27

by Corey Minyard

[permalink] [raw]
Subject: [patch 3/4] ipmi: add pci remove handling


Add pci_remove handling to the driver, so it will clean up if
the device is hot-removed.

Signed-off-by: Corey Minyard <[email protected]>

Index: linux-2.6.19/drivers/char/ipmi/ipmi_si_intf.c
===================================================================
--- linux-2.6.19.orig/drivers/char/ipmi/ipmi_si_intf.c
+++ linux-2.6.19/drivers/char/ipmi/ipmi_si_intf.c
@@ -2191,12 +2191,15 @@ static int __devinit ipmi_pci_probe(stru
info->irq_setup = std_irq_setup;

info->dev = &pdev->dev;
+ pdev->dev->driver_data = info;

return try_smi_init(info);
}

static void __devexit ipmi_pci_remove(struct pci_dev *pdev)
{
+ struct smi_info *info = pdev->dev->driver_data;
+ cleanup_one_si(info);
}

#ifdef CONFIG_PM


2007-02-15 10:27:51

by Andrew Morton

[permalink] [raw]
Subject: Re: [patch 3/4] ipmi: add pci remove handling

On Wed, 14 Feb 2007 14:06:24 -0600 Corey Minyard <[email protected]> wrote:

> Add pci_remove handling to the driver, so it will clean up if
> the device is hot-removed.
>
> Signed-off-by: Corey Minyard <[email protected]>
>
> Index: linux-2.6.19/drivers/char/ipmi/ipmi_si_intf.c
> ===================================================================
> --- linux-2.6.19.orig/drivers/char/ipmi/ipmi_si_intf.c
> +++ linux-2.6.19/drivers/char/ipmi/ipmi_si_intf.c
> @@ -2191,12 +2191,15 @@ static int __devinit ipmi_pci_probe(stru
> info->irq_setup = std_irq_setup;
>
> info->dev = &pdev->dev;
> + pdev->dev->driver_data = info;
>
> return try_smi_init(info);
> }
>
> static void __devexit ipmi_pci_remove(struct pci_dev *pdev)
> {
> + struct smi_info *info = pdev->dev->driver_data;
> + cleanup_one_si(info);
> }

drivers/char/ipmi/ipmi_si_intf.c: In function 'ipmi_pci_probe':
drivers/char/ipmi/ipmi_si_intf.c:2192: error: invalid type argument of '->'
drivers/char/ipmi/ipmi_si_intf.c: In function 'ipmi_pci_remove':
drivers/char/ipmi/ipmi_si_intf.c:2199: error: invalid type argument of '->'

Judging from the patch headers you were working against 2.6.19, which is
most optimistic. Please always prepare and test patches against the
latest kernel.

2007-02-15 15:53:20

by Corey Minyard

[permalink] [raw]
Subject: Re: [patch 3/4] ipmi: add pci remove handling

On Thu, Feb 15, 2007 at 02:27:45AM -0800, Andrew Morton wrote:
>
> Judging from the patch headers you were working against 2.6.19, which is
> most optimistic. Please always prepare and test patches against the
> latest kernel.

Well, I had it applied against a 2.6.20 kernel, but I messed up the
testing of it. Sorry, my bad.

New patch...


Add pci_remove handling to the driver, so it will clean up if
the device is hot-removed.

Signed-off-by: Corey Minyard <[email protected]>

Index: linux-2.6.20/drivers/char/ipmi/ipmi_si_intf.c
===================================================================
--- linux-2.6.20.orig/drivers/char/ipmi/ipmi_si_intf.c
+++ linux-2.6.20/drivers/char/ipmi/ipmi_si_intf.c
@@ -2191,12 +2191,15 @@ static int __devinit ipmi_pci_probe(stru
info->irq_setup = std_irq_setup;

info->dev = &pdev->dev;
+ pdev->dev.driver_data = info;

return try_smi_init(info);
}

static void __devexit ipmi_pci_remove(struct pci_dev *pdev)
{
+ struct smi_info *info = pdev->dev.driver_data;
+ cleanup_one_si(info);
}

#ifdef CONFIG_PM

2007-02-16 13:12:34

by Rolf Eike Beer

[permalink] [raw]
Subject: Re: [patch 3/4] ipmi: add pci remove handling

Am Donnerstag, 15. Februar 2007 schrieb Corey Minyard:
> On Thu, Feb 15, 2007 at 02:27:45AM -0800, Andrew Morton wrote:
> > Judging from the patch headers you were working against 2.6.19, which is
> > most optimistic. Please always prepare and test patches against the
> > latest kernel.
>
> Well, I had it applied against a 2.6.20 kernel, but I messed up the
> testing of it. Sorry, my bad.
>
> New patch...
>
>
> Add pci_remove handling to the driver, so it will clean up if
> the device is hot-removed.
>
> Signed-off-by: Corey Minyard <[email protected]>
>
> Index: linux-2.6.20/drivers/char/ipmi/ipmi_si_intf.c
> ===================================================================
> --- linux-2.6.20.orig/drivers/char/ipmi/ipmi_si_intf.c
> +++ linux-2.6.20/drivers/char/ipmi/ipmi_si_intf.c
> @@ -2191,12 +2191,15 @@ static int __devinit ipmi_pci_probe(stru
> info->irq_setup = std_irq_setup;
>
> info->dev = &pdev->dev;
> + pdev->dev.driver_data = info;
>
> return try_smi_init(info);
> }
>
> static void __devexit ipmi_pci_remove(struct pci_dev *pdev)
> {
> + struct smi_info *info = pdev->dev.driver_data;
> + cleanup_one_si(info);
> }

Please use pci_{set,get}_drvdata() to access this field.

Greetings,

Eike


Attachments:
(No filename) (1.20 kB)
(No filename) (189.00 B)
Download all attachments

2007-02-16 16:13:39

by Corey Minyard

[permalink] [raw]
Subject: Re: [patch 3/4] ipmi: add pci remove handling

On Fri, Feb 16, 2007 at 02:16:17PM +0100, Rolf Eike Beer wrote:
>
> Please use pci_{set,get}_drvdata() to access this field.
>
> Greetings,
>
> Eike

Yes, much better. Thanks. One more time...


Add pci_remove handling to the driver, so it will clean up if
the device is hot-removed.

Signed-off-by: Corey Minyard <[email protected]>

Index: linux-2.6.20/drivers/char/ipmi/ipmi_si_intf.c
===================================================================
--- linux-2.6.20.orig/drivers/char/ipmi/ipmi_si_intf.c
+++ linux-2.6.20/drivers/char/ipmi/ipmi_si_intf.c
@@ -2191,12 +2191,15 @@ static int __devinit ipmi_pci_probe(stru
info->irq_setup = std_irq_setup;

info->dev = &pdev->dev;
+ pci_set_drvdata(pdev, info);

return try_smi_init(info);
}

static void __devexit ipmi_pci_remove(struct pci_dev *pdev)
{
+ struct smi_info *info = pci_get_drvdata(pdev);
+ cleanup_one_si(info);
}

#ifdef CONFIG_PM