(In reply to Matt Whitlock from comment #5) > I would venture a guess that the memory allocated for a GPU FIFO buffer > needs to be physically continuous, as it will be used for DMA I take it back. Looking into the source code, the allocation is happening in nvkm_ramht_new(…), which is allocating a struct nvkm_ramht containing a variably-sized array of struct nvkm_ramht_data elements. As these elements, in turn, contain pointers, it seems very unlikely that they'd be DMA'd, so presumably the struct nvkm_ramht doesn't need to be physically contiguous and could safely be allocated by vzalloc(…).