drm/ttm: Rework validation & memory space allocation (V3)
authorJerome Glisse <jglisse@redhat.com>
Tue, 8 Dec 2009 14:33:32 +0000 (15:33 +0100)
committerDave Airlie <airlied@redhat.com>
Thu, 10 Dec 2009 05:09:02 +0000 (15:09 +1000)
commitca262a9998d46196750bb19a9dc4bd465b170ff7
treeb128691e5c57f6305c5752ac5c1b09e6aedfb650
parenta2e68e92d384d37c8cc6bb7206d43b1eb9bc3f08
drm/ttm: Rework validation & memory space allocation (V3)

This change allow driver to pass sorted memory placement,
from most prefered placement to least prefered placement.
In order to avoid long function prototype a structure is
used to gather memory placement informations such as range
restriction (if you need a buffer to be in given range).
Range restriction is determined by fpfn & lpfn which are
the first page and last page number btw which allocation
can happen. If those fields are set to 0 ttm will assume
buffer can be put anywhere in the address space (thus it
avoids putting a burden on the driver to always properly
set those fields).

This patch also factor few functions like evicting first
entry of lru list or getting a memory space. This avoid
code duplication.

V2: Change API to use placement flags and array instead
    of packing placement order into a quadword.
V3: Make sure we set the appropriate mem.placement flag
    when validating or allocation memory space.

[Pending Thomas Hellstrom further review but okay
from preliminary review so far].

Signed-off-by: Jerome Glisse <jglisse@redhat.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
drivers/gpu/drm/ttm/ttm_bo.c
include/drm/ttm/ttm_bo_api.h
include/drm/ttm/ttm_bo_driver.h