[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] Question regarding SLAB corruption



On Mon, Jul 09, 2007 at 09:31:16AM +0100, Keir Fraser wrote:
> Nope. To get contiguous pages on Xen you need to use pci_alloc_consistent,
> or pci_map_single, or similar. Most drivers are okay with this, because you
> are not supposed to program DMA without having got a dma_addr_t from Linux's
> DMA API, and we hook into the DMA API to serve up contiguous regions (via
> the swiotlb [ie. bounce buffers], if necessary).

According to IB developers, it uses alloc_pages and then pci_map_sg which they
state that is DMA API. So, is it correct approach?

I did debug like this - so it prints physical and virtual addresses and they 
seems to be perfectly contiguous. Are the physical addresses real physical 
addresses or virtualized by Xen hypervisor?

static int mthca_alloc_icm_pages(struct mthca_dev *pdev, struct device *dev, 
struct scatterlist *mem, int order, gfp_t gfp_mask)
{
        int o;
        void *page;
        mem->page = alloc_pages(gfp_mask, order);
        if (!mem->page)
                return -ENOMEM;
        mthca_err(pdev, "Alloc pages starts\n");
        page = page_address(mem->page);
        o = PAGE_SIZE << order;
        while(o > 0) {
                mthca_err(pdev, "Page phys. addr %p, virt %p\n", 
virt_to_phys(page), page);
                o  -= PAGE_SIZE;
                page += PAGE_SIZE;
        }
        mem->length = PAGE_SIZE << order;
        mem->offset = 0;
        return 0;
}

-- 
Lukáš Hejtmánek

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.