Bug #7634
Updated by Gordon Ross over 5 years ago
Some i915 hardware cannot handle DMA below 0xff000, so the driver would normally use DMA attributes like this: (Note the dma_attr_lo field) <pre> static ddi_dma_attr_t ppgt_dma_attr = { DMA_ATTR_V0, 0xff000U, /* dma_attr_addr_lo */ 0xffffffffU, /* dma_attr_addr_hi */ 0xffffffffU, /* dma_attr_count_max */ 4096, /* dma_attr_align */ 0x1fffU, /* dma_attr_burstsizes */ 1, /* dma_attr_minxfer */ 0xffffffffU, /* dma_attr_maxxfer */ 0xffffffffU, /* dma_attr_seg */ 1, /* dma_attr_sgllen, variable */ 4, /* dma_attr_granular */ DDI_DMA_FLAGERR, /* dma_attr_flags */ }; </pre> Unfortunately, ddi_dma_alloc fails when dma_attr_addr_lo > 0. Better DRM support on i915 needs that fixed. When this is fixed, we'll undo the (temporary) fix shown in: #7626 PPGTT setup problem