* [android-common:mirror-poly-aosp-pixel-malibu-staging 4/4] arch/arm64/kvm/hyp/nvhe/iommu/iommu.c:112:5: warning: no previous prototype for 'kvm_iommu_refill'
@ 2026-03-31 4:56 kernel test robot
0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2026-03-31 4:56 UTC (permalink / raw)
To: cros-kernel-buildreports; +Cc: oe-kbuild-all
Hi Vincent,
FYI, the error/warning still remains.
tree: https://android.googlesource.com/kernel/common mirror-poly-aosp-pixel-malibu-staging
head: a7407abfdc833cab1cd2b6f4f2276b8915d4c260
commit: c949df871d0707fe89a2f8d4e95fab7106e28aac [4/4] ANDROID: KVM: arm64: iommu: Allow donations from a CMA pool
config: arm64-defconfig (https://download.01.org/0day-ci/archive/20260331/202603311225.j2VG1o81-lkp@intel.com/config)
compiler: aarch64-linux-gcc (GCC) 15.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260331/202603311225.j2VG1o81-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/202603311225.j2VG1o81-lkp@intel.com/
All warnings (new ones prefixed by >>):
>> arch/arm64/kvm/hyp/nvhe/iommu/iommu.c:112:5: warning: no previous prototype for 'kvm_iommu_refill' [-Wmissing-prototypes]
112 | int kvm_iommu_refill(struct kvm_hyp_memcache *host_mc)
| ^~~~~~~~~~~~~~~~
>> arch/arm64/kvm/hyp/nvhe/iommu/iommu.c:154:6: warning: no previous prototype for 'kvm_iommu_reclaim' [-Wmissing-prototypes]
154 | void kvm_iommu_reclaim(struct kvm_hyp_memcache *host_mc, int target)
| ^~~~~~~~~~~~~~~~~
>> arch/arm64/kvm/hyp/nvhe/iommu/iommu.c:183:5: warning: no previous prototype for 'kvm_iommu_reclaimable' [-Wmissing-prototypes]
183 | int kvm_iommu_reclaimable(void)
| ^~~~~~~~~~~~~~~~~~~~~
arch/arm64/kvm/hyp/nvhe/iommu/iommu.c:216:23: warning: no previous prototype for '__get_vcpu' [-Wmissing-prototypes]
216 | struct pkvm_hyp_vcpu *__get_vcpu(void)
| ^~~~~~~~~~
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] only message in thread
only message in thread, other threads:[~2026-03-31 4:57 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-03-31 4:56 [android-common:mirror-poly-aosp-pixel-malibu-staging 4/4] arch/arm64/kvm/hyp/nvhe/iommu/iommu.c:112:5: warning: no previous prototype for 'kvm_iommu_refill' 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.