Re: [Intel-gfx] [PATCH 1/3] i915/gvt: Introduce the mmio_table.c to support VFIO new mdev API
Hi Zhi, I love your patch! Perhaps something to improve: [auto build test WARNING on drm-tip/drm-tip] [also build test WARNING on next-20220208] [cannot apply to drm-intel/for-linux-next v5.17-rc3] [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/Zhi-Wang/i915-gvt-Introduce-the-mmio_table-c-to-support-VFIO-new-mdev-API/20220127-200727 base: git://anongit.freedesktop.org/drm/drm-tip drm-tip config: x86_64-rhel-8.3-kselftests (https://download.01.org/0day-ci/archive/20220208/202202082210.bpzsju31-...@intel.com/config) compiler: gcc-9 (Debian 9.3.0-22) 9.3.0 reproduce: # apt-get install sparse # sparse version: v0.6.4-dirty # https://github.com/0day-ci/linux/commit/533f92651a7a56481a053f1e04dc5a5ec024ffb9 git remote add linux-review https://github.com/0day-ci/linux git fetch --no-tags linux-review Zhi-Wang/i915-gvt-Introduce-the-mmio_table-c-to-support-VFIO-new-mdev-API/20220127-200727 git checkout 533f92651a7a56481a053f1e04dc5a5ec024ffb9 # save the config file to linux build tree mkdir build_dir make W=1 C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir ARCH=x86_64 SHELL=/bin/bash drivers/gpu/ If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot sparse warnings: (new ones prefixed by >>) >> drivers/gpu/drm/i915/gvt/handlers.c:45:6: sparse: sparse: symbol >> 'intel_gvt_match_device' was not declared. Should it be static? vim +/intel_gvt_match_device +45 drivers/gpu/drm/i915/gvt/handlers.c 12d14cc43b3470 Zhi Wang 2016-08-30 44 12d14cc43b3470 Zhi Wang 2016-08-30 @45 bool intel_gvt_match_device(struct intel_gvt *gvt, 12d14cc43b3470 Zhi Wang 2016-08-30 46 unsigned long device) 12d14cc43b3470 Zhi Wang 2016-08-30 47 { 533f92651a7a56 Zhi Wang 2022-01-27 48 return intel_gvt_get_device_type(gvt->gt->i915) & device; 12d14cc43b3470 Zhi Wang 2016-08-30 49 } 12d14cc43b3470 Zhi Wang 2016-08-30 50 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-...@lists.01.org
Re: [Intel-gfx] [PATCH 1/3] i915/gvt: Introduce the mmio_table.c to support VFIO new mdev API
Quoting Jani Nikula (2022-02-07 12:48:08) > On Mon, 07 Feb 2022, Christoph Hellwig wrote: > > On Mon, Feb 07, 2022 at 08:28:13AM +, Wang, Zhi A wrote: > >> 1) About having the mmio_table.h, I would like to keep the stuff in a > >> dedicated header as putting them in intel_gvt.h might needs i915 guys > >> to maintain it. > >> 2) The other one is about if we should move the mmio_table.c into > >> i915 folder. I guess we need the some comments from Jani. In the > >> current version that I am testing, it's still in GVT folder. Guess we > >> can submit a patch to move it to i915 folder later if Jani is ok > >> about that. > > > > Yes, let's have Jani chime in on these. They're basically one and the > > same issue. This code will have to be built into into the core i915 > > driver even with my planned split, which is kindof the point of this > > exercise. I think it makes sense to use the subdirectories as boundaries > > for where the code ends up and not to declarare maintainership boundaries, > > but it will be up to the i915 and gvt maintainers to decide that. > > Agreed. If there's going to be a gvt.ko, I think all of gvt/ should be > part of that module, nothing more, nothing less. > > The gvt related files in i915/ should probably be named intel_gvt* or > something, ditto for function naming, and we'll probably want patches > touching them be Cc'd to intel-gfx list. > > Joonas, Rodrigo, Tvrtko, thoughts? Agreed on above. I don't think we expect much changes on the golden MMIO state capture set. Regards, Joonas
Re: [Intel-gfx] [PATCH 1/3] i915/gvt: Introduce the mmio_table.c to support VFIO new mdev API
Hi Zhi, I love your patch! Perhaps something to improve: [auto build test WARNING on drm-tip/drm-tip] [also build test WARNING on next-20220207] [cannot apply to drm-intel/for-linux-next hch-configfs/for-next v5.17-rc3] [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/Zhi-Wang/i915-gvt-Introduce-the-mmio_table-c-to-support-VFIO-new-mdev-API/20220127-200727 base: git://anongit.freedesktop.org/drm/drm-tip drm-tip config: x86_64-rhel-8.3-kselftests (https://download.01.org/0day-ci/archive/20220207/202202072226.kzm2qm5q-...@intel.com/config) compiler: gcc-9 (Debian 9.3.0-22) 9.3.0 reproduce: # apt-get install sparse # sparse version: v0.6.4-dirty # https://github.com/0day-ci/linux/commit/533f92651a7a56481a053f1e04dc5a5ec024ffb9 git remote add linux-review https://github.com/0day-ci/linux git fetch --no-tags linux-review Zhi-Wang/i915-gvt-Introduce-the-mmio_table-c-to-support-VFIO-new-mdev-API/20220127-200727 git checkout 533f92651a7a56481a053f1e04dc5a5ec024ffb9 # save the config file to linux build tree mkdir build_dir make W=1 C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir ARCH=x86_64 SHELL=/bin/bash drivers/gpu/ If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot sparse warnings: (new ones prefixed by >>) >> drivers/gpu/drm/i915/gvt/handlers.c:45:6: sparse: sparse: symbol >> 'intel_gvt_match_device' was not declared. Should it be static? vim +/intel_gvt_match_device +45 drivers/gpu/drm/i915/gvt/handlers.c 12d14cc43b3470 Zhi Wang 2016-08-30 44 12d14cc43b3470 Zhi Wang 2016-08-30 @45 bool intel_gvt_match_device(struct intel_gvt *gvt, 12d14cc43b3470 Zhi Wang 2016-08-30 46 unsigned long device) 12d14cc43b3470 Zhi Wang 2016-08-30 47 { 533f92651a7a56 Zhi Wang 2022-01-27 48 return intel_gvt_get_device_type(gvt->gt->i915) & device; 12d14cc43b3470 Zhi Wang 2016-08-30 49 } 12d14cc43b3470 Zhi Wang 2016-08-30 50 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-...@lists.01.org
Re: [Intel-gfx] [PATCH 1/3] i915/gvt: Introduce the mmio_table.c to support VFIO new mdev API
On Mon, 07 Feb 2022, Christoph Hellwig wrote: > On Mon, Feb 07, 2022 at 06:57:13AM -0500, Zhi Wang wrote: >> Hi Christoph and Jani: >> >> Thanks for the comments. It would be nice that people can achieve a >> agreement. I am OK with both of the options and also moving some files into >> different folders doesn't needs me to do the full test run again. :) > > The way I understood Jani he agrees that the mmio table, which needs to > be part of the core i915 module should not be under the gvt/ subdiretory. > I.e. it could be drivers/gpu/drm/i915/intel_gvt_mmio_table.c. The > declarations could then go either into drivers/gpu/drm/i915/intel_gvt.h > or drivers/gpu/drm/i915/intel_gvt_mmio_table.h. Correct. Generally I prefer to have the declarations for stuff in intel_foo.c to be placed in intel_foo.h, and named intel_foo_*. BR, Jani. -- Jani Nikula, Intel Open Source Graphics Center
Re: [Intel-gfx] [PATCH 1/3] i915/gvt: Introduce the mmio_table.c to support VFIO new mdev API
On Mon, Feb 07, 2022 at 06:57:13AM -0500, Zhi Wang wrote: > Hi Christoph and Jani: > > Thanks for the comments. It would be nice that people can achieve a > agreement. I am OK with both of the options and also moving some files into > different folders doesn't needs me to do the full test run again. :) The way I understood Jani he agrees that the mmio table, which needs to be part of the core i915 module should not be under the gvt/ subdiretory. I.e. it could be drivers/gpu/drm/i915/intel_gvt_mmio_table.c. The declarations could then go either into drivers/gpu/drm/i915/intel_gvt.h or drivers/gpu/drm/i915/intel_gvt_mmio_table.h.
Re: [Intel-gfx] [PATCH 1/3] i915/gvt: Introduce the mmio_table.c to support VFIO new mdev API
On 2/7/22 05:48, Jani Nikula wrote: On Mon, 07 Feb 2022, Christoph Hellwig wrote: On Mon, Feb 07, 2022 at 08:28:13AM +, Wang, Zhi A wrote: 1) About having the mmio_table.h, I would like to keep the stuff in a dedicated header as putting them in intel_gvt.h might needs i915 guys to maintain it. 2) The other one is about if we should move the mmio_table.c into i915 folder. I guess we need the some comments from Jani. In the current version that I am testing, it's still in GVT folder. Guess we can submit a patch to move it to i915 folder later if Jani is ok about that. Yes, let's have Jani chime in on these. They're basically one and the same issue. This code will have to be built into into the core i915 driver even with my planned split, which is kindof the point of this exercise. I think it makes sense to use the subdirectories as boundaries for where the code ends up and not to declarare maintainership boundaries, but it will be up to the i915 and gvt maintainers to decide that. Agreed. If there's going to be a gvt.ko, I think all of gvt/ should be part of that module, nothing more, nothing less. The gvt related files in i915/ should probably be named intel_gvt* or something, ditto for function naming, and we'll probably want patches touching them be Cc'd to intel-gfx list. Joonas, Rodrigo, Tvrtko, thoughts? BR, Jani. Hi Christoph and Jani: Thanks for the comments. It would be nice that people can achieve a agreement. I am OK with both of the options and also moving some files into different folders doesn't needs me to do the full test run again. :) Thanks, Zhi.
Re: [Intel-gfx] [PATCH 1/3] i915/gvt: Introduce the mmio_table.c to support VFIO new mdev API
On Mon, 07 Feb 2022, Christoph Hellwig wrote: > On Mon, Feb 07, 2022 at 08:28:13AM +, Wang, Zhi A wrote: >> 1) About having the mmio_table.h, I would like to keep the stuff in a >> dedicated header as putting them in intel_gvt.h might needs i915 guys >> to maintain it. >> 2) The other one is about if we should move the mmio_table.c into >> i915 folder. I guess we need the some comments from Jani. In the >> current version that I am testing, it's still in GVT folder. Guess we >> can submit a patch to move it to i915 folder later if Jani is ok >> about that. > > Yes, let's have Jani chime in on these. They're basically one and the > same issue. This code will have to be built into into the core i915 > driver even with my planned split, which is kindof the point of this > exercise. I think it makes sense to use the subdirectories as boundaries > for where the code ends up and not to declarare maintainership boundaries, > but it will be up to the i915 and gvt maintainers to decide that. Agreed. If there's going to be a gvt.ko, I think all of gvt/ should be part of that module, nothing more, nothing less. The gvt related files in i915/ should probably be named intel_gvt* or something, ditto for function naming, and we'll probably want patches touching them be Cc'd to intel-gfx list. Joonas, Rodrigo, Tvrtko, thoughts? BR, Jani. -- Jani Nikula, Intel Open Source Graphics Center
Re: [Intel-gfx] [PATCH 1/3] i915/gvt: Introduce the mmio_table.c to support VFIO new mdev API
On Mon, Feb 07, 2022 at 08:28:13AM +, Wang, Zhi A wrote: > 1) About having the mmio_table.h, I would like to keep the stuff in a > dedicated header as putting them in intel_gvt.h might needs i915 guys to > maintain it. > 2) The other one is about if we should move the mmio_table.c into i915 > folder. I guess we need the some comments from Jani. In the current version > that I am testing, it's still in GVT folder. Guess we can submit a patch to > move it to i915 folder later if Jani is ok about that. Yes, let's have Jani chime in on these. They're basically one and the same issue. This code will have to be built into into the core i915 driver even with my planned split, which is kindof the point of this exercise. I think it makes sense to use the subdirectories as boundaries for where the code ends up and not to declarare maintainership boundaries, but it will be up to the i915 and gvt maintainers to decide that.
Re: [Intel-gfx] [PATCH 1/3] i915/gvt: Introduce the mmio_table.c to support VFIO new mdev API
> ifeq ($(CONFIG_DRM_I915_GVT),y) > -i915-y += intel_gvt.o > +i915-y += intel_gvt.o gvt/mmio_table.o With the split from my series in mind that builds all of the gvt/ subdirectory into a separate module I'd be tempted to places this new file into the main i915 directory as e.g. intel_gvt_mmio_table.c, given that it will have to be built into the main i915 module. > -static void init_device_info(struct intel_gvt *gvt) I'd keep this function as-is, as the newly added caller isn't actually needed (I'll comment on this more on the next patch). > -/* Describe per-platform limitations. */ > -struct intel_gvt_device_info { > - u32 max_support_vgpus; > - u32 cfg_space_size; > - u32 mmio_size; > - u32 mmio_bar; > - unsigned long msi_cap_offset; > - u32 gtt_start_offset; > - u32 gtt_entry_size; > - u32 gtt_entry_size_shift; > - int gmadr_bytes_in_cmd; > - u32 max_surface_size; > -}; .. and with that there should be no need to move this declaration as well. > -struct gvt_mmio_block { > +struct intel_gvt_mmio_block { Any good reason for this rename? It just seems to create a lot of churn without muchof a reason. > +static int do_mmio(u32 offset, u16 flags, u32 size, u32 addr_mask, > +u32 ro_mask, u32 device, > +struct intel_gvt_mmio_table_iter *iter) Nit: I'd pass the iter first to these kinds of callbacks. Also the do_ name (including for the method name in the struct itself) looks odd. I'd rather use a _cb or _fn postfix. > + for (i = start; i < end; i += 4) { > + info = kzalloc(sizeof(*info), GFP_KERNEL); > + if (!info) > + return -ENOMEM; > + > + info->offset = i; > + p = intel_gvt_find_mmio_info(gvt, info->offset); > + if (p) { > + WARN(1, "dup mmio definition offset %x\n", > + info->offset); > + kfree(info); > + > + /* We return -EEXIST here to make GVT-g load fail. > + * So duplicated MMIO can be found as soon as > + * possible. > + */ > + return -EEXIST; > + } I'd allocate the new structure only after the lookup to simplify this a bit. > + > + info->ro_mask = ro_mask; The r/o mask is only used here, so why not move it into the local declarations in handlers.c instead of the table built into i915.ko? > + info->device = device; > + info->read = intel_vgpu_default_mmio_read; > + info->write = intel_vgpu_default_mmio_write; Given that we always initialize ->read and ->write here, setup_mmio_handler can be simplified a bit and only needs to override the handlers if actually specified in the table. > +static int init_mmio_info(struct intel_gvt *gvt) > +{ > + struct intel_gvt_mmio_table_iter iter; > + > + iter.i915 = gvt->gt->i915; > + iter.data = gvt; > + iter.do_mmio = do_mmio; > + iter.do_mmio_block = do_mmio_block; Nit: This and the other caller could initialize the iter structure statically: struct intel_gvt_mmio_table_iter iter = { .i915 = gvt->gt->i915, .data = gvt, .mmio_cb= intel_gvt_setup_mmio_cb, .mmio_block_cb = intel_gvt_setup_mmio_block_cb, }; > + block = find_mmio_block(gvt, VGT_PVINFO_PAGE); > + block->read = pvinfo_mmio_read; > + block->write = pvinfo_mmio_write; Check for NULL here? > } else if (IS_SKYLAKE(i915) || > -IS_KABYLAKE(i915) || > -IS_COFFEELAKE(i915) || > -IS_COMETLAKE(i915)) { > - ret = init_bdw_mmio_info(gvt); > + IS_KABYLAKE(i915) || > + IS_COFFEELAKE(i915) || > + IS_COMETLAKE(i915)) { > + ret = init_bdw_mmio_handlers(gvt); Why the spurious reformatting? > +/** > + * intel_gvt_get_device_type - return the device flag of a GVT device > + * @i915: drm i915 private data > + * > + * This function will return the device flag of a GVT device. > + */ > +unsigned long intel_gvt_get_device_type(struct drm_i915_private *i915) > +{ > + if (IS_BROADWELL(i915)) > + return D_BDW; > + else if (IS_SKYLAKE(i915)) > + return D_SKL; > + else if (IS_KABYLAKE(i915)) > + return D_KBL; > + else if (IS_BROXTON(i915)) > + return D_BXT; > + else if (IS_COFFEELAKE(i915) || IS_COMETLAKE(i915)) > + return D_CFL; > + > + return 0; > +} I'd move this into intel_gvt.c, next to is_supported_device which also lists all the supported platforms. Preferably as a prep patch that does the move and change of argument before the main MMIO table patch. > +++ b/drivers/gpu/drm/i915/gvt/mmio_table.h Do we really need this new header vs just using intel_gvt.h?
Re: [Intel-gfx] [PATCH 1/3] i915/gvt: Introduce the mmio_table.c to support VFIO new mdev API
Hi Zhi, I love your patch! Perhaps something to improve: [auto build test WARNING on drm-tip/drm-tip] [also build test WARNING on next-20220127] [cannot apply to drm-intel/for-linux-next hch-configfs/for-next v5.17-rc1] [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/Zhi-Wang/i915-gvt-Introduce-the-mmio_table-c-to-support-VFIO-new-mdev-API/20220127-200727 base: git://anongit.freedesktop.org/drm/drm-tip drm-tip config: x86_64-rhel-8.3-kselftests (https://download.01.org/0day-ci/archive/20220128/202201281209.mnhckgpp-...@intel.com/config) compiler: gcc-9 (Debian 9.3.0-22) 9.3.0 reproduce: # apt-get install sparse # sparse version: v0.6.4-dirty # https://github.com/0day-ci/linux/commit/533f92651a7a56481a053f1e04dc5a5ec024ffb9 git remote add linux-review https://github.com/0day-ci/linux git fetch --no-tags linux-review Zhi-Wang/i915-gvt-Introduce-the-mmio_table-c-to-support-VFIO-new-mdev-API/20220127-200727 git checkout 533f92651a7a56481a053f1e04dc5a5ec024ffb9 # save the config file to linux build tree mkdir build_dir make W=1 C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir ARCH=x86_64 SHELL=/bin/bash drivers/gpu/ If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot sparse warnings: (new ones prefixed by >>) >> drivers/gpu/drm/i915/gvt/handlers.c:45:6: sparse: sparse: symbol >> 'intel_gvt_match_device' was not declared. Should it be static? Please review and possibly fold the followup patch. --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-...@lists.01.org
Re: [Intel-gfx] [PATCH 1/3] i915/gvt: Introduce the mmio_table.c to support VFIO new mdev API
Hi Zhi, I love your patch! Perhaps something to improve: [auto build test WARNING on drm-tip/drm-tip] [also build test WARNING on next-20220127] [cannot apply to drm-intel/for-linux-next v5.17-rc1] [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/Zhi-Wang/i915-gvt-Introduce-the-mmio_table-c-to-support-VFIO-new-mdev-API/20220127-200727 base: git://anongit.freedesktop.org/drm/drm-tip drm-tip config: x86_64-rhel-8.3 (https://download.01.org/0day-ci/archive/20220128/202201280218.adxamjx6-...@intel.com/config) compiler: gcc-9 (Debian 9.3.0-22) 9.3.0 reproduce (this is a W=1 build): # https://github.com/0day-ci/linux/commit/533f92651a7a56481a053f1e04dc5a5ec024ffb9 git remote add linux-review https://github.com/0day-ci/linux git fetch --no-tags linux-review Zhi-Wang/i915-gvt-Introduce-the-mmio_table-c-to-support-VFIO-new-mdev-API/20220127-200727 git checkout 533f92651a7a56481a053f1e04dc5a5ec024ffb9 # save the config file to linux build tree mkdir build_dir make W=1 O=build_dir ARCH=x86_64 SHELL=/bin/bash drivers/gpu/ If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot All warnings (new ones prefixed by >>): >> drivers/gpu/drm/i915/gvt/handlers.c:45:6: warning: no previous prototype for >> 'intel_gvt_match_device' [-Wmissing-prototypes] 45 | bool intel_gvt_match_device(struct intel_gvt *gvt, | ^~ vim +/intel_gvt_match_device +45 drivers/gpu/drm/i915/gvt/handlers.c 12d14cc43b3470 Zhi Wang 2016-08-30 44 12d14cc43b3470 Zhi Wang 2016-08-30 @45 bool intel_gvt_match_device(struct intel_gvt *gvt, 12d14cc43b3470 Zhi Wang 2016-08-30 46 unsigned long device) 12d14cc43b3470 Zhi Wang 2016-08-30 47 { 533f92651a7a56 Zhi Wang 2022-01-27 48 return intel_gvt_get_device_type(gvt->gt->i915) & device; 12d14cc43b3470 Zhi Wang 2016-08-30 49 } 12d14cc43b3470 Zhi Wang 2016-08-30 50 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-...@lists.01.org
Re: [Intel-gfx] [PATCH 1/3] i915/gvt: Introduce the mmio_table.c to support VFIO new mdev API
Hi Zhi, I love your patch! Perhaps something to improve: [auto build test WARNING on drm-tip/drm-tip] [also build test WARNING on next-20220127] [cannot apply to drm-intel/for-linux-next hch-configfs/for-next v5.17-rc1] [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/Zhi-Wang/i915-gvt-Introduce-the-mmio_table-c-to-support-VFIO-new-mdev-API/20220127-200727 base: git://anongit.freedesktop.org/drm/drm-tip drm-tip config: x86_64-randconfig-a005 (https://download.01.org/0day-ci/archive/20220128/202201280121.yx5gbodp-...@intel.com/config) compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project f32dccb9a43b02ce4e540d6ba5dbbdb188f2dc7d) reproduce (this is a W=1 build): wget https://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/533f92651a7a56481a053f1e04dc5a5ec024ffb9 git remote add linux-review https://github.com/0day-ci/linux git fetch --no-tags linux-review Zhi-Wang/i915-gvt-Introduce-the-mmio_table-c-to-support-VFIO-new-mdev-API/20220127-200727 git checkout 533f92651a7a56481a053f1e04dc5a5ec024ffb9 # save the config file to linux build tree mkdir build_dir COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=x86_64 SHELL=/bin/bash drivers/gpu/ If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot All warnings (new ones prefixed by >>): >> drivers/gpu/drm/i915/gvt/handlers.c:45:6: warning: no previous prototype for >> function 'intel_gvt_match_device' [-Wmissing-prototypes] bool intel_gvt_match_device(struct intel_gvt *gvt, ^ drivers/gpu/drm/i915/gvt/handlers.c:45:1: note: declare 'static' if the function is not intended to be used outside of this translation unit bool intel_gvt_match_device(struct intel_gvt *gvt, ^ static 1 warning generated. vim +/intel_gvt_match_device +45 drivers/gpu/drm/i915/gvt/handlers.c 12d14cc43b3470 Zhi Wang 2016-08-30 44 12d14cc43b3470 Zhi Wang 2016-08-30 @45 bool intel_gvt_match_device(struct intel_gvt *gvt, 12d14cc43b3470 Zhi Wang 2016-08-30 46 unsigned long device) 12d14cc43b3470 Zhi Wang 2016-08-30 47 { 533f92651a7a56 Zhi Wang 2022-01-27 48 return intel_gvt_get_device_type(gvt->gt->i915) & device; 12d14cc43b3470 Zhi Wang 2016-08-30 49 } 12d14cc43b3470 Zhi Wang 2016-08-30 50 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-...@lists.01.org
Re: [Intel-gfx] [PATCH 1/3] i915/gvt: Introduce the mmio_table.c to support VFIO new mdev API
Hi Zhi, I love your patch! Perhaps something to improve: [auto build test WARNING on drm-tip/drm-tip] [also build test WARNING on next-20220127] [cannot apply to drm-intel/for-linux-next v5.17-rc1] [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/Zhi-Wang/i915-gvt-Introduce-the-mmio_table-c-to-support-VFIO-new-mdev-API/20220127-200727 base: git://anongit.freedesktop.org/drm/drm-tip drm-tip config: x86_64-allyesconfig (https://download.01.org/0day-ci/archive/20220128/202201280125.vultasas-...@intel.com/config) compiler: gcc-9 (Debian 9.3.0-22) 9.3.0 reproduce (this is a W=1 build): # https://github.com/0day-ci/linux/commit/533f92651a7a56481a053f1e04dc5a5ec024ffb9 git remote add linux-review https://github.com/0day-ci/linux git fetch --no-tags linux-review Zhi-Wang/i915-gvt-Introduce-the-mmio_table-c-to-support-VFIO-new-mdev-API/20220127-200727 git checkout 533f92651a7a56481a053f1e04dc5a5ec024ffb9 # save the config file to linux build tree mkdir build_dir make W=1 O=build_dir ARCH=x86_64 SHELL=/bin/bash drivers/gpu/ If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot All warnings (new ones prefixed by >>): >> drivers/gpu/drm/i915/gvt/mmio_table.c:37: warning: expecting prototype for >> intel_gvt_get_init_device_info(). Prototype was for >> intel_gvt_init_device_info() instead vim +37 drivers/gpu/drm/i915/gvt/mmio_table.c 28 29 /** 30 * intel_gvt_get_init_device_info - Fill a GVT device info 31 * @i915: drm i915 private data 32 * @info: GVT device info 33 * 34 * This function will be called during the initialization of a GVT device. 35 */ 36 void intel_gvt_init_device_info(struct drm_i915_private *i915, struct intel_gvt_device_info *info) > 37 { 38 struct pci_dev *pdev = to_pci_dev(i915->drm.dev); 39 40 info->max_support_vgpus = 8; 41 info->cfg_space_size = PCI_CFG_SPACE_EXP_SIZE; 42 info->mmio_size = 2 * 1024 * 1024; 43 info->mmio_bar = 0; 44 info->gtt_start_offset = 8 * 1024 * 1024; 45 info->gtt_entry_size = 8; 46 info->gtt_entry_size_shift = 3; 47 info->gmadr_bytes_in_cmd = 8; 48 info->max_surface_size = 36 * 1024 * 1024; 49 info->msi_cap_offset = pdev->msi_cap; 50 } 51 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-...@lists.01.org
Re: [Intel-gfx] [PATCH 1/3] i915/gvt: Introduce the mmio_table.c to support VFIO new mdev API
What tree is this series against? It doesn't seem to apply to Linus' current tree or 5.17-rc1.
[Intel-gfx] [PATCH 1/3] i915/gvt: Introduce the mmio_table.c to support VFIO new mdev API
From: Zhi Wang To support the new mdev interfaces and the re-factor patches from Christoph, which moves the GVT-g code into a dedicated module, the GVT-g initialization path has to be separated into two phases: a) Early initialization. The early initialization of GVT requires to be done when loading i915. Mostly it's because the initial clean HW state needs to be saved before i915 touches the HW. b) Late initalization. This phases of initalization will setup the rest components of GVT-g, which can be done later when the dedicated module is being loaded. v5: - Re-design the mmio table framework. (Chirstoph) v4: - Fix the errors of patch checking scripts. v3: - Fix the errors when CONFIG_DRM_I915_WERROR is turned on. (Jani) v2: - Implement a mmio table instead of generating it by marco in i915. (Jani) Cc: Christoph Hellwig Cc: Jason Gunthorpe Cc: Jani Nikula Cc: Joonas Lahtinen Cc: Vivi Rodrigo Cc: Zhenyu Wang Cc: Zhi Wang Tested-by: Terrence Xu Signed-off-by: Zhi Wang --- drivers/gpu/drm/i915/Makefile |2 +- drivers/gpu/drm/i915/gvt/cmd_parser.c |2 +- drivers/gpu/drm/i915/gvt/gvt.c| 19 +- drivers/gpu/drm/i915/gvt/gvt.h| 21 +- drivers/gpu/drm/i915/gvt/handlers.c | 1878 + drivers/gpu/drm/i915/gvt/mmio.h |2 - drivers/gpu/drm/i915/gvt/mmio_table.c | 1386 ++ drivers/gpu/drm/i915/gvt/mmio_table.h | 58 + drivers/gpu/drm/i915/gvt/reg.h|9 +- 9 files changed, 1796 insertions(+), 1581 deletions(-) create mode 100644 drivers/gpu/drm/i915/gvt/mmio_table.c create mode 100644 drivers/gpu/drm/i915/gvt/mmio_table.h diff --git a/drivers/gpu/drm/i915/Makefile b/drivers/gpu/drm/i915/Makefile index a26e6736bebb..029e5f5e0955 100644 --- a/drivers/gpu/drm/i915/Makefile +++ b/drivers/gpu/drm/i915/Makefile @@ -318,7 +318,7 @@ i915-$(CONFIG_DRM_I915_SELFTEST) += \ i915-y += i915_vgpu.o ifeq ($(CONFIG_DRM_I915_GVT),y) -i915-y += intel_gvt.o +i915-y += intel_gvt.o gvt/mmio_table.o include $(src)/gvt/Makefile endif diff --git a/drivers/gpu/drm/i915/gvt/cmd_parser.c b/drivers/gpu/drm/i915/gvt/cmd_parser.c index ec18122cc216..e9b5c70bb004 100644 --- a/drivers/gpu/drm/i915/gvt/cmd_parser.c +++ b/drivers/gpu/drm/i915/gvt/cmd_parser.c @@ -3205,7 +3205,7 @@ int intel_gvt_scan_engine_context(struct intel_vgpu_workload *workload) static int init_cmd_table(struct intel_gvt *gvt) { - unsigned int gen_type = intel_gvt_get_device_type(gvt); + unsigned int gen_type = intel_gvt_get_device_type(gvt->gt->i915); int i; for (i = 0; i < ARRAY_SIZE(cmd_info); i++) { diff --git a/drivers/gpu/drm/i915/gvt/gvt.c b/drivers/gpu/drm/i915/gvt/gvt.c index f0b69e4dcb52..a0243e863613 100644 --- a/drivers/gpu/drm/i915/gvt/gvt.c +++ b/drivers/gpu/drm/i915/gvt/gvt.c @@ -63,23 +63,6 @@ static const struct intel_gvt_ops intel_gvt_ops = { .emulate_hotplug = intel_vgpu_emulate_hotplug, }; -static void init_device_info(struct intel_gvt *gvt) -{ - struct intel_gvt_device_info *info = &gvt->device_info; - struct pci_dev *pdev = to_pci_dev(gvt->gt->i915->drm.dev); - - info->max_support_vgpus = 8; - info->cfg_space_size = PCI_CFG_SPACE_EXP_SIZE; - info->mmio_size = 2 * 1024 * 1024; - info->mmio_bar = 0; - info->gtt_start_offset = 8 * 1024 * 1024; - info->gtt_entry_size = 8; - info->gtt_entry_size_shift = 3; - info->gmadr_bytes_in_cmd = 8; - info->max_surface_size = 36 * 1024 * 1024; - info->msi_cap_offset = pdev->msi_cap; -} - static void intel_gvt_test_and_emulate_vblank(struct intel_gvt *gvt) { struct intel_vgpu *vgpu; @@ -208,7 +191,7 @@ int intel_gvt_init_device(struct drm_i915_private *i915) gvt->gt = to_gt(i915); i915->gvt = gvt; - init_device_info(gvt); + intel_gvt_init_device_info(i915, &gvt->device_info); ret = intel_gvt_setup_mmio_info(gvt); if (ret) diff --git a/drivers/gpu/drm/i915/gvt/gvt.h b/drivers/gpu/drm/i915/gvt/gvt.h index 0ebffc327528..e4513e2ce469 100644 --- a/drivers/gpu/drm/i915/gvt/gvt.h +++ b/drivers/gpu/drm/i915/gvt/gvt.h @@ -40,6 +40,7 @@ #include "debug.h" #include "hypercall.h" #include "mmio.h" +#include "mmio_table.h" #include "reg.h" #include "interrupt.h" #include "gtt.h" @@ -65,20 +66,6 @@ struct intel_gvt_host { extern struct intel_gvt_host intel_gvt_host; -/* Describe per-platform limitations. */ -struct intel_gvt_device_info { - u32 max_support_vgpus; - u32 cfg_space_size; - u32 mmio_size; - u32 mmio_bar; - unsigned long msi_cap_offset; - u32 gtt_start_offset; - u32 gtt_entry_size; - u32 gtt_entry_size_shift; - int gmadr_bytes_in_cmd; - u32 max_surface_size; -}; - /* GM resources owned by a vGPU */ struct intel_vgpu_gm { u64 aperture_sz; @@ -239,9 +226,9 @@ struct intel_gvt_fence { }; /* Special MMIO blocks. */ -struct gvt_mmio_block { +str