gpu: nvgpu: add CONFIG_NVGPU_DMABUF_HAS_DRVDATA

dma_buf private data is not supported in upstream kernel. Update
the logic of pin/unpin when this support is not present.

Separate out the related functions to new file and select logic
based on new config flag CONFIG_NVGPU_DMABUF_HAS_DRVDATA.

Bug 2834141

Change-Id: I921758727b1bfc3690f2ab26bccd9befae14d782
Signed-off-by: Sagar Kamble <skamble@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvgpu/+/2294098
Reviewed-by: Vijayakumar Subbu <vsubbu@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
Reviewed-by: Debarshi Dutta <ddutta@nvidia.com>
Reviewed-by: Jonathan Hunter <jonathanh@nvidia.com>
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
GVS: Gerrit_Virtual_Submit
This commit is contained in:
Sagar Kamble
2020-02-13 16:34:41 +05:30
committed by Alex Waterman
parent 98e84b8046
commit 74ae8bb20b
12 changed files with 352 additions and 222 deletions

View File

@@ -33,6 +33,7 @@
#include "ioctl_channel.h"
#include "os_linux.h"
#include "dmabuf.h"
#include "dmabuf_priv.h"
#include <nvgpu/hw/gk20a/hw_pbdma_gk20a.h>
@@ -399,10 +400,12 @@ int nvgpu_usermode_buf_from_dmabuf(struct gk20a *g, int dmabuf_fd,
goto put_dmabuf;
}
#ifdef CONFIG_NVGPU_DMABUF_HAS_DRVDATA
err = gk20a_dmabuf_alloc_drvdata(dmabuf, dev);
if (err != 0) {
goto put_dmabuf;
}
#endif
sgt = gk20a_mm_pin(dev, dmabuf, &attachment);
if (IS_ERR(sgt)) {