arch: use memblock_alloc() instead of memblock_alloc_from(size, align, 0)
[linux] / arch / alpha / kernel / pci_iommu.c
index 46e08e0..e4cf77b 100644 (file)
@@ -87,13 +87,13 @@ iommu_arena_new_node(int nid, struct pci_controller *hose, dma_addr_t base,
                printk("%s: couldn't allocate arena ptes from node %d\n"
                       "    falling back to system-wide allocation\n",
                       __func__, nid);
-               arena->ptes = memblock_alloc_from(mem_size, align, 0);
+               arena->ptes = memblock_alloc(mem_size, align);
        }
 
 #else /* CONFIG_DISCONTIGMEM */
 
        arena = memblock_alloc(sizeof(*arena), SMP_CACHE_BYTES);
-       arena->ptes = memblock_alloc_from(mem_size, align, 0);
+       arena->ptes = memblock_alloc(mem_size, align);
 
 #endif /* CONFIG_DISCONTIGMEM */
 
@@ -291,7 +291,7 @@ pci_map_single_1(struct pci_dev *pdev, void *cpu_addr, size_t size,
           use direct_map above, it now must be considered an error. */
        if (! alpha_mv.mv_pci_tbi) {
                printk_once(KERN_WARNING "pci_map_single: no HW sg\n");
-               return 0;
+               return DMA_MAPPING_ERROR;
        }
 
        arena = hose->sg_pci;
@@ -307,7 +307,7 @@ pci_map_single_1(struct pci_dev *pdev, void *cpu_addr, size_t size,
        if (dma_ofs < 0) {
                printk(KERN_WARNING "pci_map_single failed: "
                       "could not allocate dma page tables\n");
-               return 0;
+               return DMA_MAPPING_ERROR;
        }
 
        paddr &= PAGE_MASK;
@@ -443,7 +443,7 @@ static void *alpha_pci_alloc_coherent(struct device *dev, size_t size,
        gfp &= ~GFP_DMA;
 
 try_again:
-       cpu_addr = (void *)__get_free_pages(gfp, order);
+       cpu_addr = (void *)__get_free_pages(gfp | __GFP_ZERO, order);
        if (! cpu_addr) {
                printk(KERN_INFO "pci_alloc_consistent: "
                       "get_free_pages failed from %pf\n",
@@ -455,7 +455,7 @@ try_again:
        memset(cpu_addr, 0, size);
 
        *dma_addrp = pci_map_single_1(pdev, cpu_addr, size, 0);
-       if (*dma_addrp == 0) {
+       if (*dma_addrp == DMA_MAPPING_ERROR) {
                free_pages((unsigned long)cpu_addr, order);
                if (alpha_mv.mv_pci_tbi || (gfp & GFP_DMA))
                        return NULL;
@@ -671,7 +671,7 @@ static int alpha_pci_map_sg(struct device *dev, struct scatterlist *sg,
                sg->dma_address
                  = pci_map_single_1(pdev, SG_ENT_VIRT_ADDRESS(sg),
                                     sg->length, dac_allowed);
-               return sg->dma_address != 0;
+               return sg->dma_address != DMA_MAPPING_ERROR;
        }
 
        start = sg;
@@ -935,11 +935,6 @@ iommu_unbind(struct pci_iommu_arena *arena, long pg_start, long pg_count)
        return 0;
 }
 
-static int alpha_pci_mapping_error(struct device *dev, dma_addr_t dma_addr)
-{
-       return dma_addr == 0;
-}
-
 const struct dma_map_ops alpha_pci_ops = {
        .alloc                  = alpha_pci_alloc_coherent,
        .free                   = alpha_pci_free_coherent,
@@ -947,7 +942,6 @@ const struct dma_map_ops alpha_pci_ops = {
        .unmap_page             = alpha_pci_unmap_page,
        .map_sg                 = alpha_pci_map_sg,
        .unmap_sg               = alpha_pci_unmap_sg,
-       .mapping_error          = alpha_pci_mapping_error,
        .dma_supported          = alpha_pci_supported,
 };
 EXPORT_SYMBOL(alpha_pci_ops);