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

Re: [PATCH v3] x86: Prioritize low memory size from Multiboot


  • To: Tu Dinh Ngoc <dinhngoc.tu@xxxxxxx>
  • From: Roger Pau Monné <roger.pau@xxxxxxxxxx>
  • Date: Thu, 10 Feb 2022 11:18:58 +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=GvA6aYddxr3wvbK3Zkc+A3oqbUfpExSTOOEMkQLjD08=; b=WTE6cR4mUWpiQDP00z/8MEEamk49/ZJEqc8FYeZraGwZqjdvYqhk3RYPesrjzMfJvIlEEClAiTGXMTQuKE5nh8k57IhoUVjYtPpYXmN6cZwSQkSVFNi5XAPNCwcPteE5fJHi4d3TeXLkiMvlq9wCH882lh04l64ggzvGLQ3eHcIjkRrkAFG6djF9JmGrploz1dJq7q3RgGtn/wG6CvPdiuYDbuBT4xRhXUmIONfncx8IBJ9n2zHitbIjhH0HNNELVsWw3N3x28KwiL0ClQNVkukIy4S+wPZS7hE52vzSPGRB+8euxg46m1MaAfeRHK5zs1HVVM8mZ/OEZeu6qXmJXQ==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Jl49r/W5HuVJ/vNOKJC6Lxa1TRKJOG/knfAHgAuTmp0tJKohWFfJvwFMZJozwteh1xU/zJcYyzUvSK93xveuXbNg+O60lqdvwaY0iUaumXfT7uOa6gJpTOLWdB9QbjBeNzo65ia2REXbEEHa3JrV4jA1qeDfgan55tS3Mcd+lSJYmRS6l7YWeSdsN2AZsnTEDePil/Zm7faMJofUztCO0CZ4WtMHeh0jLxmwlhFSzWzH8/b7MF165fJWq2dJp1I3IfXvPy+QP+9PXPjkxT13+dF8HHDxRKsLMzGKJMmwPHnlSVteJbagzQ7WY4PMcmAr+gQsNOxMEU1LdyGvufQAWg==
  • Authentication-results: esa2.hc3370-68.iphmx.com; dkim=pass (signature verified) header.i=@citrix.onmicrosoft.com
  • Cc: <xen-devel@xxxxxxxxxxxxxxxxxxxx>, Jan Beulich <jbeulich@xxxxxxxx>, Andrew Cooper <andrew.cooper3@xxxxxxxxxx>, Wei Liu <wl@xxxxxxx>
  • Delivery-date: Thu, 10 Feb 2022 10:19:19 +0000
  • Ironport-data: A9a23:LkVDYazPZiyEWMwUSY96t+fewSrEfRIJ4+MujC+fZmUNrF6WrkVUm GAdXDqAb/bYa2D1KdAkb9iz9ENTu5/cnIVqSAs5riAxQypGp/SeCIXCJC8cHc8zwu4v7q5Dx 59DAjUVBJlsFhcwnvopW1TYhSEUOZugH9IQM8aZfHAhLeNYYH1500g7wbdh2tcAbeWRWGthh /uj+6UzB3f9s9JEGjp8B3Wr8U4HUFza4Vv0j3RmDRx5lAa2e0o9VfrzEZqZPXrgKrS4K8bhL wr1IBNVyUuCl/slIovNfr8W6STmSJaKVeSFoiI+t6RPHnGuD8H9u0o2HKN0VKtZt9mGt5NS2 YlitJC+chY0OImTuuRebSRpEAgraMWq+JefSZS+mcmazkmAeHrw2fR+SkoxOOX0+M4uXzsIr 6ZBbmlQMFbT3Ipaw5riIgVort4kI8TxepsWp1lrzC3DDOZgSpfGK0nPzYEDjW5q25gXdRrYT 5YpYhs1ZRWeWEwVYU0+VKsuvrf3j0CqJlW0r3rK/PFqsgA/1jdZ0rLgLd7UcdyiXthOkwCTo Weu13v9KgEXMpqY0zXt2n6tgO/JkiTwHp4PPLyi9+Isjkf77nweDlgaWEW2pdG9i1WiQJRPJ koM4C0soKMuskuxQbHAswaQ+SDe+ERGApwJTrN8uFrlJrfoDxixRUsVEhFAZNIdpdIwYWMI1 hy3ouLqLGk62FGKck61+rCRpDK0HCEaK24eeCMJJTc4D8nfTJIb1UyWEIs6eEKhppisQGyrn WjWxMQrr+hL1aY2O7OHEUcrat5GjrzAVUYL6wreRQpJBSspNdf+N+REBbU2hMuszbp1rHHc5 BDoeODEtYji6K1hcgTWGY3h+5nzuZ643MX02wIHInXY323FF4SfVY5R+ipiA0xiL9wJfzTkC GeK518NuMQJZCPxPfAmC25UNyjM5fO5fTgCfqqKBuein7ArLFPXlM2QTRL4M5/RfLgEzvhkZ MbznTeEBncGE6V3pAdatM9GuYLHMhsWnDuJLbiilkzP+ePHOBa9FOdUWHPTP7tRxP7V/23oH yN3apLiJ+N3C7alPEE6MOc7cDg3EJTMLc6q9ZIHLLPfSuekcUl4Y8LsLXoaU9UNt4xel/vS/ 2H7XUldyVHlgmbAJxnMYXdmAI4Dl74mxZ7iFSBzb1uuxVY5ZoOjsPUWe5ctJOF1/+1/1/9kC fICfpzYUPhITz3G/RUbbIX889M+JEj621rWMnr3eiU7cr5hWxfNpo3ucDzw+XRcFSGwr8Y// eGtj1uJXZoZSg1+J8/Kc/bznUiptH0QlbsqDUvFK9VeYmv2941uJ3Cjh/M7OZhUex7C2iGbx 0CdBhJB/bvBpIo88d/og6GYrtj2T7siTxQCR2SCtOS4LyjX+Gan0LRsaufQcGCPTn7w9YWje f5Rk6P2PsoYkQsYqIF7Cbtqk/4zvoO9u79Aww14N3zXdFD3WKh4K3yL0MQT5K1AwrhV5Vm/V k6Vo4QIPLyIPIXuEUILJRpjZeOGjKlGlj7X5PUzAUP7+C4oo+bXDRQMZ0GB2H5HMb94EII52 uNw6scZ5ju2hgcuLtvb3Dtf8H6BLyBYXqgq3n3A7FQHVub/Jol+XKHh
  • Ironport-hdrordr: A9a23:K6Z9W6rQe+3a23/xcVOkD38aV5vJL9V00zEX/kB9WHVpm5Oj+P xGzc526farslsssREb+OxpOMG7MBThHLpOkPMs1NaZLXLbUQ6TQr2KgrGSoQEIdxeOk9K1kJ 0QDpSWa+eAc2SS7/yKmTVQeuxIqLLskNHKuQ6d9QYUcegDUdAe0+4TMHf8LqQZfngjOXJvf6 Dsmvav6gDQMUg/X4CePD0oTuLDr9rEmNbPZgMHPQcu7E2rgSmz4LD3PhCE1lNGOgk/i4sKwC zgqUjU96+ju/a0xlv10HLS1Y1fnJ/ExsFYDMKBp8AJInHHixquZq5mR7qe1QpF692H2RIPqp 3hsh0gN8N85zf4eXy0mwLk303a3DMn+xbZuCilqEqmhfa8aCMxCsJHi44cWADe8VAcsNZ117 8O936FtrJMZCmw0xjV1pztbVVHh0C0qX0tnao4lHpES7YTb7dXsMg24F5VKpEdByj3gbpXXN WGNPuspcq+TGnqL0ww5gJUsZ+RtzUIb1q7q3E5y4KoO2M8pgE686MarPZv6kvouqhNDqWs3N 60QpiAoos+O/P+XZgNddvpfvHHeVAlYSi8Rl56cm6XXZ3uBRr22uzKCfMOlaWXRKA=
  • Ironport-sdr: 1fQE89PZh/+93ylIoxoh1muDEpZcglxB8hTGWPSoKcldJYHBMpKVDBbfgra37rNUDTxnQxnCDb PuYDAHpo6Bsx0H8+ubbbPf8H32pJxb3O4CRNLSx09BBVBXq0rGtnnhhE7AAsOiiuNiA4ppVWb0 3SzC8dmZCzVNTucDQvBL5zkyJzkL11LUjKXQZwxI+PwrmS2MrGKuOsnYb25I4L3RxijWi6q8x/ Hh7xhixaEaFCuo75VE+yRxIDd/IZCRYJ0bj+GLIQMSS0NASkN8/c0TWPjIVSuApslnUKCcKdRM fOBn6hbBdmZ0D9SwgaxNVNsj
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>

On Thu, Feb 10, 2022 at 09:44:36AM +0100, 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.
> 
> Prioritize the information supplied by Multiboot instead. If this is not
> available, fall back to the old BDA method.
> 
> Signed-off-by: Tu Dinh Ngoc <dinhngoc.tu@xxxxxxx>
> ---
> Changes in v3:
> - Prioritize using Multiboot's memory information.. Fall back to using
>   BDA in case MBI does not supply memory info.
> 
> Changes in v2:
> - Detect if Multiboot claims there's more than 640 KB of low memory
>   (happens with old Kexec versions), and correct the memory unit in such
>   cases.
> ---
>  xen/arch/x86/boot/head.S | 44 ++++++++++++++++++++++++++--------------
>  1 file changed, 29 insertions(+), 15 deletions(-)
> 
> diff --git a/xen/arch/x86/boot/head.S b/xen/arch/x86/boot/head.S
> index dd1bea0d10..da7810060e 100644
> --- a/xen/arch/x86/boot/head.S
> +++ b/xen/arch/x86/boot/head.S
> @@ -524,27 +524,41 @@ 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
> +        /* Check if Multiboot provides us with low memory size. */
> +        mov     %edx,%ecx
> +        test    %ecx,%ecx
> +        jz      1f
> +
> +        /*
> +         * Old Kexec used to report memory sizes in bytes instead of 
> kilobytes
> +         * like it's supposed to.
> +         *
> +         * If Multiboot reports more than 640 KB of low memory, assume we 
> have
> +         * this problem.

Is 640KB the absolute maximum of low memory that can be reported?

It would seem to me that reporting 1000KB or more is obviously wrong,
and would satisfy the check for old kexec reporting in bytes instead of
KB?

Do you need to also check that the adjusted value is between a sane
range also?

Thanks, Roger.



 


Rackspace

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