lkml.org 
[lkml]   [1998]   [Nov]   [26]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: Non-page-aligned PCI base address
Hello,

> This sort of PCI base address assignement doesn't happen actualy often.

Yes, especially because cards with memory regions smaller than
page size are very rare.

> This was the first case known to me and it happend on kind of exotic
> board. But maybe it could be considered that future x86 mainboards are
> going to have more than 4 PCI slots on multiple buses and therefore such
> 'bug-feature' behaviour.

This probably doesn't depend on number of PCI slots and buses at all.

> The problem solution I'm thinking about could be some re-assignment of PCI
> base addresses during setup of pci_dev, in the similar manner it is donne
> with PCI interrupts:
>
> in pci.c:
>
> 1. check if the base address is page-aligned
> 2. if not, see if is it possible to align it and on success
> write new base addr into base config
> 3. if the address is already used by other region, see if it is
> possible to rearange other devices
>
> Does it make any sense ?

It would be possible, but certainly not before 2.3.

Since this problem affects very small number of cards and therefore
only a few drivers, it will be better to handle it in the drivers --
instead of calling ioremap() directly, use

new_base = (old_base & (PAGE_SIZE-1)) + ioremap(old_base & ~(PAGE_SIZE-1),...);

Have a nice fortnight
--
Martin `MJ' Mares <mj@ucw.cz> http://atrey.karlin.mff.cuni.cz/~mj/
Faculty of Math and Physics, Charles University, Prague, Czech Rep., Earth
"How do I type 'for i in *.dvi do xdvi $i done' in a GUI?"

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

\
 
 \ /
  Last update: 2005-03-22 13:45    [W:0.039 / U:1.676 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site