|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 1/3] xen: remove tests for pvh mode in pure pv paths
Juergen Gross:
> Remove the last tests for XENFEAT_auto_translated_physmap in pure
> PV-domain specific paths. PVH V1 is gone and the feature will always
> be "false" in PV guests.
[...]
> diff --git a/arch/x86/xen/p2m.c b/arch/x86/xen/p2m.c
> index 276da636dd39..6083ba462f35 100644
> --- a/arch/x86/xen/p2m.c
> +++ b/arch/x86/xen/p2m.c
[...]
> @@ -711,9 +694,6 @@ int set_foreign_p2m_mapping(struct gnttab_map_grant_ref
> *map_ops,
> int i, ret = 0;
> pte_t *pte;
>
> - if (xen_feature(XENFEAT_auto_translated_physmap))
> - return 0;
> -
> if (kmap_ops) {
> ret = HYPERVISOR_grant_table_op(GNTTABOP_map_grant_ref,
> kmap_ops, count);
> @@ -756,9 +736,6 @@ int clear_foreign_p2m_mapping(struct
> gnttab_unmap_grant_ref *unmap_ops,
> {
> int i, ret = 0;
>
> - if (xen_feature(XENFEAT_auto_translated_physmap))
> - return 0;
> -
> for (i = 0; i < count; i++) {
> unsigned long mfn = __pfn_to_mfn(page_to_pfn(pages[i]));
> unsigned long pfn = page_to_pfn(pages[i]);
This removes the check for autotranslation in {set,clear}_foreign_p2m_mapping.
But those are called by the grant-table code also on PVH/HVM guest. So
since 4.14 I see crashes similar to this one (ignore the kernel version,
it's in the middle of a bisect):
[ 33.778854] page must be ballooned
[ 33.778860] ------------[ cut here ]------------
[ 33.778887] WARNING: CPU: 1 PID: 1581 at arch/x86/xen/p2m.c:720
set_foreign_p2m_mapping+0x13b/0x370
[ 33.778903] Modules linked in: xen_gntdev xen_gntalloc xen_blkback xenfs
xen_privcmd xen_evtchn dm_snapshot dm_bufio xen_blkfront
[ 33.778931] CPU: 1 PID: 1581 Comm: qubesdb-daemon Not tainted 4.13.0-lt-37 #1
[ 33.778946] task: ffff8800f4251b80 task.stack: ffffc90000818000
[ 33.778960] RIP: 0010:set_foreign_p2m_mapping+0x13b/0x370
[ 33.778970] RSP: 0018:ffffc9000081bc90 EFLAGS: 00010286
[ 33.778981] RAX: 0000000000000016 RBX: 0000000000000001 RCX: ffffffff81e4a898
[ 33.778994] RDX: 0000000000000001 RSI: 0000000000000092 RDI: 0000000000000247
[ 33.779016] RBP: ffffc9000081bce0 R08: 0000000000000143 R09: ffffffff820d1660
[ 33.779026] R10: 000000000000002a R11: 0000000000000000 R12: ffff8800f0c2c320
[ 33.779037] R13: ffff8800f4b6a3c8 R14: 8000000000000000 R15: 0000000000000000
[ 33.779047] FS: 00007fbfd5739f80(0000) GS:ffff8800f9d00000(0000)
knlGS:0000000000000000
[ 33.779056] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 33.779064] CR2: 00007ff25daca0c0 CR3: 00000000f2faa005 CR4: 00000000001606e0
[ 33.779074] Call Trace:
[ 33.779082] ? x86_configure_nx+0x50/0x50
[ 33.779091] gnttab_map_refs+0xc2/0x160
[ 33.779097] ? decrease_reservation+0x256/0x2e0
[ 33.779105] gntdev_mmap+0x358/0x5c0 [xen_gntdev]
[ 33.779113] mmap_region+0x392/0x5e0
[ 33.779119] do_mmap+0x2ae/0x480
[ 33.779125] vm_mmap_pgoff+0xa1/0xe0
[ 33.779132] SyS_mmap_pgoff+0x1ba/0x260
[ 33.787439] systemd-journald[1548]: Received request to flush runtime
journal from PID 1
[ 33.931963] SyS_mmap+0x16/0x20
[ 33.931966] do_syscall_64+0x53/0xf0
[ 33.931980] entry_SYSCALL64_slow_path+0x25/0x25
[ 33.931981] RIP: 0033:0x7fbfd50ebdda
[ 33.931982] RSP: 002b:00007fff2bae9238 EFLAGS: 00000246 ORIG_RAX:
0000000000000009
[ 33.931984] RAX: ffffffffffffffda RBX: 0000000000000003 RCX: 00007fbfd50ebdda
[ 33.931984] RDX: 0000000000000003 RSI: 0000000000001000 RDI: 0000000000000000
[ 33.931985] RBP: 0000000000000007 R08: 0000000000000007 R09: 0000000000000000
[ 33.931986] R10: 0000000000000001 R11: 0000000000000246 R12: 0000000000000000
[ 33.931986] R13: 0000000000001000 R14: 0000000000000001 R15: 0000000000000000
[ 33.931987] Code: 83 b4 00 00 00 48 8b 05 9c 5c f2 00 48 83 3c d0 ff 0f 84
50 01 00 00 48 c7 c7 d7 20 bd 81 48 89 55 c8 48 89 75 d0 e8 f1 70 09 00 <0f> ff
48 8b 75 d0 48 8b 55 c8 4c 09 f6 48 89 d7 e8 70 fe ff ff
[ 33.932007] ---[ end trace 858dec3c813fa284 ]---
[ 33.932011] ------------[ cut here ]------------
[ 33.932011] kernel BUG at arch/x86/xen/p2m.c:651!
[ 33.932014] invalid opcode: 0000 [#1] SMP
[ 33.932014] Modules linked in: xen_gntdev xen_gntalloc xen_blkback xenfs
xen_privcmd xen_evtchn dm_snapshot dm_bufio xen_blkfront
[ 33.932022] CPU: 1 PID: 1581 Comm: qubesdb-daemon Tainted: G W
4.13.0-lt-37 #1
[ 33.932601] task: ffff8800f4251b80 task.stack: ffffc90000818000
[ 33.932605] RIP: 0010:__set_phys_to_machine+0x36/0x130
[ 33.932606] RSP: 0018:ffffc9000081bc68 EFLAGS: 00010287
[ 33.932609] RAX: 0000000000000016 RBX: 00000000000f3cf3 RCX: ffffffff81e4a898
[ 33.932609] RDX: 00000000000f3cf3 RSI: 800000000012daef RDI: 00000000000f3cf3
[ 33.932610] RBP: ffffc9000081bc80 R08: 0000000000000143 R09: ffffffff820d1660
[ 33.932611] R10: 000000000000002a R11: 0000000000000000 R12: 800000000012daef
[ 33.932611] R13: ffff8800f4b6a3c8 R14: 8000000000000000 R15: 0000000000000000
[ 33.932613] FS: 00007fbfd5739f80(0000) GS:ffff8800f9d00000(0000)
knlGS:0000000000000000
[ 33.932613] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 33.932614] CR2: 00007ff25daca0c0 CR3: 00000000f2faa005 CR4: 00000000001606e0
[ 33.932617] Call Trace:
[ 33.932619] ? set_phys_to_machine+0x12/0x40
[ 33.932621] set_foreign_p2m_mapping+0x150/0x370
[ 33.932624] ? x86_configure_nx+0x50/0x50
[ 33.932627] gnttab_map_refs+0xc2/0x160
[ 33.932628] ? decrease_reservation+0x256/0x2e0
[ 33.932631] gntdev_mmap+0x358/0x5c0 [xen_gntdev]
[ 33.932634] mmap_region+0x392/0x5e0
[ 33.932635] do_mmap+0x2ae/0x480
[ 33.932637] vm_mmap_pgoff+0xa1/0xe0
[ 33.932640] SyS_mmap_pgoff+0x1ba/0x260
[ 33.932641] SyS_mmap+0x16/0x20
[ 33.932643] do_syscall_64+0x53/0xf0
[ 33.932645] entry_SYSCALL64_slow_path+0x25/0x25
[ 33.932647] RIP: 0033:0x7fbfd50ebdda
[ 33.932647] RSP: 002b:00007fff2bae9238 EFLAGS: 00000246 ORIG_RAX:
0000000000000009
[ 33.932648] RAX: ffffffffffffffda RBX: 0000000000000003 RCX: 00007fbfd50ebdda
[ 33.932649] RDX: 0000000000000003 RSI: 0000000000001000 RDI: 0000000000000000
[ 33.932650] RBP: 0000000000000007 R08: 0000000000000007 R09: 0000000000000000
[ 33.932650] R10: 0000000000000001 R11: 0000000000000246 R12: 0000000000000000
[ 33.932651] R13: 0000000000001000 R14: 0000000000000001 R15: 0000000000000000
[ 33.932652] Code: 0d 18 5f f2 00 48 8d 14 fd 00 00 00 00 48 01 d1 0f 1f 00
31 c0 48 89 31 0f 1f 00 85 c0 75 0e b8 01 00 00 00 c3 48 83 fe ff 74 f4 <0f> 0b
55 48 89 e5 41 54 53 49 89 f4 48 8d 75 ec 48 89 fb 48 83
[ 33.932673] RIP: __set_phys_to_machine+0x36/0x130 RSP: ffffc9000081bc68
[ 33.932688] ---[ end trace 858dec3c813fa285 ]---
Not sure if you prefer to change the grant-table code or to revert this
part of the commit. The patch bellow works for me:
From: Simon Gaiser <simon@xxxxxxxxxxxxxxxxxxxxxx>
Date: Sat, 6 Jan 2018 06:40:32 +0100
Subject: [PATCH] xen: Fix {set,clear}_foreign_p2m_mapping on autotranslating
guests
Commit 82616f9599a7 ("xen: remove tests for pvh mode in pure pv paths")
removed the check for autotranslation from {set,clear}_foreign_p2m_mapping
but those are called by grant-table.c also on PVH/HVM guests.
Cc: <stable@xxxxxxxxxxxxxxx> # 4.14
Fixes: 82616f9599a7 ("xen: remove tests for pvh mode in pure pv paths")
Signed-off-by: Simon Gaiser <simon@xxxxxxxxxxxxxxxxxxxxxx>
---
arch/x86/xen/p2m.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/arch/x86/xen/p2m.c b/arch/x86/xen/p2m.c
index 6083ba462f35..15812e553b95 100644
--- a/arch/x86/xen/p2m.c
+++ b/arch/x86/xen/p2m.c
@@ -694,6 +694,9 @@ int set_foreign_p2m_mapping(struct gnttab_map_grant_ref
*map_ops,
int i, ret = 0;
pte_t *pte;
+ if (xen_feature(XENFEAT_auto_translated_physmap))
+ return 0;
+
if (kmap_ops) {
ret = HYPERVISOR_grant_table_op(GNTTABOP_map_grant_ref,
kmap_ops, count);
@@ -736,6 +739,9 @@ int clear_foreign_p2m_mapping(struct gnttab_unmap_grant_ref
*unmap_ops,
{
int i, ret = 0;
+ if (xen_feature(XENFEAT_auto_translated_physmap))
+ return 0;
+
for (i = 0; i < count; i++) {
unsigned long mfn = __pfn_to_mfn(page_to_pfn(pages[i]));
unsigned long pfn = page_to_pfn(pages[i]);
--
2.15.1
Attachment:
signature.asc _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |