drm/nouveau: pass nvif_client to nouveau_bo_new() instead of drm_device

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
This commit is contained in:
Ben Skeggs 2016-05-24 17:26:48 +10:00
parent d2ee360564
commit bab7cc18d3
10 changed files with 20 additions and 15 deletions

View File

@ -1124,8 +1124,9 @@ nv04_crtc_create(struct drm_device *dev, int crtc_num)
drm_crtc_helper_add(&nv_crtc->base, &nv04_crtc_helper_funcs); drm_crtc_helper_add(&nv_crtc->base, &nv04_crtc_helper_funcs);
drm_mode_crtc_set_gamma_size(&nv_crtc->base, 256); drm_mode_crtc_set_gamma_size(&nv_crtc->base, 256);
ret = nouveau_bo_new(dev, 64*64*4, 0x100, TTM_PL_FLAG_VRAM, ret = nouveau_bo_new(&nouveau_drm(dev)->client, 64*64*4, 0x100,
0, 0x0000, NULL, NULL, &nv_crtc->cursor.nvbo); TTM_PL_FLAG_VRAM, 0, 0x0000, NULL, NULL,
&nv_crtc->cursor.nvbo);
if (!ret) { if (!ret) {
ret = nouveau_bo_pin(nv_crtc->cursor.nvbo, TTM_PL_FLAG_VRAM, false); ret = nouveau_bo_pin(nv_crtc->cursor.nvbo, TTM_PL_FLAG_VRAM, false);
if (!ret) { if (!ret) {

View File

@ -174,12 +174,12 @@ nouveau_bo_fixup_align(struct nouveau_bo *nvbo, u32 flags,
} }
int int
nouveau_bo_new(struct drm_device *dev, int size, int align, nouveau_bo_new(struct nouveau_cli *cli, int size, int align,
uint32_t flags, uint32_t tile_mode, uint32_t tile_flags, uint32_t flags, uint32_t tile_mode, uint32_t tile_flags,
struct sg_table *sg, struct reservation_object *robj, struct sg_table *sg, struct reservation_object *robj,
struct nouveau_bo **pnvbo) struct nouveau_bo **pnvbo)
{ {
struct nouveau_drm *drm = nouveau_drm(dev); struct nouveau_drm *drm = nouveau_drm(cli->dev);
struct nouveau_bo *nvbo; struct nouveau_bo *nvbo;
size_t acc_size; size_t acc_size;
int ret; int ret;
@ -208,6 +208,7 @@ nouveau_bo_new(struct drm_device *dev, int size, int align,
nvbo->tile_mode = tile_mode; nvbo->tile_mode = tile_mode;
nvbo->tile_flags = tile_flags; nvbo->tile_flags = tile_flags;
nvbo->bo.bdev = &drm->ttm.bdev; nvbo->bo.bdev = &drm->ttm.bdev;
nvbo->cli = cli;
if (!nvxx_device(&drm->device)->func->cpu_coherent) if (!nvxx_device(&drm->device)->func->cpu_coherent)
nvbo->force_coherent = flags & TTM_PL_FLAG_UNCACHED; nvbo->force_coherent = flags & TTM_PL_FLAG_UNCACHED;

View File

@ -26,6 +26,8 @@ struct nouveau_bo {
struct list_head vma_list; struct list_head vma_list;
unsigned page_shift; unsigned page_shift;
struct nouveau_cli *cli;
u32 tile_mode; u32 tile_mode;
u32 tile_flags; u32 tile_flags;
struct nouveau_drm_tile *tile; struct nouveau_drm_tile *tile;
@ -69,7 +71,7 @@ nouveau_bo_ref(struct nouveau_bo *ref, struct nouveau_bo **pnvbo)
extern struct ttm_bo_driver nouveau_bo_driver; extern struct ttm_bo_driver nouveau_bo_driver;
void nouveau_bo_move_init(struct nouveau_drm *); void nouveau_bo_move_init(struct nouveau_drm *);
int nouveau_bo_new(struct drm_device *, int size, int align, u32 flags, int nouveau_bo_new(struct nouveau_cli *, int size, int align, u32 flags,
u32 tile_mode, u32 tile_flags, struct sg_table *sg, u32 tile_mode, u32 tile_flags, struct sg_table *sg,
struct reservation_object *robj, struct reservation_object *robj,
struct nouveau_bo **); struct nouveau_bo **);

View File

@ -113,7 +113,7 @@ nouveau_channel_prep(struct nouveau_drm *drm, struct nvif_device *device,
if (nouveau_vram_pushbuf) if (nouveau_vram_pushbuf)
target = TTM_PL_FLAG_VRAM; target = TTM_PL_FLAG_VRAM;
ret = nouveau_bo_new(drm->dev, size, 0, target, 0, 0, NULL, NULL, ret = nouveau_bo_new(cli, size, 0, target, 0, 0, NULL, NULL,
&chan->push.buffer); &chan->push.buffer);
if (ret == 0) { if (ret == 0) {
ret = nouveau_bo_pin(chan->push.buffer, target, false); ret = nouveau_bo_pin(chan->push.buffer, target, false);

View File

@ -194,7 +194,7 @@ nouveau_gem_new(struct drm_device *dev, int size, int align, uint32_t domain,
if (domain & NOUVEAU_GEM_DOMAIN_COHERENT) if (domain & NOUVEAU_GEM_DOMAIN_COHERENT)
flags |= TTM_PL_FLAG_UNCACHED; flags |= TTM_PL_FLAG_UNCACHED;
ret = nouveau_bo_new(dev, size, align, flags, tile_mode, ret = nouveau_bo_new(&drm->client, size, align, flags, tile_mode,
tile_flags, NULL, NULL, pnvbo); tile_flags, NULL, NULL, pnvbo);
if (ret) if (ret)
return ret; return ret;

View File

@ -60,6 +60,7 @@ struct drm_gem_object *nouveau_gem_prime_import_sg_table(struct drm_device *dev,
struct dma_buf_attachment *attach, struct dma_buf_attachment *attach,
struct sg_table *sg) struct sg_table *sg)
{ {
struct nouveau_drm *drm = nouveau_drm(dev);
struct nouveau_bo *nvbo; struct nouveau_bo *nvbo;
struct reservation_object *robj = attach->dmabuf->resv; struct reservation_object *robj = attach->dmabuf->resv;
u32 flags = 0; u32 flags = 0;
@ -68,7 +69,7 @@ struct drm_gem_object *nouveau_gem_prime_import_sg_table(struct drm_device *dev,
flags = TTM_PL_FLAG_TT; flags = TTM_PL_FLAG_TT;
ww_mutex_lock(&robj->lock, NULL); ww_mutex_lock(&robj->lock, NULL);
ret = nouveau_bo_new(dev, attach->dmabuf->size, 0, flags, 0, 0, ret = nouveau_bo_new(&drm->client, attach->dmabuf->size, 0, flags, 0, 0,
sg, robj, &nvbo); sg, robj, &nvbo);
ww_mutex_unlock(&robj->lock); ww_mutex_unlock(&robj->lock);
if (ret) if (ret)

View File

@ -129,7 +129,7 @@ nv17_fence_create(struct nouveau_drm *drm)
priv->base.context_base = dma_fence_context_alloc(priv->base.contexts); priv->base.context_base = dma_fence_context_alloc(priv->base.contexts);
spin_lock_init(&priv->lock); spin_lock_init(&priv->lock);
ret = nouveau_bo_new(drm->dev, 4096, 0x1000, TTM_PL_FLAG_VRAM, ret = nouveau_bo_new(&drm->client, 4096, 0x1000, TTM_PL_FLAG_VRAM,
0, 0x0000, NULL, NULL, &priv->bo); 0, 0x0000, NULL, NULL, &priv->bo);
if (!ret) { if (!ret) {
ret = nouveau_bo_pin(priv->bo, TTM_PL_FLAG_VRAM, false); ret = nouveau_bo_pin(priv->bo, TTM_PL_FLAG_VRAM, false);

View File

@ -2428,7 +2428,7 @@ nv50_head_create(struct drm_device *dev, int index)
drm_crtc_helper_add(crtc, &nv50_head_help); drm_crtc_helper_add(crtc, &nv50_head_help);
drm_mode_crtc_set_gamma_size(crtc, 256); drm_mode_crtc_set_gamma_size(crtc, 256);
ret = nouveau_bo_new(dev, 8192, 0x100, TTM_PL_FLAG_VRAM, ret = nouveau_bo_new(&drm->client, 8192, 0x100, TTM_PL_FLAG_VRAM,
0, 0x0000, NULL, NULL, &head->base.lut.nvbo); 0, 0x0000, NULL, NULL, &head->base.lut.nvbo);
if (!ret) { if (!ret) {
ret = nouveau_bo_pin(head->base.lut.nvbo, TTM_PL_FLAG_VRAM, true); ret = nouveau_bo_pin(head->base.lut.nvbo, TTM_PL_FLAG_VRAM, true);
@ -4451,7 +4451,7 @@ nv50_display_create(struct drm_device *dev)
dev->driver->driver_features |= DRIVER_ATOMIC; dev->driver->driver_features |= DRIVER_ATOMIC;
/* small shared memory area we use for notifiers and semaphores */ /* small shared memory area we use for notifiers and semaphores */
ret = nouveau_bo_new(dev, 4096, 0x1000, TTM_PL_FLAG_VRAM, ret = nouveau_bo_new(&drm->client, 4096, 0x1000, TTM_PL_FLAG_VRAM,
0, 0x0000, NULL, NULL, &disp->sync); 0, 0x0000, NULL, NULL, &disp->sync);
if (!ret) { if (!ret) {
ret = nouveau_bo_pin(disp->sync, TTM_PL_FLAG_VRAM, true); ret = nouveau_bo_pin(disp->sync, TTM_PL_FLAG_VRAM, true);

View File

@ -82,7 +82,7 @@ nv50_fence_create(struct nouveau_drm *drm)
priv->base.context_base = dma_fence_context_alloc(priv->base.contexts); priv->base.context_base = dma_fence_context_alloc(priv->base.contexts);
spin_lock_init(&priv->lock); spin_lock_init(&priv->lock);
ret = nouveau_bo_new(drm->dev, 4096, 0x1000, TTM_PL_FLAG_VRAM, ret = nouveau_bo_new(&drm->client, 4096, 0x1000, TTM_PL_FLAG_VRAM,
0, 0x0000, NULL, NULL, &priv->bo); 0, 0x0000, NULL, NULL, &priv->bo);
if (!ret) { if (!ret) {
ret = nouveau_bo_pin(priv->bo, TTM_PL_FLAG_VRAM, false); ret = nouveau_bo_pin(priv->bo, TTM_PL_FLAG_VRAM, false);

View File

@ -219,8 +219,8 @@ nv84_fence_create(struct nouveau_drm *drm)
* will lose CPU/GPU coherency! * will lose CPU/GPU coherency!
*/ */
TTM_PL_FLAG_TT | TTM_PL_FLAG_UNCACHED; TTM_PL_FLAG_TT | TTM_PL_FLAG_UNCACHED;
ret = nouveau_bo_new(drm->dev, 16 * priv->base.contexts, 0, domain, 0, ret = nouveau_bo_new(&drm->client, 16 * priv->base.contexts, 0,
0, NULL, NULL, &priv->bo); domain, 0, 0, NULL, NULL, &priv->bo);
if (ret == 0) { if (ret == 0) {
ret = nouveau_bo_pin(priv->bo, domain, false); ret = nouveau_bo_pin(priv->bo, domain, false);
if (ret == 0) { if (ret == 0) {
@ -233,7 +233,7 @@ nv84_fence_create(struct nouveau_drm *drm)
} }
if (ret == 0) if (ret == 0)
ret = nouveau_bo_new(drm->dev, 16 * priv->base.contexts, 0, ret = nouveau_bo_new(&drm->client, 16 * priv->base.contexts, 0,
TTM_PL_FLAG_TT | TTM_PL_FLAG_UNCACHED, 0, TTM_PL_FLAG_TT | TTM_PL_FLAG_UNCACHED, 0,
0, NULL, NULL, &priv->bo_gart); 0, NULL, NULL, &priv->bo_gart);
if (ret == 0) { if (ret == 0) {