import of upstream 2.4.34.4 from kernel.org
[linux-2.4.git] / arch / x86_64 / kernel / pci-nommu.c
1 #include <linux/mm.h>
2 #include <linux/init.h>
3 #include <linux/pci.h>
4 #include <linux/string.h>
5
6 /* 
7  * Dummy IO MMU functions
8  */
9
10 extern unsigned long end_pfn;
11
12 void *pci_alloc_consistent(struct pci_dev *hwdev, size_t size,
13                            dma_addr_t *dma_handle)
14 {
15         void *ret;
16         int gfp = GFP_ATOMIC;
17         
18         if (hwdev == NULL ||
19             end_pfn > (hwdev->dma_mask>>PAGE_SHIFT) ||  /* XXX */
20             (u32)hwdev->dma_mask < 0xffffffff)
21                 gfp |= GFP_DMA;
22         ret = (void *)__get_free_pages(gfp, get_order(size));
23
24         if (ret != NULL) {
25                 memset(ret, 0, size);
26                 *dma_handle = virt_to_bus(ret);
27         }
28         return ret;
29 }
30
31 void pci_free_consistent(struct pci_dev *hwdev, size_t size,
32                          void *vaddr, dma_addr_t dma_handle)
33 {
34         free_pages((unsigned long)vaddr, get_order(size));
35 }
36
37
38 static void __init check_ram(void) 
39
40         if (end_pfn >= 0xffffffff>>PAGE_SHIFT) { 
41                 printk(KERN_ERR "WARNING more than 4GB of memory but no IOMMU.\n"
42                        KERN_ERR "WARNING 32bit PCI may malfunction.\n"); 
43                 /* Could play with highmem_start_page here to trick some subsystems
44                    into bounce buffers. Unfortunately that would require setting
45                    CONFIG_HIGHMEM too. 
46                  */ 
47         } 
48