>
>Even for kernels with a 64bit dma_addr_t you can get 32bit dma
>addresses
>only. As a start check whether the pci_set_dma_mask for the 64bit mask
>failed - in that case you can always use 32bit SGLs.
>
Please help me understand: If dma_addr_t is 64 bit, I will get 64bit
addresses in scatterlist regardless the outcome of pci_set_dma_mask,
won't I? These addresses may have valid or null high addresses. My idea
was to have 32(64) bit SGLs for 32(64) bit dma_addr_t.
Thanks,
Sreenivas
On Wed, Mar 09, 2005 at 05:47:27PM -0500, Bagalkote, Sreenivas wrote:
> >
> >Even for kernels with a 64bit dma_addr_t you can get 32bit dma
> >addresses
> >only. As a start check whether the pci_set_dma_mask for the 64bit mask
> >failed - in that case you can always use 32bit SGLs.
> >
>
> Please help me understand: If dma_addr_t is 64 bit, I will get 64bit
> addresses in scatterlist regardless the outcome of pci_set_dma_mask,
> won't I? These addresses may have valid or null high addresses. My idea
> was to have 32(64) bit SGLs for 32(64) bit dma_addr_t.
if pci_set_dma_mask for the 64bit mask fails the upper 32bit bit of
dma_addr_t will guaranteed to be zero, so you don't need to take them
into account for your hardware SGL.