Re: PCI Express support for 2.4 kernel

From: Jeff Garzik
Date: Mon Dec 15 2003 - 15:38:07 EST


Vladimir Kondratiev wrote:
Linus, FIXMAP helps, it is lighter then ioremap, but it still requires page table walk. In addition, since several operations should be done atomically, lock/unlock required as well. Can it be faster method, without page table walk for each transaction? To what extent should one concern about performance here?

As alternative between 1 page and 256M, I see also lazy allocation on per-bus basis: when bus is first accessed, ioremap 1Mb for it. On real system, it is no more then 3-4 buses. This way, we will end with several 1MB mappings. Finer granularity do not looks feasible, since bus scanning procedure tries to access all devices.


Well, two things to consider:
* probing is not a performance-intensive operation
* even with a system loaded down with many PCI Express devices, I doubt you will need more than 1-2MB mapped total, during runtime

So, one alternative could be to keep a cache of ioremap() regions -- smaller than 1MB in my opinion -- and update that as needed.

Anybody doing large numbers of PCI config register reads/writes in a hot path should be shot (or the h/w designers, depending on situation), and PCI Express doesn't change that ;-)

Jeff



-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/