public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* Accessing 64-bit BARs
@ 2007-10-04  8:53 yogeshwar sonawane
  2007-10-04 12:40 ` Rolf Eike Beer
  0 siblings, 1 reply; 4+ messages in thread
From: yogeshwar sonawane @ 2007-10-04  8:53 UTC (permalink / raw)
  To: linux-kernel

Hello all,

For accessing memory-mapped 64bit-BAR regions of a PCI card, the
respective BAR regions has to be made accessible to the kernel using
ioremap() function. Then readl()/writel() can be used on the address
returned by ioremap().

I am doing the similar steps to access the BARs of a card.
I observed some change in the behaviour in two different kernels.

Start physical addr of BAR is allocated by BIOS.
In linux-2.6.9, whether BAR start phys addr is below OR above 4GB,
i.e. whether 32-bit BAR phys addr(all higher bits 0) OR 64-bit phys
addr(some higher bits non-zero), I am able to access the BAR region
using ioremap() & then readl()/writel().

For linux-2.6.22-8, if BAR start phys addr is below 4GB, things are
working fine here also.

But, for linux-2.6.22-8, when BAR start phys addr is above 4GB, I am
not able to read/write on the BAR region. ioremap() is not failing.
But read data is all 1's instead of actual data.

Any ideas on where to look for?
Is there any change in the way of accessing 64-bit BAR?
OR
i am missing any step ?

For info - I am using 64-bit OS on x86_64 arch.

-Yogeshwar

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2007-10-05  3:57 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-10-04  8:53 Accessing 64-bit BARs yogeshwar sonawane
2007-10-04 12:40 ` Rolf Eike Beer
2007-10-04 15:26   ` Roland Dreier
2007-10-05  3:57     ` yogeshwar sonawane

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox