Re: vmlinux.lds.h: Bug report: unable to handle page fault when start the virtual machine with qemu

From: Nathan Chancellor
Date: Tue Nov 08 2022 - 09:35:43 EST


On Tue, Nov 08, 2022 at 03:46:32PM +0800, xiafukun wrote:
> Thank you for your reply.
> We tested your changes to this patch and did fix the issue. Following the
> solution you provided, we recompile the kernel and successfully start the
> virtual machine.

Thank you a lot for testing and sorry about the breakage in the first
place :(

Ard, were you going to send a patch? Feel free to preemptively add:

Reviewed-by: Nathan Chancellor <nathan@xxxxxxxxxx>

if so; otherwise, I can send one later today.

> 在 2022/11/8 0:00, Ard Biesheuvel 写道:
> >
> > That patch looks incorrect to me. Without CONFIG_SMP, the PERCPU
> > sections are not instantiated, and the only copy of those variables is
> > created in the ordinary .data/.bss sections
> >
> > Does the change below fix the issue for you?
> >
> > --- a/include/asm-generic/vmlinux.lds.h
> > +++ b/include/asm-generic/vmlinux.lds.h
> > @@ -347,6 +347,7 @@
> > #define DATA_DATA \
> > *(.xiptext) \
> > *(DATA_MAIN) \
> > + *(.data..decrypted) \
> > *(.ref.data) \
> > *(.data..shared_aligned) /* percpu related */ \
> > MEM_KEEP(init.data*) \
> > @@ -995,7 +996,6 @@
> > #ifdef CONFIG_AMD_MEM_ENCRYPT
> > #define PERCPU_DECRYPTED_SECTION \
> > . = ALIGN(PAGE_SIZE); \
> > - *(.data..decrypted) \
> > *(.data..percpu..decrypted) \
> > . = ALIGN(PAGE_SIZE);
> > #else