public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Matthew Wilcox <matthew@wil.cx>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Alex Chiang <achiang@hp.com>,
	justin.chen@hp.com, linux-kernel@vger.kernel.org
Subject: Re: PCI BAR mem resource allocation "regression"
Date: Tue, 16 Dec 2008 21:05:34 -0700	[thread overview]
Message-ID: <20081217040534.GA19967@parisc-linux.org> (raw)
In-Reply-To: <alpine.LFD.2.00.0812130929100.3340@localhost.localdomain>

On Sat, Dec 13, 2008 at 09:41:05AM -0800, Linus Torvalds wrote:
> Matthew: I do suspect that the "insert below" patch is wrong. Look at 
> "pci_claim_resource()", for example: it uses insert_resource() to insert 
> the PCI device resource into the resource tree. But if the PCI device 
> resource has the same size as the bus window, that commit changes it to 
> insert it as the _parent_ of the bus window, no?

You're quite correct.  This was actually the intended behaviour of
insert_resource() ... the problem is that pci_claim_resource() is using
it wrong.

> Of course, on a PC, the only user of pci_claim_resource() would be some 
> PCI quirks that should never trigger this, but it's an example of the kind 
> of behavioural change that that commit introduced, and which looks 
> like it could result in a wrong resource tree.
> 
> I'm not finding the original discussion that resulted in that patch, 
> though, so I have a somewhat hard time to judge the reasoning. It's from 
> almost three years ago, I don't remember details even if I had been 
> involved with it (and judging by the sign-off path, I hadn't).
> 
> Matthew, do you remember the context of that commmit d33b6fba2?

Basically it was that we came across a machine with the opposite problem
-- that we found a parent after we found a child (and claimed the
child's resources), and had no way to insert the parent's region above
the child's region.  Alex's machine finds the child after the parent and
needs to insert the child's resource inside the parent's resource.

pci_claim_resource() should be looking through the resources that belong
to the parent bus, trying to insert inside each of them, not just
taking the root resource and wandering all the way down.  I'll work on a
patch tomorrow to do that unless someone beats me to it.

-- 
Matthew Wilcox				Intel Open Source Technology Centre
"Bill, look, we understand that you're interested in selling us this
operating system, but compare it to ours.  We can't possibly take such
a retrograde step."

  parent reply	other threads:[~2008-12-17  4:06 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-12-13  0:05 PCI BAR mem resource allocation "regression" Alex Chiang
2008-12-13 17:16 ` Linus Torvalds
2008-12-13 17:41   ` Linus Torvalds
2008-12-14  1:12     ` Alex Chiang
2008-12-17  4:05     ` Matthew Wilcox [this message]
2008-12-14  1:05   ` Alex Chiang
2008-12-14  1:37     ` Linus Torvalds
2008-12-15 20:04       ` Jesse Barnes
2008-12-16  0:25         ` Linus Torvalds
2008-12-16  0:53           ` Jesse Barnes
2008-12-15 18:26     ` Chen, Justin
2008-12-15 22:29     ` Chen, Justin

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=20081217040534.GA19967@parisc-linux.org \
    --to=matthew@wil.cx \
    --cc=achiang@hp.com \
    --cc=justin.chen@hp.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=torvalds@linux-foundation.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox