On 04/06/2019 13:43, Jan Beulich wrote:
> Split out this mostly arch-independent code into a common-code helper
> function. (This does away with Arm's arch_init_memory() altogether.)
>
> On x86 this needs to happen before acpi_boot_init(): Commit 9fa94e1058
> ("x86/ACPI: also parse AMD IOMMU tables early") only appeared to work
> fine - it's really broken, and doesn't crash (on non-EFI AMD systems)
> only because of there being a mapping of linear address 0 during early
> boot. On EFI there is:
>
>  Early fatal page fault at e008:ffff82d08024d58e (cr2=0000000000000220, 
> ec=0000)
>  ----[ Xen-4.13-unstable  x86_64  debug=y   Not tainted ]----
>  CPU:    0
>  RIP:    e008:[<ffff82d08024d58e>] pci.c#_pci_hide_device+0x17/0x3a
>  RFLAGS: 0000000000010046   CONTEXT: hypervisor
>  rax: 0000000000000000   rbx: 0000000000006000   rcx: 0000000000000000
>  rdx: ffff83104f2ee9b0   rsi: ffff82e0209e5d48   rdi: ffff83104f2ee9a0
>  rbp: ffff82d08081fce0   rsp: ffff82d08081fcb8   r8:  0000000000000000
>  r9:  8000000000000000   r10: 0180000000000000   r11: 7fffffffffffffff
>  r12: ffff83104f2ee9a0   r13: 0000000000000002   r14: ffff83104f2ee4b0
>  r15: 0000000000000064   cr0: 0000000080050033   cr4: 00000000000000a0
>  cr3: 000000009f614000   cr2: 0000000000000220
>  fsb: 0000000000000000   gsb: 0000000000000000   gss: 0000000000000000
>  ds: 0000   es: 0000   fs: 0000   gs: 0000   ss: 0000   cs: e008
>  Xen code around <ffff82d08024d58e> (pci.c#_pci_hide_device+0x17/0x3a):
>   48 89 47 38 48 8d 57 10 <48> 8b 88 20 02 00 00 48 89 51 08 48 89 4f 10 48
>  Xen stack trace from rsp=ffff82d08081fcb8:
> [...]
>  Xen call trace:
>     [<ffff82d08024d58e>] pci.c#_pci_hide_device+0x17/0x3a
> [   [<                >] pci_ro_device+...]

What is this in the stack trace?

>     [<ffff82d080617fe1>] amd_iommu_detect_one_acpi+0x161/0x249
>     [<ffff82d0806186ac>] iommu_acpi.c#detect_iommu_acpi+0xb5/0xe7
>     [<ffff82d08061cde0>] acpi_table_parse+0x61/0x90
>     [<ffff82d080619e7d>] amd_iommu_detect_acpi+0x17/0x19
>     [<ffff82d08061790b>] acpi_ivrs_init+0x20/0x5b
>     [<ffff82d08062e838>] acpi_boot_init+0x301/0x30f
>     [<ffff82d080628b10>] __start_xen+0x1daf/0x28a2
>  
>  Pagetable walk from 0000000000000220:
>   L4[0x000] = 000000009f44f063 ffffffffffffffff
>   L3[0x000] = 000000009f44b063 ffffffffffffffff
>   L2[0x000] = 0000000000000000 ffffffffffffffff
>  
>  ****************************************
>  Panic on CPU 0:
>  FATAL TRAP: vector = 14 (page fault)
>  [error_code=0000] , IN INTERRUPT CONTEXT
>  ****************************************
>
> Of course the bug would nevertheless have lead to post-boot crashes as
> soon as the list would actually get traversed.
>
> Take the opportunity and
> - convert BUG_ON()s being moved to panic(),
> - add __read_mostly annotations to the dom_* definitions.
>
> Signed-off-by: Jan Beulich <jbeul...@suse.com>

Sorry for not noticing this before, but s/special/system/ to match up
with the existing terminology in is_system_domain()

> --- a/xen/include/xen/mm.h
> +++ b/xen/include/xen/mm.h
> @@ -642,6 +642,9 @@ static inline void filtered_flush_tlb_ma
>      }
>  }
>  
> +/* Private domain structs for DOMID_XEN, DOMID_IO, etc. */
> +extern struct domain *dom_xen, *dom_io, *dom_cow;
> +

Any chance you can move these higher up, to before the include of
<asm/mm.h>, or you're going to break Julien's M2P series.

With at least the name adjusted, Reviewed-by: Andrew Cooper
<andrew.coop...@citrix.com>

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

Reply via email to