On 11/26/2015 05:43 PM, Paolo Bonzini wrote:


On 26/11/2015 10:06, Andrey Smetanin wrote:


On 11/25/2015 08:14 PM, Paolo Bonzini wrote:


On 25/11/2015 17:55, Andrey Smetanin wrote:

+    gpa = synic->msg_page & PAGE_MASK;
+    page = kvm_vcpu_gfn_to_page(vcpu, gpa >> PAGE_SHIFT);
+    if (is_error_page(page)) {
+        vcpu_err(vcpu, "Hyper-V SynIC can't get msg page, gpa
0x%llx\n",
+             gpa);
+        return;
+    }
+    msg_page = kmap_atomic(page);

But the message page is not being pinned, is it?

Actually I don't know anything about pinning.
Is it pinning against page swapping ?

Yes.  Unless the page is pinned, kmap_atomic can fail.
kmap_atomic() can't fail for a valid page struct. Does
kvm_vcpu_gfn_to_page() can provide invalid page(swapped page) struct
which may pass is_error_page(page) check but can leads to incorrect
behavior inside kmap_atomic()?

No, you're right.  Nevermind, I was confused because I thought you
needed kmap_atomic rather than kmap.  Here using kmap_atomic is just an
optimization, so it's okay.  (If you needed kmap_atomic, the problem
would have been that kvm_vcpu_gfn_to_page() can sleep).

In patch 7/7 you're also not in atomic context, so kvm_vcpu_gfn_to_page
is okay.

Shouldn't have reviewed the patch when tired. :)

Then the patches look good, I think.  With a testcase I can try them out
and hopefully merge them for Linux 4.5 / QEMU 2.6.
Thank you!

We already have a working Hyper-V SynIC timers kvm-unit-tests test case.
We are going to send appropriate patches seria into kvm-unit-tests git.

But  kvm-unit-tests master now broken:
> make
objcopy -O elf32-i386 x86/memory.elf x86/memory.flat
make: *** No rule to make target 'x86/pku.o', needed by 'x86/pku.elf'. Stop.

The problem is in latest commit 3da70799dd3cf1169c4668b4a3fd6f598528b8b9.

The commit adds 'pku' test case building, but not added any pku.c implementation file.

[root@asm-pc kvm-unit-tests]# ls -al x86/pku.c
ls: cannot access x86/pku.c: No such file or directory


Could you please fix it ?

Paolo


Reply via email to