From: kernel test robot <lkp@intel.com>
To: kernel@openeuler.org
Cc: oe-kbuild-all@lists.linux.dev
Subject: [openeuler:OLK-6.6 1662/1662] arch/x86/kernel/zhaoxin_kh40000.c:155:26: sparse: sparse: symbol 'kh40000_dma_direct_ops' was not declared. Should it be static?
Date: Thu, 26 Dec 2024 19:08:04 +0800 [thread overview]
Message-ID: <202412261949.sqULJFrV-lkp@intel.com> (raw)
tree: https://gitee.com/openeuler/kernel.git OLK-6.6
head: 9e7f01f21883b8c1e74302dbac8030cf2771b5ae
commit: 11557c1ae4529f133483879b7ee00b7d8c653be7 [1662/1662] x86/cpu/zhaoxin: Encapsulate access to kh40000_dma_direct_ops within function
config: x86_64-randconfig-123-20241226 (https://download.01.org/0day-ci/archive/20241226/202412261949.sqULJFrV-lkp@intel.com/config)
compiler: clang version 19.1.3 (https://github.com/llvm/llvm-project ab51eccf88f5321e7c60591c5546b254b6afab99)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20241226/202412261949.sqULJFrV-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/202412261949.sqULJFrV-lkp@intel.com/
sparse warnings: (new ones prefixed by >>)
arch/x86/kernel/zhaoxin_kh40000.c:33:15: sparse: sparse: symbol 'zhaoxin_patch_code' was not declared. Should it be static?
>> arch/x86/kernel/zhaoxin_kh40000.c:155:26: sparse: sparse: symbol 'kh40000_dma_direct_ops' was not declared. Should it be static?
arch/x86/kernel/zhaoxin_kh40000.c:325:26: sparse: sparse: symbol 'kh40000_dma_iommu_ops' was not declared. Should it be static?
vim +/kh40000_dma_direct_ops +155 arch/x86/kernel/zhaoxin_kh40000.c
4332dbb0718135 leoliu-oc 2024-05-13 32
4332dbb0718135 leoliu-oc 2024-05-13 @33 unsigned long zhaoxin_patch_code = ZHAOXIN_PATCH_CODE_DEFAULT;
4332dbb0718135 leoliu-oc 2024-05-13 34
4332dbb0718135 leoliu-oc 2024-05-13 35 static int __init zhaoxin_patch_code_setup(char *str)
4332dbb0718135 leoliu-oc 2024-05-13 36 {
4332dbb0718135 leoliu-oc 2024-05-13 37 int err = kstrtoul(str, 0, &zhaoxin_patch_code);
4332dbb0718135 leoliu-oc 2024-05-13 38
4332dbb0718135 leoliu-oc 2024-05-13 39 if (err || (zhaoxin_patch_code > ZHAOXIN_PATCH_CODE_MAX)) {
4332dbb0718135 leoliu-oc 2024-05-13 40 pr_err("cmdline 'zhaoxin_patch_bitmask=%s' inappropriate\n", str);
4332dbb0718135 leoliu-oc 2024-05-13 41 zhaoxin_patch_code = ZHAOXIN_PATCH_CODE_DEFAULT;
4332dbb0718135 leoliu-oc 2024-05-13 42 return err;
4332dbb0718135 leoliu-oc 2024-05-13 43 }
4332dbb0718135 leoliu-oc 2024-05-13 44
a4738ea3785a75 leoliu-oc 2024-05-23 45 if (ZHAOXIN_P2CW_NODE_CHECK & zhaoxin_patch_code)
4332dbb0718135 leoliu-oc 2024-05-13 46 pr_info("zhaoxin dma patch node check is enabled\n");
4332dbb0718135 leoliu-oc 2024-05-13 47
4332dbb0718135 leoliu-oc 2024-05-13 48 return 0;
4332dbb0718135 leoliu-oc 2024-05-13 49 }
4332dbb0718135 leoliu-oc 2024-05-13 50 __setup("zhaoxin_patch_bitmask=", zhaoxin_patch_code_setup);
4332dbb0718135 leoliu-oc 2024-05-13 51
4332dbb0718135 leoliu-oc 2024-05-13 52 static struct pci_dev *kh40000_get_pci_dev(struct device *dev)
4332dbb0718135 leoliu-oc 2024-05-13 53 {
4332dbb0718135 leoliu-oc 2024-05-13 54 if (dev_is_pci(dev))
4332dbb0718135 leoliu-oc 2024-05-13 55 return to_pci_dev(dev);
4332dbb0718135 leoliu-oc 2024-05-13 56
4332dbb0718135 leoliu-oc 2024-05-13 57 if (dev->parent)
4332dbb0718135 leoliu-oc 2024-05-13 58 return kh40000_get_pci_dev(dev->parent);
4332dbb0718135 leoliu-oc 2024-05-13 59
4332dbb0718135 leoliu-oc 2024-05-13 60 return NULL;
4332dbb0718135 leoliu-oc 2024-05-13 61 }
4332dbb0718135 leoliu-oc 2024-05-13 62
4332dbb0718135 leoliu-oc 2024-05-13 63 static void kh40000_sync_single_dma_for_cpu(struct device *dev, dma_addr_t paddr,
4332dbb0718135 leoliu-oc 2024-05-13 64 enum dma_data_direction dir, bool is_iommu)
4332dbb0718135 leoliu-oc 2024-05-13 65 {
4332dbb0718135 leoliu-oc 2024-05-13 66 u8 vid;
4332dbb0718135 leoliu-oc 2024-05-13 67 struct pci_dev *pci;
4332dbb0718135 leoliu-oc 2024-05-13 68 u64 dma_mask = *dev->dma_mask;
4332dbb0718135 leoliu-oc 2024-05-13 69
4332dbb0718135 leoliu-oc 2024-05-13 70 /* check direction */
4332dbb0718135 leoliu-oc 2024-05-13 71 if ((dir != DMA_FROM_DEVICE) && (dir != DMA_BIDIRECTIONAL))
4332dbb0718135 leoliu-oc 2024-05-13 72 return;
4332dbb0718135 leoliu-oc 2024-05-13 73
4332dbb0718135 leoliu-oc 2024-05-13 74 /* check dma capability */
4332dbb0718135 leoliu-oc 2024-05-13 75 if (dma_mask <= DMA_BIT_MASK(32))
4332dbb0718135 leoliu-oc 2024-05-13 76 return;
4332dbb0718135 leoliu-oc 2024-05-13 77
4332dbb0718135 leoliu-oc 2024-05-13 78 /* check device type */
4332dbb0718135 leoliu-oc 2024-05-13 79 pci = kh40000_get_pci_dev(dev);
4332dbb0718135 leoliu-oc 2024-05-13 80 if (pci == NULL)
4332dbb0718135 leoliu-oc 2024-05-13 81 return;
4332dbb0718135 leoliu-oc 2024-05-13 82
4332dbb0718135 leoliu-oc 2024-05-13 83 /* get real physical address */
4332dbb0718135 leoliu-oc 2024-05-13 84 if (is_iommu) {
4332dbb0718135 leoliu-oc 2024-05-13 85 struct iommu_domain *domain = iommu_get_dma_domain(dev);
4332dbb0718135 leoliu-oc 2024-05-13 86
4332dbb0718135 leoliu-oc 2024-05-13 87 paddr = iommu_iova_to_phys(domain, paddr);
4332dbb0718135 leoliu-oc 2024-05-13 88 if (!paddr)
4332dbb0718135 leoliu-oc 2024-05-13 89 return;
4332dbb0718135 leoliu-oc 2024-05-13 90 }
4332dbb0718135 leoliu-oc 2024-05-13 91
4332dbb0718135 leoliu-oc 2024-05-13 92 /* check node or not */
4332dbb0718135 leoliu-oc 2024-05-13 93 if ((zhaoxin_patch_code & ZHAOXIN_P2CW_NODE_CHECK)
4332dbb0718135 leoliu-oc 2024-05-13 94 && pfn_to_nid(PFN_DOWN(paddr)) == dev_to_node(dev))
4332dbb0718135 leoliu-oc 2024-05-13 95 return;
4332dbb0718135 leoliu-oc 2024-05-13 96
4332dbb0718135 leoliu-oc 2024-05-13 97 /* flush data by one pci read cycle */
4332dbb0718135 leoliu-oc 2024-05-13 98 pci_read_config_byte(pci, PCI_VENDOR_ID, &vid);
4332dbb0718135 leoliu-oc 2024-05-13 99 }
4332dbb0718135 leoliu-oc 2024-05-13 100
4332dbb0718135 leoliu-oc 2024-05-13 101 /* zhaoxin kh-40000 direct dma ops */
4332dbb0718135 leoliu-oc 2024-05-13 102 static void *kh40000_dma_direct_alloc(struct device *dev, size_t size,
4332dbb0718135 leoliu-oc 2024-05-13 103 dma_addr_t *addr, gfp_t gfp, unsigned long attrs)
4332dbb0718135 leoliu-oc 2024-05-13 104 {
4332dbb0718135 leoliu-oc 2024-05-13 105 if (dev->coherent_dma_mask > DMA_BIT_MASK(32))
4332dbb0718135 leoliu-oc 2024-05-13 106 gfp |= __GFP_THISNODE;
4332dbb0718135 leoliu-oc 2024-05-13 107
4332dbb0718135 leoliu-oc 2024-05-13 108 return dma_direct_alloc(dev, size, addr, gfp, attrs);
4332dbb0718135 leoliu-oc 2024-05-13 109 }
4332dbb0718135 leoliu-oc 2024-05-13 110
4332dbb0718135 leoliu-oc 2024-05-13 111 static void kh40000_dma_direct_unmap_page(struct device *dev, dma_addr_t addr,
4332dbb0718135 leoliu-oc 2024-05-13 112 size_t size, enum dma_data_direction dir, unsigned long attrs)
4332dbb0718135 leoliu-oc 2024-05-13 113 {
4332dbb0718135 leoliu-oc 2024-05-13 114 kh40000_sync_single_dma_for_cpu(dev, addr, dir, 0);
4332dbb0718135 leoliu-oc 2024-05-13 115 dma_direct_unmap_page(dev, addr, size, dir, attrs);
4332dbb0718135 leoliu-oc 2024-05-13 116 }
4332dbb0718135 leoliu-oc 2024-05-13 117
4332dbb0718135 leoliu-oc 2024-05-13 118 static void kh40000_dma_direct_sync_sg_for_cpu(struct device *dev,
4332dbb0718135 leoliu-oc 2024-05-13 119 struct scatterlist *sgl, int nents, enum dma_data_direction dir)
4332dbb0718135 leoliu-oc 2024-05-13 120 {
4332dbb0718135 leoliu-oc 2024-05-13 121 struct scatterlist *sg;
4332dbb0718135 leoliu-oc 2024-05-13 122 int i;
4332dbb0718135 leoliu-oc 2024-05-13 123
4332dbb0718135 leoliu-oc 2024-05-13 124 for_each_sg(sgl, sg, nents, i)
4332dbb0718135 leoliu-oc 2024-05-13 125 kh40000_sync_single_dma_for_cpu(dev, sg_dma_address(sg), dir, 0);
4332dbb0718135 leoliu-oc 2024-05-13 126
4332dbb0718135 leoliu-oc 2024-05-13 127 dma_direct_sync_sg_for_cpu(dev, sgl, nents, dir);
4332dbb0718135 leoliu-oc 2024-05-13 128 }
4332dbb0718135 leoliu-oc 2024-05-13 129
4332dbb0718135 leoliu-oc 2024-05-13 130 static void kh40000_dma_direct_sync_single_for_cpu(struct device *dev,
4332dbb0718135 leoliu-oc 2024-05-13 131 dma_addr_t addr, size_t size, enum dma_data_direction dir)
4332dbb0718135 leoliu-oc 2024-05-13 132 {
4332dbb0718135 leoliu-oc 2024-05-13 133 kh40000_sync_single_dma_for_cpu(dev, addr, dir, 0);
4332dbb0718135 leoliu-oc 2024-05-13 134 dma_direct_sync_single_for_cpu(dev, addr, size, dir);
4332dbb0718135 leoliu-oc 2024-05-13 135 }
4332dbb0718135 leoliu-oc 2024-05-13 136
4332dbb0718135 leoliu-oc 2024-05-13 137 static void kh40000_dma_direct_unmap_sg(struct device *dev, struct scatterlist *sgl,
4332dbb0718135 leoliu-oc 2024-05-13 138 int nents, enum dma_data_direction dir, unsigned long attrs)
4332dbb0718135 leoliu-oc 2024-05-13 139 {
4332dbb0718135 leoliu-oc 2024-05-13 140 struct scatterlist *sg;
4332dbb0718135 leoliu-oc 2024-05-13 141 int i;
4332dbb0718135 leoliu-oc 2024-05-13 142
4332dbb0718135 leoliu-oc 2024-05-13 143 for_each_sg(sgl, sg, nents, i)
4332dbb0718135 leoliu-oc 2024-05-13 144 kh40000_sync_single_dma_for_cpu(dev, sg_dma_address(sg), dir, 0);
4332dbb0718135 leoliu-oc 2024-05-13 145
4332dbb0718135 leoliu-oc 2024-05-13 146 dma_direct_unmap_sg(dev, sgl, nents, dir, attrs);
4332dbb0718135 leoliu-oc 2024-05-13 147 }
4332dbb0718135 leoliu-oc 2024-05-13 148
4332dbb0718135 leoliu-oc 2024-05-13 149 static void kh40000_dma_direct_unmap_resource(struct device *dev, dma_addr_t addr,
4332dbb0718135 leoliu-oc 2024-05-13 150 size_t size, enum dma_data_direction dir, unsigned long attrs)
4332dbb0718135 leoliu-oc 2024-05-13 151 {
4332dbb0718135 leoliu-oc 2024-05-13 152 kh40000_sync_single_dma_for_cpu(dev, addr, dir, 0);
4332dbb0718135 leoliu-oc 2024-05-13 153 }
4332dbb0718135 leoliu-oc 2024-05-13 154
4332dbb0718135 leoliu-oc 2024-05-13 @155 const struct dma_map_ops kh40000_dma_direct_ops = {
4332dbb0718135 leoliu-oc 2024-05-13 156 .flags = DMA_F_PCI_P2PDMA_SUPPORTED,
4332dbb0718135 leoliu-oc 2024-05-13 157 .alloc = kh40000_dma_direct_alloc,
4332dbb0718135 leoliu-oc 2024-05-13 158 .sync_sg_for_cpu = kh40000_dma_direct_sync_sg_for_cpu,
4332dbb0718135 leoliu-oc 2024-05-13 159 .unmap_page = kh40000_dma_direct_unmap_page,
4332dbb0718135 leoliu-oc 2024-05-13 160 .sync_single_for_cpu = kh40000_dma_direct_sync_single_for_cpu,
4332dbb0718135 leoliu-oc 2024-05-13 161 .unmap_sg = kh40000_dma_direct_unmap_sg,
4332dbb0718135 leoliu-oc 2024-05-13 162 .unmap_resource = kh40000_dma_direct_unmap_resource,
4332dbb0718135 leoliu-oc 2024-05-13 163 .dma_supported = dma_direct_supported,
4332dbb0718135 leoliu-oc 2024-05-13 164 .free = dma_direct_free,
4332dbb0718135 leoliu-oc 2024-05-13 165 .alloc_pages = dma_direct_alloc_pages,
4332dbb0718135 leoliu-oc 2024-05-13 166 .free_pages = dma_direct_free_pages,
4332dbb0718135 leoliu-oc 2024-05-13 167 .sync_single_for_device = dma_direct_sync_single_for_device,
4332dbb0718135 leoliu-oc 2024-05-13 168 .sync_sg_for_device = dma_direct_sync_sg_for_device,
4332dbb0718135 leoliu-oc 2024-05-13 169 .get_required_mask = dma_direct_get_required_mask,
4332dbb0718135 leoliu-oc 2024-05-13 170 .max_mapping_size = dma_direct_max_mapping_size,
4332dbb0718135 leoliu-oc 2024-05-13 171 .mmap = dma_direct_mmap,
4332dbb0718135 leoliu-oc 2024-05-13 172 .get_sgtable = dma_direct_get_sgtable,
4332dbb0718135 leoliu-oc 2024-05-13 173 .map_page = dma_direct_map_page,
4332dbb0718135 leoliu-oc 2024-05-13 174 .map_sg = dma_direct_map_sg,
4332dbb0718135 leoliu-oc 2024-05-13 175 .map_resource = dma_direct_map_resource,
4332dbb0718135 leoliu-oc 2024-05-13 176 };
ef20808db09987 leoliu-oc 2024-03-22 177
:::::: The code at line 155 was first introduced by commit
:::::: 4332dbb07181359cccca3ba757ef54e434fb1296 Add kh40000_direct_dma_ops for KH-40000 platform
:::::: TO: leoliu-oc <leoliu-oc@zhaoxin.com>
:::::: CC: leoliu-oc <leoliu-oc@zhaoxin.com>
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
next reply other threads:[~2024-12-26 11:09 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-12-26 11:08 kernel test robot [this message]
-- strict thread matches above, loose matches on Subject: below --
2024-12-27 21:46 [openeuler:OLK-6.6 1662/1662] arch/x86/kernel/zhaoxin_kh40000.c:155:26: sparse: sparse: symbol 'kh40000_dma_direct_ops' was not declared. Should it be static? kernel test robot
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=202412261949.sqULJFrV-lkp@intel.com \
--to=lkp@intel.com \
--cc=kernel@openeuler.org \
--cc=oe-kbuild-all@lists.linux.dev \
/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 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.