[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] an assertion triggered when running Xen on a HSW desktop



On Tue, Jan 15, 2019 at 04:04:40PM +0800, Chao Gao wrote:
[...]
> (XEN) Xen version 4.12-unstable (root@) (gcc (Ubuntu 7.3.0-27ubuntu1~18.04) 
> 7.3.0) debug=y  Tue Jan 15 07:25:29 UTC 2019
> (XEN) Latest ChangeSet: Mon Dec 17 09:22:59 2018 +0000 git:a5b0eb3636
[...]
> (XEN) *** Building a PVH Dom0 ***
> (XEN) Assertion 'IS_ALIGNED(dfn_x(dfn), (1ul << page_order))' failed at 
> iommu.c:323
> (XEN) ----[ Xen-4.12-unstable  x86_64  debug=y   Tainted:  C   ]----
> (XEN) CPU:    0
> (XEN) RIP:    e008:[<ffff82d08025ccbc>] iommu_map+0xba/0x176
> (XEN) RFLAGS: 0000000000010202   CONTEXT: hypervisor
> (XEN) rax: 0000000000000000   rbx: 0000000000000007   rcx: 0000000000000003
> (XEN) rdx: 000000000020f081   rsi: 0000000000000001   rdi: ffff830215242000
> (XEN) rbp: ffff82d080497bb8   rsp: ffff82d080497b58   r8:  0000000000000000
> (XEN) r9:  ffff82d080497bd4   r10: 0180000000000000   r11: 7fffffffffffffff
> (XEN) r12: ffff830215242000   r13: 0000000000000000   r14: 0000000000000001
> (XEN) r15: 0000000000000001   cr0: 000000008005003b   cr4: 00000000001526e0
> (XEN) cr3: 00000000dbc8d000   cr2: 0000000000000000
> (XEN) fsb: 0000000000000000   gsb: 0000000000000000   gss: 0000000000000000
> (XEN) ds: 0000   es: 0000   fs: 0000   gs: 0000   ss: 0000   cs: e008
> (XEN) Xen code around <ffff82d08025ccbc> (iommu_map+0xba/0x176):
> (XEN)  41 89 c5 e9 a2 00 00 00 <0f> 0b 0f 0b 41 89 c5 41 80 bc 24 c0 01 00 00 
> 00
> (XEN) Xen stack trace from rsp=ffff82d080497b58:
> (XEN)    0000000000000020 0000000000000000 ffff82d080497ba8 ffff82d08023d489
> (XEN)    0000000000000001 ffff82e0041e1000 ffff830215242000 ffff82e0041e1020
> (XEN)    ffff830215242000 0000000000000000 0000000000000001 0000000000000001
> (XEN)    ffff82d080497c08 ffff82d0804182d8 ffff82d080497c08 0000000100000000
> (XEN)    000000000000009d 0000000000000000 0000000000000001 ffff82d080444c68
> (XEN)    000000000020b43e ffff830215242000 ffff82d080497d58 ffff82d08043716c
> (XEN)    ffff82d080497fff 0000000100000000 ffff82d08046cbc0 ffff83000009bf40
> (XEN)    0000000001e33000 ffff83000009bf30 ffff830213525000 000000000010b43e
> (XEN)    ffff82d00000000b 00000000000001f4 0000000000100000 0000001f15242000
> (XEN)    00ff82d080497cb8 ffff82d08020a8e4 ffff82d0805cf02c ffff82d08048f740
> (XEN)    0000000000000092 ffff82d08023dddb ffff82d080497fff ffff82d08048f740
> (XEN)    ffff82d080497cc8 ffff82d08023de2e ffff82d080497ce8 ffff82d08024016b
> (XEN)    ffff82d080497ce8 ffff82d08023de78 ffff82d080497d08 ffff82d080240205
> (XEN)    ffff82d0805a3880 ffff82d0805a3880 ffff82d080497d48 ffff82d08023d489
> (XEN)    ffff8302152e1550 ffff83000009bf30 0000000001e33000 ffff83000009bf30
> (XEN)    0000000001e33000 ffff83000009bf40 ffff82d08046cbc0 ffff830215242000
> (XEN)    ffff82d080497d98 ffff82d08043e53c ffff82d080497d98 ffff82d08046cbc0
> (XEN)    ffff8302152e1550 0000000000000001 ffff82d0805d00d0 0000000000000008
> (XEN)    ffff82d080497ee8 ffff82d08042d8ef 0000000000000000 0000000000000002
> (XEN)    0000000000000002 0000000000000002 0000000000000002 0000000000000002
> (XEN) Xen call trace:
> (XEN)    [<ffff82d08025ccbc>] iommu_map+0xba/0x176
> (XEN)    [<ffff82d0804182d8>] iommu_hwdom_init+0xef/0x220
> (XEN)    [<ffff82d08043716c>] dom0_construct_pvh+0x189/0x129e
> (XEN)    [<ffff82d08043e53c>] construct_dom0+0xd4/0xb14
> (XEN)    [<ffff82d08042d8ef>] __start_xen+0x2710/0x2830
> (XEN)    [<ffff82d0802000f3>] __high_start+0x53/0x55
> (XEN) 
> (XEN) 
> (XEN) ****************************************
> (XEN) Panic on CPU 0:
> (XEN) Assertion 'IS_ALIGNED(dfn_x(dfn), (1ul << page_order))' failed at 
> iommu.c:323
> (XEN) ****************************************

Oh, this was added by Paul quite recently. You seem to be using a
rather old commit (a5b0eb3636), is there any reason for using such an
old baseline?

In order to fix this you likely need to update your base changeset to
something newer that contains:

commit ae7fc10d2ca5c22e04b8a28becbd1fbf8b44e83a
Author: Roger Pau Monne <roger.pau@xxxxxxxxxx>
Date:   Fri Dec 28 12:18:56 2018 +0100

    x86/dom0: take alignment into account when populating p2m in PVH mode

    Current code that allocates memory and populates the p2m for PVH Dom0
    doesn't take the address alignment into account, this can lead to high
    order allocations that start on a non-aligned address to be broken
    down into lower order entries on the p2m page tables.

    Fix this by taking into account the p2m page sizes and alignment
    requirements when allocating the memory and populating the p2m.

AFAICT the above commit should fix the issue, just updating to current
staging branch should be enough.

Paul, I wonder however whether the ASSERT is expected here, this
interface used to work correctly without the alignment requirements,
and 725bf00a8 changed the requirements of the function, which might
make some previously valid calls now trigger the assert. FTR I agree
we should use aligned regions, but the addition of the assert can be
dangerous given it changes the valid inputs of the function and also
affects the p2m functions that ultimately call the iommu code.

Thanks, Roger.

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.