Message ID | 1490953652-3703-3-git-send-email-deathsimple@vodafone.de (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On 31.03.2017 11:47, Christian König wrote: > From: Christian König <christian.koenig@amd.com> > > This allows drivers to specify if they need a contiguous allocation or not. > > v2: use space instead of tab > > Signed-off-by: Christian König <christian.koenig@amd.com> Patches 1-3: Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com> Patch 4: Acked-by: Nicolai Hähnle <nicolai.haehnle@amd.com> > --- > drivers/gpu/drm/ttm/ttm_bo.c | 4 +++- > include/drm/ttm/ttm_placement.h | 1 + > 2 files changed, 4 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/ttm/ttm_bo.c b/drivers/gpu/drm/ttm/ttm_bo.c > index 348b17e..da37cdf 100644 > --- a/drivers/gpu/drm/ttm/ttm_bo.c > +++ b/drivers/gpu/drm/ttm/ttm_bo.c > @@ -1062,7 +1062,9 @@ static bool ttm_bo_places_compat(const struct ttm_place *places, > > *new_flags = heap->flags; > if ((*new_flags & mem->placement & TTM_PL_MASK_CACHING) && > - (*new_flags & mem->placement & TTM_PL_MASK_MEM)) > + (*new_flags & mem->placement & TTM_PL_MASK_MEM) && > + (!(*new_flags & TTM_PL_FLAG_CONTIGUOUS) || > + (mem->placement & TTM_PL_FLAG_CONTIGUOUS))) > return true; > } > return false; > diff --git a/include/drm/ttm/ttm_placement.h b/include/drm/ttm/ttm_placement.h > index 932be0c..e88a8e3 100644 > --- a/include/drm/ttm/ttm_placement.h > +++ b/include/drm/ttm/ttm_placement.h > @@ -63,6 +63,7 @@ > #define TTM_PL_FLAG_CACHED (1 << 16) > #define TTM_PL_FLAG_UNCACHED (1 << 17) > #define TTM_PL_FLAG_WC (1 << 18) > +#define TTM_PL_FLAG_CONTIGUOUS (1 << 19) > #define TTM_PL_FLAG_NO_EVICT (1 << 21) > #define TTM_PL_FLAG_TOPDOWN (1 << 22) > >
diff --git a/drivers/gpu/drm/ttm/ttm_bo.c b/drivers/gpu/drm/ttm/ttm_bo.c index 348b17e..da37cdf 100644 --- a/drivers/gpu/drm/ttm/ttm_bo.c +++ b/drivers/gpu/drm/ttm/ttm_bo.c @@ -1062,7 +1062,9 @@ static bool ttm_bo_places_compat(const struct ttm_place *places, *new_flags = heap->flags; if ((*new_flags & mem->placement & TTM_PL_MASK_CACHING) && - (*new_flags & mem->placement & TTM_PL_MASK_MEM)) + (*new_flags & mem->placement & TTM_PL_MASK_MEM) && + (!(*new_flags & TTM_PL_FLAG_CONTIGUOUS) || + (mem->placement & TTM_PL_FLAG_CONTIGUOUS))) return true; } return false; diff --git a/include/drm/ttm/ttm_placement.h b/include/drm/ttm/ttm_placement.h index 932be0c..e88a8e3 100644 --- a/include/drm/ttm/ttm_placement.h +++ b/include/drm/ttm/ttm_placement.h @@ -63,6 +63,7 @@ #define TTM_PL_FLAG_CACHED (1 << 16) #define TTM_PL_FLAG_UNCACHED (1 << 17) #define TTM_PL_FLAG_WC (1 << 18) +#define TTM_PL_FLAG_CONTIGUOUS (1 << 19) #define TTM_PL_FLAG_NO_EVICT (1 << 21) #define TTM_PL_FLAG_TOPDOWN (1 << 22)