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. 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 > *Sent:* Wednesday, March 3, 2021 5:46 AM > *To:* Zeng, Oak ; amd-gfx@lists.freedesktop.org; > dri-devel@lists.freedesktop.org; Daniel Vetter ; Dave > Airlie ; Thomas Hellström (Intel) > ; dan.j.williams@intel.com > *Cc:* kbuild-all@lists.01.org; Kuehling, Felix > ; Kasiviswanathan, Harish > ; Deucher, Alexander > ; Huang, JinHuiEric > ; Koenig, Christian > *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/ > > 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 > > *Sent:* Tuesday, March 2, 2021 6:31 AM > *To:* amd-gfx@lists.freedesktop.org > ; > dri-devel@lists.freedesktop.org > ; Daniel Vetter > ; Dave Airlie > ; Thomas Hellström > (Intel) > *Cc:* Zeng, Oak ; > kbuild-all@lists.01.org ; > Kuehling, Felix > ; Kasiviswanathan, Harish > > ; Deucher, Alexander > ; > Huang, JinHuiEric > ; Koenig, Christian > > *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 ] > > > > url:https://github.com/0day-ci/linux/commits/Oak-Zeng/drm-ttm-ioremap-buffer-according-to-TTM-mem-caching-setting/20210302-064500 > > 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 -O ~/bin/make.cross > >         chmod +x ~/bin/make.cross > >         #https://github.com/0day-ci/linux/commit/225bb3711439ec559dd72ae5af8e62d34ea60a64 > >         git remote add linux-reviewhttps://github.com/0day-ci/linux > >         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 > > > > 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@lists.01.org > > > > > _______________________________________________ > > amd-gfx mailing list > > amd-gfx@lists.freedesktop.org > > https://lists.freedesktop.org/mailman/listinfo/amd-gfx >