/alps/pcitool

To get this branch, use:
bzr branch http://darksoft.org/webbzr/alps/pcitool

« back to all changes in this revision

Viewing changes to driver/kmem.c

  • Committer: Suren A. Chilingaryan
  • Date: 2015-11-20 05:04:08 UTC
  • Revision ID: csa@suren.me-20151120050408-jrzier07533vly8f
Support large DMA pages in IPEDMA

Show diffs side-by-side

added added

removed removed

Lines of Context:
56
56
                        return -EINVAL;
57
57
                    }
58
58
 
59
 
                    if ((kmem_handle->type&PCILIB_KMEM_TYPE_MASK) == PCILIB_KMEM_TYPE_PAGE) {
 
59
                    if (((kmem_handle->type&PCILIB_KMEM_TYPE_MASK) == PCILIB_KMEM_TYPE_PAGE)&&(kmem_handle->size == 0)) {
60
60
                            kmem_handle->size = kmem_entry->size;
61
61
                    } else if (kmem_handle->size != kmem_entry->size) {
62
62
                        mod_info("Invalid size of reusable kmem_entry, currently: %lu, but requested: %lu\n", kmem_entry->size, kmem_handle->size);
151
151
                kmem_handle->size = PAGE_SIZE;
152
152
            else if (kmem_handle->size%PAGE_SIZE)
153
153
                goto kmem_alloc_mem_fail;
 
154
            else 
 
155
                flags |= __GFP_COMP;
154
156
        
155
157
            retptr = (void*)__get_free_pages(flags, get_order(kmem_handle->size));
156
158
            kmem_entry->dma_handle = 0;
157
 
            
 
159
 
158
160
            if (retptr) {
159
161
                if (kmem_entry->type == PCILIB_KMEM_TYPE_DMA_S2C_PAGE) {
160
162
                    kmem_entry->direction = PCI_DMA_TODEVICE;