Re: PCI Express support for 2.4 kernel

Jeff Garzik
2003-12-15T20:37:11Z

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