From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
To: Grant Grundler <grundler@parisc-linux.org>
Cc: linux-pci@atrey.karlin.mff.cuni.cz, Alan Cox <alan@redhat.com>,
Greg Kroah-Hartman <greg@kroah.com>,
jgarzik@pobox.com, Ivan Kokshaysky <ink@jurassic.park.msu.ru>,
wingel@nano-system.com,
Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>,
james.smart@emulex.com, linux-driver@qlogic.com,
linux-kernel@vger.kernel.org
Subject: Re: [RFC/PATCH 4/4] [POWERPC] pci: Disable IO/Mem on a device when resources can't be allocated
Date: Wed, 26 Dec 2007 08:20:53 +1100 [thread overview]
Message-ID: <1198617653.7209.4.camel@pasglop> (raw)
In-Reply-To: <20071224072301.GD3758@colo.lackof.org>
On Mon, 2007-12-24 at 00:23 -0700, Grant Grundler wrote:
> On Tue, Dec 18, 2007 at 10:01:15AM +1100, Benjamin Herrenschmidt wrote:
> > This patch changes the PowerPC PCI code to disable IO and/or Memory
> > decoding on a PCI device when a resource of that type failed to be
> > allocated. This is done to avoid having unallocated dangling BARs enabled
> > that might try to decode on top of other devices.
> >
> > If a proper resource is assigned later on, then pci_enable_device{,_io,_mem}
> > will take care of re-enabling decoding.
> >
> > Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
> ....
> > @@ -1062,8 +1065,12 @@ static void __init pcibios_allocate_reso
> > disabled = !(command & PCI_COMMAND_IO);
> > else
> > disabled = !(command & PCI_COMMAND_MEMORY);
> > - if (pass == disabled)
> > - alloc_resource(dev, idx);
> > + if (pass == disabled && alloc_resource(dev, idx)) {
> > + command &= ~(r->flags & (IORESOURCE_IO |
> > + IORESOURCE_MEM));
>
> While this may be ok for PPC, in general, wouldn't we want to only disable
> which ever type of resource that couldn't be allocated?
This is exactly what's supposed to be happening, but the code is buggy
and nobody noticed :-) (I'm mixing up IORESOURCE_* flags and
PCI_COMMAND_* flags). Thanks for reviewing !
> ie make two calls: alloc_resource_io() and alloc_resource_mem() and disable
> the respective flag if the alloc call fails?
No need for 2 calls, just disable whatever type the resource is, but
using the right bits instead of what my code incorrectly does.
> Thus a device which was enable and programmed by BIOS could remain functional
> despite one resource not being allocated.
Yes, that's what intended by the above code, if I didn't have mixed up
the flags.
Ben.
next prev parent reply other threads:[~2007-12-25 21:22 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-12-17 23:01 [RFC/PATCH 1/4] pci: Add pci_enable_device_{io,mem} intefaces Benjamin Herrenschmidt
2007-12-17 23:01 ` [RFC/PATCH 2/4] pci: Remove users of pci_enable_device_bars() Benjamin Herrenschmidt
2007-12-18 0:07 ` Alan Cox
2007-12-18 0:26 ` Benjamin Herrenschmidt
2007-12-24 7:13 ` Grant Grundler
2007-12-17 23:01 ` [RFC/PATCH 3/4] pci: Remove pci_enable_device_bars() Benjamin Herrenschmidt
2007-12-24 7:08 ` Grant Grundler
2007-12-25 21:16 ` Benjamin Herrenschmidt
2007-12-17 23:01 ` [RFC/PATCH 4/4] [POWERPC] pci: Disable IO/Mem on a device when resources can't be allocated Benjamin Herrenschmidt
2007-12-18 9:56 ` Ivan Kokshaysky
2007-12-18 11:36 ` Benjamin Herrenschmidt
2007-12-24 7:23 ` Grant Grundler
2007-12-25 21:20 ` Benjamin Herrenschmidt [this message]
2007-12-25 21:26 ` Benjamin Herrenschmidt
2007-12-27 21:03 ` Grant Grundler
2007-12-17 23:49 ` [RFC/PATCH 1/4] pci: Add pci_enable_device_{io,mem} intefaces Johannes Weiner
2007-12-17 23:55 ` Benjamin Herrenschmidt
2007-12-18 0:02 ` Benjamin Herrenschmidt
2007-12-18 9:37 ` Ivan Kokshaysky
2007-12-18 9:43 ` Benjamin Herrenschmidt
2007-12-19 5:10 ` [RFC/PATCH]] x86: pci: Disable IO/Mem on a device when resources can't be allocated Benjamin Herrenschmidt
2007-12-19 13:43 ` Ivan Kokshaysky
2007-12-19 20:29 ` Benjamin Herrenschmidt
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=1198617653.7209.4.camel@pasglop \
--to=benh@kernel.crashing.org \
--cc=alan@redhat.com \
--cc=bzolnier@gmail.com \
--cc=greg@kroah.com \
--cc=grundler@parisc-linux.org \
--cc=ink@jurassic.park.msu.ru \
--cc=james.smart@emulex.com \
--cc=jgarzik@pobox.com \
--cc=linux-driver@qlogic.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@atrey.karlin.mff.cuni.cz \
--cc=wingel@nano-system.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is 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.