Hello, On 2016-02-12 06:55, Inki Dae wrote: > Hi Marek, > > 2016ë 02ì 03ì¼ 21:42ì Marek Szyprowski ì´(ê°) ì´ ê¸: >> Virtual DRM device is used for memory allocation for GEM objects. On >> some architectures null dma operations are assigned for virtual devices >> if no explicit initialization has been made. >> >> Signed-off-by: Marek Szyprowski <m.szyprowski at samsung.com> >> --- >> drivers/gpu/drm/exynos/exynos_drm_drv.c | 1 + >> 1 file changed, 1 insertion(+) >> >> diff --git a/drivers/gpu/drm/exynos/exynos_drm_drv.c >> b/drivers/gpu/drm/exynos/exynos_drm_drv.c >> index 68f0f36..a33ea44 100644 >> --- a/drivers/gpu/drm/exynos/exynos_drm_drv.c >> +++ b/drivers/gpu/drm/exynos/exynos_drm_drv.c >> @@ -144,6 +144,7 @@ static int exynos_drm_load(struct drm_device *dev, >> unsigned long flags) >> init_waitqueue_head(&private->wait); >> spin_lock_init(&private->lock); >> >> + arch_setup_dma_ops(dev->dev, 0, DMA_BIT_MASK(32), false, false); > As you got the report, above function incurrs build error below, > ERROR: "arch_setup_dma_ops" [drivers/gpu/drm/exynos/exynosdrm.ko] undefined! > > Exynos drm can be built as a module. In this case, arch_setup_dma_ops cannot > be accessed by the module. > > I could fix it easily like below but I'm not sure that it's reasonable. > > +extern void arch_setup_dma_ops(struct device *dev, u64 dma_base, > + u64 size, struct iommu_ops *iommu, > + bool coherent) { };
I don't think this is a good idea - the result will be same as not applying the patch at all. Please drop this patch for now, I will rework it while adding support for generic IOMMU for ARM and ARM64. Best regards -- Marek Szyprowski, PhD Samsung R&D Institute Poland