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/