On Thu, Mar 04, 2021 at 08:46:26AM +0100, Christian König wrote: > Hi Oak, > > as far as I know some architectures like PowerPC/ARM/MIPS need that. And we > at least officially support PowerPC and ARM and MIPS is best effort and > shouldn't break if possible. > > Thomas just recently had a whole bunch of DMA-buf patches to also fix that > up for DMA-bufs vmap as well, previously we have just been casting away the > __iomem and hoped that it always works. On that, rolling out struct dma_buf_map to ttm and drivers I think would clean up a lot of this __iomem handling rather nicely. -Daniel > > Regards, > Christian. > > Am 03.03.21 um 21:59 schrieb Zeng, Oak: > > > > [AMD Official Use Only - Internal Distribution Only] > > > > > > Hi Christian, > > > > Can you explain why __iomem annotation is mandatory for amdgpu driver? > > If this is the case, we can’t switch to memremap. The only fix seems to > > me is add a #ifdef __x86_64__ to the ioremap_cache codes. > > > > Regards, > > > > Oak > > > > *From:* Christian König <ckoenig.leichtzumerken@xxxxxxxxx> > > *Sent:* Wednesday, March 3, 2021 5:46 AM > > *To:* Zeng, Oak <Oak.Zeng@xxxxxxx>; amd-gfx@xxxxxxxxxxxxxxxxxxxxx; > > dri-devel@xxxxxxxxxxxxxxxxxxxxx; Daniel Vetter <daniel@xxxxxxxx>; Dave > > Airlie <airlied@xxxxxxxxxx>; Thomas Hellström (Intel) > > <thomas_os@xxxxxxxxxxxx>; dan.j.williams@xxxxxxxxx > > *Cc:* kbuild-all@xxxxxxxxxxxx; Kuehling, Felix <Felix.Kuehling@xxxxxxx>; > > Kasiviswanathan, Harish <Harish.Kasiviswanathan@xxxxxxx>; Deucher, > > Alexander <Alexander.Deucher@xxxxxxx>; Huang, JinHuiEric > > <JinHuiEric.Huang@xxxxxxx>; Koenig, Christian <Christian.Koenig@xxxxxxx> > > *Subject:* Re: [PATCH] drm/ttm: ioremap buffer according to TTM mem > > caching setting > > > > Hi Oak, > > > > > > config: parisc-randconfig-r012-20210302 (attached as .config) > > > > > > It's not the Intel driver build which fails here, but the build bot is > > just hosted by Intel. > > > > The problem is that the parisc architecture doesn't defines the > > ioremap_cache() function. > > > > I've looked at using memremap() instead of ioremap_cache(). The problem > > is that we do support architectures with the TTM as well as amndgpu code > > where the __iomem annotation is mandatory and correct. > > > > Regards, > > Christian. > > > > Am 02.03.21 um 23:45 schrieb Zeng, Oak: > > > > [AMD Official Use Only - Internal Distribution Only] > > > > Hi Daniel, Thomas, Dan, > > > > Does below message mean the calling ioremap_cache failed intel’s > > driver build? I can see both ioremap_cache and ioremap_wc are > > defined in arch/x86/mm/ioremap.c – why ioremap_wc doesn’t break > > intel driver’s build? > > > > Are we supposed to use memremap (offset, size, MEMREMAP_WB) to > > replace ioremap_cache? When I read here > > https://lwn.net/Articles/653585/ > > <https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Flwn.net%2FArticles%2F653585%2F&data=04%7C01%7COak.Zeng%40amd.com%7Cc047ecb316df47cde7ed08d8de3188d4%7C3dd8961fe4884e608e11a82d994e183d%7C0%7C0%7C637503651624296472%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=ljCFrIfrYbb%2FXmKKS2TJ7dSQ7oCRNWoUhWS4gEBv%2FW4%3D&reserved=0> > > I felt that ioremap_cache returns an address annotated with _iomem > > while memremap returns an address without __iomem annotation. In > > our use case, GPU memory is treated as UEFI SPM (specific purpose > > memory). I am not very sure whether memremap (thus no __iomem > > annotation) is the right thing to do. What I am sure is, we have > > tested ioremap_cache and it works fine on AMD system. > > > > I will send out a test patch replacing ioremap_cache with > > ioremap_wc, to trigger Intel build robot to see whether it fails > > Intel build. I suppose it will not fail Intel build. > > > > Regards, > > > > Oak > > > > *From:* Christian König <ckoenig.leichtzumerken@xxxxxxxxx> > > <mailto:ckoenig.leichtzumerken@xxxxxxxxx> > > *Sent:* Tuesday, March 2, 2021 6:31 AM > > *To:* amd-gfx@xxxxxxxxxxxxxxxxxxxxx > > <mailto:amd-gfx@xxxxxxxxxxxxxxxxxxxxx>; > > dri-devel@xxxxxxxxxxxxxxxxxxxxx > > <mailto:dri-devel@xxxxxxxxxxxxxxxxxxxxx>; Daniel Vetter > > <daniel@xxxxxxxx> <mailto:daniel@xxxxxxxx>; Dave Airlie > > <airlied@xxxxxxxxxx> <mailto:airlied@xxxxxxxxxx>; Thomas Hellström > > (Intel) <thomas_os@xxxxxxxxxxxx> <mailto:thomas_os@xxxxxxxxxxxx> > > *Cc:* Zeng, Oak <Oak.Zeng@xxxxxxx> <mailto:Oak.Zeng@xxxxxxx>; > > kbuild-all@xxxxxxxxxxxx <mailto:kbuild-all@xxxxxxxxxxxx>; > > Kuehling, Felix <Felix.Kuehling@xxxxxxx> > > <mailto:Felix.Kuehling@xxxxxxx>; Kasiviswanathan, Harish > > <Harish.Kasiviswanathan@xxxxxxx> > > <mailto:Harish.Kasiviswanathan@xxxxxxx>; Deucher, Alexander > > <Alexander.Deucher@xxxxxxx> <mailto:Alexander.Deucher@xxxxxxx>; > > Huang, JinHuiEric <JinHuiEric.Huang@xxxxxxx> > > <mailto:JinHuiEric.Huang@xxxxxxx>; Koenig, Christian > > <Christian.Koenig@xxxxxxx> <mailto:Christian.Koenig@xxxxxxx> > > *Subject:* Re: [PATCH] drm/ttm: ioremap buffer according to TTM > > mem caching setting > > > > Hi guys, > > > > adding the usual suspects direct. Does anybody of hand know how to > > check if an architecture supports ioremap_cache()? > > > > For now we only need this on X86, but I would feel better if we > > don't use an #ifdef here. > > > > Regards, > > Christian. > > > > Am 02.03.21 um 05:12 schrieb kernel test robot: > > > > Hi Oak, > > > > > > Thank you for the patch! Yet something to improve: > > > > > > [auto build test ERROR on drm-intel/for-linux-next] > > > > [also build test ERROR on drm-tip/drm-tip linus/master v5.12-rc1 next-20210302] > > > > [cannot apply to tegra-drm/drm/tegra/for-next drm-exynos/exynos-drm-next drm/drm-next] > > > > [If your patch is applied to the wrong git tree, kindly drop us a note. > > > > And when submitting patch, we suggest to use '--base' as documented in > > > > https://git-scm.com/docs/git-format-patch <https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgit-scm.com%2Fdocs%2Fgit-format-patch&data=04%7C01%7COak.Zeng%40amd.com%7Cc047ecb316df47cde7ed08d8de3188d4%7C3dd8961fe4884e608e11a82d994e183d%7C0%7C0%7C637503651624306464%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=3f5ib%2FlZ6DXXF%2Bk1rXPKGu1IkOhXHdkUmX3obtuIRtA%3D&reserved=0>] > > > > > > url:https://github.com/0day-ci/linux/commits/Oak-Zeng/drm-ttm-ioremap-buffer-according-to-TTM-mem-caching-setting/20210302-064500 <https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2F0day-ci%2Flinux%2Fcommits%2FOak-Zeng%2Fdrm-ttm-ioremap-buffer-according-to-TTM-mem-caching-setting%2F20210302-064500&data=04%7C01%7COak.Zeng%40amd.com%7Cc047ecb316df47cde7ed08d8de3188d4%7C3dd8961fe4884e608e11a82d994e183d%7C0%7C0%7C637503651624306464%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=Y9h9ZHM7d2Sqo3XQWr%2Frpb2DAk9SkHFIm5nD4ABFNbE%3D&reserved=0> > > > > base: git://anongit.freedesktop.org/drm-intel for-linux-next > > > > config: parisc-randconfig-r012-20210302 (attached as .config) > > > > compiler: hppa-linux-gcc (GCC) 9.3.0 > > > > reproduce (this is a W=1 build): > > > > wgethttps://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross <https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Fraw.githubusercontent.com%2Fintel%2Flkp-tests%2Fmaster%2Fsbin%2Fmake.cross&data=04%7C01%7COak.Zeng%40amd.com%7Cc047ecb316df47cde7ed08d8de3188d4%7C3dd8961fe4884e608e11a82d994e183d%7C0%7C0%7C637503651624316464%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=wGo3Nwk4mWZjb2W3E7qKf3FtKzLOxCVmQu1zd2rmzRU%3D&reserved=0> -O ~/bin/make.cross > > > > chmod +x ~/bin/make.cross > > > > #https://github.com/0day-ci/linux/commit/225bb3711439ec559dd72ae5af8e62d34ea60a64 <https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2F0day-ci%2Flinux%2Fcommit%2F225bb3711439ec559dd72ae5af8e62d34ea60a64&data=04%7C01%7COak.Zeng%40amd.com%7Cc047ecb316df47cde7ed08d8de3188d4%7C3dd8961fe4884e608e11a82d994e183d%7C0%7C0%7C637503651624316464%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=kOz18UAawmA4SZ6IrCGRt4HISfsmmjfGN2TUgAtm0Ak%3D&reserved=0> > > > > git remote add linux-reviewhttps://github.com/0day-ci/linux <https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2F0day-ci%2Flinux&data=04%7C01%7COak.Zeng%40amd.com%7Cc047ecb316df47cde7ed08d8de3188d4%7C3dd8961fe4884e608e11a82d994e183d%7C0%7C0%7C637503651624326458%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=QnKs47gjzAz%2Fjv%2FAO6H%2BwYNQF6mdk1D8dCNveW0YHuM%3D&reserved=0> > > > > git fetch --no-tags linux-review Oak-Zeng/drm-ttm-ioremap-buffer-according-to-TTM-mem-caching-setting/20210302-064500 > > > > git checkout 225bb3711439ec559dd72ae5af8e62d34ea60a64 > > > > # save the attached .config to linux build tree > > > > COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=parisc > > > > > > If you fix the issue, kindly add following tag as appropriate > > > > Reported-by: kernel test robot<lkp@xxxxxxxxx> <mailto:lkp@xxxxxxxxx> > > > > > > All errors (new ones prefixed by >>): > > > > > > drivers/gpu/drm/ttm/ttm_bo_util.c: In function 'ttm_resource_ioremap': > > > > drivers/gpu/drm/ttm/ttm_bo_util.c:95:11: error: implicit declaration of function 'ioremap_cache'; did you mean 'ioremap_uc'? [-Werror=implicit-function-declaration] > > > > 95 | addr = ioremap_cache(mem->bus.offset, bus_size); > > > > | ^~~~~~~~~~~~~ > > > > | ioremap_uc > > > > drivers/gpu/drm/ttm/ttm_bo_util.c:95:9: warning: assignment to 'void *' from 'int' makes pointer from integer without a cast [-Wint-conversion] > > > > 95 | addr = ioremap_cache(mem->bus.offset, bus_size); > > > > | ^ > > > > drivers/gpu/drm/ttm/ttm_bo_util.c: In function 'ttm_bo_ioremap': > > > > drivers/gpu/drm/ttm/ttm_bo_util.c:379:17: warning: assignment to 'void *' from 'int' makes pointer from integer without a cast [-Wint-conversion] > > > > 379 | map->virtual = ioremap_cache(bo->mem.bus.offset + offset, > > > > | ^ > > > > drivers/gpu/drm/ttm/ttm_bo_util.c: In function 'ttm_bo_vmap': > > > > drivers/gpu/drm/ttm/ttm_bo_util.c:500:16: warning: assignment to 'void *' from 'int' makes pointer from integer without a cast [-Wint-conversion] > > > > 500 | vaddr_iomem = ioremap_cache(mem->bus.offset, > > > > | ^ > > > > cc1: some warnings being treated as errors > > > > > > > > vim +95 drivers/gpu/drm/ttm/ttm_bo_util.c > > > > > > 74 > > > > 75 static int ttm_resource_ioremap(struct ttm_bo_device *bdev, > > > > 76 struct ttm_resource *mem, > > > > 77 void **virtual) > > > > 78 { > > > > 79 int ret; > > > > 80 void *addr; > > > > 81 > > > > 82 *virtual = NULL; > > > > 83 ret = ttm_mem_io_reserve(bdev, mem); > > > > 84 if (ret || !mem->bus.is_iomem) > > > > 85 return ret; > > > > 86 > > > > 87 if (mem->bus.addr) { > > > > 88 addr = mem->bus.addr; > > > > 89 } else { > > > > 90 size_t bus_size = (size_t)mem->num_pages << PAGE_SHIFT; > > > > 91 > > > > 92 if (mem->bus.caching == ttm_write_combined) > > > > 93 addr = ioremap_wc(mem->bus.offset, bus_size); > > > > 94 else if (mem->bus.caching == ttm_cached) > > > > > 95 addr = ioremap_cache(mem->bus.offset, bus_size); > > > > 96 else > > > > 97 addr = ioremap(mem->bus.offset, bus_size); > > > > 98 if (!addr) { > > > > 99 ttm_mem_io_free(bdev, mem); > > > > 100 return -ENOMEM; > > > > 101 } > > > > 102 } > > > > 103 *virtual = addr; > > > > 104 return 0; > > > > 105 } > > > > 106 > > > > > > --- > > > > 0-DAY CI Kernel Test Service, Intel Corporation > > > > https://lists.01.org/hyperkitty/list/kbuild-all@xxxxxxxxxxxx <https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.01.org%2Fhyperkitty%2Flist%2Fkbuild-all%40lists.01.org&data=04%7C01%7COak.Zeng%40amd.com%7Cc047ecb316df47cde7ed08d8de3188d4%7C3dd8961fe4884e608e11a82d994e183d%7C0%7C0%7C637503651624326458%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=MY6tEGVY0X4VyS750dYmsfVoR71Zp78YdxuqqRljnsI%3D&reserved=0> > > > > > > > > > > _______________________________________________ > > > > amd-gfx mailing list > > > > amd-gfx@xxxxxxxxxxxxxxxxxxxxx <mailto:amd-gfx@xxxxxxxxxxxxxxxxxxxxx> > > > > https://lists.freedesktop.org/mailman/listinfo/amd-gfx <https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.freedesktop.org%2Fmailman%2Flistinfo%2Famd-gfx&data=04%7C01%7COak.Zeng%40amd.com%7Cc047ecb316df47cde7ed08d8de3188d4%7C3dd8961fe4884e608e11a82d994e183d%7C0%7C0%7C637503651624336455%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=Or3tWmS5M6mXOaFP4FHsEbg0rqoizNGpTl6JEkD6fac%3D&reserved=0> > > > -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch _______________________________________________ amd-gfx mailing list amd-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/amd-gfx