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. -
| Greg Kroah-Hartman | [PATCH 005/196] Chinese: add translation of SubmittingDrivers |
| Christian Kujau | 2.6.20.4: NETDEV WATCHDOG and lockups |
| Tarkan Erimer | Re: Dual-Licensing Linux Kernel with GPL V2 and GPL V3 |
| Jack Steiner | Re: [patch] my mmu notifiers |
git: | |
| Gerrit Renker | [PATCH 27/37] dccp: Integration of dynamic feature activation - part 2 (server side) |
| Arjan van de Ven | Re: [GIT]: Networking |
| Jarek Poplawski | [PATCH] pkt_sched: Destroy gen estimators under rtnl_lock(). |
| Jens Axboe | Re: [BUG] New Kernel Bugs |
| YAMAMOTO Takashi | removing VOPs |
| Lennart Augustsson | Re: FreeBSD 5/6/7 kernel emulator for NetBSD 2.x |
| Daniel Carosone | Re: direct I/O |
| Brian Buhrow | Re: /sbin/reboot and secmodel |
