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

Re: [PATCH v2] x86: Use low memory size directly from Multiboot


  • To: Tu Dinh Ngoc <dinhngoc.tu@xxxxxxx>
  • From: Jan Beulich <jbeulich@xxxxxxxx>
  • Date: Wed, 9 Feb 2022 15:25:55 +0100
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none
  • Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=0qGQSia3V8LStIAG9F4GxWF7jFSPXXwvssOpyBRHn4s=; b=QiqzzMhzFYyboc1ikmXxGOKUF+csJrLEv/HSSOTClEydgbvoDMsZVgYmewHouqVBRhIPnvdLaWuy5ihCRKZF/uu8kwKe0RaiJHdkglnEpdDGtpoBCa5rnFAXo4wEeKkdBMa09eMeKmNC8n5TToYp5n85KVamz6pwobQVQVrVKJ4F+YRlu5fPR+OTh7hebpFyhE+ncdEKn3d6Nrw11638JowNHTYQ2kvl/O18G7uulE0kZWbjxHLBLDzJ3viHjh1anPHFSNVqJVEY76updgvWXoIUC0fhxEVRyVZhXkiHifyjknCbLnAvvgPSEDShSt7vUIOfq3qXM19Sv7XLFrRNNg==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ENVJtSxifBiqMbh7AABGqG8O8Sef2OWKc9uyQPfW73ubENcf/Q8OwHsW3X9FI9J4ooTuO7MKHmTj+GBNz1vVC+Sj0bQJ1Rar2apg2ohFEJX0mzvptN2yp0oGdJzsFKsA8vvyxBi3OiJWo3Q4bnHAi5UdpNDxleoXRyUbwvLG2xW7eHqJv55skN8jF5noPWuc/BnOT102CMpgKmIq9BXkIySCjOULkoTx09P3+S+aNY5hApm2jgqzJeJrF1uxE7TD6lVxArxmHCDjemKEqk58lyXgVhTN0WnXMk7jaLXXCfHetF3OXq88hJQWIl34hJch4v7ZOTi0YKfwvEVzGX5Isw==
  • Authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=suse.com;
  • Cc: xen-devel@xxxxxxxxxxxxxxxxxxxx
  • Delivery-date: Wed, 09 Feb 2022 14:26:21 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>

On 09.02.2022 14:12, Tu Dinh Ngoc wrote:
> Previously, Xen used information from the BDA to detect the amount of
> available low memory. This does not work on some scenarios such as
> Coreboot, or when booting from Kexec on a UEFI system without CSM.
> 
> Use the information directly supplied by Multiboot boot information
> instead.
> ---

Btw - please summarize here briefly what has changed from the earlier
version. As it stands your adjustment looks to take care of one third
of what I did say in reply to your v1. That's not enough for a v2, or
else you should have taken care of the remaining aspects verbally.

Jan

> --- a/xen/arch/x86/boot/head.S
> +++ b/xen/arch/x86/boot/head.S
> @@ -524,33 +524,23 @@ trampoline_bios_setup:
>          mov     %ecx,%fs
>          mov     %ecx,%gs
>  
> -        /* Set up trampoline segment 64k below EBDA */
> -        movzwl  0x40e,%ecx          /* EBDA segment */
> -        cmp     $0xa000,%ecx        /* sanity check (high) */
> -        jae     0f
> -        cmp     $0x4000,%ecx        /* sanity check (low) */
> -        jae     1f
> -0:
> -        movzwl  0x413,%ecx          /* use base memory size on failure */
> -        shl     $10-4,%ecx
> -1:
> +        /* Use lower memory size directly from Multiboot */
> +        mov     %edx,%ecx
>          /*
> -         * Compare the value in the BDA with the information from the
> -         * multiboot structure (if available) and use the smallest.
> +         * Old Kexec used to report the value in bytes instead of kilobytes
> +         * like it's supposed to, so fix that if detected.
>           */
> -        cmp     $0x100,%edx         /* is the multiboot value too small? */
> -        jb      2f                  /* if so, do not use it */
> -        shl     $10-4,%edx
> -        cmp     %ecx,%edx           /* compare with BDA value */
> -        cmovb   %edx,%ecx           /* and use the smaller */
> +        cmpl    $640,%ecx
> +        jbe     1f
> +        shr     $10,%ecx
> +1:
> +        /* From arch/x86/smpboot.c: start_eip had better be page-aligned! */
> +        shr     $2,%ecx
>  
> -2:
>          /* Reserve memory for the trampoline and the low-memory stack. */
> -        sub     $((TRAMPOLINE_SPACE+TRAMPOLINE_STACK_SPACE)>>4),%ecx
> +        sub     $((TRAMPOLINE_SPACE+TRAMPOLINE_STACK_SPACE)>>12),%ecx
>  
> -        /* From arch/x86/smpboot.c: start_eip had better be page-aligned! */
> -        xor     %cl, %cl
> -        shl     $4, %ecx
> +        shl     $12,%ecx
>          mov     %ecx,sym_esi(trampoline_phys)
>  
>  trampoline_setup:




 


Rackspace

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