* [android-common:android16-6.12-lts 1/1] arch/arm64/kvm/hyp/nvhe/iommu/iommu.c:112:5: sparse: sparse: symbol 'kvm_iommu_refill' was not declared. Should it be static?
@ 2026-09-16 2:33 kernel test robot
0 siblings, 0 replies; 2+ messages in thread
From: kernel test robot @ 2026-09-16 2:33 UTC (permalink / raw)
To: cros-kernel-buildreports; +Cc: oe-kbuild-all
tree: https://android.googlesource.com/kernel/common android16-6.12-lts
head: 57041e4a7e52342473871000827584f966d8cbd3
commit: c949df871d0707fe89a2f8d4e95fab7106e28aac [1/1] ANDROID: KVM: arm64: iommu: Allow donations from a CMA pool
config: arm64-randconfig-r123-20260910 (https://download.01.org/0day-ci/archive/20260916/202609161013.pTKOfZFx-lkp@intel.com/config)
compiler: clang version 24.0.0git (https://github.com/llvm/llvm-project d3db069999553568848400c84cbf815c03f5470f)
sparse: v0.6.5-rc1
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260916/202609161013.pTKOfZFx-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/202609161013.pTKOfZFx-lkp@intel.com/
sparse warnings: (new ones prefixed by >>)
arch/arm64/kvm/hyp/nvhe/iommu/iommu.c:24:1: sparse: sparse: symbol '__pcpu_scope___cur_context' was not declared. Should it be static?
>> arch/arm64/kvm/hyp/nvhe/iommu/iommu.c:112:5: sparse: sparse: symbol 'kvm_iommu_refill' was not declared. Should it be static?
>> arch/arm64/kvm/hyp/nvhe/iommu/iommu.c:154:6: sparse: sparse: symbol 'kvm_iommu_reclaim' was not declared. Should it be static?
>> arch/arm64/kvm/hyp/nvhe/iommu/iommu.c:183:5: sparse: sparse: symbol 'kvm_iommu_reclaimable' was not declared. Should it be static?
arch/arm64/kvm/hyp/nvhe/iommu/iommu.c:216:22: sparse: sparse: symbol '__get_vcpu' was not declared. Should it be static?
arch/arm64/kvm/hyp/nvhe/iommu/iommu.c:396:21: sparse: sparse: Using plain integer as NULL pointer
vim +/kvm_iommu_refill +112 arch/arm64/kvm/hyp/nvhe/iommu/iommu.c
111
> 112 int kvm_iommu_refill(struct kvm_hyp_memcache *host_mc)
113 {
114 struct kvm_hyp_memcache tmp_mc = *host_mc;
115
116 if (!kvm_iommu_ops)
117 return -EINVAL;
118
119 while (tmp_mc.nr_pages) {
120 unsigned long order = FIELD_GET(~PAGE_MASK, tmp_mc.head);
121 phys_addr_t phys = tmp_mc.head & PAGE_MASK;
122 struct hyp_pool *pool = &iommu_system_pool;
123 u64 nr_pages;
124 void *addr;
125
126 if (check_shl_overflow(1UL, order, &nr_pages) ||
127 !IS_ALIGNED(phys, PAGE_SIZE << order))
128 return -EINVAL;
129
130 addr = admit_host_page(&tmp_mc, order);
131 if (!addr)
132 return -EINVAL;
133 *host_mc = tmp_mc;
134
135 if (kvm_iommu_donate_from_cma(phys, order)) {
136 hyp_spin_lock(&__block_pools_lock);
137 pool = __get_empty_block_pool(phys);
138 hyp_spin_unlock(&__block_pools_lock);
139 if (!pool) {
140 __repudiate_host_page(addr, order, &tmp_mc);
141 *host_mc = tmp_mc;
142 return -EBUSY;
143 }
144 } else {
145 hyp_virt_to_page(addr)->order = order;
146 hyp_set_page_refcounted(hyp_virt_to_page(addr));
147 hyp_put_page(pool, addr);
148 }
149 }
150
151 return 0;
152 }
153
> 154 void kvm_iommu_reclaim(struct kvm_hyp_memcache *host_mc, int target)
155 {
156 unsigned long prev_nr_pages = host_mc->nr_pages;
157 unsigned long block_pages = 1 << pmd_order;
158 int p = 0;
159
160 if (!kvm_iommu_ops)
161 return;
162
163 reclaim_hyp_pool(&iommu_system_pool, host_mc, target);
164
165 target -= host_mc->nr_pages - prev_nr_pages;
166
167 while (target > block_pages && p < MAX_BLOCK_POOLS) {
168 struct hyp_pool *pool = &iommu_block_pools[p];
169
170 hyp_spin_lock(&__block_pools_lock);
171
172 if (hyp_pool_free_pages(pool) == block_pages) {
173 reclaim_hyp_pool(pool, host_mc, block_pages);
174 hyp_pool_init_empty(pool, 1);
175 target -= block_pages;
176 }
177
178 hyp_spin_unlock(&__block_pools_lock);
179 p++;
180 }
181 }
182
> 183 int kvm_iommu_reclaimable(void)
184 {
185 unsigned long reclaimable = 0;
186 int p;
187
188 if (!kvm_iommu_ops)
189 return 0;
190
191 reclaimable += hyp_pool_free_pages(&iommu_system_pool);
192
193 /*
194 * This also accounts for blocks, allocated from the CMA region. This is
195 * not exactly what the shrinker wants... but we need to have a way to
196 * report this memory to the host.
197 */
198
199 for (p = 0; p < MAX_BLOCK_POOLS; p++) {
200 unsigned long __free_pages = hyp_pool_free_pages(&iommu_block_pools[p]);
201
202 if (__free_pages == 1 << pmd_order)
203 reclaimable += __free_pages;
204 }
205
206 return reclaimable;
207 }
208
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 2+ messages in thread* [android-common:android16-6.12-lts 1/1] arch/arm64/kvm/hyp/nvhe/iommu/iommu.c:112:5: sparse: sparse: symbol 'kvm_iommu_refill' was not declared. Should it be static?
@ 2026-09-19 5:57 kernel test robot
0 siblings, 0 replies; 2+ messages in thread
From: kernel test robot @ 2026-09-19 5:57 UTC (permalink / raw)
To: cros-kernel-buildreports; +Cc: oe-kbuild-all
tree: https://android.googlesource.com/kernel/common android16-6.12-lts
head: 57041e4a7e52342473871000827584f966d8cbd3
commit: c949df871d0707fe89a2f8d4e95fab7106e28aac [1/1] ANDROID: KVM: arm64: iommu: Allow donations from a CMA pool
config: arm64-randconfig-r123-20260910 (https://download.01.org/0day-ci/archive/20260919/202609191345.hwKh6fZv-lkp@intel.com/config)
compiler: clang version 24.0.0git (https://github.com/llvm/llvm-project d3db069999553568848400c84cbf815c03f5470f)
sparse: v0.6.5-rc1
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260919/202609191345.hwKh6fZv-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/202609191345.hwKh6fZv-lkp@intel.com/
sparse warnings: (new ones prefixed by >>)
arch/arm64/kvm/hyp/nvhe/iommu/iommu.c:24:1: sparse: sparse: symbol '__pcpu_scope___cur_context' was not declared. Should it be static?
>> arch/arm64/kvm/hyp/nvhe/iommu/iommu.c:112:5: sparse: sparse: symbol 'kvm_iommu_refill' was not declared. Should it be static?
>> arch/arm64/kvm/hyp/nvhe/iommu/iommu.c:154:6: sparse: sparse: symbol 'kvm_iommu_reclaim' was not declared. Should it be static?
>> arch/arm64/kvm/hyp/nvhe/iommu/iommu.c:183:5: sparse: sparse: symbol 'kvm_iommu_reclaimable' was not declared. Should it be static?
arch/arm64/kvm/hyp/nvhe/iommu/iommu.c:216:22: sparse: sparse: symbol '__get_vcpu' was not declared. Should it be static?
arch/arm64/kvm/hyp/nvhe/iommu/iommu.c:396:21: sparse: sparse: Using plain integer as NULL pointer
vim +/kvm_iommu_refill +112 arch/arm64/kvm/hyp/nvhe/iommu/iommu.c
111
> 112 int kvm_iommu_refill(struct kvm_hyp_memcache *host_mc)
113 {
114 struct kvm_hyp_memcache tmp_mc = *host_mc;
115
116 if (!kvm_iommu_ops)
117 return -EINVAL;
118
119 while (tmp_mc.nr_pages) {
120 unsigned long order = FIELD_GET(~PAGE_MASK, tmp_mc.head);
121 phys_addr_t phys = tmp_mc.head & PAGE_MASK;
122 struct hyp_pool *pool = &iommu_system_pool;
123 u64 nr_pages;
124 void *addr;
125
126 if (check_shl_overflow(1UL, order, &nr_pages) ||
127 !IS_ALIGNED(phys, PAGE_SIZE << order))
128 return -EINVAL;
129
130 addr = admit_host_page(&tmp_mc, order);
131 if (!addr)
132 return -EINVAL;
133 *host_mc = tmp_mc;
134
135 if (kvm_iommu_donate_from_cma(phys, order)) {
136 hyp_spin_lock(&__block_pools_lock);
137 pool = __get_empty_block_pool(phys);
138 hyp_spin_unlock(&__block_pools_lock);
139 if (!pool) {
140 __repudiate_host_page(addr, order, &tmp_mc);
141 *host_mc = tmp_mc;
142 return -EBUSY;
143 }
144 } else {
145 hyp_virt_to_page(addr)->order = order;
146 hyp_set_page_refcounted(hyp_virt_to_page(addr));
147 hyp_put_page(pool, addr);
148 }
149 }
150
151 return 0;
152 }
153
> 154 void kvm_iommu_reclaim(struct kvm_hyp_memcache *host_mc, int target)
155 {
156 unsigned long prev_nr_pages = host_mc->nr_pages;
157 unsigned long block_pages = 1 << pmd_order;
158 int p = 0;
159
160 if (!kvm_iommu_ops)
161 return;
162
163 reclaim_hyp_pool(&iommu_system_pool, host_mc, target);
164
165 target -= host_mc->nr_pages - prev_nr_pages;
166
167 while (target > block_pages && p < MAX_BLOCK_POOLS) {
168 struct hyp_pool *pool = &iommu_block_pools[p];
169
170 hyp_spin_lock(&__block_pools_lock);
171
172 if (hyp_pool_free_pages(pool) == block_pages) {
173 reclaim_hyp_pool(pool, host_mc, block_pages);
174 hyp_pool_init_empty(pool, 1);
175 target -= block_pages;
176 }
177
178 hyp_spin_unlock(&__block_pools_lock);
179 p++;
180 }
181 }
182
> 183 int kvm_iommu_reclaimable(void)
184 {
185 unsigned long reclaimable = 0;
186 int p;
187
188 if (!kvm_iommu_ops)
189 return 0;
190
191 reclaimable += hyp_pool_free_pages(&iommu_system_pool);
192
193 /*
194 * This also accounts for blocks, allocated from the CMA region. This is
195 * not exactly what the shrinker wants... but we need to have a way to
196 * report this memory to the host.
197 */
198
199 for (p = 0; p < MAX_BLOCK_POOLS; p++) {
200 unsigned long __free_pages = hyp_pool_free_pages(&iommu_block_pools[p]);
201
202 if (__free_pages == 1 << pmd_order)
203 reclaimable += __free_pages;
204 }
205
206 return reclaimable;
207 }
208
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2026-09-19 5:58 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-09-16 2:33 [android-common:android16-6.12-lts 1/1] arch/arm64/kvm/hyp/nvhe/iommu/iommu.c:112:5: sparse: sparse: symbol 'kvm_iommu_refill' was not declared. Should it be static? kernel test robot
-- strict thread matches above, loose matches on Subject: below --
2026-09-19 5:57 kernel test robot
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.