From nobody Thu Oct 30 22:55:00 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass(p=quarantine dis=none) header.from=suse.com ARC-Seal: i=1; a=rsa-sha256; t=1754909413; cv=none; d=zohomail.com; s=zohoarc; b=Pfzi/5uAnSucLZtWSPR5bTs3ISwQVGfOPv0FZpcn6qmCCoLa5xCuOegPnm2K5rAn0ijI58ZVoazSk1AuOuouJwCbWhJiMJN8eDSyut66al1TEtwvh6Dv7EypGfMgFF8SnO7wBG3fW9NI4kR30s/O/96ZIRyPTgXuFUj+U1+ldl8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1754909413; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=c0kRRXWE/dsdx4mKZYOIAFzRpb2D9T2OWENbKt8BtM0=; b=kIjyG8R08qZKcI5U+0hngO4srcMM0xDDJ4myFvi2rtA2HtifXPmJgd2jt80yBsd3JxnL55zTyLmXQhXhwaAmQocwZfEqvzTx2K5a2tNuCSxaSCiys0+NR4kuat97xniwuJALylfpgqK8qt6/+I5E72ouGlSh2g3CWH0QV1k3/y4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1754909413185664.9649133598541; Mon, 11 Aug 2025 03:50:13 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1077291.1438353 (Exim 4.92) (envelope-from ) id 1ulQ6L-0004LT-GT; Mon, 11 Aug 2025 10:50:01 +0000 Received: by outflank-mailman (output) from mailman id 1077291.1438353; Mon, 11 Aug 2025 10:50:01 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1ulQ6L-0004LH-Dk; Mon, 11 Aug 2025 10:50:01 +0000 Received: by outflank-mailman (input) for mailman id 1077291; Mon, 11 Aug 2025 10:50:00 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1ulQ6K-0004L9-Hs for xen-devel@lists.xenproject.org; Mon, 11 Aug 2025 10:50:00 +0000 Received: from mail-ej1-x629.google.com (mail-ej1-x629.google.com [2a00:1450:4864:20::629]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id ec8d174c-76a0-11f0-b898-0df219b8e170; Mon, 11 Aug 2025 12:49:58 +0200 (CEST) Received: by mail-ej1-x629.google.com with SMTP id a640c23a62f3a-af958127df5so632791966b.2 for ; Mon, 11 Aug 2025 03:49:58 -0700 (PDT) Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de. [37.24.206.209]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-af929c6a157sm1883763266b.91.2025.08.11.03.49.57 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 11 Aug 2025 03:49:57 -0700 (PDT) X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: ec8d174c-76a0-11f0-b898-0df219b8e170 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1754909398; x=1755514198; darn=lists.xenproject.org; h=content-transfer-encoding:in-reply-to:autocrypt:content-language :references:cc:to:from:subject:user-agent:mime-version:date :message-id:from:to:cc:subject:date:message-id:reply-to; bh=c0kRRXWE/dsdx4mKZYOIAFzRpb2D9T2OWENbKt8BtM0=; b=LcT9RvDwy+fK5IxjNq/TtFZ7JNl+IPMYHNSEs9t/StxBVeEyXqV954GMri3o1S9EAd kFnun4SAK6HbCDFWUXxMd+297WUpSoE3H7DbVZxKZh4dxCk+GnlaCOmwY+C8EDgVVwfO 8R99P1H+zrpMIpSkDeXjMlFq6ONsYAGGvtKRh6puCIMqfXQYFyuLZ8gChRsv/odvHV8t u0rio2kaWQd68LPGDIVboXQ8u8M/LRhpGVCQc35h1iTlP+peRRy14VuwAxd5rhS9wlVj ciuzMdVAJwnff8428ncHQQ2j/2xpSf9Lp3rP13C90L30vtJ+L/n6XaWxHoMbgzZm6wUg rqgQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754909398; x=1755514198; h=content-transfer-encoding:in-reply-to:autocrypt:content-language :references:cc:to:from:subject:user-agent:mime-version:date :message-id:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=c0kRRXWE/dsdx4mKZYOIAFzRpb2D9T2OWENbKt8BtM0=; b=fVjduTrfbVPKNS2PV73kc4jdEiyB/bJw5E/kjL0ooJZ3O/Uhw36PGdGI0behKDwqtW oZtqpMgCYsOtx3LMFM86//v7yESCVBayNyMPb2cBeZRRrpPmsCcfA4MF2XZFXk+1wgYh 1KxlZvBuHIo7s59rCrRtO44/GRg3clvKE3kvR69eMvJXFKcbZW2RjXwY5ywldYGNv/oG LkuxdtRhanukE2r/AAJ/khu6k5/fVtDVS6uSikVG5BIgw/bvyN0rIp9WuUpJ5yRcHzTL lKRr8AOcv/HS+yCRSzLXfaRuxR/mi1DpZhrt/dJtGcdHMyKxqcgllPYBor3nYVXxFEXb CthQ== X-Gm-Message-State: AOJu0YxF4zZ3J3Ys/N3Mp237gEZApIAn4+eQCDl/B7thNkgkV+xpyJ2P WeWu5mEcpY8qHZAxV14Ym/TpjEMslU6wwtBnkp/y7cX4pSKtbYBYIBwrkpWjf4NPu93pB3yo71w Td/Y= X-Gm-Gg: ASbGncsetAeQ0gaDw0EnXwAYug1QhIRMJkQDQoyPgcLpfVAyMe+moRN4UgVPAJ+glfZ Au+QUyTvZAbaLz1wJMp7MaT+/exopQUilpxmiH+by7ITzjcSr9BGiDEYte2jYObRYBC6nFWCvxj bLiOY2yoSGaBLs2W1ajjlfLtm6h2AHx3WVqzOrjnm+STw18erg/NlWDu8kGIa0HA6KsfPwvJCJU f/gulUMOMJmd2sDxPbURhoGOk+2xtiJ5z4K3fiPs/RyMuizwlctKSbOB3F5lSTrV3FnLImJOsxA e/Wunmkqy1mzehzMHJwWYJMJTfuDTmCBelbVlJabqNc0Xof8ydeISo2EG5384SYvVeZtiTqv6OV 5FSodtcQw0T8U9TPgYKDquo/2jr9R2Yac+dRM41YjCe+Hzkj+AoZaCOG4y0VveIL2JERj6u1y+0 kPV/p5ZkY= X-Google-Smtp-Source: AGHT+IFIiIOXTIfVIQ0ibV7NNZ95KDX2AyW9ZiKJINRkwWBFe/0km40+ll+vOgX3b6y501vFfzYcEQ== X-Received: by 2002:a17:907:cd0e:b0:af9:3ad2:6930 with SMTP id a640c23a62f3a-af9c64859a3mr1060375766b.24.1754909397940; Mon, 11 Aug 2025 03:49:57 -0700 (PDT) Message-ID: <6e295921-0432-435e-9efe-51caa106f203@suse.com> Date: Mon, 11 Aug 2025 12:49:57 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: [PATCH v2 1/2] x86/mkelf32: pad load segment to 2Mb boundary From: Jan Beulich To: "xen-devel@lists.xenproject.org" Cc: Andrew Cooper , =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= References: Content-Language: en-US Autocrypt: addr=jbeulich@suse.com; keydata= xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A nAuWpQkjM1ASeQwSHEeAWPgskBQL In-Reply-To: Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @suse.com) X-ZM-MESSAGEID: 1754909415580116600 Content-Type: text/plain; charset="utf-8" In order to legitimately set up initial mappings past _end[], we need to make sure that the entire mapped range is inside a RAM region. Therefore we need to inform the bootloader (or alike) that our allocated size is larger than just the next SECTION_ALIGN-ed boundary past _end[]. This allows dropping a command line option from the tool, which was introduced to work around a supposed linker bug, when the problem was really Xen's. While adjusting adjacent code, correct the argc check to also cover the case correctly when --notes was passed. Signed-off-by: Jan Beulich Acked-by: Roger Pau Monn=C3=A9 --- There's no good Fixes: tag, I don't think, as in theory the issue could even have happened when we still required to be loaded at a fixed physical address (1Mb originally, later 2Mb), and when we statically mapped the low 16Mb. If we assumed such can't happen below 16Mb, these two should be added: Fixes: e4dd91ea85a3 ("x86: Ensure RAM holes really are not mapped in Xen's = ongoing 1:1 physmap") Fixes: 7cd7f2f5e116 ("x86/boot: Remove the preconstructed low 16M superpage= mappings") --- v2: New. --- a/xen/arch/x86/Makefile +++ b/xen/arch/x86/Makefile @@ -130,8 +130,7 @@ orphan-handling-$(call ld-option,--orpha =20 $(TARGET): TMP =3D $(dot-target).elf32 $(TARGET): $(TARGET)-syms $(efi-y) $(obj)/boot/mkelf32 - $(obj)/boot/mkelf32 $(notes_phdrs) $(TARGET)-syms $(TMP) $(XEN_IMG_OFFSET= ) \ - `$(NM) $(TARGET)-syms | sed -ne 's/^\([^ ]*\) . __2M_rwdat= a_end$$/0x\1/p'` + $(obj)/boot/mkelf32 $(notes_phdrs) $(TARGET)-syms $(TMP) $(XEN_IMG_OFFSET) od -t x4 -N 8192 $(TMP) | grep 1badb002 > /dev/null || \ { echo "No Multiboot1 header found" >&2; false; } od -t x4 -N 32768 $(TMP) | grep e85250d6 > /dev/null || \ --- a/xen/arch/x86/boot/mkelf32.c +++ b/xen/arch/x86/boot/mkelf32.c @@ -248,7 +248,6 @@ static void do_read(int fd, void *data, =20 int main(int argc, char **argv) { - uint64_t final_exec_addr; uint32_t loadbase, dat_siz, mem_siz, note_base, note_sz, offset; char *inimage, *outimage; int infd, outfd; @@ -261,22 +260,24 @@ int main(int argc, char **argv) Elf64_Ehdr in64_ehdr; Elf64_Phdr in64_phdr; =20 - if ( argc < 5 ) + if ( argc < 4 ) { + help: fprintf(stderr, "Usage: mkelf32 [--notes] " - " \n"); + "\n"); return 1; } =20 if ( !strcmp(argv[1], "--notes") ) { + if ( argc < 5 ) + goto help; i =3D 2; num_phdrs =3D 2; } inimage =3D argv[i++]; outimage =3D argv[i++]; loadbase =3D strtoul(argv[i++], NULL, 16); - final_exec_addr =3D strtoull(argv[i++], NULL, 16); =20 infd =3D open(inimage, O_RDONLY); if ( infd =3D=3D -1 ) @@ -339,9 +340,12 @@ int main(int argc, char **argv) (void)lseek(infd, in64_phdr.p_offset, SEEK_SET); dat_siz =3D (uint32_t)in64_phdr.p_filesz; =20 - /* Do not use p_memsz: it does not include BSS alignment padding. */ - /*mem_siz =3D (uint32_t)in64_phdr.p_memsz;*/ - mem_siz =3D (uint32_t)(final_exec_addr - in64_phdr.p_vaddr); + /* + * We don't pad .bss in the linker script, but during early boot we map + * the Xen image using 2M pages. To avoid running into adjacent non-R= AM + * regions, pad the segment to the next 2M boundary. + */ + mem_siz =3D ((uint32_t)in64_phdr.p_memsz + (1U << 20) - 1) & (-1U << 2= 0); =20 note_sz =3D note_base =3D offset =3D 0; if ( num_phdrs > 1 ) From nobody Thu Oct 30 22:55:00 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass(p=quarantine dis=none) header.from=suse.com ARC-Seal: i=1; a=rsa-sha256; t=1754909440; cv=none; d=zohomail.com; s=zohoarc; b=MKb3H18ZuFN4xFLGu+fRflTqsmfi96W2V/jzfV1R6jipKuW5FHdITHe9JEp4cRa7Q8tAwHngrCUr1oF+SquQPcJlBBGdPxmL2oDge71nON4rZvYYr4lhsM6wumdnKu1VZVPkniXr9ZrO3USWePOh0vY+b2UGQlpKNLdfIdeagJU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1754909440; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=NNP7nFEccI8WBoRocVIQ5vYhIflCxYg5OB3S5qlC4j0=; b=c19s8TZw0NZt2nuxpVysU8OKjV5Ioa2BAWQuvGEIYuRyl5TryQHDVTpvd1gfEoU2OA/tO6QSW1Q0FvtgNZ6SjyqDxmXS3Os8EjzlFBYUua+Q7FD8DfyuUGkZ5F++LV34vvARBQ3BE/IX7s8NspJyRkSSJ7oUlKl9vh01HaomvsI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 175490944081524.54917715567501; Mon, 11 Aug 2025 03:50:40 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1077296.1438363 (Exim 4.92) (envelope-from ) id 1ulQ6l-0005lL-Np; Mon, 11 Aug 2025 10:50:27 +0000 Received: by outflank-mailman (output) from mailman id 1077296.1438363; Mon, 11 Aug 2025 10:50:27 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1ulQ6l-0005kR-KS; Mon, 11 Aug 2025 10:50:27 +0000 Received: by outflank-mailman (input) for mailman id 1077296; Mon, 11 Aug 2025 10:50:26 +0000 Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254] helo=se1-gles-sth1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1ulQ6k-0005a8-9S for xen-devel@lists.xenproject.org; Mon, 11 Aug 2025 10:50:26 +0000 Received: from mail-ed1-x52c.google.com (mail-ed1-x52c.google.com [2a00:1450:4864:20::52c]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id fc2ed450-76a0-11f0-a325-13f23c93f187; Mon, 11 Aug 2025 12:50:24 +0200 (CEST) Received: by mail-ed1-x52c.google.com with SMTP id 4fb4d7f45d1cf-61530559887so6661329a12.1 for ; Mon, 11 Aug 2025 03:50:24 -0700 (PDT) Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de. [37.24.206.209]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-615a8ff9ae5sm17911920a12.43.2025.08.11.03.50.23 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 11 Aug 2025 03:50:23 -0700 (PDT) X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: fc2ed450-76a0-11f0-a325-13f23c93f187 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1754909424; x=1755514224; darn=lists.xenproject.org; h=content-transfer-encoding:in-reply-to:autocrypt:content-language :references:cc:to:from:subject:user-agent:mime-version:date :message-id:from:to:cc:subject:date:message-id:reply-to; bh=NNP7nFEccI8WBoRocVIQ5vYhIflCxYg5OB3S5qlC4j0=; b=SNgEFLv7XtAKkgCPBDBbxsUdEoJc9x6BMPtQskPHxnpySGDEeSa1kXWuwa0rx6MGik jz53cGDYM+sdmOj96HOpeAhQ/ehq/tbbCd3XXGZnOrYiTJWt2EoS+dfuYRvJezBQF3VK DR/0fn7NBIeExL/MWP2LkdVO0gsPTJzBJtfQQUuHEDfr4oJmsJaVlRASbNwTWJcY9CBD JcbskeZq7JiRcPiT7U6XQpC4VAj9K+4uKYhkJ6TMBdoRPNMuPmOvomLiJK/PSS62+cQd rOvqviaCmRpzw/CzOuY87sRE6yG5fz8I6WEojZAovvZgQs1OSlkv9SI/LcAM3MBqEL+F TnTw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754909424; x=1755514224; h=content-transfer-encoding:in-reply-to:autocrypt:content-language :references:cc:to:from:subject:user-agent:mime-version:date :message-id:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=NNP7nFEccI8WBoRocVIQ5vYhIflCxYg5OB3S5qlC4j0=; b=JFFCkgu0ac3IcFHdzYF25asY1WeEu4ZlO2/dGcII5jO1Abq7okAZZPeOz/yuJxTC8Y t4hlw4WFzpG8Yrgtevb+2+WgPJ19784J2oX6jWFOyZATGIRm9uXScDkdEvdjlLIpmGzN l7lp9bLXJPY+lfpnOXJWF5Az7egpF2trpHEYuAsKnQ64WrSLvblf/xM07APG1+KIagn+ I1V0IEyd2HHTahpdFoLjRQQ3BQ2RmzvtMNtK/xDqvBfXQ/fHG+HbnTUwbbUD5cOrhv6w v1XZuQkq/eBYy26zFF/VEtBkd/V5oO1wtWJYDfvaQuz0/tgWUS2OkbzHmgBqfh6iOy2q Kobw== X-Gm-Message-State: AOJu0YxVVEDLHuu31Mi3A5xayT0KurJbxXI55UCC5U8cXyQlZ30PsyBU MmhAQiIkcBfDcyKmOEtAvZlg7GFThAI1giM3uK2TDprTPk+dlCtbpXiAeIScqj8T0Ka6XHEg+KX fk+g= X-Gm-Gg: ASbGncu7kLAI0XwTVmUG4lQrnOppR858zHy4bc/jozuUAPSJWIsREsoyL+l3JKfgBbH 5XOpNB5pYly56TNBptKhntZY1PXw+naKCZSqbKvqf0i2DzifgSdZpEyP8sP+ThP6EmxJthPRxpG v6WyEA8azC+cg9miWV8ZuleEnbH5jYIZrRJ0JC8blyDYMdxOm9AmDPaB6jVrlAWTo3fcpt3aQrx d4H69WapUYG84MTGcgfvB60KczYW02D9wVASIXGWeSXbfsxA/1xpPR/XCnc8BDIgbO6Mw5wNF/+ 4z34K3V5ulcusD6zV4/v49H++z3QS9EBP+qjg0+rKFymMgj3iwLw/QEwxTzHwN6RJ73KYQJRvlP WVVUIpp7cRI9E1NrUsz1rCSeFyZEqz+zf+Ye1GzQkRacFNF5HK3O4oxK+AqoHM+Q+m2yXQ7pXvl 0px4ZRpOM= X-Google-Smtp-Source: AGHT+IGzX4dx7d/KHV1d0qMMph5KvSflSYCtu7+99cMBUjVuyjE3Mr8n2aQNe/dZhuCR+ATvlFYa2Q== X-Received: by 2002:a05:6402:1ec4:b0:615:87a6:58a7 with SMTP id 4fb4d7f45d1cf-617e2e9e45bmr12117531a12.33.1754909424149; Mon, 11 Aug 2025 03:50:24 -0700 (PDT) Message-ID: <5a862787-40d8-4c9f-bd89-01d866648120@suse.com> Date: Mon, 11 Aug 2025 12:50:23 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: [PATCH v2 2/2] x86/mm: drop unmapping from marking-as-I/O in arch_init_memory() From: Jan Beulich To: "xen-devel@lists.xenproject.org" Cc: Andrew Cooper , =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= References: Content-Language: en-US Autocrypt: addr=jbeulich@suse.com; keydata= xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A nAuWpQkjM1ASeQwSHEeAWPgskBQL In-Reply-To: Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @suse.com) X-ZM-MESSAGEID: 1754909441820116600 Content-Type: text/plain; charset="utf-8" The unmapping part would have wanted to cover UNUSABLE regions as well, and it would now have been necessary for space outside the low 16Mb (wherever Xen is placed). However, with everything up to the next 2Mb boundary now properly backed by RAM, we don't need to unmap anything anymore: Space up to __2M_rwdata_end[] is properly reserved, whereas space past that mark (up to the next 2Mb boundary) is ordinary RAM. While there, limit the scopes of involved variables. Signed-off-by: Jan Beulich Acked-by: Roger Pau Monn=C3=A9 --- v2: Drop unmapping code altogether. --- a/xen/arch/x86/mm.c +++ b/xen/arch/x86/mm.c @@ -275,8 +275,6 @@ static void __init assign_io_page(struct =20 void __init arch_init_memory(void) { - unsigned long i, pfn, rstart_pfn, rend_pfn, iostart_pfn, ioend_pfn; - /* * Basic guest-accessible flags: * PRESENT, R/W, USER, A/D, AVAIL[0,1,2], AVAIL_HIGH, NX (if availab= le). @@ -292,12 +290,17 @@ void __init arch_init_memory(void) * case the low 1MB. */ BUG_ON(pvh_boot && trampoline_phys !=3D 0x1000); - for ( i =3D 0; i < 0x100; i++ ) + for ( unsigned int i =3D 0; i < MB(1) >> PAGE_SHIFT; i++ ) assign_io_page(mfn_to_page(_mfn(i))); =20 - /* Any areas not specified as RAM by the e820 map are considered I/O. = */ - for ( i =3D 0, pfn =3D 0; pfn < max_page; i++ ) + /* + * Any areas not specified as RAM or UNUSABLE by the e820 map are + * considered I/O. + */ + for ( unsigned long i =3D 0, pfn =3D 0; pfn < max_page; i++ ) { + unsigned long rstart_pfn, rend_pfn; + while ( (i < e820.nr_map) && (e820.map[i].type !=3D E820_RAM) && (e820.map[i].type !=3D E820_UNUSABLE) ) @@ -317,17 +320,6 @@ void __init arch_init_memory(void) PFN_DOWN(e820.map[i].addr + e820.map[i].siz= e)); } =20 - /* - * Make sure any Xen mappings of RAM holes above 1MB are blown awa= y. - * In particular this ensures that RAM holes are respected even in - * the statically-initialised 1-16MB mapping area. - */ - iostart_pfn =3D max_t(unsigned long, pfn, 1UL << (20 - PAGE_SHIFT)= ); - ioend_pfn =3D min(rstart_pfn, 16UL << (20 - PAGE_SHIFT)); - if ( iostart_pfn < ioend_pfn ) - destroy_xen_mappings((unsigned long)mfn_to_virt(iostart_pfn), - (unsigned long)mfn_to_virt(ioend_pfn)); - /* Mark as I/O up to next RAM region. */ for ( ; pfn < rstart_pfn; pfn++ ) { @@ -365,6 +357,7 @@ void __init arch_init_memory(void) const l3_pgentry_t *l3idle =3D map_l3t_from_l4e( idle_pg_table[l4_table_offset(split_va)]); l3_pgentry_t *l3tab =3D map_domain_page(l3mfn); + unsigned int i; =20 for ( i =3D 0; i < l3_table_offset(split_va); ++i ) l3tab[i] =3D l3idle[i];