Magellan Linux

Annotation of /trunk/nvidia/1.0.6629/NVIDIA_kernel-1.0-6629-1175225.patch

Parent Directory Parent Directory | Revision Log Revision Log


Revision 153 - (hide annotations) (download)
Tue May 8 20:52:56 2007 UTC (17 years, 4 months ago) by niro
File size: 1877 byte(s)
-import

1 niro 153 diff -ru usr/src/nv/nv-linux.h usr/src/nv.1175225/nv-linux.h
2     --- usr/src/nv/nv-linux.h 2004-11-03 22:53:00.000000000 +0100
3     +++ usr/src/nv.1175225/nv-linux.h 2004-12-21 21:03:33.000000000 +0100
4     @@ -533,6 +533,7 @@
5     */
6     #if defined(CONFIG_SWIOTLB)
7     #define NV_SWIOTLB 1
8     +#define NV_SWIOTLB_MAX_RETRIES 16
9     extern int nv_swiotlb;
10     #endif
11    
12     @@ -950,10 +951,48 @@
13     sg_ptr->offset = (unsigned long)base & ~PAGE_MASK;
14     sg_ptr->length = num_pages * PAGE_SIZE;
15    
16     +#if defined(NV_SWIOTLB)
17     + i = NV_SWIOTLB_MAX_RETRIES;
18     + do {
19     + if (pci_map_sg(dev, sg_ptr, 1, PCI_DMA_BIDIRECTIONAL) == 0)
20     + return 1;
21     +
22     + if (sg_ptr->dma_address & ~PAGE_MASK)
23     + {
24     + struct scatterlist sg_tmp;
25     + pci_unmap_sg(dev, sg_ptr, num_pages, PCI_DMA_BIDIRECTIONAL);
26     +
27     + memset(&sg_tmp, 0, sizeof(struct scatterlist));
28     + sg_tmp.page = sg_ptr->page;
29     + sg_tmp.offset = sg_ptr->offset;
30     + sg_tmp.length = 2048;
31     +
32     + if (pci_map_sg(dev, &sg_tmp, 1, PCI_DMA_BIDIRECTIONAL) == 0)
33     + return 1;
34     +
35     + if (pci_map_sg(dev, sg_ptr, 1, PCI_DMA_BIDIRECTIONAL) == 0)
36     + {
37     + pci_unmap_sg(dev, &sg_tmp, num_pages, PCI_DMA_BIDIRECTIONAL);
38     + return 1;
39     + }
40     +
41     + pci_unmap_sg(dev, &sg_tmp, num_pages, PCI_DMA_BIDIRECTIONAL);
42     + }
43     + } while (i-- && sg_ptr->dma_address & ~PAGE_MASK);
44     +#else
45     if (pci_map_sg(dev, sg_ptr, 1, PCI_DMA_BIDIRECTIONAL) == 0)
46     {
47     return 1;
48     }
49     +#endif
50     +
51     + if (sg_ptr->dma_address & ~PAGE_MASK)
52     + {
53     + nv_printf(NV_DBG_ERRORS,
54     + "NVRM: VM: nv_sg_map_buffer: failed to obtain aligned mapping\n");
55     + pci_unmap_sg(dev, sg_ptr, num_pages, PCI_DMA_BIDIRECTIONAL);
56     + return 1;
57     + }
58    
59     NV_FIXUP_SWIOTLB_VIRT_ADDR_BUG(sg_ptr->dma_address);
60    

Properties

Name Value
svn:executable *