From: Jeff Garzik <jgarzik@pobox.com>
To: bjorn.helgaas@hp.com, Ralf Baechle <ralf@linux-mips.org>,
Andrew Morton <akpm@osdl.org>
Cc: Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH] ioc3-eth.c: add missing pci_enable_device()
Date: Tue, 24 Aug 2004 20:40:38 -0400 [thread overview]
Message-ID: <412BE006.8040606@pobox.com> (raw)
In-Reply-To: <200408242225.i7OMPGLQ029847@hera.kernel.org>
Linux Kernel Mailing List wrote:
> ChangeSet 1.1843.1.74, 2004/08/24 11:21:53-07:00, bjorn.helgaas@hp.com
>
> [PATCH] ioc3-eth.c: add missing pci_enable_device()
>
> Add pci_enable_device()/pci_disable_device(). In the past, drivers often
> worked without this, but it is now required in order to route PCI interrupts
> correctly.
>
> Signed-off-by: Bjorn Helgaas <bjorn.helgaas@hp.com>
> Signed-off-by: Andrew Morton <akpm@osdl.org>
> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
>
>
>
> ioc3-eth.c | 12 ++++++++++--
> 1 files changed, 10 insertions(+), 2 deletions(-)
>
>
> diff -Nru a/drivers/net/ioc3-eth.c b/drivers/net/ioc3-eth.c
> --- a/drivers/net/ioc3-eth.c 2004-08-24 15:25:26 -07:00
> +++ b/drivers/net/ioc3-eth.c 2004-08-24 15:25:26 -07:00
> @@ -1172,9 +1172,14 @@
> u32 vendor, model, rev;
> int err;
>
> + if (pci_enable_device(pdev))
> + return -ENODEV;
> +
> dev = alloc_etherdev(sizeof(struct ioc3_private));
> - if (!dev)
> - return -ENOMEM;
> + if (!dev) {
> + err = -ENOMEM;
> + goto out_disable;
> + }
>
> err = pci_request_regions(pdev, "ioc3");
> if (err)
> @@ -1269,6 +1274,8 @@
> pci_release_regions(pdev);
> out_free:
> free_netdev(dev);
> +out_disable:
> + pci_disable_device(pdev);
> return err;
> }
>
> @@ -1282,6 +1289,7 @@
> iounmap(ioc3);
> pci_release_regions(pdev);
> free_netdev(dev);
> + pci_disable_device(pdev);
I don't see a "signed-off-by" line from Ralf. I noticed you never
bothered to send this patch to me. Did you send it to Ralf either?
ioc3 is _very_ strange device and not fully compliant to the PCI spec.
I would appreciate more review and testing before these patches go in,
particularly against net drivers. pci_enable_device() is NOT just a
simple cleanup:
* each driver may (though unlikely) manage its PCI_COMMAND bits and/or
resources in a special way. IDE driver is an example of where
pci_enable_device() _cannot_ be used.
* like ioc3, the hardware may be weird
* you must consider the case of two drivers for the same hardware VERY
carefully. Consider:
1) (DRV A) modprobe
2) (DRV A) pci_enable_device()
3) (DRV A) starts operation
4) (DRV B) modprobe
5) (DRV B) pci_enable_device()
6) (DRV B) pci_request_regions() or request_region() fails (since driver
A owns the resources)
7) (DRV B) pci_disable_device()
8) (DRV A) fails miserably, because you just disabled IO/MEM bits from
an _active_ driver. BOOM.
Not all cleanups are created equal. Proceed with caution.
Jeff
next parent reply other threads:[~2004-08-25 0:41 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <200408242225.i7OMPGLQ029847@hera.kernel.org>
2004-08-25 0:40 ` Jeff Garzik [this message]
2004-08-25 5:49 ` [PATCH] ioc3-eth.c: add missing pci_enable_device() Ralf Baechle
2004-08-25 15:03 ` Bjorn Helgaas
2004-08-25 15:06 ` Christoph Hellwig
2004-08-04 21:38 Bjorn Helgaas
2004-08-19 20:14 ` Ralf Baechle
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=412BE006.8040606@pobox.com \
--to=jgarzik@pobox.com \
--cc=akpm@osdl.org \
--cc=bjorn.helgaas@hp.com \
--cc=linux-kernel@vger.kernel.org \
--cc=ralf@linux-mips.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.