ttm: merge ttm_backend & ttm_tt, introduce ttm dma allocator V5

Konrad Rzeszutek Wilk konrad.wilk at
Wed Nov 16 07:15:47 PST 2011

On Mon, Nov 14, 2011 at 01:54:27PM -0500, Jerome Glisse wrote:
> On Mon, Nov 14, 2011 at 05:06:42PM +0100, Thomas Hellstrom wrote:
> > On 11/14/2011 05:02 PM, Jerome Glisse wrote:
> > >On Mon, Nov 14, 2011 at 9:49 AM, Thomas Hellstrom<thellstrom at>  wrote:
> > >>On 11/11/2011 11:47 PM, j.glisse at wrote:
> > >>>So attached is updated serie of patch with fixes for swaping issue
> > >>>that also impacted memory accounting.
> > >>Jerome,
> > >>Out of interest, what was the swapping issue?
> > >>
> > >>/Thomas
> > >>
> > >>
> > >The page list was NULL and some access ended up freaking the kernel
> > >and oom kicked in for some reason i still don't understand. Bottom

Was it like this:

Nov 16 10:02:02 phenom kernel: [ 4477.232933] [TTM] Out of kernel memory.
Nov 16 10:02:02 phenom kernel: [ 4477.232958] radeon 0000:01:00.0: object_init failed for (12288, 0x00000002)
Nov 16 10:02:02 phenom kernel: [ 4477.232963] [drm:radeon_gem_object_create] *ERROR* Failed to allocate GEM object (12288, 2, 4096, -12)
Nov 16 10:02:02 phenom kernel: [ 4477.248329] [TTM] Out of kernel memory.

followed up with an OOM?

> > >line things were going south in a split second leaving me with no log
> > >or access, i thought it was accounting not working as it was what i
> > >tested at the time. I should have tested accouting without the
> > >patchset

Weirdly enough, I did _not_ see this with the patchset:

592d002 drm/ttm: remove userspace backed ttm object support
9f1cf44 drm/ttm: remove split btw highmen and lowmem page
d27ea32 drm/ttm: remove unused backend flags field
dad5ef9 drm/ttm: use ttm put pages function to properly restore cache attribute
6aa902d drm/ttm: overhaul memory accounting
60d0fa6 drm/ttm: convert page allocation to use page ptr array instead of list V4
abde3ec drm/ttm: test for dma_address array allocation failure
8145582 drm/ttm: merge ttm_backend and ttm_tt V2
0216e52 drm/ttm: introduce callback for ttm_tt populate & unpopulate V2
ecb0d22 ttm: Provide DMA aware TTM page pool code. V5
793dc40 swiotlb: Expose swiotlb_nr_tlb function to modules
767aa47 drm/radeon/kms: Enable the TTM DMA pool if swiotlb is on V2
e91d0f0 drm/nouveau: enable the TTM DMA pool on 32-bit DMA only device V2
6eda9c3 ttm:dma: Add 'ttm_dma' module to radeon and nouveau to force enable the TTM DMA

which I think was your V4 posting (or earlier) (the last patch is something I added
to toggle it off/on to test).

The latest (V5) hit the OOM quite fast - took about an hour or two of me
answering emails (mutt inside gnome-terminal) and using both chrome and firefox,
and running a make -j10 on the Linux kernel.

Time to turn on more debugging :-)

More information about the dri-devel mailing list