public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Robert Hancock <hancockr@shaw.ca>
To: Olivier Galibert <galibert@pobox.com>,
	linux-kernel <linux-kernel@vger.kernel.org>,
	Jesse Barnes <jbarnes@virtuousgeek.org>, Andi Kleen <ak@suse.de>,
	Chuck Ebbert <cebbert@redhat.com>, Len Brown <lenb@kernel.org>
Subject: Re: [RFC PATCH] PCI MMCONFIG: add validation against ACPI motherboard resources
Date: Mon, 30 Apr 2007 17:26:48 -0600	[thread overview]
Message-ID: <46367B38.6080508@shaw.ca> (raw)
In-Reply-To: <20070430225916.GA39223@dspnet.fr.eu.org>

Olivier Galibert wrote:
> On Sun, Apr 29, 2007 at 08:14:37PM -0600, Robert Hancock wrote:
>> -Validate that the area is reserved even if we read it from the
>> chipset directly and not from the MCFG table. This catches the case
>> where the BIOS didn't set the location properly in the chipset and
>> has mapped it over other things it shouldn't have.  This might be
>> overly pessimistic - we might be able to instead verify that no
>> other reserved resources (like chipset registers) are inside this
>> memory range.
> 
> I have a fundamental problem with that: you don't validate a higher
> reliability information against a lower one.  The chipset registers
> are high reliability.  Modulo unknown hardware erratas and bugs in the
> code (and accepting f0000000 is in practice a bug in the code, the
> docs are starting to catch up with it too), the chipset *will* decode
> mmconfig at the looked up address no matter what.  On the other side,
> the ACPI data is bios generated, and that is well known to be horribly
> unreliable.  Hell, if it was reliable we could just use the MFCG ACPI
> table without questions.
> 
> So you can check the ACPI stuff for coherency (MFCG vs. the rest), you
> can validate the ACPI stuff against the results of the lookup if you
> want, but validating the lookup against ACPI is nonsensical.

The problem is that in the event the MMCONFIG table is assigned to an 
address range that conflicts with other devices, there's no guarantee 
that MMCONFIG will have the higher decode priority. Apparently this is 
exactly the case on some boards, the MMCONFIG is mapped on top of 
chipset registers, and when we think we're accessing the MMCONFIG table 
we're really scrambling random chipset registers and hosing things. So 
we can't just blindly trust the values as being usable even when they 
come directly from the chipset.

As I mentioned, though, really what we want to verify in this case is 
that no other reserved resources fall inside the range being decoded by 
the chipset. I may see if I can code something to do this. Essentially, 
though, the existing patch effectively does this, on the assumption that 
the board won't have conflicting reserved resources in the ACPI tables, 
which is probably a safe assumption as Windows would likely be terribly 
unhappy with that..

-- 
Robert Hancock      Saskatoon, SK, Canada
To email, remove "nospam" from hancockr@nospamshaw.ca
Home Page: http://www.roberthancock.com/



  reply	other threads:[~2007-04-30 23:26 UTC|newest]

Thread overview: 61+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-04-30  2:14 [RFC PATCH] PCI MMCONFIG: add validation against ACPI motherboard resources Robert Hancock
2007-04-30  2:59 ` Randy Dunlap
2007-04-30 22:59 ` Olivier Galibert
2007-04-30 23:26   ` Robert Hancock [this message]
2007-05-01 16:48   ` Jesse Barnes
2007-05-02  2:41   ` Jesse Barnes
2007-05-02  2:56     ` Jesse Barnes
2007-05-02  5:27       ` Jesse Barnes
2007-05-02 14:34         ` Robert Hancock
2007-05-02 17:57           ` Jesse Barnes
2007-05-02 23:45             ` Robert Hancock
2007-05-02 23:54               ` Jesse Barnes
2007-05-04 21:06                 ` Jesse Barnes
2007-05-05  0:22                   ` Robert Hancock
2007-05-21 19:10                   ` Jesse Barnes
2007-05-21 19:26                     ` Robert Hancock
2007-05-21 20:07                       ` Jesse Barnes
2007-05-21 20:22                         ` Jesse Barnes
2007-05-23  0:31                           ` Robert Hancock
2007-05-23  0:38                             ` Jesse Barnes
2007-05-23  0:53                               ` Robert Hancock
2007-05-23  0:56                                 ` Jesse Barnes
2007-05-23  1:06                               ` Robert Hancock
2007-05-23 18:52                                 ` Jesse Barnes
2007-05-23 20:20                                   ` Linus Torvalds
2007-05-23 20:38                                     ` Alan Cox
2007-05-23 20:45                                       ` Linus Torvalds
2007-05-23 20:49                                     ` Jesse Barnes
2007-05-23 20:56                                       ` Linus Torvalds
2007-05-23 21:03                                         ` Jesse Barnes
2007-05-23 21:09                                           ` Jeff Garzik
2007-05-23 21:35                                             ` Alan Cox
2007-05-23 21:35                                               ` Jeff Garzik
2007-05-23 21:37                                               ` Jesse Barnes
2007-05-23 21:42                                                 ` Jeff Garzik
2007-05-23 23:07                                             ` Stephen Hemminger
2007-05-23 21:54                                           ` Linus Torvalds
2007-05-23 22:06                                             ` Jesse Barnes
2007-05-23 22:16                                               ` Linus Torvalds
2007-05-23 22:28                                                 ` Jesse Barnes
2007-05-23 23:04                                                 ` David Miller
2007-05-23 23:11                                                   ` Jesse Barnes
2007-05-23 23:15                                                     ` Robert Hancock
2007-05-23 23:21                                                       ` Jesse Barnes
2007-05-23 21:20                                         ` Jesse Barnes
2007-05-23 22:24                                           ` Olivier Galibert
2007-05-23 22:31                                             ` Jesse Barnes
2007-05-23 22:48                                             ` Linus Torvalds
2007-05-23 22:55                                               ` Jesse Barnes
2007-05-24  0:21                                                 ` Linus Torvalds
2007-05-24  2:59                                                   ` Jesse Barnes
2007-05-24  3:18                                                     ` Linus Torvalds
2007-05-24  3:20                                                       ` Linus Torvalds
2007-05-24  3:40                                                         ` Jesse Barnes
2007-05-24  5:19                                                           ` Robert Hancock
2007-05-24  6:18                                                   ` Jeff Garzik
2007-05-24 15:42                                                     ` Linus Torvalds
2007-05-23 23:04                                     ` Robert Hancock
2007-05-23 23:04                                   ` Robert Hancock
2007-05-23 23:06                                     ` Jesse Barnes
2007-05-24  0:02 ` Jesse Barnes

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=46367B38.6080508@shaw.ca \
    --to=hancockr@shaw.ca \
    --cc=ak@suse.de \
    --cc=cebbert@redhat.com \
    --cc=galibert@pobox.com \
    --cc=jbarnes@virtuousgeek.org \
    --cc=lenb@kernel.org \
    --cc=linux-kernel@vger.kernel.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