From: kbuild test robot <lkp@intel•com>
To: Ram Pai <linuxram@us•ibm.com>,
kvm-ppc@vger•kernel.org, linuxppc-dev@lists•ozlabs.org
Cc: ldufour@linux•ibm.com, kbuild-all@lists•01.org,
bharata@linux•ibm.com, aneesh.kumar@linux•ibm.com,
sukadev@linux•vnet.ibm.com, bauerman@linux•ibm.com
Subject: Re: [PATCH v1 2/4] KVM: PPC: Book3S HV: track shared GFNs of secure VMs
Date: Mon, 1 Jun 2020 12:12:29 +0800 [thread overview]
Message-ID: <202006011222.47EU2yvU%lkp@intel.com> (raw)
In-Reply-To: <1590892071-25549-3-git-send-email-linuxram@us.ibm.com>
[-- Attachment #1: Type: text/plain, Size: 8401 bytes --]
Hi Ram,
Thank you for the patch! Perhaps something to improve:
[auto build test WARNING on powerpc/next]
[also build test WARNING on v5.7 next-20200529]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see https://stackoverflow.com/a/37406982]
url: https://github.com/0day-ci/linux/commits/Ram-Pai/Migrate-non-migrated-pages-of-a-SVM/20200601-034649
base: https://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux.git next
config: powerpc-allyesconfig (attached as .config)
compiler: powerpc64-linux-gcc (GCC) 9.3.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
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=powerpc
If you fix the issue, kindly add following tag as appropriate
Reported-by: kbuild test robot <lkp@intel•com>
All warnings (new ones prefixed by >>, old ones prefixed by <<):
arch/powerpc/kvm/book3s_hv_uvmem.c:158:6: warning: no previous prototype for 'kvmppc_uvmem_available' [-Wmissing-prototypes]
158 | bool kvmppc_uvmem_available(void)
| ^~~~~~~~~~~~~~~~~~~~~~
arch/powerpc/kvm/book3s_hv_uvmem.c:167:5: warning: no previous prototype for 'kvmppc_uvmem_slot_init' [-Wmissing-prototypes]
167 | int kvmppc_uvmem_slot_init(struct kvm *kvm, const struct kvm_memory_slot *slot)
| ^~~~~~~~~~~~~~~~~~~~~~
arch/powerpc/kvm/book3s_hv_uvmem.c:192:6: warning: no previous prototype for 'kvmppc_uvmem_slot_free' [-Wmissing-prototypes]
192 | void kvmppc_uvmem_slot_free(struct kvm *kvm, const struct kvm_memory_slot *slot)
| ^~~~~~~~~~~~~~~~~~~~~~
>> arch/powerpc/kvm/book3s_hv_uvmem.c:279:6: warning: no previous prototype for 'kvmppc_gfn_is_uvmem_shared' [-Wmissing-prototypes]
279 | bool kvmppc_gfn_is_uvmem_shared(unsigned long gfn, struct kvm *kvm)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
arch/powerpc/kvm/book3s_hv_uvmem.c:293:15: warning: no previous prototype for 'kvmppc_h_svm_init_start' [-Wmissing-prototypes]
293 | unsigned long kvmppc_h_svm_init_start(struct kvm *kvm)
| ^~~~~~~~~~~~~~~~~~~~~~~
arch/powerpc/kvm/book3s_hv_uvmem.c:335:15: warning: no previous prototype for 'kvmppc_h_svm_init_done' [-Wmissing-prototypes]
335 | unsigned long kvmppc_h_svm_init_done(struct kvm *kvm)
| ^~~~~~~~~~~~~~~~~~~~~~
arch/powerpc/kvm/book3s_hv_uvmem.c:356:6: warning: no previous prototype for 'kvmppc_uvmem_drop_pages' [-Wmissing-prototypes]
356 | void kvmppc_uvmem_drop_pages(const struct kvm_memory_slot *free,
| ^~~~~~~~~~~~~~~~~~~~~~~
arch/powerpc/kvm/book3s_hv_uvmem.c:397:15: warning: no previous prototype for 'kvmppc_h_svm_init_abort' [-Wmissing-prototypes]
397 | unsigned long kvmppc_h_svm_init_abort(struct kvm *kvm)
| ^~~~~~~~~~~~~~~~~~~~~~~
arch/powerpc/kvm/book3s_hv_uvmem.c:599:15: warning: no previous prototype for 'kvmppc_h_svm_page_in' [-Wmissing-prototypes]
599 | unsigned long kvmppc_h_svm_page_in(struct kvm *kvm, unsigned long gpa,
| ^~~~~~~~~~~~~~~~~~~~
arch/powerpc/kvm/book3s_hv_uvmem.c:784:1: warning: no previous prototype for 'kvmppc_h_svm_page_out' [-Wmissing-prototypes]
784 | kvmppc_h_svm_page_out(struct kvm *kvm, unsigned long gpa,
| ^~~~~~~~~~~~~~~~~~~~~
arch/powerpc/kvm/book3s_hv_uvmem.c:822:5: warning: no previous prototype for 'kvmppc_send_page_to_uv' [-Wmissing-prototypes]
822 | int kvmppc_send_page_to_uv(struct kvm *kvm, unsigned long gfn)
| ^~~~~~~~~~~~~~~~~~~~~~
arch/powerpc/kvm/book3s_hv_uvmem.c:867:5: warning: no previous prototype for 'kvmppc_uvmem_init' [-Wmissing-prototypes]
867 | int kvmppc_uvmem_init(void)
| ^~~~~~~~~~~~~~~~~
arch/powerpc/kvm/book3s_hv_uvmem.c:922:6: warning: no previous prototype for 'kvmppc_uvmem_free' [-Wmissing-prototypes]
922 | void kvmppc_uvmem_free(void)
| ^~~~~~~~~~~~~~~~~
vim +/kvmppc_gfn_is_uvmem_shared +279 arch/powerpc/kvm/book3s_hv_uvmem.c
157
> 158 bool kvmppc_uvmem_available(void)
159 {
160 /*
161 * If kvmppc_uvmem_bitmap != NULL, then there is an ultravisor
162 * and our data structures have been initialized successfully.
163 */
164 return !!kvmppc_uvmem_bitmap;
165 }
166
167 int kvmppc_uvmem_slot_init(struct kvm *kvm, const struct kvm_memory_slot *slot)
168 {
169 struct kvmppc_uvmem_slot *p;
170
171 p = kzalloc(sizeof(*p), GFP_KERNEL);
172 if (!p)
173 return -ENOMEM;
174 p->pfns = vzalloc(array_size(slot->npages, sizeof(*p->pfns)));
175 if (!p->pfns) {
176 kfree(p);
177 return -ENOMEM;
178 }
179 p->nr_pfns = slot->npages;
180 p->base_pfn = slot->base_gfn;
181
182 mutex_lock(&kvm->arch.uvmem_lock);
183 list_add(&p->list, &kvm->arch.uvmem_pfns);
184 mutex_unlock(&kvm->arch.uvmem_lock);
185
186 return 0;
187 }
188
189 /*
190 * All device PFNs are already released by the time we come here.
191 */
192 void kvmppc_uvmem_slot_free(struct kvm *kvm, const struct kvm_memory_slot *slot)
193 {
194 struct kvmppc_uvmem_slot *p, *next;
195
196 mutex_lock(&kvm->arch.uvmem_lock);
197 list_for_each_entry_safe(p, next, &kvm->arch.uvmem_pfns, list) {
198 if (p->base_pfn == slot->base_gfn) {
199 vfree(p->pfns);
200 list_del(&p->list);
201 kfree(p);
202 break;
203 }
204 }
205 mutex_unlock(&kvm->arch.uvmem_lock);
206 }
207
208 static void kvmppc_uvmem_pfn_insert(unsigned long gfn, unsigned long uvmem_pfn,
209 struct kvm *kvm)
210 {
211 struct kvmppc_uvmem_slot *p;
212
213 list_for_each_entry(p, &kvm->arch.uvmem_pfns, list) {
214 if (gfn >= p->base_pfn && gfn < p->base_pfn + p->nr_pfns) {
215 unsigned long index = gfn - p->base_pfn;
216
217 p->pfns[index] = uvmem_pfn | KVMPPC_UVMEM_PFN;
218 return;
219 }
220 }
221 }
222
223 static void kvmppc_uvmem_pfn_remove(unsigned long gfn, struct kvm *kvm)
224 {
225 struct kvmppc_uvmem_slot *p;
226
227 list_for_each_entry(p, &kvm->arch.uvmem_pfns, list) {
228 if (gfn >= p->base_pfn && gfn < p->base_pfn + p->nr_pfns) {
229 /*
230 * Reset everything, but keep the KVMPPC_UVMEM_SHARED
231 * flag intact. A gfn continues to be shared or
232 * unshared, with or without an associated device pfn.
233 */
234 p->pfns[gfn - p->base_pfn] &= KVMPPC_UVMEM_SHARED;
235 return;
236 }
237 }
238 }
239
240 static bool kvmppc_gfn_is_uvmem_pfn(unsigned long gfn, struct kvm *kvm,
241 unsigned long *uvmem_pfn)
242 {
243 struct kvmppc_uvmem_slot *p;
244
245 list_for_each_entry(p, &kvm->arch.uvmem_pfns, list) {
246 if (gfn >= p->base_pfn && gfn < p->base_pfn + p->nr_pfns) {
247 unsigned long index = gfn - p->base_pfn;
248
249 if (p->pfns[index] & KVMPPC_UVMEM_PFN) {
250 if (uvmem_pfn)
251 *uvmem_pfn = p->pfns[index] &
252 KVMPPC_UVMEM_PFN_MASK;
253 return true;
254 } else
255 return false;
256 }
257 }
258 return false;
259 }
260
261 static void kvmppc_gfn_uvmem_shared(unsigned long gfn, struct kvm *kvm,
262 bool set)
263 {
264 struct kvmppc_uvmem_slot *p;
265
266 list_for_each_entry(p, &kvm->arch.uvmem_pfns, list) {
267 if (gfn >= p->base_pfn && gfn < p->base_pfn + p->nr_pfns) {
268 unsigned long index = gfn - p->base_pfn;
269
270 if (set)
271 p->pfns[index] |= KVMPPC_UVMEM_SHARED;
272 else
273 p->pfns[index] &= ~KVMPPC_UVMEM_SHARED;
274 return;
275 }
276 }
277 }
278
> 279 bool kvmppc_gfn_is_uvmem_shared(unsigned long gfn, struct kvm *kvm)
280 {
281 struct kvmppc_uvmem_slot *p;
282
283 list_for_each_entry(p, &kvm->arch.uvmem_pfns, list) {
284 if (gfn >= p->base_pfn && gfn < p->base_pfn + p->nr_pfns) {
285 unsigned long index = gfn - p->base_pfn;
286
287 return (p->pfns[index] & KVMPPC_UVMEM_SHARED);
288 }
289 }
290 return false;
291 }
292
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 66040 bytes --]
next prev parent reply other threads:[~2020-06-01 4:14 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-05-31 2:27 [PATCH v1 0/4] Migrate non-migrated pages of a SVM Ram Pai
2020-05-31 2:27 ` [PATCH v1 1/4] KVM: PPC: Book3S HV: Fix function definition in book3s_hv_uvmem.c Ram Pai
2020-05-31 2:27 ` [PATCH v1 2/4] KVM: PPC: Book3S HV: track shared GFNs of secure VMs Ram Pai
2020-06-01 4:12 ` kbuild test robot [this message]
2020-06-05 9:48 ` Laurent Dufour
2020-06-05 14:38 ` Ram Pai
2020-05-31 2:27 ` [PATCH v1 3/4] KVM: PPC: Book3S HV: migrate remaining normal-GFNs to secure-GFNs in H_SVM_INIT_DONE Ram Pai
2020-06-01 11:55 ` Bharata B Rao
2020-06-01 19:05 ` Ram Pai
2020-06-02 10:06 ` Bharata B Rao
2020-06-03 23:10 ` Ram Pai
2020-06-04 2:31 ` Bharata B Rao
2020-05-31 2:27 ` [PATCH v1 4/4] KVM: PPC: Book3S HV: migrate hot plugged memory Ram Pai
2020-06-01 4:35 ` kbuild test robot
2020-06-01 4:45 ` kbuild test robot
2020-06-02 8:31 ` Laurent Dufour
2020-06-03 13:25 ` Ram Pai
2020-06-15 17:00 ` Laurent Dufour
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=202006011222.47EU2yvU%lkp@intel.com \
--to=lkp@intel$(echo .)com \
--cc=aneesh.kumar@linux$(echo .)ibm.com \
--cc=bauerman@linux$(echo .)ibm.com \
--cc=bharata@linux$(echo .)ibm.com \
--cc=kbuild-all@lists$(echo .)01.org \
--cc=kvm-ppc@vger$(echo .)kernel.org \
--cc=ldufour@linux$(echo .)ibm.com \
--cc=linuxppc-dev@lists$(echo .)ozlabs.org \
--cc=linuxram@us$(echo .)ibm.com \
--cc=sukadev@linux$(echo .)vnet.ibm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox