lkml.org 
[lkml]   [2007]   [Dec]   [20]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [ofa-general] iommu dma mapping alignment requirements
    Roland Dreier wrote:
    > > It appears that my problem boils down to a single host page of memory
    > > that is mapped for dma, and the dma address returned by dma_map_sg()
    > > is _not_ 64KB aligned. Here is an example:
    >
    > > My first question is: Is there an assumption or requirement in linux
    > > that dma_addressess should have the same alignment as the host address
    > > they are mapped to? IE the rdma core is mapping the entire 64KB page,
    > > but the mapping doesn't begin on a 64KB page boundary.
    >
    > I don't think this is explicitly documented anywhere, but it certainly
    > seems that we want the bus address to be page-aligned in this case.
    > For mthca/mlx4 at least, we tell the adapter what the host page size
    > is (so that it knows how to align doorbell pages etc) and I think this
    > sort of thing would confuse the HW.
    >
    > - R.


    In arch/powerpc/kernel/iommu.c:iommu_map_sg() I see that it calls
    iommu_range_alloc() with a alignment_order of 0:

    > vaddr = (unsigned long)page_address(s->page) + s->offset;
    > npages = iommu_num_pages(vaddr, slen);
    > entry = iommu_range_alloc(tbl, npages, &handle, mask >> IOMMU_PAGE_SHIFT, 0);

    But perhaps the alignment order needs to be based on the host page size?


    Steve.


    \
     
     \ /
      Last update: 2007-12-20 20:15    [W:0.021 / U:32.056 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site