public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: Jacob Pan <jacob.pan@linux.microsoft.com>,
	linux-kernel@vger.kernel.org,
	"iommu@lists.linux.dev" <iommu@lists.linux.dev>,
	Jason Gunthorpe <jgg@nvidia.com>,
	Alex Williamson <alex@shazbot.org>,
	Joerg Roedel <joro@8bytes.org>,
	David Matlack <dmatlack@google.com>,
	Nicolin Chen <nicolinc@nvidia.com>,
	"Tian, Kevin" <kevin.tian@intel.com>, Yi Liu <yi.l.liu@intel.com>,
	Baolu Lu <baolu.lu@linux.intel.com>
Cc: oe-kbuild-all@lists.linux.dev, skhawaja@google.com,
	pasha.tatashin@soleen.com,
	Jacob Pan <jacob.pan@linux.microsoft.com>,
	Jean Philippe-Brucker <jean-philippe@linaro.org>,
	Robin Murphy <robin.murphy@arm.com>
Subject: Re: [PATCH 08/11] vfio: Enable cdev noiommu mode under iommufd
Date: Sat, 28 Feb 2026 06:03:30 +0800	[thread overview]
Message-ID: <202602280557.4SdsBbeJ-lkp@intel.com> (raw)
In-Reply-To: <20260227175247.26103-9-jacob.pan@linux.microsoft.com>

Hi Jacob,

kernel test robot noticed the following build errors:

[auto build test ERROR on linus/master]
[also build test ERROR on v7.0-rc1 next-20260227]
[cannot apply to awilliam-vfio/next awilliam-vfio/for-linus]
[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#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/Jacob-Pan/iommufd-Support-a-HWPT-without-an-iommu-driver-for-noiommu/20260228-020145
base:   linus/master
patch link:    https://lore.kernel.org/r/20260227175247.26103-9-jacob.pan%40linux.microsoft.com
patch subject: [PATCH 08/11] vfio: Enable cdev noiommu mode under iommufd
config: sh-randconfig-001-20260228 (https://download.01.org/0day-ci/archive/20260228/202602280557.4SdsBbeJ-lkp@intel.com/config)
compiler: sh4-linux-gcc (GCC) 15.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260228/202602280557.4SdsBbeJ-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202602280557.4SdsBbeJ-lkp@intel.com/

All error/warnings (new ones prefixed by >>):

   In file included from drivers/iommu/generic_pt/fmt/iommu_template.h:36,
                    from drivers/iommu/generic_pt/fmt/iommu_amdv1.c:15:
   drivers/iommu/generic_pt/fmt/amdv1.h: In function 'amdv1pt_install_table':
>> drivers/iommu/generic_pt/fmt/amdv1.h:255:16: error: implicit declaration of function 'pt_table_install64'; did you mean 'pt_table_install32'? [-Wimplicit-function-declaration]
     255 |         return pt_table_install64(pts, entry);
         |                ^~~~~~~~~~~~~~~~~~
         |                pt_table_install32
   In file included from include/linux/atomic.h:80,
                    from drivers/iommu/generic_pt/fmt/../pt_defs.h:17,
                    from drivers/iommu/generic_pt/fmt/iommu_template.h:35:
   drivers/iommu/generic_pt/fmt/amdv1.h: In function 'amdv1pt_entry_make_write_dirty':
>> include/linux/atomic/atomic-arch-fallback.h:259:14: error: invalid use of void expression
     259 |         ___r = raw_cmpxchg64((_ptr), ___o, (_new)); \
         |              ^
   include/linux/atomic/atomic-instrumented.h:4918:9: note: in expansion of macro 'raw_try_cmpxchg64'
    4918 |         raw_try_cmpxchg64(__ai_ptr, __ai_oldp, __VA_ARGS__); \
         |         ^~~~~~~~~~~~~~~~~
   drivers/iommu/generic_pt/fmt/amdv1.h:318:16: note: in expansion of macro 'try_cmpxchg64'
     318 |         return try_cmpxchg64(tablep, &pts->entry, new);
         |                ^~~~~~~~~~~~~
>> drivers/iommu/generic_pt/fmt/amdv1.h:316:13: warning: unused variable 'new' [-Wunused-variable]
     316 |         u64 new = pts->entry | AMDV1PT_FMT_D;
         |             ^~~
--
   In file included from generic_pt/fmt/iommu_template.h:36,
                    from generic_pt/fmt/iommu_amdv1.c:15:
   generic_pt/fmt/amdv1.h: In function 'amdv1pt_install_table':
   generic_pt/fmt/amdv1.h:255:16: error: implicit declaration of function 'pt_table_install64'; did you mean 'pt_table_install32'? [-Wimplicit-function-declaration]
     255 |         return pt_table_install64(pts, entry);
         |                ^~~~~~~~~~~~~~~~~~
         |                pt_table_install32
   In file included from include/linux/atomic.h:80,
                    from generic_pt/fmt/../pt_defs.h:17,
                    from generic_pt/fmt/iommu_template.h:35:
   generic_pt/fmt/amdv1.h: In function 'amdv1pt_entry_make_write_dirty':
>> include/linux/atomic/atomic-arch-fallback.h:259:14: error: invalid use of void expression
     259 |         ___r = raw_cmpxchg64((_ptr), ___o, (_new)); \
         |              ^
   include/linux/atomic/atomic-instrumented.h:4918:9: note: in expansion of macro 'raw_try_cmpxchg64'
    4918 |         raw_try_cmpxchg64(__ai_ptr, __ai_oldp, __VA_ARGS__); \
         |         ^~~~~~~~~~~~~~~~~
   generic_pt/fmt/amdv1.h:318:16: note: in expansion of macro 'try_cmpxchg64'
     318 |         return try_cmpxchg64(tablep, &pts->entry, new);
         |                ^~~~~~~~~~~~~
   generic_pt/fmt/amdv1.h:316:13: warning: unused variable 'new' [-Wunused-variable]
     316 |         u64 new = pts->entry | AMDV1PT_FMT_D;
         |             ^~~

Kconfig warnings: (for reference only)
   WARNING: unmet direct dependencies detected for IOMMU_PT
   Depends on [n]: IOMMU_SUPPORT [=n] && GENERIC_PT [=y]
   Selected by [y]:
   - VFIO_NOIOMMU [=y] && VFIO [=y] && VFIO_GROUP [=y]
   WARNING: unmet direct dependencies detected for IOMMU_PT_AMDV1
   Depends on [n]: GENERIC_PT [=y] && IOMMU_PT [=y] && !GENERIC_ATOMIC64 [=y]
   Selected by [y]:
   - VFIO_NOIOMMU [=y] && VFIO [=y] && VFIO_GROUP [=y]


vim +255 drivers/iommu/generic_pt/fmt/amdv1.h

879ced2bab1ba9 Jason Gunthorpe 2025-11-04  236  
879ced2bab1ba9 Jason Gunthorpe 2025-11-04  237  static inline bool amdv1pt_install_table(struct pt_state *pts,
879ced2bab1ba9 Jason Gunthorpe 2025-11-04  238  					 pt_oaddr_t table_pa,
879ced2bab1ba9 Jason Gunthorpe 2025-11-04  239  					 const struct pt_write_attrs *attrs)
879ced2bab1ba9 Jason Gunthorpe 2025-11-04  240  {
879ced2bab1ba9 Jason Gunthorpe 2025-11-04  241  	u64 entry;
879ced2bab1ba9 Jason Gunthorpe 2025-11-04  242  
879ced2bab1ba9 Jason Gunthorpe 2025-11-04  243  	/*
879ced2bab1ba9 Jason Gunthorpe 2025-11-04  244  	 * IR and IW are ANDed from the table levels along with the PTE. We
879ced2bab1ba9 Jason Gunthorpe 2025-11-04  245  	 * always control permissions from the PTE, so always set IR and IW for
879ced2bab1ba9 Jason Gunthorpe 2025-11-04  246  	 * tables.
879ced2bab1ba9 Jason Gunthorpe 2025-11-04  247  	 */
879ced2bab1ba9 Jason Gunthorpe 2025-11-04  248  	entry = AMDV1PT_FMT_PR |
879ced2bab1ba9 Jason Gunthorpe 2025-11-04  249  		FIELD_PREP(AMDV1PT_FMT_NEXT_LEVEL, pts->level) |
879ced2bab1ba9 Jason Gunthorpe 2025-11-04  250  		FIELD_PREP(AMDV1PT_FMT_OA,
879ced2bab1ba9 Jason Gunthorpe 2025-11-04  251  			   log2_div(table_pa, PT_GRANULE_LG2SZ)) |
879ced2bab1ba9 Jason Gunthorpe 2025-11-04  252  		AMDV1PT_FMT_IR | AMDV1PT_FMT_IW;
879ced2bab1ba9 Jason Gunthorpe 2025-11-04  253  	if (pts_feature(pts, PT_FEAT_AMDV1_ENCRYPT_TABLES))
879ced2bab1ba9 Jason Gunthorpe 2025-11-04  254  		entry = __sme_set(entry);
879ced2bab1ba9 Jason Gunthorpe 2025-11-04 @255  	return pt_table_install64(pts, entry);
879ced2bab1ba9 Jason Gunthorpe 2025-11-04  256  }
879ced2bab1ba9 Jason Gunthorpe 2025-11-04  257  #define pt_install_table amdv1pt_install_table
879ced2bab1ba9 Jason Gunthorpe 2025-11-04  258  
879ced2bab1ba9 Jason Gunthorpe 2025-11-04  259  static inline void amdv1pt_attr_from_entry(const struct pt_state *pts,
879ced2bab1ba9 Jason Gunthorpe 2025-11-04  260  					   struct pt_write_attrs *attrs)
879ced2bab1ba9 Jason Gunthorpe 2025-11-04  261  {
879ced2bab1ba9 Jason Gunthorpe 2025-11-04  262  	attrs->descriptor_bits =
879ced2bab1ba9 Jason Gunthorpe 2025-11-04  263  		pts->entry & (AMDV1PT_FMT_FC | AMDV1PT_FMT_IR | AMDV1PT_FMT_IW);
879ced2bab1ba9 Jason Gunthorpe 2025-11-04  264  }
879ced2bab1ba9 Jason Gunthorpe 2025-11-04  265  #define pt_attr_from_entry amdv1pt_attr_from_entry
879ced2bab1ba9 Jason Gunthorpe 2025-11-04  266  
879ced2bab1ba9 Jason Gunthorpe 2025-11-04  267  static inline void amdv1pt_clear_entries(struct pt_state *pts,
879ced2bab1ba9 Jason Gunthorpe 2025-11-04  268  					 unsigned int num_contig_lg2)
879ced2bab1ba9 Jason Gunthorpe 2025-11-04  269  {
879ced2bab1ba9 Jason Gunthorpe 2025-11-04  270  	u64 *tablep = pt_cur_table(pts, u64) + pts->index;
879ced2bab1ba9 Jason Gunthorpe 2025-11-04  271  	u64 *end = tablep + log2_to_int(num_contig_lg2);
879ced2bab1ba9 Jason Gunthorpe 2025-11-04  272  
879ced2bab1ba9 Jason Gunthorpe 2025-11-04  273  	/*
879ced2bab1ba9 Jason Gunthorpe 2025-11-04  274  	 * gcc generates rep stos for the io-pgtable code, and this difference
879ced2bab1ba9 Jason Gunthorpe 2025-11-04  275  	 * can show in microbenchmarks with larger contiguous page sizes.
879ced2bab1ba9 Jason Gunthorpe 2025-11-04  276  	 * rep is slower for small cases.
879ced2bab1ba9 Jason Gunthorpe 2025-11-04  277  	 */
879ced2bab1ba9 Jason Gunthorpe 2025-11-04  278  	if (num_contig_lg2 <= ilog2(32)) {
879ced2bab1ba9 Jason Gunthorpe 2025-11-04  279  		for (; tablep != end; tablep++)
879ced2bab1ba9 Jason Gunthorpe 2025-11-04  280  			WRITE_ONCE(*tablep, 0);
879ced2bab1ba9 Jason Gunthorpe 2025-11-04  281  	} else {
879ced2bab1ba9 Jason Gunthorpe 2025-11-04  282  		memset64(tablep, 0, log2_to_int(num_contig_lg2));
879ced2bab1ba9 Jason Gunthorpe 2025-11-04  283  	}
879ced2bab1ba9 Jason Gunthorpe 2025-11-04  284  }
879ced2bab1ba9 Jason Gunthorpe 2025-11-04  285  #define pt_clear_entries amdv1pt_clear_entries
879ced2bab1ba9 Jason Gunthorpe 2025-11-04  286  
879ced2bab1ba9 Jason Gunthorpe 2025-11-04  287  static inline bool amdv1pt_entry_is_write_dirty(const struct pt_state *pts)
879ced2bab1ba9 Jason Gunthorpe 2025-11-04  288  {
879ced2bab1ba9 Jason Gunthorpe 2025-11-04  289  	unsigned int num_contig_lg2 = amdv1pt_entry_num_contig_lg2(pts);
879ced2bab1ba9 Jason Gunthorpe 2025-11-04  290  	u64 *tablep = pt_cur_table(pts, u64) +
879ced2bab1ba9 Jason Gunthorpe 2025-11-04  291  		      log2_set_mod(pts->index, 0, num_contig_lg2);
879ced2bab1ba9 Jason Gunthorpe 2025-11-04  292  	u64 *end = tablep + log2_to_int(num_contig_lg2);
879ced2bab1ba9 Jason Gunthorpe 2025-11-04  293  
879ced2bab1ba9 Jason Gunthorpe 2025-11-04  294  	for (; tablep != end; tablep++)
879ced2bab1ba9 Jason Gunthorpe 2025-11-04  295  		if (READ_ONCE(*tablep) & AMDV1PT_FMT_D)
879ced2bab1ba9 Jason Gunthorpe 2025-11-04  296  			return true;
879ced2bab1ba9 Jason Gunthorpe 2025-11-04  297  	return false;
879ced2bab1ba9 Jason Gunthorpe 2025-11-04  298  }
879ced2bab1ba9 Jason Gunthorpe 2025-11-04  299  #define pt_entry_is_write_dirty amdv1pt_entry_is_write_dirty
879ced2bab1ba9 Jason Gunthorpe 2025-11-04  300  
879ced2bab1ba9 Jason Gunthorpe 2025-11-04  301  static inline void amdv1pt_entry_make_write_clean(struct pt_state *pts)
879ced2bab1ba9 Jason Gunthorpe 2025-11-04  302  {
879ced2bab1ba9 Jason Gunthorpe 2025-11-04  303  	unsigned int num_contig_lg2 = amdv1pt_entry_num_contig_lg2(pts);
879ced2bab1ba9 Jason Gunthorpe 2025-11-04  304  	u64 *tablep = pt_cur_table(pts, u64) +
879ced2bab1ba9 Jason Gunthorpe 2025-11-04  305  		      log2_set_mod(pts->index, 0, num_contig_lg2);
879ced2bab1ba9 Jason Gunthorpe 2025-11-04  306  	u64 *end = tablep + log2_to_int(num_contig_lg2);
879ced2bab1ba9 Jason Gunthorpe 2025-11-04  307  
879ced2bab1ba9 Jason Gunthorpe 2025-11-04  308  	for (; tablep != end; tablep++)
879ced2bab1ba9 Jason Gunthorpe 2025-11-04  309  		WRITE_ONCE(*tablep, READ_ONCE(*tablep) & ~(u64)AMDV1PT_FMT_D);
879ced2bab1ba9 Jason Gunthorpe 2025-11-04  310  }
879ced2bab1ba9 Jason Gunthorpe 2025-11-04  311  #define pt_entry_make_write_clean amdv1pt_entry_make_write_clean
879ced2bab1ba9 Jason Gunthorpe 2025-11-04  312  
879ced2bab1ba9 Jason Gunthorpe 2025-11-04  313  static inline bool amdv1pt_entry_make_write_dirty(struct pt_state *pts)
879ced2bab1ba9 Jason Gunthorpe 2025-11-04  314  {
879ced2bab1ba9 Jason Gunthorpe 2025-11-04  315  	u64 *tablep = pt_cur_table(pts, u64) + pts->index;
879ced2bab1ba9 Jason Gunthorpe 2025-11-04 @316  	u64 new = pts->entry | AMDV1PT_FMT_D;
879ced2bab1ba9 Jason Gunthorpe 2025-11-04  317  
879ced2bab1ba9 Jason Gunthorpe 2025-11-04  318  	return try_cmpxchg64(tablep, &pts->entry, new);
879ced2bab1ba9 Jason Gunthorpe 2025-11-04  319  }
879ced2bab1ba9 Jason Gunthorpe 2025-11-04  320  #define pt_entry_make_write_dirty amdv1pt_entry_make_write_dirty
879ced2bab1ba9 Jason Gunthorpe 2025-11-04  321  

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

  reply	other threads:[~2026-02-27 22:05 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-02-27 17:52 [PATCH 00/11] iommufd: Enable noiommu mode for cdev Jacob Pan
2026-02-27 17:52 ` [PATCH 01/11] iommufd: Support a HWPT without an iommu driver for noiommu Jacob Pan
2026-02-27 17:52 ` [PATCH 02/11] iommufd: Move igroup allocation to a function Jacob Pan
2026-02-27 17:52 ` [PATCH 03/11] iommufd: Allow binding to a noiommu device Jacob Pan
2026-02-27 17:52 ` [PATCH 04/11] iommufd: Add an ioctl IOMMU_IOAS_GET_PA to query PA from IOVA Jacob Pan
2026-02-27 17:52 ` [PATCH 05/11] vfio: Allow null group for noiommu without containers Jacob Pan
2026-02-27 17:52 ` [PATCH 06/11] vfio: Introduce and set noiommu flag on vfio_device Jacob Pan
2026-02-27 17:52 ` [PATCH 07/11] vfio: Update noiommu device detection logic for cdev Jacob Pan
2026-02-27 17:52 ` [PATCH 08/11] vfio: Enable cdev noiommu mode under iommufd Jacob Pan
2026-02-27 22:03   ` kernel test robot [this message]
2026-02-28  0:18   ` kernel test robot
2026-02-28  0:35     ` Jason Gunthorpe
2026-03-05 23:26       ` Jacob Pan
2026-03-05 23:38         ` Jason Gunthorpe
2026-03-12 16:33           ` Jacob Pan
2026-02-28  0:29   ` kernel test robot
2026-02-27 17:52 ` [PATCH 09/11] vfio:selftest: Handle VFIO noiommu cdev Jacob Pan
2026-02-27 17:52 ` [PATCH 10/11] selftests/vfio: Add iommufd noiommu mode selftest for cdev Jacob Pan
2026-02-27 17:52 ` [PATCH 11/11] Doc: Update VFIO NOIOMMU mode Jacob Pan
2026-03-03  0:35 ` [PATCH 00/11] iommufd: Enable noiommu mode for cdev Jason Gunthorpe
2026-03-03 19:13   ` Jacob Pan

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=202602280557.4SdsBbeJ-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=alex@shazbot.org \
    --cc=baolu.lu@linux.intel.com \
    --cc=dmatlack@google.com \
    --cc=iommu@lists.linux.dev \
    --cc=jacob.pan@linux.microsoft.com \
    --cc=jean-philippe@linaro.org \
    --cc=jgg@nvidia.com \
    --cc=joro@8bytes.org \
    --cc=kevin.tian@intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=nicolinc@nvidia.com \
    --cc=oe-kbuild-all@lists.linux.dev \
    --cc=pasha.tatashin@soleen.com \
    --cc=robin.murphy@arm.com \
    --cc=skhawaja@google.com \
    --cc=yi.l.liu@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox