From: kernel test robot <lkp@intel.com>
To: cros-kernel-buildreports@googlegroups.com
Cc: oe-kbuild-all@lists.linux.dev
Subject: [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'
Date: Tue, 31 Mar 2026 12:56:11 +0800 [thread overview]
Message-ID: <202603311225.j2VG1o81-lkp@intel.com> (raw)
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
reply other threads:[~2026-03-31 4:57 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
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=202603311225.j2VG1o81-lkp@intel.com \
--to=lkp@intel.com \
--cc=cros-kernel-buildreports@googlegroups.com \
--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.