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

Re: [Xen-devel] [PATCH v2 09/18] xen: add PVH boot entry code



On Tue, Oct 09, 2018 at 01:03:08PM +0200, Juergen Gross wrote:
> Add the code for the Xen PVH mode boot entry.
>
> Signed-off-by: Juergen Gross <jgross@xxxxxxxx>
> ---
>  grub-core/kern/i386/xen/startup_pvh.S | 50 
> +++++++++++++++++++++++++++++++++++
>  1 file changed, 50 insertions(+)
>
> diff --git a/grub-core/kern/i386/xen/startup_pvh.S 
> b/grub-core/kern/i386/xen/startup_pvh.S
> index e18ee5b31..0ddb63b31 100644
> --- a/grub-core/kern/i386/xen/startup_pvh.S
> +++ b/grub-core/kern/i386/xen/startup_pvh.S
> @@ -19,11 +19,61 @@
>
>  #include <config.h>
>  #include <grub/symbol.h>
> +#include <grub/machine/memory.h>
>
>       .file   "startup_pvh.S"
>       .text
> +     .globl  start, _start
> +     .code32
>
> +start:
> +_start:
> +     cld
> +     lgdt    gdtdesc
> +     ljmp    $GRUB_MEMORY_MACHINE_PROT_MODE_CSEG, $1f
> +1:
> +     movl    $GRUB_MEMORY_MACHINE_PROT_MODE_DSEG, %eax
> +     mov     %eax, %ds
> +     mov     %eax, %es
> +     mov     %eax, %ss

Should not you load null descriptor into %fs and %gs?
Just in case...

> +     leal    LOCAL(stack_end), %esp
> +
> +     /* Save address of start info structure. */
> +     mov     %ebx, pvh_start_info
> +     call    EXT_C(grub_main)
> +     /* Doesn't return. */
> +
> +     .p2align        3
> +gdt:
> +     .word   0, 0
> +     .byte   0, 0, 0, 0
> +
> +     /* -- code segment --
> +      * base = 0x00000000, limit = 0xFFFFF (4 KiB Granularity), present
> +      * type = 32bit code execute/read, DPL = 0
> +      */
> +     .word   0xFFFF, 0
> +     .byte   0, 0x9A, 0xCF, 0
> +
> +     /* -- data segment --
> +      * base = 0x00000000, limit 0xFFFFF (4 KiB Granularity), present
> +      * type = 32 bit data read/write, DPL = 0
> +      */
> +     .word   0xFFFF, 0
> +     .byte   0, 0x92, 0xCF, 0
> +
> +     .p2align        3
> +/* this is the GDT descriptor */
> +gdtdesc:
> +     .word   0x17            /* limit */
> +     .long   gdt             /* addr */
> +
> +     .p2align        2
>  /* Saved pointer to start info structure. */
>       .globl  pvh_start_info
>  pvh_start_info:
>       .long   0
> +
> +     .bss
> +     .space  (1 << 22)

Hmmm... Why do we need 4 MiB here? If this is really needed then it begs for
a comment. And I would like to see a constant instead of plain number here.

Daniel

_______________________________________________
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®.