All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/3] scsi: smartpqi: fix DMA overlapping mappings asymmetry
@ 2023-03-15 19:21 Desnes Nunes
  2023-03-15 19:21 ` [PATCH 1/3] dma-debug: small dma_debug_entry's comment and variable name updates Desnes Nunes
                   ` (2 more replies)
  0 siblings, 3 replies; 8+ messages in thread
From: Desnes Nunes @ 2023-03-15 19:21 UTC (permalink / raw)
  To: iommu, linux-scsi, storagedev, linux-kernel
  Cc: hch, martin.petersen, don.brace, m.szyprowski, robin.murphy,
	jejb, jsnitsel, Desnes Nunes

In summary, this series fixes an overlapping mappings asymmetry on the
smartpqi driver due to a missing pqi_pci_unmap() call, while also adding
the cacheline on debug messages of dma-debug debugging functions.

Other minor non-functional updates are also provided.

Desnes Nunes (3):
  dma-debug: small dma_debug_entry's comment and variable name updates
  dma-debug: add cacheline to user/kernel space dump messages
  scsi: smartpqi: fix overlapping mappings asymmetry on DMA

 drivers/scsi/smartpqi/smartpqi_init.c |   2 +
 kernel/dma/debug.c                    | 133 ++++++++++++++------------
 2 files changed, 72 insertions(+), 63 deletions(-)

-- 
2.39.1


^ permalink raw reply	[flat|nested] 8+ messages in thread

* [PATCH 1/3] dma-debug: small dma_debug_entry's comment and variable name updates
  2023-03-15 19:21 [PATCH 0/3] scsi: smartpqi: fix DMA overlapping mappings asymmetry Desnes Nunes
@ 2023-03-15 19:21 ` Desnes Nunes
  2023-03-16 10:24   ` Robin Murphy
  2023-03-15 19:21 ` [PATCH 2/3] dma-debug: add cacheline to user/kernel space dump messages Desnes Nunes
  2023-03-15 19:21 ` [PATCH 3/3] scsi: smartpqi: fix DMA overlapping mappings asymmetry Desnes Nunes
  2 siblings, 1 reply; 8+ messages in thread
From: Desnes Nunes @ 2023-03-15 19:21 UTC (permalink / raw)
  To: iommu, linux-scsi, storagedev, linux-kernel
  Cc: hch, martin.petersen, don.brace, m.szyprowski, robin.murphy,
	jejb, jsnitsel, Desnes Nunes

Small update on dma_debug_entry's struct commentary and also standardize
the usage of 'dma_addr' variable name from debug_dma_map_page() on
debug_dma_unmap_page(), and similarly on debug_dma_free_coherent()

Signed-off-by: Desnes Nunes <desnesn@redhat.com>
---
 kernel/dma/debug.c | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/kernel/dma/debug.c b/kernel/dma/debug.c
index 18c93c2276ca..e0ad8db1ec25 100644
--- a/kernel/dma/debug.c
+++ b/kernel/dma/debug.c
@@ -52,7 +52,8 @@ enum map_err_types {
 /**
  * struct dma_debug_entry - track a dma_map* or dma_alloc_coherent mapping
  * @list: node on pre-allocated free_entries list
- * @dev: 'dev' argument to dma_map_{page|single|sg} or dma_alloc_coherent
+ * @dev: pointer to the device driver
+ * @dev_addr: 'dev' argument to dma_map_{page|single|sg} or dma_alloc_coherent
  * @size: length of the mapping
  * @type: single, page, sg, coherent
  * @direction: enum dma_data_direction
@@ -1262,13 +1263,13 @@ void debug_dma_mapping_error(struct device *dev, dma_addr_t dma_addr)
 }
 EXPORT_SYMBOL(debug_dma_mapping_error);
 
-void debug_dma_unmap_page(struct device *dev, dma_addr_t addr,
+void debug_dma_unmap_page(struct device *dev, dma_addr_t dma_addr,
 			  size_t size, int direction)
 {
 	struct dma_debug_entry ref = {
 		.type           = dma_debug_single,
 		.dev            = dev,
-		.dev_addr       = addr,
+		.dev_addr       = dma_addr,
 		.size           = size,
 		.direction      = direction,
 	};
@@ -1403,13 +1404,13 @@ void debug_dma_alloc_coherent(struct device *dev, size_t size,
 }
 
 void debug_dma_free_coherent(struct device *dev, size_t size,
-			 void *virt, dma_addr_t addr)
+			 void *virt, dma_addr_t dma_addr)
 {
 	struct dma_debug_entry ref = {
 		.type           = dma_debug_coherent,
 		.dev            = dev,
 		.offset		= offset_in_page(virt),
-		.dev_addr       = addr,
+		.dev_addr       = dma_addr,
 		.size           = size,
 		.direction      = DMA_BIDIRECTIONAL,
 	};
-- 
2.39.1


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH 2/3] dma-debug: add cacheline to user/kernel space dump messages
  2023-03-15 19:21 [PATCH 0/3] scsi: smartpqi: fix DMA overlapping mappings asymmetry Desnes Nunes
  2023-03-15 19:21 ` [PATCH 1/3] dma-debug: small dma_debug_entry's comment and variable name updates Desnes Nunes
@ 2023-03-15 19:21 ` Desnes Nunes
  2023-03-15 21:46   ` kernel test robot
  2023-03-16  1:32   ` kernel test robot
  2023-03-15 19:21 ` [PATCH 3/3] scsi: smartpqi: fix DMA overlapping mappings asymmetry Desnes Nunes
  2 siblings, 2 replies; 8+ messages in thread
From: Desnes Nunes @ 2023-03-15 19:21 UTC (permalink / raw)
  To: iommu, linux-scsi, storagedev, linux-kernel
  Cc: hch, martin.petersen, don.brace, m.szyprowski, robin.murphy,
	jejb, jsnitsel, Desnes Nunes

Having the cacheline also printed on the debug_dma_dump_mappings() and
dump_show() is useful for debugging. Furthermore, this also standardizes
the messages shown on both dump functions.

Signed-off-by: Desnes Nunes <desnesn@redhat.com>
---
 kernel/dma/debug.c | 122 ++++++++++++++++++++++++---------------------
 1 file changed, 64 insertions(+), 58 deletions(-)

diff --git a/kernel/dma/debug.c b/kernel/dma/debug.c
index e0ad8db1ec25..19cc59829ffd 100644
--- a/kernel/dma/debug.c
+++ b/kernel/dma/debug.c
@@ -396,37 +396,6 @@ static unsigned long long phys_addr(struct dma_debug_entry *entry)
 	return page_to_phys(pfn_to_page(entry->pfn)) + entry->offset;
 }
 
-/*
- * Dump mapping entries for debugging purposes
- */
-void debug_dma_dump_mappings(struct device *dev)
-{
-	int idx;
-
-	for (idx = 0; idx < HASH_SIZE; idx++) {
-		struct hash_bucket *bucket = &dma_entry_hash[idx];
-		struct dma_debug_entry *entry;
-		unsigned long flags;
-
-		spin_lock_irqsave(&bucket->lock, flags);
-
-		list_for_each_entry(entry, &bucket->list, list) {
-			if (!dev || dev == entry->dev) {
-				dev_info(entry->dev,
-					 "%s idx %d P=%Lx N=%lx D=%Lx L=%Lx %s %s\n",
-					 type2name[entry->type], idx,
-					 phys_addr(entry), entry->pfn,
-					 entry->dev_addr, entry->size,
-					 dir2name[entry->direction],
-					 maperr2str[entry->map_err_type]);
-			}
-		}
-
-		spin_unlock_irqrestore(&bucket->lock, flags);
-		cond_resched();
-	}
-}
-
 /*
  * For each mapping (initial cacheline in the case of
  * dma_alloc_coherent/dma_map_page, initial cacheline in each page of a
@@ -547,6 +516,70 @@ static void active_cacheline_remove(struct dma_debug_entry *entry)
 	spin_unlock_irqrestore(&radix_lock, flags);
 }
 
+/*
+ * Dump mappings entries on kernel space for debugging purposes
+ */
+void debug_dma_dump_mappings(struct device *dev)
+{
+	int idx;
+	phys_addr_t cln;
+
+	for (idx = 0; idx < HASH_SIZE; idx++) {
+		struct hash_bucket *bucket = &dma_entry_hash[idx];
+		struct dma_debug_entry *entry;
+		unsigned long flags;
+
+		spin_lock_irqsave(&bucket->lock, flags);
+		list_for_each_entry(entry, &bucket->list, list) {
+			if (!dev || dev == entry->dev) {
+				cln = to_cacheline_number(entry);
+				dev_info(entry->dev,
+					 "%s idx %d P=%llx N=%lx D=%llx L=%llx cln=%llx %s %s\n",
+					 type2name[entry->type], idx,
+					 phys_addr(entry), entry->pfn,
+					 entry->dev_addr, entry->size,
+					 cln, dir2name[entry->direction],
+					 maperr2str[entry->map_err_type]);
+			}
+		}
+		spin_unlock_irqrestore(&bucket->lock, flags);
+
+		cond_resched();
+	}
+}
+
+/*
+ * Dump mappings entries on user space via debugfs
+ */
+static int dump_show(struct seq_file *seq, void *v)
+{
+	int idx;
+	phys_addr_t cln;
+
+	for (idx = 0; idx < HASH_SIZE; idx++) {
+		struct hash_bucket *bucket = &dma_entry_hash[idx];
+		struct dma_debug_entry *entry;
+		unsigned long flags;
+
+		spin_lock_irqsave(&bucket->lock, flags);
+		list_for_each_entry(entry, &bucket->list, list) {
+			cln = to_cacheline_number(entry);
+			seq_printf(seq,
+				   "%s %s %s idx %d P=%llx N=%lx D=%llx L=%llx cln=%llx %s %s\n",
+				   dev_driver_string(entry->dev),
+				   dev_name(entry->dev),
+				   type2name[entry->type], idx,
+				   phys_addr(entry), entry->pfn,
+				   entry->dev_addr, entry->size,
+				   cln, dir2name[entry->direction],
+				   maperr2str[entry->map_err_type]);
+		}
+		spin_unlock_irqrestore(&bucket->lock, flags);
+	}
+	return 0;
+}
+DEFINE_SHOW_ATTRIBUTE(dump);
+
 /*
  * Wrapper function for adding an entry to the hash.
  * This function takes care of locking itself.
@@ -765,33 +798,6 @@ static const struct file_operations filter_fops = {
 	.llseek = default_llseek,
 };
 
-static int dump_show(struct seq_file *seq, void *v)
-{
-	int idx;
-
-	for (idx = 0; idx < HASH_SIZE; idx++) {
-		struct hash_bucket *bucket = &dma_entry_hash[idx];
-		struct dma_debug_entry *entry;
-		unsigned long flags;
-
-		spin_lock_irqsave(&bucket->lock, flags);
-		list_for_each_entry(entry, &bucket->list, list) {
-			seq_printf(seq,
-				   "%s %s %s idx %d P=%llx N=%lx D=%llx L=%llx %s %s\n",
-				   dev_name(entry->dev),
-				   dev_driver_string(entry->dev),
-				   type2name[entry->type], idx,
-				   phys_addr(entry), entry->pfn,
-				   entry->dev_addr, entry->size,
-				   dir2name[entry->direction],
-				   maperr2str[entry->map_err_type]);
-		}
-		spin_unlock_irqrestore(&bucket->lock, flags);
-	}
-	return 0;
-}
-DEFINE_SHOW_ATTRIBUTE(dump);
-
 static int __init dma_debug_fs_init(void)
 {
 	struct dentry *dentry = debugfs_create_dir("dma-api", NULL);
-- 
2.39.1


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH 3/3] scsi: smartpqi: fix DMA overlapping mappings asymmetry
  2023-03-15 19:21 [PATCH 0/3] scsi: smartpqi: fix DMA overlapping mappings asymmetry Desnes Nunes
  2023-03-15 19:21 ` [PATCH 1/3] dma-debug: small dma_debug_entry's comment and variable name updates Desnes Nunes
  2023-03-15 19:21 ` [PATCH 2/3] dma-debug: add cacheline to user/kernel space dump messages Desnes Nunes
@ 2023-03-15 19:21 ` Desnes Nunes
  2 siblings, 0 replies; 8+ messages in thread
From: Desnes Nunes @ 2023-03-15 19:21 UTC (permalink / raw)
  To: iommu, linux-scsi, storagedev, linux-kernel
  Cc: hch, martin.petersen, don.brace, m.szyprowski, robin.murphy,
	jejb, jsnitsel, Desnes Nunes

Currently, pqi_keep_device_offline() calls pqi_build_raid_path_request()
(i.e., a wrapper to pqi_map_single()), but there isn't a pqi_pci_unmap()
call in pqi_keep_device_offline(). Hence, this is flaged as an API viola-
tion due to the overlapping mapping of the physical address.

This patch fixes following warning:

  DMA-API: smartpqi 0000:43:00.0: cacheline tracking EEXIST, overlapping
  mappings aren't supported
  WARNING: CPU: 0 PID: 15 at kernel/dma/debug.c:570
  add_dma_entry+0x1f6/0x2f0
  CPU: 0 PID: 15 Comm: kworker/0:1 Not tainted 6.3.0-rc1-linux #1
  Call Trace:
   <TASK>
   dma_map_page_attrs+0x6f/0xa0
   pqi_map_single+0xaa/0x160 [smartpqi]
   pqi_keep_device_offline+0xaf/0x160 [smartpqi]
   ? dma_unmap_page_attrs+0x1a1/0x1e0
   ? pqi_identify_physical_device.constprop.0+0xd3/0xe0 [smartpqi]
   pqi_update_scsi_devices+0x284/0x7e0 [smartpqi]
   pqi_scan_scsi_devices+0x87/0xe0 [smartpqi]
   pqi_ctrl_init+0x725/0xa60 [smartpqi]
   pqi_pci_probe+0xa7/0x130 [smartpqi]
   local_pci_probe+0x46/0xa0
   work_for_cpu_fn+0x16/0x20
   process_one_work+0x2bf/0x670
   ? __pfx_worker_thread+0x10/0x10
   worker_thread+0x1d1/0x3b0
   ? __pfx_worker_thread+0x10/0x10
   kthread+0xf3/0x120
   ? __pfx_kthread+0x10/0x10
   ret_from_fork+0x2c/0x50
   </TASK>

Fixes: be76f90668d8 ("scsi: smartpqi: Add TEST UNIT READY check for SANITIZE operation")
Signed-off-by: Desnes Nunes <desnesn@redhat.com>
---
 drivers/scsi/smartpqi/smartpqi_init.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/scsi/smartpqi/smartpqi_init.c b/drivers/scsi/smartpqi/smartpqi_init.c
index 49a8f91810b6..6fca497ca605 100644
--- a/drivers/scsi/smartpqi/smartpqi_init.c
+++ b/drivers/scsi/smartpqi/smartpqi_init.c
@@ -1726,6 +1726,8 @@ static bool pqi_keep_device_offline(struct pqi_ctrl_info *ctrl_info,
 
 	rc = pqi_submit_raid_request_synchronous(ctrl_info, &request.header, 0, &error_info);
 
+	pqi_pci_unmap(ctrl_info->pci_dev, request.sg_descriptors, 1, dir);
+
 	if (rc)
 		goto out; /* Assume not offline */
 
-- 
2.39.1


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: [PATCH 2/3] dma-debug: add cacheline to user/kernel space dump messages
  2023-03-15 19:21 ` [PATCH 2/3] dma-debug: add cacheline to user/kernel space dump messages Desnes Nunes
@ 2023-03-15 21:46   ` kernel test robot
  2023-03-16  1:32   ` kernel test robot
  1 sibling, 0 replies; 8+ messages in thread
From: kernel test robot @ 2023-03-15 21:46 UTC (permalink / raw)
  To: Desnes Nunes, iommu, linux-scsi, storagedev, linux-kernel
  Cc: oe-kbuild-all, hch, martin.petersen, don.brace, m.szyprowski,
	robin.murphy, jejb, jsnitsel, Desnes Nunes

Hi Desnes,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on jejb-scsi/for-next]
[also build test WARNING on mkp-scsi/for-next linus/master hch-configfs/for-next v6.3-rc2 next-20230315]
[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/Desnes-Nunes/dma-debug-small-dma_debug_entry-s-comment-and-variable-name-updates/20230316-032542
base:   https://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi.git for-next
patch link:    https://lore.kernel.org/r/20230315192130.970021-3-desnesn%40redhat.com
patch subject: [PATCH 2/3] dma-debug: add cacheline to user/kernel space dump messages
config: m68k-allyesconfig (https://download.01.org/0day-ci/archive/20230316/202303160548.ReyuTsGD-lkp@intel.com/config)
compiler: m68k-linux-gcc (GCC) 12.1.0
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/intel-lab-lkp/linux/commit/ae3f8fdd17c54b837d476952733456723c472ed8
        git remote add linux-review https://github.com/intel-lab-lkp/linux
        git fetch --no-tags linux-review Desnes-Nunes/dma-debug-small-dma_debug_entry-s-comment-and-variable-name-updates/20230316-032542
        git checkout ae3f8fdd17c54b837d476952733456723c472ed8
        # save the config file
        mkdir build_dir && cp config build_dir/.config
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross W=1 O=build_dir ARCH=m68k olddefconfig
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross W=1 O=build_dir ARCH=m68k SHELL=/bin/bash kernel/dma/

If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp@intel.com>
| Link: https://lore.kernel.org/oe-kbuild-all/202303160548.ReyuTsGD-lkp@intel.com/

All warnings (new ones prefixed by >>):

   In file included from include/linux/device.h:15,
                    from include/linux/dma-mapping.h:7,
                    from include/linux/dma-map-ops.h:9,
                    from kernel/dma/debug.c:12:
   kernel/dma/debug.c: In function 'debug_dma_dump_mappings':
>> kernel/dma/debug.c:537:42: warning: format '%llx' expects argument of type 'long long unsigned int', but argument 9 has type 'phys_addr_t' {aka 'unsigned int'} [-Wformat=]
     537 |                                          "%s idx %d P=%llx N=%lx D=%llx L=%llx cln=%llx %s %s\n",
         |                                          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/dev_printk.h:110:30: note: in definition of macro 'dev_printk_index_wrap'
     110 |                 _p_func(dev, fmt, ##__VA_ARGS__);                       \
         |                              ^~~
   include/linux/dev_printk.h:150:58: note: in expansion of macro 'dev_fmt'
     150 |         dev_printk_index_wrap(_dev_info, KERN_INFO, dev, dev_fmt(fmt), ##__VA_ARGS__)
         |                                                          ^~~~~~~
   kernel/dma/debug.c:536:33: note: in expansion of macro 'dev_info'
     536 |                                 dev_info(entry->dev,
         |                                 ^~~~~~~~
   kernel/dma/debug.c:537:87: note: format string is defined here
     537 |                                          "%s idx %d P=%llx N=%lx D=%llx L=%llx cln=%llx %s %s\n",
         |                                                                                    ~~~^
         |                                                                                       |
         |                                                                                       long long unsigned int
         |                                                                                    %x
   kernel/dma/debug.c: In function 'dump_show':
   kernel/dma/debug.c:568:87: warning: format '%llx' expects argument of type 'long long unsigned int', but argument 11 has type 'phys_addr_t' {aka 'unsigned int'} [-Wformat=]
     568 |                                    "%s %s %s idx %d P=%llx N=%lx D=%llx L=%llx cln=%llx %s %s\n",
         |                                                                                    ~~~^
         |                                                                                       |
         |                                                                                       long long unsigned int
         |                                                                                    %x
   ......
     574 |                                    cln, dir2name[entry->direction],
         |                                    ~~~                                                 
         |                                    |
         |                                    phys_addr_t {aka unsigned int}


vim +537 kernel/dma/debug.c

   518	
   519	/*
   520	 * Dump mappings entries on kernel space for debugging purposes
   521	 */
   522	void debug_dma_dump_mappings(struct device *dev)
   523	{
   524		int idx;
   525		phys_addr_t cln;
   526	
   527		for (idx = 0; idx < HASH_SIZE; idx++) {
   528			struct hash_bucket *bucket = &dma_entry_hash[idx];
   529			struct dma_debug_entry *entry;
   530			unsigned long flags;
   531	
   532			spin_lock_irqsave(&bucket->lock, flags);
   533			list_for_each_entry(entry, &bucket->list, list) {
   534				if (!dev || dev == entry->dev) {
   535					cln = to_cacheline_number(entry);
   536					dev_info(entry->dev,
 > 537						 "%s idx %d P=%llx N=%lx D=%llx L=%llx cln=%llx %s %s\n",
   538						 type2name[entry->type], idx,
   539						 phys_addr(entry), entry->pfn,
   540						 entry->dev_addr, entry->size,
   541						 cln, dir2name[entry->direction],
   542						 maperr2str[entry->map_err_type]);
   543				}
   544			}
   545			spin_unlock_irqrestore(&bucket->lock, flags);
   546	
   547			cond_resched();
   548		}
   549	}
   550	

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

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH 2/3] dma-debug: add cacheline to user/kernel space dump messages
  2023-03-15 19:21 ` [PATCH 2/3] dma-debug: add cacheline to user/kernel space dump messages Desnes Nunes
  2023-03-15 21:46   ` kernel test robot
@ 2023-03-16  1:32   ` kernel test robot
  1 sibling, 0 replies; 8+ messages in thread
From: kernel test robot @ 2023-03-16  1:32 UTC (permalink / raw)
  To: Desnes Nunes, iommu, linux-scsi, storagedev, linux-kernel
  Cc: llvm, oe-kbuild-all, hch, martin.petersen, don.brace,
	m.szyprowski, robin.murphy, jejb, jsnitsel, Desnes Nunes

Hi Desnes,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on jejb-scsi/for-next]
[also build test WARNING on mkp-scsi/for-next linus/master]
[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/Desnes-Nunes/dma-debug-small-dma_debug_entry-s-comment-and-variable-name-updates/20230316-032542
base:   https://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi.git for-next
patch link:    https://lore.kernel.org/r/20230315192130.970021-3-desnesn%40redhat.com
patch subject: [PATCH 2/3] dma-debug: add cacheline to user/kernel space dump messages
config: arm-randconfig-r046-20230312 (https://download.01.org/0day-ci/archive/20230316/202303160927.dwt0jHFb-lkp@intel.com/config)
compiler: clang version 17.0.0 (https://github.com/llvm/llvm-project 67409911353323ca5edf2049ef0df54132fa1ca7)
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
        # install arm cross compiling tool for clang build
        # apt-get install binutils-arm-linux-gnueabi
        # https://github.com/intel-lab-lkp/linux/commit/ae3f8fdd17c54b837d476952733456723c472ed8
        git remote add linux-review https://github.com/intel-lab-lkp/linux
        git fetch --no-tags linux-review Desnes-Nunes/dma-debug-small-dma_debug_entry-s-comment-and-variable-name-updates/20230316-032542
        git checkout ae3f8fdd17c54b837d476952733456723c472ed8
        # save the config file
        mkdir build_dir && cp config build_dir/.config
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=arm olddefconfig
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=arm SHELL=/bin/bash kernel/dma/

If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp@intel.com>
| Link: https://lore.kernel.org/oe-kbuild-all/202303160927.dwt0jHFb-lkp@intel.com/

All warnings (new ones prefixed by >>):

>> kernel/dma/debug.c:541:7: warning: format specifies type 'unsigned long long' but the argument has type 'phys_addr_t' (aka 'unsigned int') [-Wformat]
                                            cln, dir2name[entry->direction],
                                            ^~~
   include/linux/dev_printk.h:150:67: note: expanded from macro 'dev_info'
           dev_printk_index_wrap(_dev_info, KERN_INFO, dev, dev_fmt(fmt), ##__VA_ARGS__)
                                                                    ~~~     ^~~~~~~~~~~
   include/linux/dev_printk.h:110:23: note: expanded from macro 'dev_printk_index_wrap'
                   _p_func(dev, fmt, ##__VA_ARGS__);                       \
                                ~~~    ^~~~~~~~~~~
   kernel/dma/debug.c:574:8: warning: format specifies type 'unsigned long long' but the argument has type 'phys_addr_t' (aka 'unsigned int') [-Wformat]
                                      cln, dir2name[entry->direction],
                                      ^~~
   2 warnings generated.


vim +541 kernel/dma/debug.c

   518	
   519	/*
   520	 * Dump mappings entries on kernel space for debugging purposes
   521	 */
   522	void debug_dma_dump_mappings(struct device *dev)
   523	{
   524		int idx;
   525		phys_addr_t cln;
   526	
   527		for (idx = 0; idx < HASH_SIZE; idx++) {
   528			struct hash_bucket *bucket = &dma_entry_hash[idx];
   529			struct dma_debug_entry *entry;
   530			unsigned long flags;
   531	
   532			spin_lock_irqsave(&bucket->lock, flags);
   533			list_for_each_entry(entry, &bucket->list, list) {
   534				if (!dev || dev == entry->dev) {
   535					cln = to_cacheline_number(entry);
   536					dev_info(entry->dev,
   537						 "%s idx %d P=%llx N=%lx D=%llx L=%llx cln=%llx %s %s\n",
   538						 type2name[entry->type], idx,
   539						 phys_addr(entry), entry->pfn,
   540						 entry->dev_addr, entry->size,
 > 541						 cln, dir2name[entry->direction],
   542						 maperr2str[entry->map_err_type]);
   543				}
   544			}
   545			spin_unlock_irqrestore(&bucket->lock, flags);
   546	
   547			cond_resched();
   548		}
   549	}
   550	

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

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH 1/3] dma-debug: small dma_debug_entry's comment and variable name updates
  2023-03-15 19:21 ` [PATCH 1/3] dma-debug: small dma_debug_entry's comment and variable name updates Desnes Nunes
@ 2023-03-16 10:24   ` Robin Murphy
  2023-03-16 14:06     ` Desnes Nunes
  0 siblings, 1 reply; 8+ messages in thread
From: Robin Murphy @ 2023-03-16 10:24 UTC (permalink / raw)
  To: Desnes Nunes, iommu, linux-scsi, storagedev, linux-kernel
  Cc: hch, martin.petersen, don.brace, m.szyprowski, jejb, jsnitsel

On 2023-03-15 19:21, Desnes Nunes wrote:
> Small update on dma_debug_entry's struct commentary and also standardize
> the usage of 'dma_addr' variable name from debug_dma_map_page() on
> debug_dma_unmap_page(), and similarly on debug_dma_free_coherent()
> 
> Signed-off-by: Desnes Nunes <desnesn@redhat.com>
> ---
>   kernel/dma/debug.c | 11 ++++++-----
>   1 file changed, 6 insertions(+), 5 deletions(-)
> 
> diff --git a/kernel/dma/debug.c b/kernel/dma/debug.c
> index 18c93c2276ca..e0ad8db1ec25 100644
> --- a/kernel/dma/debug.c
> +++ b/kernel/dma/debug.c
> @@ -52,7 +52,8 @@ enum map_err_types {
>   /**
>    * struct dma_debug_entry - track a dma_map* or dma_alloc_coherent mapping
>    * @list: node on pre-allocated free_entries list
> - * @dev: 'dev' argument to dma_map_{page|single|sg} or dma_alloc_coherent
> + * @dev: pointer to the device driver

The original comment was correct...

> + * @dev_addr: 'dev' argument to dma_map_{page|single|sg} or dma_alloc_coherent

...and the address is clearly not the argument representing the device, 
since it is an address :/

Thanks,
Robin.

>    * @size: length of the mapping
>    * @type: single, page, sg, coherent
>    * @direction: enum dma_data_direction
> @@ -1262,13 +1263,13 @@ void debug_dma_mapping_error(struct device *dev, dma_addr_t dma_addr)
>   }
>   EXPORT_SYMBOL(debug_dma_mapping_error);
>   
> -void debug_dma_unmap_page(struct device *dev, dma_addr_t addr,
> +void debug_dma_unmap_page(struct device *dev, dma_addr_t dma_addr,
>   			  size_t size, int direction)
>   {
>   	struct dma_debug_entry ref = {
>   		.type           = dma_debug_single,
>   		.dev            = dev,
> -		.dev_addr       = addr,
> +		.dev_addr       = dma_addr,
>   		.size           = size,
>   		.direction      = direction,
>   	};
> @@ -1403,13 +1404,13 @@ void debug_dma_alloc_coherent(struct device *dev, size_t size,
>   }
>   
>   void debug_dma_free_coherent(struct device *dev, size_t size,
> -			 void *virt, dma_addr_t addr)
> +			 void *virt, dma_addr_t dma_addr)
>   {
>   	struct dma_debug_entry ref = {
>   		.type           = dma_debug_coherent,
>   		.dev            = dev,
>   		.offset		= offset_in_page(virt),
> -		.dev_addr       = addr,
> +		.dev_addr       = dma_addr,
>   		.size           = size,
>   		.direction      = DMA_BIDIRECTIONAL,
>   	};

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH 1/3] dma-debug: small dma_debug_entry's comment and variable name updates
  2023-03-16 10:24   ` Robin Murphy
@ 2023-03-16 14:06     ` Desnes Nunes
  0 siblings, 0 replies; 8+ messages in thread
From: Desnes Nunes @ 2023-03-16 14:06 UTC (permalink / raw)
  To: Robin Murphy
  Cc: iommu, linux-scsi, storagedev, linux-kernel, hch,
	martin.petersen, don.brace, m.szyprowski, jejb, jsnitsel

Good day Robin,

Thank you very much for the review and clarification - will send a v2
with the proper comment update.

Best Regards,

On Thu, Mar 16, 2023 at 7:24 AM Robin Murphy <robin.murphy@arm.com> wrote:
>
> On 2023-03-15 19:21, Desnes Nunes wrote:
> > Small update on dma_debug_entry's struct commentary and also standardize
> > the usage of 'dma_addr' variable name from debug_dma_map_page() on
> > debug_dma_unmap_page(), and similarly on debug_dma_free_coherent()
> >
> > Signed-off-by: Desnes Nunes <desnesn@redhat.com>
> > ---
> >   kernel/dma/debug.c | 11 ++++++-----
> >   1 file changed, 6 insertions(+), 5 deletions(-)
> >
> > diff --git a/kernel/dma/debug.c b/kernel/dma/debug.c
> > index 18c93c2276ca..e0ad8db1ec25 100644
> > --- a/kernel/dma/debug.c
> > +++ b/kernel/dma/debug.c
> > @@ -52,7 +52,8 @@ enum map_err_types {
> >   /**
> >    * struct dma_debug_entry - track a dma_map* or dma_alloc_coherent mapping
> >    * @list: node on pre-allocated free_entries list
> > - * @dev: 'dev' argument to dma_map_{page|single|sg} or dma_alloc_coherent
> > + * @dev: pointer to the device driver
>
> The original comment was correct...
>
> > + * @dev_addr: 'dev' argument to dma_map_{page|single|sg} or dma_alloc_coherent
>
> ...and the address is clearly not the argument representing the device,
> since it is an address :/
>
> Thanks,
> Robin.
>
> >    * @size: length of the mapping
> >    * @type: single, page, sg, coherent
> >    * @direction: enum dma_data_direction
> > @@ -1262,13 +1263,13 @@ void debug_dma_mapping_error(struct device *dev, dma_addr_t dma_addr)
> >   }
> >   EXPORT_SYMBOL(debug_dma_mapping_error);
> >
> > -void debug_dma_unmap_page(struct device *dev, dma_addr_t addr,
> > +void debug_dma_unmap_page(struct device *dev, dma_addr_t dma_addr,
> >                         size_t size, int direction)
> >   {
> >       struct dma_debug_entry ref = {
> >               .type           = dma_debug_single,
> >               .dev            = dev,
> > -             .dev_addr       = addr,
> > +             .dev_addr       = dma_addr,
> >               .size           = size,
> >               .direction      = direction,
> >       };
> > @@ -1403,13 +1404,13 @@ void debug_dma_alloc_coherent(struct device *dev, size_t size,
> >   }
> >
> >   void debug_dma_free_coherent(struct device *dev, size_t size,
> > -                      void *virt, dma_addr_t addr)
> > +                      void *virt, dma_addr_t dma_addr)
> >   {
> >       struct dma_debug_entry ref = {
> >               .type           = dma_debug_coherent,
> >               .dev            = dev,
> >               .offset         = offset_in_page(virt),
> > -             .dev_addr       = addr,
> > +             .dev_addr       = dma_addr,
> >               .size           = size,
> >               .direction      = DMA_BIDIRECTIONAL,
> >       };
>


-- 
Desnes Nunes
Principal Software Engineer
Red Hat Brasil


^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2023-03-16 14:07 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-03-15 19:21 [PATCH 0/3] scsi: smartpqi: fix DMA overlapping mappings asymmetry Desnes Nunes
2023-03-15 19:21 ` [PATCH 1/3] dma-debug: small dma_debug_entry's comment and variable name updates Desnes Nunes
2023-03-16 10:24   ` Robin Murphy
2023-03-16 14:06     ` Desnes Nunes
2023-03-15 19:21 ` [PATCH 2/3] dma-debug: add cacheline to user/kernel space dump messages Desnes Nunes
2023-03-15 21:46   ` kernel test robot
2023-03-16  1:32   ` kernel test robot
2023-03-15 19:21 ` [PATCH 3/3] scsi: smartpqi: fix DMA overlapping mappings asymmetry Desnes Nunes

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.