* pci_map_single() on IA64
@ 2006-06-07 9:04 Adhiraj
2006-06-07 14:11 ` Jes Sorensen
2006-06-07 14:21 ` Alex Williamson
0 siblings, 2 replies; 3+ messages in thread
From: Adhiraj @ 2006-06-07 9:04 UTC (permalink / raw)
To: linux-kernel; +Cc: adhiraj
Hi all,
How is it possible that on an IA64 machine, the address returned by
pci_map_single() is above 4G (32 bits) when I have only 2G of physical
memory?
The DMA mask is set to 64 bits (using pci_set_dma_mask()). When I change
it to 32 bit DMA mask, the problem goes away.
This problem does not appear on i388/x86_64 machines.
Thanks,
Adhiraj.
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: pci_map_single() on IA64
2006-06-07 9:04 pci_map_single() on IA64 Adhiraj
@ 2006-06-07 14:11 ` Jes Sorensen
2006-06-07 14:21 ` Alex Williamson
1 sibling, 0 replies; 3+ messages in thread
From: Jes Sorensen @ 2006-06-07 14:11 UTC (permalink / raw)
To: Adhiraj; +Cc: linux-kernel
>>>>> "Adhiraj" == Adhiraj <adhiraj@linsyssoft.com> writes:
Adhiraj> Hi all, How is it possible that on an IA64 machine, the
Adhiraj> address returned by pci_map_single() is above 4G (32 bits)
Adhiraj> when I have only 2G of physical memory?
Depends on how the physical memory is located on the system and how
the PCI bridge sees it.
Adhiraj> The DMA mask is set to 64 bits (using
Adhiraj> pci_set_dma_mask()). When I change it to 32 bit DMA mask, the
Adhiraj> problem goes away.
Forcing it to a 32 bit mask may force the box to use the IOMMU if it
has one, which not all IA64 systems do have. However, since you have
set the DMA mask to 64 bits then you're getting exactly what you are
asking for, so why is this a 'problem'? A 64 bit DMA mask means the
adapter can do 64 bit addressing, it has nothing to do with the width
of the databus.
Jes
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: pci_map_single() on IA64
2006-06-07 9:04 pci_map_single() on IA64 Adhiraj
2006-06-07 14:11 ` Jes Sorensen
@ 2006-06-07 14:21 ` Alex Williamson
1 sibling, 0 replies; 3+ messages in thread
From: Alex Williamson @ 2006-06-07 14:21 UTC (permalink / raw)
To: Adhiraj; +Cc: linux-kernel
On Wed, 2006-06-07 at 14:34 +0530, Adhiraj wrote:
> Hi all,
>
> How is it possible that on an IA64 machine, the address returned by
> pci_map_single() is above 4G (32 bits) when I have only 2G of physical
> memory?
>
> The DMA mask is set to 64 bits (using pci_set_dma_mask()). When I change
> it to 32 bit DMA mask, the problem goes away.
>
> This problem does not appear on i388/x86_64 machines.
What is the physical layout of that 2GB of memory? You can't count
on memory being contiguous, especially on IA64 systems. If the address
you get back is within the DMA mask of the device, then the DMA mapping
is valid. You can run 'grep "System RAM" /proc/iomem' to get some idea
of the physical memory address map. Thanks,
Alex
--
Alex Williamson HP Open Source & Linux Org.
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2006-06-07 14:21 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-06-07 9:04 pci_map_single() on IA64 Adhiraj
2006-06-07 14:11 ` Jes Sorensen
2006-06-07 14:21 ` Alex Williamson
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox