On Wed, Sep 26, 2007 at 03:20:40PM -0700, Jesse Barnes wrote:Yes, nobody is arguing that moving the BAR around is unsafe, but generally it's the less of two evils. The major problem here is that with IO and MEM bits cleared in the command register you disable *all* address decoders on the device, not just ranges that have respective BARs. At least this behaviour is required by PCI spec. Examples: - legacy VGA IO and memory (no corresponding BARs); - base/limit registers of P2P bridge; - PMU and SMBus registers (sort of normal BARs, but hidden elsewhere in the config space); - IDE legacy mode registers; - IO-APIC registers (typically sort of read-only BAR). For all of these address ranges our current BAR probe is effectively a no-op, but disable/re-enable clearly isn't. There are two other solutions: one is to disable decode selectively, only on devices or systems where it's necessary and known to be safe. I've posted a patch which introduces "disable_while_probe" pci_dev field for that purpose. Another one is to delay mmconfig probe until after the PCI probe is done, as Matthew suggested, and Robert confirmed that it's feasible. Ivan. -
| Tarkan Erimer | Re: Dual-Licensing Linux Kernel with GPL V2 and GPL V3 |
| Greg Kroah-Hartman | [PATCH 007/196] Chinese: add translation of stable_kernel_rules.txt |
| Andrew Morton | -mm merge plans for 2.6.23 |
| Arjan van de Ven | [Announce] Development release 0.1 of the LatencyTOP tool |
git: | |
| Gerrit Renker | [PATCH 15/37] dccp: Set per-connection CCIDs via socket options |
| David Miller | [GIT]: Networking |
| Stephen Hemminger | Re: iptables very slow after commit 784544739a25c30637397ace5489eeb6e15d7d49 |
