From nobody Sun Jul 26 13:30:21 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1781644916; cv=none; d=zohomail.com; s=zohoarc; b=k7kiQd2C2qglPJNTXJ/+GGgsm/f7ACXJzhLU8UbKVx6/FP06v1kiVlBEANynyNyG9i00K+4JaDtscW1ZrWJ/pAFTNmWEtwA9JJoFmTgkqZ2a7nUnqUVDqZQxo3SaEpQ2deTliVuMkSBDymJaxlWnESfS9o5bFe4hkHfNAXbcxjk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781644916; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=IaOFaqKACdMizsx9Pbv6kiT8caf5eiJWnLh/9195E8s=; b=RBDXvtKVAvOWsEwckSm/SKNZ9aZeuX6mw/gRLkaZEBsrh2wYl0kNYAy7ONIm6OPAufx0SYZ6bBxeU7XA3DfscXg6R4w00UxfC6iyD3V4ya9Gq0G14z9vE6swYaDIE+c/4YDywB72yDO74b9qD7esmbibpAgvPl2Q4FJaAC6FDO4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781644916207922.6666428599152; Tue, 16 Jun 2026 14:21:56 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wZbDT-0005UA-BU; Tue, 16 Jun 2026 17:21:03 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wZbDQ-0005SZ-PA for qemu-devel@nongnu.org; Tue, 16 Jun 2026 17:21:01 -0400 Received: from mail-pj1-x1036.google.com ([2607:f8b0:4864:20::1036]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wZbDO-0007Mr-Ln for qemu-devel@nongnu.org; Tue, 16 Jun 2026 17:21:00 -0400 Received: by mail-pj1-x1036.google.com with SMTP id 98e67ed59e1d1-37cae11ba85so3851a91.1 for ; Tue, 16 Jun 2026 14:20:58 -0700 (PDT) Received: from stoup.. (174-21-129-215.tukw.qwest.net. [174.21.129.215]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-37c521e76d1sm3820063a91.8.2026.06.16.14.20.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 16 Jun 2026 14:20:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781644857; x=1782249657; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=IaOFaqKACdMizsx9Pbv6kiT8caf5eiJWnLh/9195E8s=; b=a/I6rH2fGBnj9i6ksWYEA9nbuGU2LWdaRYnuThpLzj0/hpk3v5MvO7+jGgOYQnv8+C VfIJwwSYhv4Ni6TlUW6Tkq8opDxv17OwYyTpfa43Bqf027L5EE2Ra/H9SYV/AixRlsCg Hip0K0Oebt+9ZcSDZoFZ/tZmOyFOEKHyvhWJMcrmLUI3C0zgj8ZvLDU1VxIYqQwXcKQ5 dtAf06ERDWTY39y0diL++iurnMjamootwL1yEUaLI17IOxtAq91UoBM2Kg0HzcWDVINu eOWVQh+gBnkuajmMfKl+G49VUzpVRkkJ//bI2SjKuwt387pyVs7I9OZL3YobRux9QbzU EiNw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781644857; x=1782249657; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=IaOFaqKACdMizsx9Pbv6kiT8caf5eiJWnLh/9195E8s=; b=SUHQCYC9woA084222oQzl+28n5ySKW/a0XE5pFncNKYLSE1jEWTUnsjNcFN8aTK8Y/ ynvXOC20cYR7zkLhz88Ginq2rF8OFg1vqoaDSd0vSaUm3nPZ0W/piLou15HU1T6cuV6Z MmXPm3aU86uxedJuBHPJHVmnXGS2aiGizD+AKS9+E6zaYZlBdvHlxF0cWpx6AlTyjSFs eS2Wyzrbl/kW7bWdAcbhgROikTeP7D6oBEjlcAlcCm7Lt8whkx0LsWq/TjyNXFDR4hXR bOosJRfytK9jukqByu+j26u9cbyMBRvIICRkG3XVhm7C5oxeDCZDTVGwUOMavvXB7RgR XjXA== X-Gm-Message-State: AOJu0YyeHT6f6KPsajVMmL6jQyWx1975pcdM6N+bNn1AqVTVj6SxZu7a rrYMokRBpTcEJdjYr4ctgGhzLCMdTAHIesIucyvDD5pQU/Ep5IZZAw1Z2sValQ+6OokF6ICIDLF 6UH40 X-Gm-Gg: Acq92OFXGQ/LoAAFkZH26CMEuBCooHjmcMfY9Eu9kaGhpf9M/nuyRvvIwnLfxNi3c8J L1UVxiFdFI0K0Ay1W4U4qS7Oz6yczlU8wH6pUjSohi2n0rE3bpFbWOVGGespAnSRM/TsPGPBnRo PW4gWyeI0s/sLKbgJgy9NgZMuIAMtcyg5X1SR5oc/WN90MqrTdROWdeCBp8tF8PdDEigf4rZ5zp znAPwyu7eiG28v2S3flZ7qfe/MpxASIAtKtoCiR4Qj2wk559ZQFjiyYd704szalnHcOMNC9kakj GwqpPHsGk6Aj6CARnpGXXITWDA2RNYFhqmxOc30Dz5SoG/RzcT7bMkMBdNmkFmOiqrz70A0X9mR jQ2xtqAoSdAp2ZcM/qL6VZECwIgwJVuXDeOoxEazl2jdyE167wtXlz8+KV3vPjzJLcj4eAkKojQ nUpC8dwd6gPEEEv6fCPHJqRlnCjMN16KToM5qz94jA28eiUi0G6K2kCwIoT/X5 X-Received: by 2002:a17:90a:d88d:b0:366:132:fda7 with SMTP id 98e67ed59e1d1-37c93723e15mr1107975a91.10.1781644857097; Tue, 16 Jun 2026 14:20:57 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: deller@gmx.de, Warner Losh , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PATCH v2 01/13] linux-user: Introduce PGBRange Date: Tue, 16 Jun 2026 14:20:42 -0700 Message-ID: <20260616212055.334466-2-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260616212055.334466-1-richard.henderson@linaro.org> References: <20260616212055.334466-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1036; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1036.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1781644917326158500 Create a structure to hold a beginning/end range for guest virtual addresses, for use by probe_guest_base. Use vaddr for clarity. Reviewed-by: Warner Losh Reviewed-by: Helge Deller Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Richard Henderson Tested-by: Helge Deller nbounds - 1; i >=3D 0; --i) { - if (pgb_try_mmap_skip_brk(ga->bounds[i][0] + base, - ga->bounds[i][1] + base, + if (pgb_try_mmap_skip_brk(ga->bounds[i].lo + base, + ga->bounds[i].hi + base, brk, i =3D=3D 0 && reserved_va) <=3D 0) { return false; } @@ -875,26 +875,26 @@ static bool pgb_addr_set(PGBAddrs *ga, abi_ulong gues= t_loaddr, n =3D 0; =20 if (reserved_va) { - ga->bounds[n][0] =3D try_identity ? mmap_min_addr : 0; - ga->bounds[n][1] =3D reserved_va; + ga->bounds[n].lo =3D try_identity ? mmap_min_addr : 0; + ga->bounds[n].hi =3D reserved_va; n++; /* LO_COMMPAGE and NULL handled by reserving from 0. */ } else { /* Add any LO_COMMPAGE or NULL page. */ if (LO_COMMPAGE !=3D -1) { - ga->bounds[n][0] =3D 0; - ga->bounds[n][1] =3D LO_COMMPAGE + TARGET_PAGE_SIZE - 1; + ga->bounds[n].lo =3D 0; + ga->bounds[n].hi =3D LO_COMMPAGE + TARGET_PAGE_SIZE - 1; n++; } else if (!try_identity) { - ga->bounds[n][0] =3D 0; - ga->bounds[n][1] =3D TARGET_PAGE_SIZE - 1; + ga->bounds[n].lo =3D 0; + ga->bounds[n].hi =3D TARGET_PAGE_SIZE - 1; n++; } =20 /* Add the guest image for ET_EXEC. */ if (guest_loaddr) { - ga->bounds[n][0] =3D guest_loaddr; - ga->bounds[n][1] =3D guest_hiaddr; + ga->bounds[n].lo =3D guest_loaddr; + ga->bounds[n].hi =3D guest_hiaddr; n++; } } @@ -909,8 +909,8 @@ static bool pgb_addr_set(PGBAddrs *ga, abi_ulong guest_= loaddr, =20 /* Add any HI_COMMPAGE not covered by reserved_va. */ if (reserved_va < HI_COMMPAGE) { - ga->bounds[n][0] =3D HI_COMMPAGE & qemu_real_host_page_mask(); - ga->bounds[n][1] =3D HI_COMMPAGE + TARGET_PAGE_SIZE - 1; + ga->bounds[n].lo =3D HI_COMMPAGE & qemu_real_host_page_mask(); + ga->bounds[n].hi =3D HI_COMMPAGE + TARGET_PAGE_SIZE - 1; n++; } =20 @@ -976,8 +976,8 @@ static uintptr_t pgb_try_itree(const PGBAddrs *ga, uint= ptr_t base, IntervalTreeRoot *root) { for (int i =3D ga->nbounds - 1; i >=3D 0; --i) { - uintptr_t s =3D base + ga->bounds[i][0]; - uintptr_t l =3D base + ga->bounds[i][1]; + uintptr_t s =3D base + ga->bounds[i].lo; + uintptr_t l =3D base + ga->bounds[i].hi; IntervalTreeNode *n; =20 if (l < s) { @@ -1076,9 +1076,9 @@ static void pgb_dynamic(const char *image_name, uintp= tr_t guest_loaddr, "guest address mapping requirements", image_name); =20 for (int i =3D 0; i < ga.nbounds; ++i) { - error_printf(" %0*" PRIx64 "-%0*" PRIx64 "\n", - w, (uint64_t)ga.bounds[i][0], - w, (uint64_t)ga.bounds[i][1]); + error_printf(" %0*" VADDR_PRIx "-%0*" VADDR_PRIx "\n", + w, ga.bounds[i].lo, + w, ga.bounds[i].hi); } exit(EXIT_FAILURE); } --=20 2.43.0 From nobody Sun Jul 26 13:30:21 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1781644877; cv=none; d=zohomail.com; s=zohoarc; b=Lyw5r+JT+9lk8nF3bXa3CwWlOPEHTblqd8O6/CjNiiJ0feyf6ezVlHD0sSvkn8tJnemAhnI5K+yJXHp+QyNqvXIk1ixLPztZPhNO3LN1EPoqzVbDhTkH12j7mQQd//1BvwC0kjtiq86e7EXEp0NPCBkAJKM+f64WIdi/ILjl+10= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781644877; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=sb+MPff6QX844HAYEHBQvEZrKABgvd2wf2uC/76ZV/g=; b=i1DCA2AGUM05eIFw78e1/rOyHWCFeXt91lk1JdpW/Blb6jvk7dMJRcrDx+M1R0PS2XR1YDA9Os8MJnX0Wq+Euno/9U4mgV+nGrIwUFSgF5QCDfAnNPVWrSwe+yaba6PwXF5WsqZABIjX8Xn8TY4+ARS7geSZuP00RmLIqcYeDao= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781644877324931.1247528149603; Tue, 16 Jun 2026 14:21:17 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wZbDS-0005TU-Om; Tue, 16 Jun 2026 17:21:02 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wZbDR-0005Sc-4q for qemu-devel@nongnu.org; Tue, 16 Jun 2026 17:21:01 -0400 Received: from mail-pj1-x102b.google.com ([2607:f8b0:4864:20::102b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wZbDP-0007N0-AB for qemu-devel@nongnu.org; Tue, 16 Jun 2026 17:21:00 -0400 Received: by mail-pj1-x102b.google.com with SMTP id 98e67ed59e1d1-37cae11ba85so3860a91.1 for ; Tue, 16 Jun 2026 14:20:58 -0700 (PDT) Received: from stoup.. (174-21-129-215.tukw.qwest.net. [174.21.129.215]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-37c521e76d1sm3820063a91.8.2026.06.16.14.20.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 16 Jun 2026 14:20:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781644858; x=1782249658; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=sb+MPff6QX844HAYEHBQvEZrKABgvd2wf2uC/76ZV/g=; b=yMXIIWbXhgBtdIKtya7j/uhxrKmX+r6V1RmbfoLMaSr6Sp91Sk6fGZJkejPWyvMlpe a2WeoylmRqw5ORjMznD58PRtfcnnSCsY7d09y/qkL9Y8dTSalBVKH4BS50iPX2CQL9Bp dlPvh8oOahb6FZjgqqFov7V2nohRwhwDuujTAdN59S1A0Q903KX0fAiJsGImPlvJo9Hq cDQQaoT8lH/mrMGmhEhN40yL6bta0SSaoqYMI/INQVTTdRbVvM1SVFNiozYoYYc7KcwY QK6M0DmPpCYGm0NtARD2ZciTLC9i2dFXJ+2wCuHzWfvNeC6POqYD/d9yM0EuJIBUR3PG DwoA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781644858; x=1782249658; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=sb+MPff6QX844HAYEHBQvEZrKABgvd2wf2uC/76ZV/g=; b=cuGIhGExrfTwORubepNLkQd0V2rUrzD8cZd8sdDK+n+Zl5Sc3W64gq4vYQIxOvxwAc iTobYxXOw8h0zxIVKfjwXEvetfYOLDb9Flin7R2cc86eJ15Z7b35g8E8d77srjC3nXiD YqKvd6noyElMNPZr6ttlD1g6ddPqhClQEZ8OCl4VIHjTXqb0RxQU88wvflwWFw/zQthE G721a1tqoF9cKTBour2C6rgYDYPCmg4ae/dNDaXH7f/Cn4Ifrb907oTmD4S6WfJN6BRT O8jVeEcZcDUWCQITgy4TEV2Hew9LQeoMTxNQtM2jELCgFetYl3tBd+KPHViwqeytxboA 1L/Q== X-Gm-Message-State: AOJu0Yzj5CY/RsEsHur/nnsO9uFgXp9R0DSR85w5yCTQ1MF42fOwG6fp UK697EQZ0SB4ODumw1v9Q6a+/AxenCljkgn6DeIePM8FNqgaeOtseapFAPjUXrXyzIXzSoP8GDA tAZe7 X-Gm-Gg: Acq92OF2iUT8CEAPd42Xjc1zuQ3BhjDmYRho0D9hdBblWBCTeZbhjDNiM1NX2wzoV6p 8J61M30phBi/6Xecl3gZyegfp6GV3lLfKeE+X/jCSqPbBqSpIkvKtWa5kI9d+y57tSCFCVM38Mw +7x5cZ26JkbnhernZSe1N6/Y96KePe1iBG5cKW6rOPKo0Y+vosa1PUIs3WMhnPl+WBTy80Cocid Sq0vP4WsUtnYU97kwUT6jAVXk/o+MpbjMifS3OytEOZiFO4vDqJTLxngLnUyJPWBgHC1Ebyj4td Zq8bHyehM7vLniLBIlnC0Ia5ql9pYSiHTHMqaVWhKGrRnEF6hp2gHqK2UeV0xLxtKgNt7BqB/kd wXZT8ZBl0z7zHS59GjhML3iowD75o+6MnrOpAQMwkr6gu7Bq3CxmZkVb9WtiPCH2K5tvp7kGv84 iLUkOMxffmH/x5Wy8LA6EHUw6KvS9kUkEQMJDi8kXWA2QWvwn29cfyBcmTewon X-Received: by 2002:a17:90b:1652:b0:369:69f8:ad6b with SMTP id 98e67ed59e1d1-37c92e80533mr1274855a91.0.1781644857841; Tue, 16 Jun 2026 14:20:57 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: deller@gmx.de, Warner Losh , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PATCH v2 02/13] linux-user: Use PGBRange in load_elf_image Date: Tue, 16 Jun 2026 14:20:43 -0700 Message-ID: <20260616212055.334466-3-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260616212055.334466-1-richard.henderson@linaro.org> References: <20260616212055.334466-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102b; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x102b.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1781644879328158500 Collect into range instead of loaddr+hiaddr. Reviewed-by: Warner Losh Reviewed-by: Helge Deller Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Richard Henderson Tested-by: Helge Deller exec_stack =3D EXSTACK_DEFAULT; for (i =3D 0; i < ehdr->e_phnum; ++i) { struct elf_phdr *eppnt =3D phdr + i; if (eppnt->p_type =3D=3D PT_LOAD) { abi_ulong a =3D eppnt->p_vaddr & TARGET_PAGE_MASK; - if (a < loaddr) { - loaddr =3D a; + if (a < range.lo) { + range.lo =3D a; } a =3D eppnt->p_vaddr + eppnt->p_memsz - 1; - if (a > hiaddr) { - hiaddr =3D a; + if (a > range.hi) { + range.hi =3D a; } ++info->nsegs; align |=3D eppnt->p_align; @@ -1361,7 +1361,7 @@ static void load_elf_image(const char *image_name, co= nst ImageSource *src, } } =20 - load_addr =3D loaddr; + load_addr =3D range.lo; =20 align =3D pow2ceil(align); =20 @@ -1371,13 +1371,13 @@ static void load_elf_image(const char *image_name, = const ImageSource *src, * Make sure that the low address does not conflict with * MMAP_MIN_ADDR or the QEMU application itself. */ - probe_guest_base(image_name, loaddr, hiaddr); + probe_guest_base(image_name, range.lo, range.hi); } else { /* * The binary is dynamic, but we still need to * select guest_base. In this case we pass a size. */ - probe_guest_base(image_name, 0, hiaddr - loaddr); + probe_guest_base(image_name, 0, range.hi - range.lo); =20 /* * Avoid collision with the loader by providing a different @@ -1414,7 +1414,7 @@ static void load_elf_image(const char *image_name, co= nst ImageSource *src, * In both cases, we will overwrite pages in this range with mappings * from the executable. */ - reserve_size =3D (size_t)hiaddr - loaddr + 1; + reserve_size =3D range.hi - range.lo + 1; align_size =3D reserve_size; =20 if (ehdr->e_type !=3D ET_EXEC && align > qemu_real_host_page_size()) { @@ -1443,7 +1443,7 @@ static void load_elf_image(const char *image_name, co= nst ImageSource *src, load_addr =3D align_addr; } =20 - load_bias =3D load_addr - loaddr; + load_bias =3D load_addr - range.lo; =20 if (elf_is_fdpic(ehdr)) { struct elf32_fdpic_loadseg *loadsegs =3D info->loadsegs =3D @@ -1474,7 +1474,7 @@ static void load_elf_image(const char *image_name, co= nst ImageSource *src, info->start_data =3D -1; info->end_data =3D 0; /* Usual start for brk is after all sections of the main executable. */ - info->brk =3D TARGET_PAGE_ALIGN(hiaddr + load_bias); + info->brk =3D TARGET_PAGE_ALIGN(range.hi + load_bias); info->elf_flags =3D ehdr->e_flags; #ifdef TARGET_MIPS info->use_k0_tls =3D (ehdr->e_flags & EF_MIPS_MACH) =3D=3D EF_MIPS_MAC= H_OCTEON; --=20 2.43.0 From nobody Sun Jul 26 13:30:21 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1781644908; cv=none; d=zohomail.com; s=zohoarc; b=SduIsfJAcQW/MCAHOAPsvGGncryAF95uDtdIlE8n+5QlYxxLivAo4KzI9smCrtIZgoDM+gV61LGnb2v3EBDVNYSBEO4xDBxzHYv4Ux4BgYVCPpj+Zg1JMYfs8aseLvpN4zxbGp3UBRcP4Z/ez7XK31diqizXaQq+RiN6CrlxB5Q= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781644908; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=ZwD+09xFgdMoZuAKSWmp8VsuyM0k0eLL68nRKXSEm94=; b=aDd3TuJM6/fYe3vHhKVFKvh8vq2s1aLpdN2pum99lEJqVNkL7A2doTaHA7ddVquxFbDBw0SdJI2Agm2K7NTZhPyCdbVvRgWuG0NmAKmNah9vGgJ51Ab6Zu4LLt5LgYNBO/mKBxd/Dd57oS0cB1LwqVnBKz0PYtzDuKOEsBFjC+s= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781644908237416.5960141522921; Tue, 16 Jun 2026 14:21:48 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wZbDU-0005UR-6e; Tue, 16 Jun 2026 17:21:04 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wZbDS-0005TK-GM for qemu-devel@nongnu.org; Tue, 16 Jun 2026 17:21:02 -0400 Received: from mail-pj1-x102e.google.com ([2607:f8b0:4864:20::102e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wZbDQ-0007NI-Ft for qemu-devel@nongnu.org; Tue, 16 Jun 2026 17:21:02 -0400 Received: by mail-pj1-x102e.google.com with SMTP id 98e67ed59e1d1-37c6cd1ac98so598152a91.0 for ; Tue, 16 Jun 2026 14:21:00 -0700 (PDT) Received: from stoup.. (174-21-129-215.tukw.qwest.net. [174.21.129.215]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-37c521e76d1sm3820063a91.8.2026.06.16.14.20.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 16 Jun 2026 14:20:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781644859; x=1782249659; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=ZwD+09xFgdMoZuAKSWmp8VsuyM0k0eLL68nRKXSEm94=; b=uGR5hpj69xPzM8Tg37lLGzJwnj68kSSAljtO4GbhWYi0gQE+v+5wGpmz6xjGinO1gN AVPwc4dheJn/SNIzuNsMBBK5E90iw/pKEmwdp1lBQlb1w82tcNBWnPx4r0QRSDqke4Nn XW8rCtfKPNYPDfkw1HRo3eY6dI4glcOhjWR5QASn8Z5w/ApYy26qO3MrYlASPEtswC6T 0mUztSVVEVDyFAlYooHpdKrEnGUl8XXY3bls6PWbsSwxrrJ3XOCGdX6PM34XWKezm6Pi nf77LHs3DtR0NDlCkMLkg5ar/8gFYp2rB+pkN5lIV+v4h+fFkJZsVphHIbgZMIknV31l SgHA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781644859; x=1782249659; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=ZwD+09xFgdMoZuAKSWmp8VsuyM0k0eLL68nRKXSEm94=; b=k2oWaH4wevkSq9Xf83pM/BfwDHR3MpWlMpPwRfwOGXKR2+msgkd/whR5EjYTrO9Xhl buRWWHXYKcCaVoaQqA+zbFSVK7OWkT3IgAGlDjpbnOPXCTqMRxV5Q/DS1QOLA44LtdMg oIoBy+owEx6mV9YIw2ZjmtyW1Be5zxlvYrADZRXwz1MBBx5UJ/6gWaxonuhvUkgvu90x VH5IcOag4jnoo48c2EYkEY0NIk9Asc0dUNSEAY1BWJ2VvXBS9y778qpzQgLkhXe+ONBZ S5Fpb4XeEToWtncyK7yo5K8P7Mh2Hs4P+rHJ68UVrYNvBs3gwHVZvx8BWbdo+yYZPXUE bCVQ== X-Gm-Message-State: AOJu0Yx+H0KssWBTmY0nbxGoZ5GrXHrk74e8WyslcUzW2+ZzYMD2lJ26 qFp0uiw10Wp4c8FqE0QwwDzGtxO2+3o5xwlaH3qeu8pm4Saa+H2uh54Q963pxPTBYXvf5Ouxs/q 4jYrH X-Gm-Gg: AfdE7cnppbcuQlsbV/3nTgpHNnB4MRaZR6xq2V4fzVt3RDTDmWK2YXSxvMQzhHpETcH xLnUPAAhF7gRygYMsCqB5GXv3Q+jmnnxyoWGuFWQhEDo2ghMNFDCgwy2m7M+Q5+Slrv5IEOpM+X 0s4j00K9iOXqCIulAhz3cd/uYxVIUaseh45Dcra9lDZBekcVJpRD33zMyMyWgAMp7v6xjoiouVo 4e4xRBbllvsZpjwR59aV1X+kgV76thUcw8E/uJxpHnb/2sycIE18XA0huULJaTMFd9chlIsNa2m qiwLtvZ5Uwma9WMyECPKy9pIc1AAVvCIi6ltO7B1jOKRdzzEaodcY5BoqMi1CGSy9Bio2PXRX4z c7vt/bSmQimHZAa2Vy0KSfPFUcrb4HUvmuLuuAg+6SugtfXFRyM7bV+PdGG1txZMh04mM/DysX/ Rq76/GjdAwPuM7/0s3HvrIKmuBfOir31SONizrFOg1rfPgVLpPZiNH1yQRNGhl X-Received: by 2002:a17:90b:3dcd:b0:369:7421:75c3 with SMTP id 98e67ed59e1d1-37c9e9c9d5emr663318a91.16.1781644858644; Tue, 16 Jun 2026 14:20:58 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: deller@gmx.de, Warner Losh Subject: [PATCH v2 03/13] linux-user: Drop hiaddr out-of-range check in probe_guest_base Date: Tue, 16 Jun 2026 14:20:44 -0700 Message-ID: <20260616212055.334466-4-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260616212055.334466-1-richard.henderson@linaro.org> References: <20260616212055.334466-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102e; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x102e.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1781644909281158500 Content-Type: text/plain; charset="utf-8" Since dropping 32-bit host support, a guest address cannot overflow a host pointer. This means guest_hiaddr is unused for relocatable images, so don't pass guest_hiaddr as size. Reviewed-by: Warner Losh Reviewed-by: Helge Deller Signed-off-by: Richard Henderson Tested-by: Helge Deller reserved_va) { - error_report("%s: requires more than reserved virtual " - "address space (0x%" PRIx64 " > 0x%lx)", - image_name, (uint64_t)guest_hiaddr, reserved_va); - exit(EXIT_FAILURE); - } - } else { - if (guest_hiaddr !=3D (uintptr_t)guest_hiaddr) { - error_report("%s: requires more virtual address space " - "than the host can provide (0x%" PRIx64 ")", - image_name, (uint64_t)guest_hiaddr + 1); - exit(EXIT_FAILURE); - } + if (reserved_va && guest_hiaddr > reserved_va) { + error_report("%s: requires more than reserved virtual " + "address space (0x%" PRIx64 " > 0x%lx)", + image_name, (uint64_t)guest_hiaddr, reserved_va); + exit(EXIT_FAILURE); } =20 if (have_guest_base) { @@ -1373,11 +1364,8 @@ static void load_elf_image(const char *image_name, c= onst ImageSource *src, */ probe_guest_base(image_name, range.lo, range.hi); } else { - /* - * The binary is dynamic, but we still need to - * select guest_base. In this case we pass a size. - */ - probe_guest_base(image_name, 0, range.hi - range.lo); + /* The binary is dynamic; we still need to select guest_base. = */ + probe_guest_base(image_name, 0, 0); =20 /* * Avoid collision with the loader by providing a different diff --git a/linux-user/flatload.c b/linux-user/flatload.c index 4beb3ed1b9..8abdd2aef2 100644 --- a/linux-user/flatload.c +++ b/linux-user/flatload.c @@ -261,8 +261,7 @@ static int load_flat_file(struct linux_binprm * bprm, /* * Allocate the address space. */ - probe_guest_base(bprm->filename, 0, - text_len + data_len + extra + indx_len - 1); + probe_guest_base(bprm->filename, 0, 0); =20 /* * there are a couple of cases here, the separate code/data --=20 2.43.0 From nobody Sun Jul 26 13:30:21 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1781644905; cv=none; d=zohomail.com; s=zohoarc; b=K6rc+8IWYnTWXMJGY5RCEFrWkGlhciK1JIkYRXjIAZ2aNNBnC29j+P6QSDVo8lJLdB+mb24h6tgMMFEU301I+yJ6OGKcBn5eAnj8Vf0bqQn7bpqaNChXZCxXaup1d+Rt3ofngCJ4KZ2AwF9/65/X0YeaS1hPILU06SkQ3msGpSM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781644905; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=YN2uB8XdweVGWyv07bBqrl8d9cn1yplQr12lD04JdBM=; b=P+YpYt8/1+7Bog0m9QNVB9HFxsHsBIO4B8UZl5zXHPhsb1sucRMudj3F8fZgxT2ClgUg16w8+sLbgCwAOHpxP0IIrsognzO3VVVmWaQTG6zGazbvfNWHy5AuIHcUJjQdoqDswY4qImXJfWkr3G99eWaNPiuL5G5EbGlDXa7R1dw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781644905416803.4845901691906; Tue, 16 Jun 2026 14:21:45 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wZbDT-0005UM-Q0; Tue, 16 Jun 2026 17:21:03 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wZbDT-0005Tn-1A for qemu-devel@nongnu.org; Tue, 16 Jun 2026 17:21:03 -0400 Received: from mail-pj1-x1036.google.com ([2607:f8b0:4864:20::1036]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wZbDR-0007NW-0i for qemu-devel@nongnu.org; Tue, 16 Jun 2026 17:21:02 -0400 Received: by mail-pj1-x1036.google.com with SMTP id 98e67ed59e1d1-36bdb11bf8bso2695511a91.0 for ; Tue, 16 Jun 2026 14:21:00 -0700 (PDT) Received: from stoup.. (174-21-129-215.tukw.qwest.net. [174.21.129.215]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-37c521e76d1sm3820063a91.8.2026.06.16.14.20.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 16 Jun 2026 14:20:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781644860; x=1782249660; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=YN2uB8XdweVGWyv07bBqrl8d9cn1yplQr12lD04JdBM=; b=nLP+M/X/nPy0YfCvZvDe3XC7D6u5hisw90VRNKybksNYEQlMjZCaSGea8dJ583ghrT IDaUa/0BwlEfl2fNOqssCVnFTvl1tO9XsNg/gFsStMUFinaaiRwF1yGHpBwMZidYEeH3 e8r7bN/j7Rgd+bvNyC2LLKTLI/2EXNPIqczNgFSbl8vqFFXyf4i5DBulx9OanlqLN1dn K48lVCxqMpjBTL8wgKNEr8/T5ZxxdreEQdbYB1jYiZ32INxFM0VMFY7Wxw9vb6glrDWo jheqP4UTDIclyrIVuNymZX62tsFzs8wR7hhq21yhLcmC7fYGWBRez94Xu6bAqC0GTGQ5 k1Mg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781644860; x=1782249660; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=YN2uB8XdweVGWyv07bBqrl8d9cn1yplQr12lD04JdBM=; b=EF5qcWjAwILtKemyOFAuUkopmPGxEc/PEGDDqRRhvb3FxbFTrVVPogShfSHN2MfC2O tECsqONeCJnplpkXpNiYaKRGyLbJuywGbZ8niej6AKUhfv1dOGb5hEhHd1x7+7XSulK0 elDZoCaDykMuwE5poFAX3LHzsk9Sbc0w65/WhbNdoz+JJxhihpP20qnDKM813zfrDTZf R2bFizVhduoHtst7yCzuwQmOO81JshU6lyAUhGwDSUi/XUmetKdgfIGNcQBeBwb4lKp3 SlPWkx+D3e1VowA7fyeYaUQWFjtxTS41HuhGW4AwzyxdpQLgijYjAQQYP6xKspadoKYr u5ww== X-Gm-Message-State: AOJu0YzgFkaLQMYNA/v1lD8CfOkxuBb3dZOY2402bxCi8iGlnezTFN36 C0AAzCiPhC0sH4pbiXE8p1WXonBYkP4uZWkMgYsIyEjy9gy93p01RWn+U1dIBXMabXID7lH152l VuadN X-Gm-Gg: Acq92OEgd90ok8yqNoNV63zsEuQaov/S+bHm8UAy2+HU6hQRFix/X7thxy1KQvZ9R8F bJ1eBXrZKaRZax7xzu2nxxXW1rhvuMR+FfwjqnGLdhgd5jHgsDyjNVvhOyMp9yb5/AQ1c7PXJJc l+GFpFLGS7MDB4OG8T4KQNav1JQVabbY7UEGlKO0MxK8vEElp37iniHwqwQYjQNHvNivu32AGOt 1n5RkAfPRn0vuk/yp5iU4MgvC4lbEhhZHYyLUKwDGG3m2klD+QVJqaqtZ5cB1g0gpvKx4pRhl0m l8/mpJr0m7aTTv/11a+ayCgiPt/zIfjZgGUrMQeCO+4C7fYjJRwQQeDUbJy/OsHFjafYl6nmTIC Jz/Phux5OJtLd9yRR3lkmPimHBmRQUv0EwkbIiwx1+2UasazzCj9lI8R5oLCPM7dAlVZqeyGbHp 9FEn64aimX/AXPvriGaMijcZkM++pKw0HH0L+64gUBOuzsIY0htXwbkZC0RgrJ X-Received: by 2002:a17:90b:2e42:b0:369:7421:b36f with SMTP id 98e67ed59e1d1-37c936d5a17mr1086274a91.21.1781644859454; Tue, 16 Jun 2026 14:20:59 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: deller@gmx.de, Warner Losh , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PATCH v2 04/13] linux-user: Pass image_range to probe_guest_base Date: Tue, 16 Jun 2026 14:20:45 -0700 Message-ID: <20260616212055.334466-5-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260616212055.334466-1-richard.henderson@linaro.org> References: <20260616212055.334466-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1036; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1036.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1781644907489158500 Pass a PGBRange structure instead of separate guest_loaddr and guest_hiaddr parameters. This allows NULL to indicate that the image is relocatable, so that image_range->lo =3D=3D 0 is a valid fixed setting. Resolves: https://gitlab.com/qemu-project/qemu/-/work_items/1890 Reviewed-by: Warner Losh Reviewed-by: Helge Deller Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Richard Henderson Tested-by: Helge Deller lo, i->hi - i->lo + 1, ...) * * to succeed. */ -void probe_guest_base(const char *image_name, - abi_ulong loaddr, abi_ulong hiaddr); +void probe_guest_base(const char *image_name, const PGBRange *image_range); =20 /* syscall.c */ int host_to_target_waitstatus(int status); diff --git a/linux-user/elfload.c b/linux-user/elfload.c index 960847fda7..8545ac9695 100644 --- a/linux-user/elfload.c +++ b/linux-user/elfload.c @@ -847,14 +847,13 @@ static bool pgb_try_mmap_set(const PGBAddrs *ga, uint= ptr_t base, uintptr_t brk) /** * pgb_addr_set: * @ga: output set of guest addrs - * @guest_loaddr: guest image low address - * @guest_hiaddr: guest image high address + * @image_range: fixed guest image addresses * @identity: create for identity mapping * * Fill in @ga with the image, COMMPAGE and NULL page. */ -static bool pgb_addr_set(PGBAddrs *ga, abi_ulong guest_loaddr, - abi_ulong guest_hiaddr, bool try_identity) +static bool pgb_addr_set(PGBAddrs *ga, const PGBRange *image_range, + bool try_identity) { int n; =20 @@ -866,7 +865,7 @@ static bool pgb_addr_set(PGBAddrs *ga, abi_ulong guest_= loaddr, if (LO_COMMPAGE !=3D -1 && LO_COMMPAGE < mmap_min_addr) { return false; } - if (guest_loaddr !=3D 0 && guest_loaddr < mmap_min_addr) { + if (image_range && image_range->lo < mmap_min_addr) { return false; } } @@ -892,10 +891,8 @@ static bool pgb_addr_set(PGBAddrs *ga, abi_ulong guest= _loaddr, } =20 /* Add the guest image for ET_EXEC. */ - if (guest_loaddr) { - ga->bounds[n].lo =3D guest_loaddr; - ga->bounds[n].hi =3D guest_hiaddr; - n++; + if (image_range) { + ga->bounds[n++] =3D *image_range; } } =20 @@ -928,8 +925,8 @@ static void pgb_fail_in_use(const char *image_name) exit(EXIT_FAILURE); } =20 -static void pgb_fixed(const char *image_name, uintptr_t guest_loaddr, - uintptr_t guest_hiaddr, uintptr_t align) +static void pgb_fixed(const char *image_name, const PGBRange *image_range, + uintptr_t align) { PGBAddrs ga; uintptr_t brk =3D (uintptr_t)sbrk(0); @@ -941,7 +938,7 @@ static void pgb_fixed(const char *image_name, uintptr_t= guest_loaddr, exit(EXIT_FAILURE); } =20 - if (!pgb_addr_set(&ga, guest_loaddr, guest_hiaddr, !guest_base) + if (!pgb_addr_set(&ga, image_range, !guest_base) || !pgb_try_mmap_set(&ga, guest_base, brk)) { pgb_fail_in_use(image_name); } @@ -1026,15 +1023,15 @@ static uintptr_t pgb_find_itree(const PGBAddrs *ga,= IntervalTreeRoot *root, return pgb_try_mmap_set(ga, base, brk) ? base : -1; } =20 -static void pgb_dynamic(const char *image_name, uintptr_t guest_loaddr, - uintptr_t guest_hiaddr, uintptr_t align) +static void pgb_dynamic(const char *image_name, const PGBRange *image_rang= e, + uintptr_t align) { IntervalTreeRoot *root; uintptr_t brk, ret; PGBAddrs ga; =20 /* Try the identity map first. */ - if (pgb_addr_set(&ga, guest_loaddr, guest_hiaddr, true)) { + if (pgb_addr_set(&ga, image_range, true)) { brk =3D (uintptr_t)sbrk(0); if (pgb_try_mmap_set(&ga, 0, brk)) { guest_base =3D 0; @@ -1046,7 +1043,7 @@ static void pgb_dynamic(const char *image_name, uintp= tr_t guest_loaddr, * Rebuild the address set for non-identity map. * This differs in the mapping of the guest NULL page. */ - pgb_addr_set(&ga, guest_loaddr, guest_hiaddr, false); + pgb_addr_set(&ga, image_range, false); =20 root =3D read_self_maps(); =20 @@ -1085,24 +1082,23 @@ static void pgb_dynamic(const char *image_name, uin= tptr_t guest_loaddr, guest_base =3D ret; } =20 -void probe_guest_base(const char *image_name, abi_ulong guest_loaddr, - abi_ulong guest_hiaddr) +void probe_guest_base(const char *image_name, const PGBRange *image_range) { /* In order to use host shmat, we must be able to honor SHMLBA. */ uintptr_t align =3D MAX(SHMLBA, TARGET_PAGE_SIZE); =20 /* Sanity check the guest binary. */ - if (reserved_va && guest_hiaddr > reserved_va) { + if (reserved_va && image_range && image_range->hi > reserved_va) { error_report("%s: requires more than reserved virtual " - "address space (0x%" PRIx64 " > 0x%lx)", - image_name, (uint64_t)guest_hiaddr, reserved_va); + "address space (0x%" VADDR_PRIx " > 0x%lx)", + image_name, image_range->hi, reserved_va); exit(EXIT_FAILURE); } =20 if (have_guest_base) { - pgb_fixed(image_name, guest_loaddr, guest_hiaddr, align); + pgb_fixed(image_name, image_range, align); } else { - pgb_dynamic(image_name, guest_loaddr, guest_hiaddr, align); + pgb_dynamic(image_name, image_range, align); } =20 /* Reserve and initialize the commpage. */ @@ -1362,10 +1358,10 @@ static void load_elf_image(const char *image_name, = const ImageSource *src, * Make sure that the low address does not conflict with * MMAP_MIN_ADDR or the QEMU application itself. */ - probe_guest_base(image_name, range.lo, range.hi); + probe_guest_base(image_name, &range); } else { /* The binary is dynamic; we still need to select guest_base. = */ - probe_guest_base(image_name, 0, 0); + probe_guest_base(image_name, NULL); =20 /* * Avoid collision with the loader by providing a different diff --git a/linux-user/flatload.c b/linux-user/flatload.c index 8abdd2aef2..45d69040c6 100644 --- a/linux-user/flatload.c +++ b/linux-user/flatload.c @@ -261,7 +261,7 @@ static int load_flat_file(struct linux_binprm * bprm, /* * Allocate the address space. */ - probe_guest_base(bprm->filename, 0, 0); + probe_guest_base(bprm->filename, NULL); =20 /* * there are a couple of cases here, the separate code/data --=20 2.43.0 From nobody Sun Jul 26 13:30:21 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1781644960; cv=none; d=zohomail.com; s=zohoarc; b=HZvPfk1pRvJvGkwAHkwVbeUVeZzKhBSlOo8YpvAaOenQo6tq+cdNN0Zbl7TgewZHL2LgQ1B/HZCcz6GFppE1moykr60VAkXb+B1BeQRYD6QlGZC/EA/+4UoTX3DKXmbDS5zIJKjzs97wM2jHEw9+c10zOq3U7ByafyAOSLFdIEc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781644960; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=hMembm/8oQ4J8GII9mrD41iXnXEtNJ+PeDf000ugFAw=; b=Z2dJcwmyHC5hYa8Pex/ibJAlpyhqdwxlh5CkhOK6dQaNExYLvJO8ZCcOmAh+KfN4UQf6pGRnexVqlHVWvzn2yY6X2x0f0t3GoX/R453IyWuVMsxzuHxIzZKW1TkC83eNhvU8WLDwT/E+onBqt7cmrKw4dK2hrVEJElMS09d6774= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 178164496062959.76451814604775; Tue, 16 Jun 2026 14:22:40 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wZbDW-0005Vd-7M; Tue, 16 Jun 2026 17:21:06 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wZbDU-0005UQ-2n for qemu-devel@nongnu.org; Tue, 16 Jun 2026 17:21:04 -0400 Received: from mail-pj1-x1033.google.com ([2607:f8b0:4864:20::1033]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wZbDS-0007Nw-1F for qemu-devel@nongnu.org; Tue, 16 Jun 2026 17:21:03 -0400 Received: by mail-pj1-x1033.google.com with SMTP id 98e67ed59e1d1-36dd65b95f2so263361a91.0 for ; Tue, 16 Jun 2026 14:21:01 -0700 (PDT) Received: from stoup.. (174-21-129-215.tukw.qwest.net. [174.21.129.215]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-37c521e76d1sm3820063a91.8.2026.06.16.14.20.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 16 Jun 2026 14:20:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781644861; x=1782249661; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=hMembm/8oQ4J8GII9mrD41iXnXEtNJ+PeDf000ugFAw=; b=NMhbdPDbxGFO3vzqjob2twaE2PdVkXQiUOP/rQKCbIVVjUAY0AD7H3FwJ1bkJHZkTY 668G6fHZtAfIbZjPgwWvgZ9jcs17m71xs7upxjd3s+kT+ZssLq5s2fFzlcru0sXTcA9T uWz04cZc7GFiQ3x1LwTdJOKdfOIPWjoccsi7gaSrud/tNi5aPxMW0yEWOnq5/g3Lzenx +cnC/AHZKfG7VrgIjmGyLtnzj8NVEkB970v3RpzD9TLFhaEdS3oLPf7vbT1afEhfuAJV FeLqmKQ0pe1FZPd8OViAMWNG/8QssGuf5/bmXNB3SvGMb41MSdH677r/z+XqmxmvDu6x aGzg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781644861; x=1782249661; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=hMembm/8oQ4J8GII9mrD41iXnXEtNJ+PeDf000ugFAw=; b=n4VSsrF7Epx+eajhL4qQHG9pY7PwlaMwAfoQriTzboSDZvnVtf2/cJhPqEALnkRixp JQS1b4kZ3u7kFYCgaP3h1cMVQkRpm061VyM0zNKYOnkJVp+b48COFFF9oZuMfvByjH9J 4/t86FVrwnEkNbzcwbBoZ86g//fMDiXD8VWeGcrJu6nm1fNuxoUdPXRbe84Vz3UIJVKT /Mi9kdzZVPGqsERznjNolbYY9UoeZhoOIEB8rf91OjJSVYJsAUDXWNyCt9Qd6Ds5YnGA DmsUzxU4Wm1uMl0GYo8mB2uvlDnRFQcpOtPnp7B1YVI9xAICPL31CGKAgelbSbpepGBj o0qw== X-Gm-Message-State: AOJu0Yy7DXsTVDm49JEmRorLUdus3eOBxlVV4V4KmonC7CPzMENfeGQ+ nh9sZ/bAgnAbMPfpydQ/RqMWuJ2dKxKQVKnos3TiOHrdjpkx1Vb/QGXe8n9R6d/YfiuQ/l7tX8F 8R1V7 X-Gm-Gg: AfdE7cm3jV1riZHoocSSeJdqiYONuNDUMc6Y94gGkKbw+uMDB7+eNC0F6ZkjC6J0TgB YfLqguSkQ8glYV4LuL2NMiWE8TYjCX+K3+U3NiMB4wDJVR1jAff1Opd84oNToVwLVXpZAsj/CHV JFC4JEbPkLyI8MOcGrcWpcUiHjKBzsdTDcQrawvtnqWkoNN06LxnehIdu6Vg+PeER36N1Mm5gm6 S1fQ5JrwIetlkJx0CLUKDbbAGI3WuLyNmjWJqO32bgxhKNAu+6CYNNarL7PVUUXqtvNbY2gL17p 8Za7kLroBIYwDBPJxBzT4lzY2kbvF/0a8FetruzxlC8HsqpMxqcLb/JFuwaJnx9fkY7hYCDFkdS E6QyvAsMJy0b5oMEPyUN8Xzr/aZw0GThjf2lQtukg/Y0XKJ4kaCch6VNmKAwg/5F22xZjrJ76vg oRaHHcVrizHz9ZltkWILyHpRsL6OfTDXdJLSR1nC91pJ8aF+NXspxbeW/GE5zc/f8BVUf3aTQ= X-Received: by 2002:a17:90b:4d84:b0:35f:b9f1:fded with SMTP id 98e67ed59e1d1-37ca7299f23mr233355a91.12.1781644860513; Tue, 16 Jun 2026 14:21:00 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: deller@gmx.de, Warner Losh , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PATCH v2 05/13] linux-user: Use PGBRange for commpage Date: Tue, 16 Jun 2026 14:20:46 -0700 Message-ID: <20260616212055.334466-6-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260616212055.334466-1-richard.henderson@linaro.org> References: <20260616212055.334466-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1033; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1033.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1781644961678158501 This simplifies check for no commpage to a NULL pointer check, rather than reserved values for LO_COMMPAGE and HI_COMMPAGE. Unify {LO,HI}_COMMPAGE into a single COMMPAGE define. Acked-by: Warner Losh Reviewed-by: Helge Deller Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Richard Henderson Tested-by: Helge Deller lo < mmap_min_addr) { return false; } if (image_range && image_range->lo < mmap_min_addr) { @@ -877,14 +869,10 @@ static bool pgb_addr_set(PGBAddrs *ga, const PGBRange= *image_range, ga->bounds[n].lo =3D try_identity ? mmap_min_addr : 0; ga->bounds[n].hi =3D reserved_va; n++; - /* LO_COMMPAGE and NULL handled by reserving from 0. */ + /* Low COMMPAGE and NULL handled by reserving from 0. */ } else { - /* Add any LO_COMMPAGE or NULL page. */ - if (LO_COMMPAGE !=3D -1) { - ga->bounds[n].lo =3D 0; - ga->bounds[n].hi =3D LO_COMMPAGE + TARGET_PAGE_SIZE - 1; - n++; - } else if (!try_identity) { + /* Add any low COMMPAGE or NULL page. */ + if (!try_identity || (commpage_range && commpage_range->lo =3D=3D = 0)) { ga->bounds[n].lo =3D 0; ga->bounds[n].hi =3D TARGET_PAGE_SIZE - 1; n++; @@ -896,23 +884,13 @@ static bool pgb_addr_set(PGBAddrs *ga, const PGBRange= *image_range, } } =20 - /* - * Temporarily disable - * "comparison is always false due to limited range of data type" - * due to comparison between unsigned and (possible) 0. - */ -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wtype-limits" - - /* Add any HI_COMMPAGE not covered by reserved_va. */ - if (reserved_va < HI_COMMPAGE) { - ga->bounds[n].lo =3D HI_COMMPAGE & qemu_real_host_page_mask(); - ga->bounds[n].hi =3D HI_COMMPAGE + TARGET_PAGE_SIZE - 1; + /* Add any high COMMPAGE not covered by reserved_va. */ + if (commpage_range && reserved_va < commpage_range->hi) { + ga->bounds[n].lo =3D commpage_range->lo & qemu_real_host_page_mask= (); + ga->bounds[n].hi =3D commpage_range->hi; n++; } =20 -#pragma GCC diagnostic pop - ga->nbounds =3D n; return true; } @@ -926,7 +904,7 @@ static void pgb_fail_in_use(const char *image_name) } =20 static void pgb_fixed(const char *image_name, const PGBRange *image_range, - uintptr_t align) + const PGBRange *commpage_range, uintptr_t align) { PGBAddrs ga; uintptr_t brk =3D (uintptr_t)sbrk(0); @@ -938,7 +916,7 @@ static void pgb_fixed(const char *image_name, const PGB= Range *image_range, exit(EXIT_FAILURE); } =20 - if (!pgb_addr_set(&ga, image_range, !guest_base) + if (!pgb_addr_set(&ga, image_range, commpage_range, !guest_base) || !pgb_try_mmap_set(&ga, guest_base, brk)) { pgb_fail_in_use(image_name); } @@ -1024,14 +1002,14 @@ static uintptr_t pgb_find_itree(const PGBAddrs *ga,= IntervalTreeRoot *root, } =20 static void pgb_dynamic(const char *image_name, const PGBRange *image_rang= e, - uintptr_t align) + const PGBRange *commpage_range, uintptr_t align) { IntervalTreeRoot *root; uintptr_t brk, ret; PGBAddrs ga; =20 /* Try the identity map first. */ - if (pgb_addr_set(&ga, image_range, true)) { + if (pgb_addr_set(&ga, image_range, commpage_range, true)) { brk =3D (uintptr_t)sbrk(0); if (pgb_try_mmap_set(&ga, 0, brk)) { guest_base =3D 0; @@ -1043,7 +1021,7 @@ static void pgb_dynamic(const char *image_name, const= PGBRange *image_range, * Rebuild the address set for non-identity map. * This differs in the mapping of the guest NULL page. */ - pgb_addr_set(&ga, image_range, false); + pgb_addr_set(&ga, image_range, commpage_range, false); =20 root =3D read_self_maps(); =20 @@ -1084,6 +1062,14 @@ static void pgb_dynamic(const char *image_name, cons= t PGBRange *image_range, =20 void probe_guest_base(const char *image_name, const PGBRange *image_range) { +#ifdef COMMPAGE + const PGBRange * const commpage_range =3D &(PGBRange){ + COMMPAGE, COMMPAGE + TARGET_PAGE_SIZE - 1 + }; +#else + const PGBRange * const commpage_range =3D NULL; +#endif + /* In order to use host shmat, we must be able to honor SHMLBA. */ uintptr_t align =3D MAX(SHMLBA, TARGET_PAGE_SIZE); =20 @@ -1096,9 +1082,9 @@ void probe_guest_base(const char *image_name, const P= GBRange *image_range) } =20 if (have_guest_base) { - pgb_fixed(image_name, image_range, align); + pgb_fixed(image_name, image_range, commpage_range, align); } else { - pgb_dynamic(image_name, image_range, align); + pgb_dynamic(image_name, image_range, commpage_range, align); } =20 /* Reserve and initialize the commpage. */ diff --git a/linux-user/hppa/elfload.c b/linux-user/hppa/elfload.c index 3354e1b840..3bfe93ada8 100644 --- a/linux-user/hppa/elfload.c +++ b/linux-user/hppa/elfload.c @@ -35,7 +35,7 @@ bool init_guest_commpage(void) if (!reserved_va) { void *want, *addr; =20 - want =3D g2h_untagged(LO_COMMPAGE); + want =3D g2h_untagged(COMMPAGE); addr =3D mmap(want, TARGET_PAGE_SIZE, PROT_NONE, MAP_ANONYMOUS | MAP_PRIVATE | MAP_FIXED_NOREPLACE, -1,= 0); if (addr =3D=3D MAP_FAILED) { @@ -54,7 +54,7 @@ bool init_guest_commpage(void) * and implement syscalls. Here, simply mark the page executable. * Special case the entry points during translation (see do_page_zero). */ - page_set_flags(LO_COMMPAGE, LO_COMMPAGE | ~TARGET_PAGE_MASK, + page_set_flags(COMMPAGE, COMMPAGE | ~TARGET_PAGE_MASK, PAGE_EXEC | PAGE_VALID, PAGE_VALID); return true; } --=20 2.43.0 From nobody Sun Jul 26 13:30:21 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1781644961; cv=none; d=zohomail.com; s=zohoarc; b=WRRzc9uN+yeOzE6DKrWvUyYPKE45hOjHx2NA11hJJDJmZ5Lrkhhd0UrKEQE9LFzbPxIXkzH5XzFhR6UoHsmfYcWCB2SsOtZ3rDbKJWcRaZwhs/Hj6+ks85ZUXg343Pf/3lePdXSCGo/2ddeIY4BStBwTuy55k2xtxGCHHgDfLGI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781644961; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=u1wZQ/Qn1GzjuZrxpS7V4I3MFKT1CnvQE5JHtvEeR4Q=; b=i3OBVd8jQdNcC+K+mYOoVCkn9ybKB+jN3FfqmgMfIMbiKkGNj9qpMACwzGEGsE738PzBw3991yrPlBxP3B2JUD+XUu8X08RbdG1pSt21ieXJfZeXQr9QolSm7Nm2k6vf1894B06EqKYG+IcMrMtHCMcKrPjfhl7HduYxGfbBH40= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781644961747683.3254458457183; Tue, 16 Jun 2026 14:22:41 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wZbDW-0005W8-Ub; Tue, 16 Jun 2026 17:21:06 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wZbDV-0005VR-Hw for qemu-devel@nongnu.org; Tue, 16 Jun 2026 17:21:05 -0400 Received: from mail-pj1-x1034.google.com ([2607:f8b0:4864:20::1034]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wZbDT-0007ON-Lk for qemu-devel@nongnu.org; Tue, 16 Jun 2026 17:21:05 -0400 Received: by mail-pj1-x1034.google.com with SMTP id 98e67ed59e1d1-36bcf3d2565so3683450a91.3 for ; Tue, 16 Jun 2026 14:21:03 -0700 (PDT) Received: from stoup.. (174-21-129-215.tukw.qwest.net. [174.21.129.215]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-37c521e76d1sm3820063a91.8.2026.06.16.14.21.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 16 Jun 2026 14:21:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781644862; x=1782249662; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=u1wZQ/Qn1GzjuZrxpS7V4I3MFKT1CnvQE5JHtvEeR4Q=; b=X4280poSUQ2KskU2y5PPMAn5n+OQNBmHb5+VlsKLbvzSjeSpdJ9+b3fIh9KMyoHo4N 9FxCb1IQOYGXNEP+hDQ7XPRlXptkJ1dLV4PwijTAJPV58++1brDaaAVagcZAVz0j/bum 1uaaEchyVtyrjq0j1i1xsVZt/4ICRLG68Y5u4ZFbjS4DCZYKrNkKzAdhpC9aptzfZdY7 XqdYmkR2n9DhnP8Fks//7f/sN9JvbKmOaN90pXjsfM9VY34soIs+f3nIqdgQLI3w5LFB BKC+tyWbJ9auB3q3HgrQBcaXDXjZfuHd/Nu27jRFRy5G8BA3RilItK50LrjEKzfvo0D0 QVRQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781644862; x=1782249662; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=u1wZQ/Qn1GzjuZrxpS7V4I3MFKT1CnvQE5JHtvEeR4Q=; b=l4V8JUt5IMqiaQV/HbrxvSBIxx+yQHqGLN8ZOWURhcIdJ1j1E8ZWLcRE+VreodWMUI OnloyPGkW1UNGcdp4gD0eG6rWi5C3rKFX2TZSKh6o/wPFL7NbM2Qwv/OCK516+17pH8M gowMrh0dL/FCRtDAs+VnRgU65tnM+eFm1vgk7F/2REurzCykpG9r/w3fVrJRYG/KD7BQ uTgf3YPKIgIqf0ZeEJjmQZyOEqzXWhiZpyWoMwPMWPOCnWq6Iiz7tDZdHpjr8vp5SNyS 9Ekq75hKrYFuUSIdogqSgaRdyttyHCiZ9LP09ZDPrmQwfHBpmd6SGDoXxS1ZLJtbC/ma ba9Q== X-Gm-Message-State: AOJu0YynFtoPY7KQmYkUJC4j+FdeL42RZtJmbLQRuLUtsDiSTS3k4BLZ cl6hjmbBYU3l7uvEWoC61iP0PdaYm2/eDxj82/euMLkDBAXffNuFbCXCE2wqqMtmQO9hH6Nb2LN 6zXPW X-Gm-Gg: Acq92OH3gCJswYXsotOxX6FqldI3KIjbyxosjm2a3IkOX2gpsYeTqaXiNUIfOrWP+EA 2Nrj1V5c5FPDG7Q//rewbYGI2Za3N3IGADxFJQ4vv/Oajumj6JHmKdRbBZlg9nI+cXtr8xLfGTi OxoF27bf/ki/IzGzCTbG3D9TGgRs30nmWUgNgB27XsWzl/yqLwN464IK0u9rWzTEXXmZj9RaOOh hEDyall7V4EHoNpKBP9jdE+6CKYDew8HQuW56+zONET46nYSk8o9XC3GhudFhxAjLDiTqfm15oC wiE/xnHBd0VGM1A6GOfw+OpuNTODIV+PFTI6fg6W9h+ofoPmXgAgFkrshPNHAQ2mS5p2nhlXUK2 M/zx8D3x3HrSZdlCjWejkZ0GCNYCU/mX7z5KUUUyjTht5QjdHhD+dx/RegB5wip0JsIatpGz+Uz q2C2GUPy0MWW4nWcLlxRzAov3pVoI4SriEWLrWTSgbajucwkBrwtcJWRGgjzrr X-Received: by 2002:a17:90b:3f08:b0:367:bf0c:54e9 with SMTP id 98e67ed59e1d1-37c9370c659mr1077296a91.21.1781644862237; Tue, 16 Jun 2026 14:21:02 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: deller@gmx.de, Warner Losh Subject: [PATCH v2 06/13] common-user: Move mmap_min_addr from linux-user Date: Tue, 16 Jun 2026 14:20:47 -0700 Message-ID: <20260616212055.334466-7-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260616212055.334466-1-richard.henderson@linaro.org> References: <20260616212055.334466-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1034; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1034.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1781644963634158500 Content-Type: text/plain; charset="utf-8" Introduce user/mmap-min-addr.h. Initialize the variable from a constructor instead of main. Reviewed-by: Warner Losh Signed-off-by: Richard Henderson Tested-by: Helge Deller (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781644916088548.4768206392379; Tue, 16 Jun 2026 14:21:56 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wZbDa-0005Wm-4P; Tue, 16 Jun 2026 17:21:10 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wZbDY-0005WN-Do for qemu-devel@nongnu.org; Tue, 16 Jun 2026 17:21:08 -0400 Received: from mail-pj1-x102c.google.com ([2607:f8b0:4864:20::102c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wZbDW-0007Pq-Rx for qemu-devel@nongnu.org; Tue, 16 Jun 2026 17:21:08 -0400 Received: by mail-pj1-x102c.google.com with SMTP id 98e67ed59e1d1-36b8e1760ccso3142120a91.0 for ; Tue, 16 Jun 2026 14:21:06 -0700 (PDT) Received: from stoup.. (174-21-129-215.tukw.qwest.net. [174.21.129.215]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-37c521e76d1sm3820063a91.8.2026.06.16.14.21.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 16 Jun 2026 14:21:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781644865; x=1782249665; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=JrKBw+gE75gvuFuGfBC5I7M54VqaLBUhSrdc/f0IVLU=; b=MjbGKkj0s4oWUF19tg9xf+HyXwQEmD3kCxTn4utBqScvHlg+mkG/N75N+BwowdJ6bX 51nVXaCHV8vQro5p6kPiaPqYI4J5XXtP+m7mnrlN+8q4edMTXdLxWhIlGeiba8v+uXkx c2YpKi58Gyqd9zfMqA7Wv7OGeiAF/i4PjAAco6UT/aQD4NN9LV6u3T1EUEWkFuym8Oxh qr8nmBPooV57ZZN/CFrlF5dbKqpKd4AtR43VJC1BaPsuKR5FzrIzHleMlZWJywgk2Oae 6/NcYoS+KRqej5dF36r2AsBc4055CLbVFqEP3qAqK/braQg5uokAtj5YrEewwjHcPjBF t+yA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781644865; x=1782249665; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=JrKBw+gE75gvuFuGfBC5I7M54VqaLBUhSrdc/f0IVLU=; b=n2LU4qXsM4fMb222r0C8aMHEn1cCK3GixqkBag75nuC2HfXM7nMf2UGtMcAppjy43L HPf95WhDOBnIBLME+57jWl6ggBR6BaqQx+++5UY88oQq1sISEE1ld+U+wTDOCsjrazu8 wLBTgij3BkEgaMHDXZNEZiD2SlLqSkkHDyUdvwtnKnrmDJ9SfIXhJZ9AfSdTgRiAb15M ZrlvB2bBet0CjeYaUkc9iDqkGwiTnCV5KIFuberaJpESJwpXo0r1gfpdTcIqPZ3wZwRb 6fNkCwVfGAQL2mjEuw3qhV/xjyp4DxipZxMYvRiQJxPdCbSKFtzG23gRZ3S3CZHQ3EG7 nS9A== X-Gm-Message-State: AOJu0YzvD+iTU7g6OlnQGuHkAAaCl70/C6XLUf7Wl66fwoGT+OyllcPv pQK5HFYK7mfpzdw8U/OU9OsyEW8qdQ8TAYV86vtLAltTMfPU9ttL+QIys+7GFTdxZ3x5s/O00lD stPJe X-Gm-Gg: Acq92OEKVx8p4vWUo4RLxzQQhORKPnJ8VT37bKV3SZrw4N4saMAwFuY2yvuvA+Bmg3A OMrFXde4PL14pr4trJtiGE3b6Ehctka2FjtF94hFXyd+ddJH9Gsw2pdxva4Lz9ARYW0H4fjp0Sj zOwy46r7wGQg7k0Wzdxh1iI/2AuKDvcBcZxCwZredqOa2nRCwAOfPG9f321Yw5XcoNcq0k8UJlO 7SVY1NkdXfcy0pBt5yY02tkROfomUxKqb0Jg94sgdiSVJM7fXXmawsLmil7za//boOMP0UiYOGA 99tEvFwtZtoobj13LWUxdJrJfL5Me9WvkSI1Q/FAspj8+2+bIrRDnbRv08Hj/cfwAkVH/wTlG29 a7DawzuTc7tLFOdz1Dof8Cl/KD43DpNBAoN1+bwxdOdIDbjhpqyFI+iiHwSXxRW419kglfdII30 QhABzHkHAIQjppnCMWMGWAujuR5aggDhW+ZdYcRkuvrI2mhmojgOgffzl+VIx7 X-Received: by 2002:a17:90b:5890:b0:36b:71e6:3de3 with SMTP id 98e67ed59e1d1-37c92ea967emr1060913a91.3.1781644865361; Tue, 16 Jun 2026 14:21:05 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: deller@gmx.de, Warner Losh Subject: [PATCH v2 07/13] common-user: Initialize mmap_min_addr for FreeBSD Date: Tue, 16 Jun 2026 14:20:48 -0700 Message-ID: <20260616212055.334466-8-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260616212055.334466-1-richard.henderson@linaro.org> References: <20260616212055.334466-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102c; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x102c.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1781644917321158500 Content-Type: text/plain; charset="utf-8" Use sysctl to fetch the vm layout of the current process. Reviewed-by: Warner Losh Signed-off-by: Richard Henderson Reviewed-by: Helge Deller +#include +#endif =20 uintptr_t mmap_min_addr; =20 @@ -31,6 +35,15 @@ static void __attribute__((constructor)) init(void) fclose(fp); } mmap_min_addr =3D min_addr; +#elif defined(__FreeBSD__) + int mib[] =3D { CTL_KERN, KERN_PROC, KERN_PROC_VM_LAYOUT, getpid() }; + struct kinfo_vm_layout info; + size_t info_len =3D sizeof(info); + + mmap_min_addr =3D + (sysctl(mib, ARRAY_SIZE(mib), &info, &info_len, NULL, 0) < 0 + ? qemu_real_host_page_size() + : info.kvm_min_user_addr); #else # error #endif --=20 2.43.0 From nobody Sun Jul 26 13:30:21 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1781644924; cv=none; d=zohomail.com; s=zohoarc; b=CMJCVPov8eoCphnc0ER/hFs/A4wnMHC7ZaPYt5GWlrywIMHIhz0i77ogXh/FUoKEKy6tuFluO99ghsD/cKq5wAk5fRaiik/R82ovAcqwPGirCD6JSOjYEaxbkIsUn9i+lJwslbZ8lVtQ3N4btNYf/ePNwxr1YuyDiLG04Lys/Gc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781644924; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=DPRWJz2Yd8nPR/2Htwne+NUNAYYATFtXJ3ypu4WmcII=; b=Jhl/QNVkNw7bEQbRdXPl7mWLk0cLHn0ZVTPL9wufpDB0VCUrzpS9reCu1AfH0lvcMINI5+c9nIahpcUaswnNZKVTPS21MrUynBLI4K7QsIVpTGy7FFS6xJ4+hCkFRwAQhKy7Aw0UL016UK8ljDz0+s8LLDrSRTLp8s26+uNNfgY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781644924758528.7976404519084; Tue, 16 Jun 2026 14:22:04 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wZbDc-0005ZK-9Y; Tue, 16 Jun 2026 17:21:12 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wZbDa-0005Ws-Q9 for qemu-devel@nongnu.org; Tue, 16 Jun 2026 17:21:10 -0400 Received: from mail-pj1-x102b.google.com ([2607:f8b0:4864:20::102b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wZbDZ-0007Qf-Ej for qemu-devel@nongnu.org; Tue, 16 Jun 2026 17:21:10 -0400 Received: by mail-pj1-x102b.google.com with SMTP id 98e67ed59e1d1-36babe2c4bdso3119243a91.1 for ; Tue, 16 Jun 2026 14:21:09 -0700 (PDT) Received: from stoup.. (174-21-129-215.tukw.qwest.net. [174.21.129.215]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-37c521e76d1sm3820063a91.8.2026.06.16.14.21.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 16 Jun 2026 14:21:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781644868; x=1782249668; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=DPRWJz2Yd8nPR/2Htwne+NUNAYYATFtXJ3ypu4WmcII=; b=ioPf/sgyvKPt2hcoPBtBmdCNj5qPkyvSUPn2GaGGSpz/XyjoA7Pr7SMaJoypnJY7DN mcO7GAd890Nnti/ceQPQbPhCA8U6CrbHSzw9SCiogpyIIjPapEhhgNteRxaf4IVmItyj kXqnLbTbg66kUwS32mbIVogPaYX5cY5/WlmwUwZSmm4nXtrMwsmFc0XZ0gItmnKI5Axm IK3SMI4COTQ8ejSIEcgh7psdNeGgyTXTyb/hjJSy3hU9E9EjUIXCtiL0PVEh12A9kBUv Igiv89JpJHXjLtlpVP7YuEFZVnBXqkv3t4nGOS7cOFg8y7cbgebfKioVu82zV0KKKbC5 msfA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781644868; x=1782249668; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=DPRWJz2Yd8nPR/2Htwne+NUNAYYATFtXJ3ypu4WmcII=; b=kZs3OHSvFhdcR6er0yWUN9K3EVfrkX8JgiuCV5Guh6EIdXxpxRnvKrrcNCuv8dM+ag hG2s2jRUXjWnAUmx2ZKSGgmBlqte7aOUtrOrFG51LaTSpxy/So5wmcRhfeEWga796BdT hxTbcBW8bVQ2AbSHE3OMIALcbN2/uVEb7HHksnUftzz3C/YdlyDuiTdViLVigQZOu0W9 pv+reO0LwNDbbBn43K8Lv7+pLPP21sOMLVWZmw0H2m1n4/D9sQV//7MtFrgPz1fHiXce J/l5xsES5UeHw01w6aErTdwI5jmSDK7jikcGeg5pAm8uuwW+G8yCfi93d8wSi8Mt1vQq dJxA== X-Gm-Message-State: AOJu0YyWjARIHH8ecMXgVDVyNbKkyS46nSco9RF75Ok1ScmSJum0pF37 dsrU7ow+E6kzKMa4kcz781fImn0SmSVUpK0Ypj7wB6fYZn/IKI7+inzjCFZ7I/kwqgCA/7wOOgd gb0BR X-Gm-Gg: Acq92OGi1TtLWrxn/mzaFQ66rS6ilURrSQyaq/zI3mflkKb2CLAODHhpkJDtTRX+KtG stBB1XFn+yyVrK04XfFdUK7vOHK67X/zUx7TkJFoVRmc36siprpmUwpCq6yXdZ72mjrFXbvFwAl 3obiUh3r4+GGJb8NwXhW4C0Z/IQE+v+5fe2B6PWPVkp/7Znn6RugxHTDWYTd0kEVT1fLFFk30WN vMGD6+ea2dITTwdpnmYMqYbcqAG1++En05IY5IEHbR38eK/smqCryCC9npuctqc1YgmR7oyvsWN 5zl9YOwFAPy834WoI8u3JnDkdfCsc71gJ54d+Ay6tAg0/bwljQjGSllK4XOK42w9uACUBGANdi4 wefq5JJ4qMJrA60G/0Xa2EGUeSuPU7NYZfG3MPIjOov5XbuU/5IoYvB4y8jCcj7ZkBo0hcrhxMW eH39lo+TiESqv2dZw9TBMkhQOjoHy8s0yLxxjCMkV8/01kArd6Fv6gvY8kDwKW X-Received: by 2002:a17:90b:3a05:b0:36d:649a:39f7 with SMTP id 98e67ed59e1d1-37c936dc13bmr1011337a91.22.1781644868055; Tue, 16 Jun 2026 14:21:08 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: deller@gmx.de, Warner Losh , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PATCH v2 08/13] include/user/guest-host: Include missing cpu.h Date: Tue, 16 Jun 2026 14:20:49 -0700 Message-ID: <20260616212055.334466-9-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260616212055.334466-1-richard.henderson@linaro.org> References: <20260616212055.334466-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102b; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x102b.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1781644925302158500 This file dereferences CPUState without including the required header. Reviewed-by: Warner Losh Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Richard Henderson Reviewed-by: Helge Deller (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781644917190877.9704447970342; Tue, 16 Jun 2026 14:21:57 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wZbDk-0005cB-Jv; Tue, 16 Jun 2026 17:21:20 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wZbDd-0005aA-HZ for qemu-devel@nongnu.org; Tue, 16 Jun 2026 17:21:13 -0400 Received: from mail-pj1-x1034.google.com ([2607:f8b0:4864:20::1034]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wZbDb-0007Qt-Rt for qemu-devel@nongnu.org; Tue, 16 Jun 2026 17:21:13 -0400 Received: by mail-pj1-x1034.google.com with SMTP id 98e67ed59e1d1-36d6bb38b44so3307431a91.0 for ; Tue, 16 Jun 2026 14:21:11 -0700 (PDT) Received: from stoup.. (174-21-129-215.tukw.qwest.net. [174.21.129.215]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-37c521e76d1sm3820063a91.8.2026.06.16.14.21.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 16 Jun 2026 14:21:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781644870; x=1782249670; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=m7GHFTTSlEJLnE9T7yYuDnYDdVUjyGwFwEw2Q41F1gE=; b=npyvCtnKjGsokaZjOz+jibHBmeJTr1yU5Pu+/QpYpckVuAtApIcrhDFO+00CTXw2sk DbhQD5FTtaCkvkM+rHn6fVzZaAU+Vu91ddULqMsbr/w2XA31T1yRtNTyZAcvIJ1zOpNO ovQ9QTEDPxWKsSbSOFUszsjCkv6fcih66lgPLi5GSgDsLQ2NQuE50V+Xs6nbDUlk3/UX 8QC+yuY5yriTy7q+CfVDD3E7mDYRZq4hu1O8CCDaCxuFAlfOUDKSnqUva6n+H/lLZRDL Zz21HAkgRb3EfkV5w+rCmbJdswubQVS2vnCH+bMuLHeWkGQoEEmWm514YJ1LMqCn5c6Y AVhg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781644870; x=1782249670; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=m7GHFTTSlEJLnE9T7yYuDnYDdVUjyGwFwEw2Q41F1gE=; b=X1gT8cTkejYvuqLUK5BeNfmITFu8HbzQpK2hzobHnPvnV0ZKQjtrL58qbC4HMu5tVr fOrGEZAdXEcT3AgtsugdQxrU7uYAc4wmaOaHs/V4kU+N/IBSc+NKAFh4zSIPfcUV72bD 75DRm4h5CBNqk/MHogSGlt8s8mB1bqiRNrBTV0Zq/3fbBFmjUDtruT2WHIHnKqCg44vJ vcHJ8QFnABCpfz66dJemtUZwSy62imkIqs4RBfXTEt9XP/uE5/lsVETaxkkMx88uSgD6 J7Sgmh5Wzxblu+MZjMLeeLAv4MBPVhFjgvxILdl8UskLn0rCvxaeFtoGlJ86RnfiJXeb 5jpQ== X-Gm-Message-State: AOJu0YwkJXYYIobsZsbOe5jHLl40JFxy8Ww1Y48LA1NTirV8q52QtDZx u97BF7DssqAbPd2JKdja/HSpvHXICaDbcfNEKvMwYFgB/aVZJGKyL5gyNbAztidJ1GeBcStRmpA HUT8M X-Gm-Gg: Acq92OF+VxDRfHQHO+igssCIn/PoNXcNchDjvy21k3kSKHjiFiW1XEJc534Eevvb+hs 4ZapQEtns7whWWQ88A45PUszNCshjYj6hUsbpd00iHUxdhxGQH3JMMvN5I75q98cG/te1TuifhV lsAu7fI1tZyUy+jJ/fPYAvXvBAr/okKQm05LgApsNHVztCIwZV9TDB3iftfFinkSWxpnvKakv03 zo4sIZTBwKmGm0VSAmgF2vQ0fiWXgNSlrSGZjtjIHwZJq1w/NqiXIA2e0dmCHopP7SyqSdJq16A ra0+b8pWfDcyXzwM7HIMHxvNn/mW/2+Meobe6zjykwlRxkFGO9bzBAIP11LpuArMAe678FbYg3S HWhf9LerjJeNEBOByOd40oFjBjfsNDgVMjHYE+SpT4QGZV+WlZgzOAnujaTIyCiEOu+PCAnVLWI JOkHUGnlTAn1H+OOAO2TlptJgZ8VGtTx0IUIQRRFohbcpEHTbxN5f+YAiMk+bw X-Received: by 2002:a17:90b:5107:b0:36a:a16b:5f65 with SMTP id 98e67ed59e1d1-37c9372863cmr1095562a91.11.1781644870422; Tue, 16 Jun 2026 14:21:10 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: deller@gmx.de, Warner Losh , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PATCH v2 09/13] common-user: Move selfmap from util Date: Tue, 16 Jun 2026 14:20:50 -0700 Message-ID: <20260616212055.334466-10-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260616212055.334466-1-richard.henderson@linaro.org> References: <20260616212055.334466-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1034; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1034.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1781644919379158500 This interface is only used for user-only. It's more usefully placed within common-user than util. Temporarily add stub implementation for bsd-user. Reviewed-by: Warner Losh Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Richard Henderson Reviewed-by: Helge Deller user}/selfmap.h | 0 {util =3D> common-user}/selfmap.c | 6 +++++- linux-user/elfload.c | 2 +- linux-user/syscall.c | 2 +- common-user/meson.build | 1 + util/meson.build | 4 ---- 6 files changed, 8 insertions(+), 7 deletions(-) rename include/{qemu =3D> user}/selfmap.h (100%) rename {util =3D> common-user}/selfmap.c (97%) diff --git a/include/qemu/selfmap.h b/include/user/selfmap.h similarity index 100% rename from include/qemu/selfmap.h rename to include/user/selfmap.h diff --git a/util/selfmap.c b/common-user/selfmap.c similarity index 97% rename from util/selfmap.c rename to common-user/selfmap.c index 483cb617e2..a1b88dee66 100644 --- a/util/selfmap.c +++ b/common-user/selfmap.c @@ -8,10 +8,11 @@ =20 #include "qemu/osdep.h" #include "qemu/cutils.h" -#include "qemu/selfmap.h" +#include "user/selfmap.h" =20 IntervalTreeRoot *read_self_maps(void) { +#ifdef __linux__ IntervalTreeRoot *root; gchar *maps, **lines; guint i, nlines; @@ -80,6 +81,9 @@ IntervalTreeRoot *read_self_maps(void) g_free(maps); =20 return root; +#else + return NULL; +#endif } =20 /** diff --git a/linux-user/elfload.c b/linux-user/elfload.c index f32c52a968..ee2df35aa8 100644 --- a/linux-user/elfload.c +++ b/linux-user/elfload.c @@ -25,7 +25,7 @@ #include "qemu/queue.h" #include "qemu/guest-random.h" #include "qemu/units.h" -#include "qemu/selfmap.h" +#include "user/selfmap.h" #include "qemu/lockable.h" #include "qapi/error.h" #include "qemu/error-report.h" diff --git a/linux-user/syscall.c b/linux-user/syscall.c index fbe357b7e0..dc4fb72385 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -141,7 +141,7 @@ #include "user/safe-syscall.h" #include "user/signal.h" #include "qemu/guest-random.h" -#include "qemu/selfmap.h" +#include "user/selfmap.h" #include "special-errno.h" #include "qapi/error.h" #include "fd-trans.h" diff --git a/common-user/meson.build b/common-user/meson.build index f9e2e83f9a..831a7273fb 100644 --- a/common-user/meson.build +++ b/common-user/meson.build @@ -8,4 +8,5 @@ user_ss.add(files( 'mmap-min-addr.c', 'safe-syscall.S', 'safe-syscall-error.c', + 'selfmap.c', )) diff --git a/util/meson.build b/util/meson.build index e29cbd948a..fa174c07a5 100644 --- a/util/meson.build +++ b/util/meson.build @@ -67,10 +67,6 @@ util_ss.add(files('memalign.c')) util_ss.add(files('interval-tree.c')) util_ss.add(files('lockcnt.c')) =20 -if have_user - util_ss.add(files('selfmap.c')) -endif - if have_system util_ss.add(files('crc-ccitt.c')) util_ss.add(when: gio, if_true: files('dbus.c')) --=20 2.43.0 From nobody Sun Jul 26 13:30:21 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1781644968; cv=none; d=zohomail.com; s=zohoarc; b=W/Aeyl7bIQvPi0A6dOziFqZl7SrPOC8omNKFQYpQw8vxKfKC8uqXzRQvhXvLdGt+5jdsOGoK1Psbmb3xOVqsc1aKUxGghoH5cI7mPEYb4yxScIEtQQHi7FwvsLJMXIVlCNgoeCYF3OGWIPlRchcAGgugN/kQyYyB8JeK/zaDvoo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781644968; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=ZwHofvv5b4D6PAnuAwIZ35vtZNb0237w6FOxDkbf6sQ=; b=Pdyv38/F9CwHfC2BDXU3hVH+KwxlqgQ10ehx/ApB/pKSCydBLQTNRaYQr1fiin6paArfPnOPG7w6X5jc9aJz/UT8Ft4px0P9kcECE8e3lf2lv3gMOqaDffBE7wgNT19IhI700x+clCKCwdk929xc8Pif2MTruOvTF/dQTzqvktE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781644968799772.3045571878065; Tue, 16 Jun 2026 14:22:48 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wZbDo-0005fj-Nq; Tue, 16 Jun 2026 17:21:24 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wZbDe-0005aN-NP for qemu-devel@nongnu.org; Tue, 16 Jun 2026 17:21:14 -0400 Received: from mail-pj1-x1033.google.com ([2607:f8b0:4864:20::1033]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wZbDc-0007R9-Rn for qemu-devel@nongnu.org; Tue, 16 Jun 2026 17:21:14 -0400 Received: by mail-pj1-x1033.google.com with SMTP id 98e67ed59e1d1-36dd65b95f2so263465a91.0 for ; Tue, 16 Jun 2026 14:21:12 -0700 (PDT) Received: from stoup.. (174-21-129-215.tukw.qwest.net. [174.21.129.215]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-37c521e76d1sm3820063a91.8.2026.06.16.14.21.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 16 Jun 2026 14:21:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781644871; x=1782249671; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=ZwHofvv5b4D6PAnuAwIZ35vtZNb0237w6FOxDkbf6sQ=; b=BHNtRsRHK3kPqpYPaXAyTBv9d2U/K7dpVRz8AJSgsLFN0rXTAD+R4VZNF1bvpuDe/K 1Z8/Zmn2OXwUNO/yqPokzO6tmDmQ1LlLIyIQjI3vVUizi7kZeGwV4X0DGNczGh2mDVCf tQ+x0mtB4hlu6QBVpad2+FdAegMAYLQPUHYtBGwLPcpKWeuoCsDryuOYo3q5Mlp5v2AV Kce9oPXUefNgXhZ0jqzQxAJmd+9L/gwgIcLIjk5zYM80E22FmRCLBQ1noUKYTwbCOm+8 mm5UfSo93adXlYNgXS7LiI9tjR/rQxQulsLzqDgL1xPiJUq6GjF9ULtq0/3cdqL8GH9q fgoQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781644871; x=1782249671; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=ZwHofvv5b4D6PAnuAwIZ35vtZNb0237w6FOxDkbf6sQ=; b=R4DJent+02RZGiK6yTsFR7hy/NOaQZJb6oAIVEZtw+SUQzSVIp/tB086RR7qDXIjM+ YPmVtVQtu47FE9rJlM3zIbfv7DhoUl+8lHR/KGMXKMwnNGOX/ydhIk9X51ga7ddqt0x/ fFgHSnPDplWM+gIK2AWIQzAJ32fBrsMlzbHbXz5WSMjt0HupPap392oubNa3oy6PeC4F QV//8eSxXbUIPOE3XjWwynfyperOIEk8tndrplkUAQp4ZniB2oQD7BfbnzFHN1iI4DeL UhFhXTvUbMiizUeS09euH3LOcQzbG8nWhIGeTebZZZEGx6REBx9TsR11VE5b6zss0eyV xKZA== X-Gm-Message-State: AOJu0YxEGYOgCcygonixfqkdg4aAIqFdcAkh2HucyMv+vHSC5ycW3T1k heZDMnzsahV9BO6itZjSvTJo/4G/U4XdDu3C0BtfuIwWEbwLfg8rFqiyMwrSlFKfUGcUFVaZDbE s1BLH X-Gm-Gg: AfdE7clbUPWJGnQzDQw+4MQ/thX0C7D6pB3wtI+fFfwcnoYEnZx3CtQFrqDc6fMo873 bpKTD6dXrAJsr5bGsk+crgAioHPWrEPlQLZjKo3lXRvp7mjouAmSTnEV/W6Da7EnBLw2h4rS3Ir U+apNCM+avBQfdUVgzUQTyKLPFbEzfEp5r9ezTi2IcFc2OVcoO2UJznXdB4cwud7HuwDuSiIAw+ EhlFEPEMDgWv9lHCXaJ9iDOucbWMYG3kQHmIT9k5CMMv4DPe1bGngN//uwFDc4CxlhL2TqA96WY 6pR2RQHWR9m57uyXHjBIR6ahhUbolq5etzDEAu0i+lozUc4Kj4UItuy7uv5pLRBSiS6RZmg6iDh wBQpyComwnsDFJ5qLc5BhXk0+ulPq15DNTQui5ng2AVowMHnozzgn3vlveHQr33IhFr9H/diEe8 CE0+2X7AeTJrt4nJxBIZ3vy6EMQZBeTAJ8V6j6EqA3bzdPBY1Gt6OWPzQ5x7Xz X-Received: by 2002:a17:90b:1dc8:b0:36b:769c:c037 with SMTP id 98e67ed59e1d1-37ca685fad6mr247345a91.5.1781644871487; Tue, 16 Jun 2026 14:21:11 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: deller@gmx.de Subject: [PATCH v2 10/13] common-user: Implement read_self_maps for FreeBSD Date: Tue, 16 Jun 2026 14:20:51 -0700 Message-ID: <20260616212055.334466-11-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260616212055.334466-1-richard.henderson@linaro.org> References: <20260616212055.334466-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1033; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1033.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1781644969876158500 Content-Type: text/plain; charset="utf-8" Use kinfo_getvmmap from -luser. Signed-off-by: Richard Henderson Reviewed-by: Helge Deller Tested-by: Helge Deller +#include +#endif =20 IntervalTreeRoot *read_self_maps(void) { @@ -80,9 +84,44 @@ IntervalTreeRoot *read_self_maps(void) g_strfreev(lines); g_free(maps); =20 + return root; +#elif defined(__FreeBSD__) + int n =3D 0; + struct kinfo_vmentry *entries =3D kinfo_getvmmap(getpid(), &n); + IntervalTreeRoot *root; + + if (!entries) { + return NULL; + } + root =3D g_new0(IntervalTreeRoot, 1); + + for (int i =3D 0; i < n; ++i) { + struct kinfo_vmentry *k =3D &entries[i]; + size_t path_len =3D strnlen(k->kve_path, sizeof(k->kve_path)) + 1; + MapInfo *e =3D g_malloc0(sizeof(*e) + path_len); + + e->itree.start =3D k->kve_start; + e->itree.last =3D k->kve_end - 1; + + /* ??? The rest of these fields are only used in linux-user. */ + e->dev =3D k->kve_vn_fsid_freebsd11; + e->inode =3D k->kve_vn_fileid; + e->offset =3D k->kve_offset; + e->is_read =3D k->kve_protection & KVME_PROT_READ; + e->is_write =3D k->kve_protection & KVME_PROT_WRITE; + e->is_exec =3D k->kve_protection & KVME_PROT_EXEC; + e->is_priv =3D k->kve_flags & KVME_FLAG_COW; + if (path_len) { + e->path =3D memcpy(e + 1, k->kve_path, path_len); + } + + interval_tree_insert(&e->itree, root); + } + + free(entries); return root; #else - return NULL; +# error #endif } =20 diff --git a/common-user/meson.build b/common-user/meson.build index 831a7273fb..5e041de55e 100644 --- a/common-user/meson.build +++ b/common-user/meson.build @@ -10,3 +10,8 @@ user_ss.add(files( 'safe-syscall-error.c', 'selfmap.c', )) + +if host_os =3D=3D 'freebsd' + libutil =3D cc.find_library('util', required: true) + user_ss.add(libutil) +endif --=20 2.43.0 From nobody Sun Jul 26 13:30:21 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1781644941; cv=none; d=zohomail.com; s=zohoarc; b=cFrB7qxGNHIoEDggs5fkZCrn+WfiwJ3c0aFD6XpbjqiRjJpbz9noptKPyeR1Wvy2Veo+WnNc21kYuu0LqlSyfAPXISmT+KFNjHoZGyeTaVkvYKTawxwqMriJrfJLCOWst1L8smgAtSUv9ljXlHcdNB78QoIDX1UCMJGvB8F0zmU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781644941; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=R+w29pBdvePuWArkwWUCG6+v0rXkNsTxmP/wU5IcILQ=; b=f3jNNn5HNlg9Ah1wo6hfUQeDZ73IQiHMiae9hi159P+lGAGPiaJh0ZicUEfW+xkc/zDHvyamw0Qhet3Q4NCiAnTTwGayZfiixFYOcfET20auic7S3WzAwJBcR1e21x0KyTZwICRf+3UDSKWTsrOvZrmAUHEyYuxSc6z6IaOB8KE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781644941561789.4173527342621; Tue, 16 Jun 2026 14:22:21 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wZbDw-0005la-Gj; Tue, 16 Jun 2026 17:21:32 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wZbDh-0005cA-Hh for qemu-devel@nongnu.org; Tue, 16 Jun 2026 17:21:20 -0400 Received: from mail-pj1-x102c.google.com ([2607:f8b0:4864:20::102c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wZbDe-0007RK-7E for qemu-devel@nongnu.org; Tue, 16 Jun 2026 17:21:17 -0400 Received: by mail-pj1-x102c.google.com with SMTP id 98e67ed59e1d1-36b900f350fso4604389a91.0 for ; Tue, 16 Jun 2026 14:21:13 -0700 (PDT) Received: from stoup.. (174-21-129-215.tukw.qwest.net. [174.21.129.215]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-37c521e76d1sm3820063a91.8.2026.06.16.14.21.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 16 Jun 2026 14:21:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781644873; x=1782249673; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=R+w29pBdvePuWArkwWUCG6+v0rXkNsTxmP/wU5IcILQ=; b=Qf+GJ4tyHHoYszLBgZcNxyNkER8CM5mZQzf/YVNPYUq9fZYbHnHKgEtlFGVj6oOeBf a9+g69fh4D2+wwJcLbmt9lDrcwPUlif9GNqkIL4FmeGWwgA7jqCdyBpTSXJdpVXwqiAL qKJfKLqjEWfXr/jKi8hUiF1bfWACG/sp5Z7vTAQnSa/YiqJh2MKAHL5H9AE0HoGfDCx3 26ILNpwZpdgJXZlqxuqNIkQRTJmdDgbJJyPNSY4X1PUGRlTUkt7JT9/dn6jcoqH6GOjZ 7NL360PfsdmXyuxraIVBZZIAk11Cz43X/CN6B1bhhR4mYXUKt2oD9OLAMIY8UELXOIuc JEZA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781644873; x=1782249673; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=R+w29pBdvePuWArkwWUCG6+v0rXkNsTxmP/wU5IcILQ=; b=NRQPCMnljQ5HRHKFXFSz1naRVf+QixhQwckAmXd4P8mKFaHm5P08gwLPyRv+ZAKiY3 4rqTTUkCO4kj0es+YVh0VDiNGUs8CDkj7uMZKmGyP0UQCDe+OgtMxVnXTJqAso53NQ69 lTiGctTRCSOFaOGgISkOL6wkij08CK7GWw1g7FQqHQri0sbXNKtz/0l6LAvZ1ah5xe1g 8wNcSfjZHMCY2DjVH2BiKIo5CE20NjDDQW4SsdCcuJbJOwjG0iYEE7BIbbmQIlkm73A3 BwvXpH2GN/qEjGlx66bEeoCaS7PehLoK3YGknEBJxGI9Ba6QOha7SkR/km1BHVBRKdLk yisw== X-Gm-Message-State: AOJu0YyXGL47SjnzhIRxim3PXORaC0erQhWj3FQci58FSD8JEU1yX3ed 9+xrcr733fkyQvVLcDVv8F+GJNU2NR2i88ee+bAuT0hhaC48YGsGTJlOjwvfZ6bYerkod4S2W5b gRFiX X-Gm-Gg: Acq92OFPtCP8DL09Y9ARU08oXzRkTg6yyhvMBDZXQ4Fm/IDYG91hKjWXtz2Jp+gRhwc jbX0t7qD6UZoZUcyKUTrM5+UQf4TaVtK7bYg5BVAhbbmYtjGY1OeeXb6sOmRXBdEX6H31dkQci8 Tkryi3/nHVm9vB93exh4gQj8IzQe6pqQttyBY8RfoHNvSsoiqf7M4LjvPf5JbXM04G/Xu3IjQiK T5iw4FHC9AJW1Ji1FhuUhm75ZjsngqiM4pcsT0KBvz529uuGRevqVQAeJr1+qthGea8u1hsetCR 1LSPkls9mAIKJhhr6W4s1x/5xsQp8xCxmguwGWv1Xz0mV33/bO/s+hSiKs+GChZSP4fbee6E5DF ze2BGqt9hwe5a0II5JDm9soPpvuIVijDN7keldjagHYwCqgrgCpVJcXfpx7CIy/KbSdlP0ODrhd 8f62vJuHfHapmbbWB88j36lwsieTbw8oczucqivEfKf7frGPxE9DmveWHf2Y+s X-Received: by 2002:a17:90b:4a51:b0:36b:b3f4:d578 with SMTP id 98e67ed59e1d1-37c936ffd4amr1130500a91.15.1781644872521; Tue, 16 Jun 2026 14:21:12 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: deller@gmx.de, Warner Losh Subject: [PATCH v2 11/13] common-user: Move probe_guest_base from linux-user Date: Tue, 16 Jun 2026 14:20:52 -0700 Message-ID: <20260616212055.334466-12-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260616212055.334466-1-richard.henderson@linaro.org> References: <20260616212055.334466-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102c; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x102c.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1781644943579158500 Content-Type: text/plain; charset="utf-8" Prepare to share probe_guest_base with bsd-user. Create a linux_probe_guest_base wrapper with the portions of probe_guest_base that are linux specific: managing the commpage for various targets. Reviewed-by: Warner Losh Signed-off-by: Richard Henderson Tested-by: Helge Deller lo, i->hi - i->lo + 1, ...) + * + * to succeed. + */ +void probe_guest_base(const char *image_name, const PGBRange *image_range, + const PGBRange *commpage_range); + +#endif diff --git a/linux-user/user-internals.h b/linux-user/user-internals.h index 74d8eaabbe..e7fbddd0e6 100644 --- a/linux-user/user-internals.h +++ b/linux-user/user-internals.h @@ -22,6 +22,7 @@ #include "qemu/log.h" #include "exec/tb-flush.h" #include "exec/translation-block.h" +#include "user/probe-guest-base.h" =20 extern char *exec_path; extern char real_exec_path[PATH_MAX]; @@ -74,13 +75,8 @@ void clone_fork_end(bool child); void fork_start(void); void fork_end(pid_t pid); =20 -typedef struct PGBRange { - vaddr lo; - vaddr hi; -} PGBRange; - /** - * probe_guest_base: + * linux_probe_guest_base: * @image_name: the executable being loaded * @image_range: the fixed addresses within the executable * @@ -96,7 +92,7 @@ typedef struct PGBRange { * * to succeed. */ -void probe_guest_base(const char *image_name, const PGBRange *image_range); +void linux_probe_guest_base(const char *image_name, const PGBRange *image_= range); =20 /* syscall.c */ int host_to_target_waitstatus(int status); diff --git a/common-user/probe-guest-base.c b/common-user/probe-guest-base.c new file mode 100644 index 0000000000..77722fe63f --- /dev/null +++ b/common-user/probe-guest-base.c @@ -0,0 +1,343 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ + +#include "qemu/osdep.h" +#include "qemu/error-report.h" +#include "qemu/units.h" +#include "qemu/target-info.h" +#include "qemu/log.h" +#include "user/guest-base.h" +#include "user/mmap-min-addr.h" +#include "user/guest-host.h" +#include "user/probe-guest-base.h" +#include "user/selfmap.h" +#include "exec/target_page.h" +#include + +/* Linux and FreeBSD use different flags to express NOREPLACE. */ +#ifdef __FreeBSD__ +#define MAP_FIXED_NOREPLACE (MAP_FIXED | MAP_EXCL) +#endif + +/** + * pgb_try_mmap: + * @addr: host start address + * @addr_last: host last address + * @keep: do not unmap the probe region + * + * Return 1 if [@addr, @addr_last] is not mapped in the host, + * return 0 if it is not available to map, and -1 on mmap error. + * If @keep, the region is left mapped on success, otherwise unmapped. + */ +static int pgb_try_mmap(uintptr_t addr, uintptr_t addr_last, bool keep) +{ + size_t size =3D addr_last - addr + 1; + void *p =3D mmap((void *)addr, size, PROT_NONE, + MAP_ANONYMOUS | MAP_PRIVATE | + MAP_NORESERVE | MAP_FIXED_NOREPLACE, -1, 0); + int ret; + + if (p =3D=3D MAP_FAILED) { + return errno =3D=3D EEXIST ? 0 : -1; + } + ret =3D p =3D=3D (void *)addr; + if (!keep || !ret) { + munmap(p, size); + } + return ret; +} + +/** + * pgb_try_mmap_skip_brk(uintptr_t addr, uintptr_t size, uintptr_t brk) + * @addr: host address + * @addr_last: host last address + * @brk: host brk + * + * Like pgb_try_mmap, but additionally reserve some memory following brk. + */ +static int pgb_try_mmap_skip_brk(uintptr_t addr, uintptr_t addr_last, + uintptr_t brk, bool keep) +{ + uintptr_t brk_last =3D brk + 16 * MiB - 1; + + /* Do not map anything close to the host brk. */ + if (addr <=3D brk_last && brk <=3D addr_last) { + return 0; + } + return pgb_try_mmap(addr, addr_last, keep); +} + +/** + * pgb_try_mmap_set: + * @ga: set of guest addrs + * @base: guest_base + * @brk: host brk + * + * Return true if all @ga can be mapped by the host at @base. + * On success, retain the mapping at index 0 for reserved_va. + */ + +typedef struct PGBAddrs { + PGBRange bounds[3]; + int nbounds; +} PGBAddrs; + +static bool pgb_try_mmap_set(const PGBAddrs *ga, uintptr_t base, uintptr_t= brk) +{ + for (int i =3D ga->nbounds - 1; i >=3D 0; --i) { + if (pgb_try_mmap_skip_brk(ga->bounds[i].lo + base, + ga->bounds[i].hi + base, + brk, i =3D=3D 0 && reserved_va) <=3D 0) { + return false; + } + } + return true; +} + +/** + * pgb_addr_set: + * @ga: output set of guest addrs + * @image_range: fixed guest image addresses + * @identity: create for identity mapping + * + * Fill in @ga with the image, COMMPAGE and NULL page. + */ +static bool pgb_addr_set(PGBAddrs *ga, const PGBRange *image_range, + const PGBRange *commpage_range, bool try_identity) +{ + int n; + + /* + * With a low commpage, or a guest mapped very low, + * we may not be able to use the identity map. + */ + if (try_identity) { + if (commpage_range && commpage_range->lo < mmap_min_addr) { + return false; + } + if (image_range && image_range->lo < mmap_min_addr) { + return false; + } + } + + memset(ga, 0, sizeof(*ga)); + n =3D 0; + + if (reserved_va) { + ga->bounds[n].lo =3D try_identity ? mmap_min_addr : 0; + ga->bounds[n].hi =3D reserved_va; + n++; + /* Low COMMPAGE and NULL handled by reserving from 0. */ + } else { + /* Add any low COMMPAGE or NULL page. */ + if (!try_identity || (commpage_range && commpage_range->lo =3D=3D = 0)) { + ga->bounds[n].lo =3D 0; + ga->bounds[n].hi =3D TARGET_PAGE_SIZE - 1; + n++; + } + + /* Add the guest image for ET_EXEC. */ + if (image_range) { + ga->bounds[n++] =3D *image_range; + } + } + + /* Add any high COMMPAGE not covered by reserved_va. */ + if (commpage_range && reserved_va < commpage_range->hi) { + ga->bounds[n].lo =3D commpage_range->lo & qemu_real_host_page_mask= (); + ga->bounds[n].hi =3D commpage_range->hi; + n++; + } + + ga->nbounds =3D n; + return true; +} + +static void pgb_fail_in_use(const char *image_name) +{ + error_report("%s: requires virtual address space that is in use " + "(omit the -B option or choose a different value)", + image_name); + exit(EXIT_FAILURE); +} + +static void pgb_fixed(const char *image_name, const PGBRange *image_range, + const PGBRange *commpage_range, uintptr_t align) +{ + PGBAddrs ga; + uintptr_t brk =3D (uintptr_t)sbrk(0); + + if (!QEMU_IS_ALIGNED(guest_base, align)) { + fprintf(stderr, "Requested guest base %p does not satisfy " + "host minimum alignment (0x%" PRIxPTR ")\n", + (void *)guest_base, align); + exit(EXIT_FAILURE); + } + + if (!pgb_addr_set(&ga, image_range, commpage_range, !guest_base) + || !pgb_try_mmap_set(&ga, guest_base, brk)) { + pgb_fail_in_use(image_name); + } +} + +/** + * pgb_find_fallback: + * + * This is a fallback method for finding holes in the host address space + * if we don't have the benefit of being able to access /proc/self/map. + * It can potentially take a very long time as we can only dumbly iterate + * up the host address space seeing if the allocation would work. + */ +static uintptr_t pgb_find_fallback(const PGBAddrs *ga, uintptr_t align, + uintptr_t brk) +{ + /* TODO: come up with a better estimate of how much to skip. */ + uintptr_t skip =3D sizeof(uintptr_t) =3D=3D 4 ? MiB : GiB; + + for (uintptr_t base =3D skip; ; base +=3D skip) { + base =3D ROUND_UP(base, align); + if (pgb_try_mmap_set(ga, base, brk)) { + return base; + } + if (base >=3D -skip) { + return -1; + } + } +} + +static uintptr_t pgb_try_itree(const PGBAddrs *ga, uintptr_t base, + IntervalTreeRoot *root) +{ + for (int i =3D ga->nbounds - 1; i >=3D 0; --i) { + uintptr_t s =3D base + ga->bounds[i].lo; + uintptr_t l =3D base + ga->bounds[i].hi; + IntervalTreeNode *n; + + if (l < s) { + /* Wraparound. Skip to advance S to mmap_min_addr. */ + return mmap_min_addr - s; + } + + n =3D interval_tree_iter_first(root, s, l); + if (n !=3D NULL) { + /* Conflict. Skip to advance S to LAST + 1. */ + return n->last - s + 1; + } + } + return 0; /* success */ +} + +static uintptr_t pgb_find_itree(const PGBAddrs *ga, IntervalTreeRoot *root, + uintptr_t align, uintptr_t brk) +{ + uintptr_t last =3D sizeof(uintptr_t) =3D=3D 4 ? MiB : GiB; + uintptr_t base, skip; + + while (true) { + base =3D ROUND_UP(last, align); + if (base < last) { + return -1; + } + + skip =3D pgb_try_itree(ga, base, root); + if (skip =3D=3D 0) { + break; + } + + last =3D base + skip; + if (last < base) { + return -1; + } + } + + /* + * We've chosen 'base' based on holes in the interval tree, + * but we don't yet know if it is a valid host address. + * Because it is the first matching hole, if the host addresses + * are invalid we know there are no further matches. + */ + return pgb_try_mmap_set(ga, base, brk) ? base : -1; +} + +static void pgb_dynamic(const char *image_name, const PGBRange *image_rang= e, + const PGBRange *commpage_range, uintptr_t align) +{ + IntervalTreeRoot *root; + uintptr_t brk, ret; + PGBAddrs ga; + + /* Try the identity map first. */ + if (pgb_addr_set(&ga, image_range, commpage_range, true)) { + brk =3D (uintptr_t)sbrk(0); + if (pgb_try_mmap_set(&ga, 0, brk)) { + guest_base =3D 0; + return; + } + } + + /* + * Rebuild the address set for non-identity map. + * This differs in the mapping of the guest NULL page. + */ + pgb_addr_set(&ga, image_range, commpage_range, false); + + root =3D read_self_maps(); + + /* Read brk after we've read the maps, which will malloc. */ + brk =3D (uintptr_t)sbrk(0); + + if (!root) { + ret =3D pgb_find_fallback(&ga, align, brk); + } else { + /* + * Reserve the area close to the host brk. + * This will be freed with the rest of the tree. + */ + IntervalTreeNode *b =3D g_new0(IntervalTreeNode, 1); + b->start =3D brk; + b->last =3D brk + 16 * MiB - 1; + interval_tree_insert(b, root); + + ret =3D pgb_find_itree(&ga, root, align, brk); + free_self_maps(root); + } + + if (ret =3D=3D -1) { + int w =3D target_long_bits() / 4; + + error_report("%s: Unable to find a guest_base to satisfy all " + "guest address mapping requirements", image_name); + + for (int i =3D 0; i < ga.nbounds; ++i) { + error_printf(" %0*" VADDR_PRIx "-%0*" VADDR_PRIx "\n", + w, ga.bounds[i].lo, + w, ga.bounds[i].hi); + } + exit(EXIT_FAILURE); + } + guest_base =3D ret; +} + +void probe_guest_base(const char *image_name, const PGBRange *image_range, + const PGBRange *commpage_range) +{ + /* In order to use host shmat, we must be able to honor SHMLBA. */ + uintptr_t align =3D MAX(SHMLBA, TARGET_PAGE_SIZE); + + /* Sanity check the guest binary. */ + if (reserved_va && image_range && image_range->hi > reserved_va) { + error_report("%s: requires more than reserved virtual " + "address space (0x%" VADDR_PRIx " > 0x%lx)", + image_name, image_range->hi, reserved_va); + exit(EXIT_FAILURE); + } + + if (have_guest_base) { + pgb_fixed(image_name, image_range, commpage_range, align); + } else { + pgb_dynamic(image_name, image_range, commpage_range, align); + } + + assert(QEMU_IS_ALIGNED(guest_base, align)); + qemu_log_mask(CPU_LOG_PAGE, "Locating guest address space " + "@ 0x%" PRIx64 "\n", (uint64_t)guest_base); +} diff --git a/linux-user/elfload.c b/linux-user/elfload.c index ee2df35aa8..b95eea6991 100644 --- a/linux-user/elfload.c +++ b/linux-user/elfload.c @@ -4,7 +4,6 @@ =20 #include #include -#include =20 #include "qemu.h" #include "user/tswap-target.h" @@ -13,8 +12,6 @@ #include "exec/mmap-lock.h" #include "exec/translation-block.h" #include "exec/tswap.h" -#include "user/guest-base.h" -#include "user/mmap-min-addr.h" #include "user-internals.h" #include "signal-common.h" #include "loader.h" @@ -25,7 +22,6 @@ #include "qemu/queue.h" #include "qemu/guest-random.h" #include "qemu/units.h" -#include "user/selfmap.h" #include "qemu/lockable.h" #include "qapi/error.h" #include "qemu/error-report.h" @@ -758,310 +754,8 @@ static abi_ulong create_elf_tables(abi_ulong p, int a= rgc, int envc, return sp; } =20 -#if !defined(COMMPAGE) && !defined(HAVE_GUEST_COMMPAGE) -bool init_guest_commpage(void) { return true; } -#endif - -/** - * pgb_try_mmap: - * @addr: host start address - * @addr_last: host last address - * @keep: do not unmap the probe region - * - * Return 1 if [@addr, @addr_last] is not mapped in the host, - * return 0 if it is not available to map, and -1 on mmap error. - * If @keep, the region is left mapped on success, otherwise unmapped. - */ -static int pgb_try_mmap(uintptr_t addr, uintptr_t addr_last, bool keep) -{ - size_t size =3D addr_last - addr + 1; - void *p =3D mmap((void *)addr, size, PROT_NONE, - MAP_ANONYMOUS | MAP_PRIVATE | - MAP_NORESERVE | MAP_FIXED_NOREPLACE, -1, 0); - int ret; - - if (p =3D=3D MAP_FAILED) { - return errno =3D=3D EEXIST ? 0 : -1; - } - ret =3D p =3D=3D (void *)addr; - if (!keep || !ret) { - munmap(p, size); - } - return ret; -} - -/** - * pgb_try_mmap_skip_brk(uintptr_t addr, uintptr_t size, uintptr_t brk) - * @addr: host address - * @addr_last: host last address - * @brk: host brk - * - * Like pgb_try_mmap, but additionally reserve some memory following brk. - */ -static int pgb_try_mmap_skip_brk(uintptr_t addr, uintptr_t addr_last, - uintptr_t brk, bool keep) -{ - uintptr_t brk_last =3D brk + 16 * MiB - 1; - - /* Do not map anything close to the host brk. */ - if (addr <=3D brk_last && brk <=3D addr_last) { - return 0; - } - return pgb_try_mmap(addr, addr_last, keep); -} - -/** - * pgb_try_mmap_set: - * @ga: set of guest addrs - * @base: guest_base - * @brk: host brk - * - * Return true if all @ga can be mapped by the host at @base. - * On success, retain the mapping at index 0 for reserved_va. - */ - -typedef struct PGBAddrs { - PGBRange bounds[3]; - int nbounds; -} PGBAddrs; - -static bool pgb_try_mmap_set(const PGBAddrs *ga, uintptr_t base, uintptr_t= brk) -{ - for (int i =3D ga->nbounds - 1; i >=3D 0; --i) { - if (pgb_try_mmap_skip_brk(ga->bounds[i].lo + base, - ga->bounds[i].hi + base, - brk, i =3D=3D 0 && reserved_va) <=3D 0) { - return false; - } - } - return true; -} - -/** - * pgb_addr_set: - * @ga: output set of guest addrs - * @image_range: fixed guest image addresses - * @identity: create for identity mapping - * - * Fill in @ga with the image, COMMPAGE and NULL page. - */ -static bool pgb_addr_set(PGBAddrs *ga, const PGBRange *image_range, - const PGBRange *commpage_range, bool try_identity) -{ - int n; - - /* - * With a low commpage, or a guest mapped very low, - * we may not be able to use the identity map. - */ - if (try_identity) { - if (commpage_range && commpage_range->lo < mmap_min_addr) { - return false; - } - if (image_range && image_range->lo < mmap_min_addr) { - return false; - } - } - - memset(ga, 0, sizeof(*ga)); - n =3D 0; - - if (reserved_va) { - ga->bounds[n].lo =3D try_identity ? mmap_min_addr : 0; - ga->bounds[n].hi =3D reserved_va; - n++; - /* Low COMMPAGE and NULL handled by reserving from 0. */ - } else { - /* Add any low COMMPAGE or NULL page. */ - if (!try_identity || (commpage_range && commpage_range->lo =3D=3D = 0)) { - ga->bounds[n].lo =3D 0; - ga->bounds[n].hi =3D TARGET_PAGE_SIZE - 1; - n++; - } - - /* Add the guest image for ET_EXEC. */ - if (image_range) { - ga->bounds[n++] =3D *image_range; - } - } - - /* Add any high COMMPAGE not covered by reserved_va. */ - if (commpage_range && reserved_va < commpage_range->hi) { - ga->bounds[n].lo =3D commpage_range->lo & qemu_real_host_page_mask= (); - ga->bounds[n].hi =3D commpage_range->hi; - n++; - } - - ga->nbounds =3D n; - return true; -} - -static void pgb_fail_in_use(const char *image_name) -{ - error_report("%s: requires virtual address space that is in use " - "(omit the -B option or choose a different value)", - image_name); - exit(EXIT_FAILURE); -} - -static void pgb_fixed(const char *image_name, const PGBRange *image_range, - const PGBRange *commpage_range, uintptr_t align) -{ - PGBAddrs ga; - uintptr_t brk =3D (uintptr_t)sbrk(0); - - if (!QEMU_IS_ALIGNED(guest_base, align)) { - fprintf(stderr, "Requested guest base %p does not satisfy " - "host minimum alignment (0x%" PRIxPTR ")\n", - (void *)guest_base, align); - exit(EXIT_FAILURE); - } - - if (!pgb_addr_set(&ga, image_range, commpage_range, !guest_base) - || !pgb_try_mmap_set(&ga, guest_base, brk)) { - pgb_fail_in_use(image_name); - } -} - -/** - * pgb_find_fallback: - * - * This is a fallback method for finding holes in the host address space - * if we don't have the benefit of being able to access /proc/self/map. - * It can potentially take a very long time as we can only dumbly iterate - * up the host address space seeing if the allocation would work. - */ -static uintptr_t pgb_find_fallback(const PGBAddrs *ga, uintptr_t align, - uintptr_t brk) -{ - /* TODO: come up with a better estimate of how much to skip. */ - uintptr_t skip =3D sizeof(uintptr_t) =3D=3D 4 ? MiB : GiB; - - for (uintptr_t base =3D skip; ; base +=3D skip) { - base =3D ROUND_UP(base, align); - if (pgb_try_mmap_set(ga, base, brk)) { - return base; - } - if (base >=3D -skip) { - return -1; - } - } -} - -static uintptr_t pgb_try_itree(const PGBAddrs *ga, uintptr_t base, - IntervalTreeRoot *root) -{ - for (int i =3D ga->nbounds - 1; i >=3D 0; --i) { - uintptr_t s =3D base + ga->bounds[i].lo; - uintptr_t l =3D base + ga->bounds[i].hi; - IntervalTreeNode *n; - - if (l < s) { - /* Wraparound. Skip to advance S to mmap_min_addr. */ - return mmap_min_addr - s; - } - - n =3D interval_tree_iter_first(root, s, l); - if (n !=3D NULL) { - /* Conflict. Skip to advance S to LAST + 1. */ - return n->last - s + 1; - } - } - return 0; /* success */ -} - -static uintptr_t pgb_find_itree(const PGBAddrs *ga, IntervalTreeRoot *root, - uintptr_t align, uintptr_t brk) -{ - uintptr_t last =3D sizeof(uintptr_t) =3D=3D 4 ? MiB : GiB; - uintptr_t base, skip; - - while (true) { - base =3D ROUND_UP(last, align); - if (base < last) { - return -1; - } - - skip =3D pgb_try_itree(ga, base, root); - if (skip =3D=3D 0) { - break; - } - - last =3D base + skip; - if (last < base) { - return -1; - } - } - - /* - * We've chosen 'base' based on holes in the interval tree, - * but we don't yet know if it is a valid host address. - * Because it is the first matching hole, if the host addresses - * are invalid we know there are no further matches. - */ - return pgb_try_mmap_set(ga, base, brk) ? base : -1; -} - -static void pgb_dynamic(const char *image_name, const PGBRange *image_rang= e, - const PGBRange *commpage_range, uintptr_t align) -{ - IntervalTreeRoot *root; - uintptr_t brk, ret; - PGBAddrs ga; - - /* Try the identity map first. */ - if (pgb_addr_set(&ga, image_range, commpage_range, true)) { - brk =3D (uintptr_t)sbrk(0); - if (pgb_try_mmap_set(&ga, 0, brk)) { - guest_base =3D 0; - return; - } - } - - /* - * Rebuild the address set for non-identity map. - * This differs in the mapping of the guest NULL page. - */ - pgb_addr_set(&ga, image_range, commpage_range, false); - - root =3D read_self_maps(); - - /* Read brk after we've read the maps, which will malloc. */ - brk =3D (uintptr_t)sbrk(0); - - if (!root) { - ret =3D pgb_find_fallback(&ga, align, brk); - } else { - /* - * Reserve the area close to the host brk. - * This will be freed with the rest of the tree. - */ - IntervalTreeNode *b =3D g_new0(IntervalTreeNode, 1); - b->start =3D brk; - b->last =3D brk + 16 * MiB - 1; - interval_tree_insert(b, root); - - ret =3D pgb_find_itree(&ga, root, align, brk); - free_self_maps(root); - } - - if (ret =3D=3D -1) { - int w =3D TARGET_LONG_BITS / 4; - - error_report("%s: Unable to find a guest_base to satisfy all " - "guest address mapping requirements", image_name); - - for (int i =3D 0; i < ga.nbounds; ++i) { - error_printf(" %0*" VADDR_PRIx "-%0*" VADDR_PRIx "\n", - w, ga.bounds[i].lo, - w, ga.bounds[i].hi); - } - exit(EXIT_FAILURE); - } - guest_base =3D ret; -} - -void probe_guest_base(const char *image_name, const PGBRange *image_range) +void linux_probe_guest_base(const char *image_name, + const PGBRange *image_range) { #ifdef COMMPAGE const PGBRange * const commpage_range =3D &(PGBRange){ @@ -1071,32 +765,15 @@ void probe_guest_base(const char *image_name, const = PGBRange *image_range) const PGBRange * const commpage_range =3D NULL; #endif =20 - /* In order to use host shmat, we must be able to honor SHMLBA. */ - uintptr_t align =3D MAX(SHMLBA, TARGET_PAGE_SIZE); - - /* Sanity check the guest binary. */ - if (reserved_va && image_range && image_range->hi > reserved_va) { - error_report("%s: requires more than reserved virtual " - "address space (0x%" VADDR_PRIx " > 0x%lx)", - image_name, image_range->hi, reserved_va); - exit(EXIT_FAILURE); - } - - if (have_guest_base) { - pgb_fixed(image_name, image_range, commpage_range, align); - } else { - pgb_dynamic(image_name, image_range, commpage_range, align); - } + probe_guest_base(image_name, image_range, commpage_range); =20 /* Reserve and initialize the commpage. */ +#if defined(COMMPAGE) || defined(HAVE_GUEST_COMMPAGE) if (!init_guest_commpage()) { /* We have already probed for the commpage being free. */ g_assert_not_reached(); } - - assert(QEMU_IS_ALIGNED(guest_base, align)); - qemu_log_mask(CPU_LOG_PAGE, "Locating guest address space " - "@ 0x%" PRIx64 "\n", (uint64_t)guest_base); +#endif } =20 enum { @@ -1345,10 +1022,10 @@ static void load_elf_image(const char *image_name, = const ImageSource *src, * Make sure that the low address does not conflict with * MMAP_MIN_ADDR or the QEMU application itself. */ - probe_guest_base(image_name, &range); + linux_probe_guest_base(image_name, &range); } else { /* The binary is dynamic; we still need to select guest_base. = */ - probe_guest_base(image_name, NULL); + linux_probe_guest_base(image_name, NULL); =20 /* * Avoid collision with the loader by providing a different diff --git a/linux-user/flatload.c b/linux-user/flatload.c index 45d69040c6..a551f083a4 100644 --- a/linux-user/flatload.c +++ b/linux-user/flatload.c @@ -261,7 +261,7 @@ static int load_flat_file(struct linux_binprm * bprm, /* * Allocate the address space. */ - probe_guest_base(bprm->filename, NULL); + linux_probe_guest_base(bprm->filename, NULL); =20 /* * there are a couple of cases here, the separate code/data diff --git a/common-user/meson.build b/common-user/meson.build index 5e041de55e..2d4ffe07d3 100644 --- a/common-user/meson.build +++ b/common-user/meson.build @@ -6,6 +6,7 @@ common_user_inc +=3D include_directories('host/' / host_arc= h) =20 user_ss.add(files( 'mmap-min-addr.c', + 'probe-guest-base.c', 'safe-syscall.S', 'safe-syscall-error.c', 'selfmap.c', --=20 2.43.0 From nobody Sun Jul 26 13:30:22 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1781644981; cv=none; d=zohomail.com; s=zohoarc; b=lf+s3J2qSS+/hKdYB9bbVGpdYLmPo4/GouLodJrCcA9kXEz7rSFcTCVPJHDF9IWKj6ZxIu5C+gyoh32MKo5cE0XnEUFjhLlIUcdZj8UzMcD45xpdGpguW/h8PIRkiqkPTWEyahvfaqY8GrE6PeVqQ9FfQCP8ON9aFf7bxgQ1I48= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781644981; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=D1d1aEjn4LJhKQ30FhQTml2wsIITUmwS+fUTg53jjKs=; b=Y+gkt2x2FwjivHiMT+WzDWepff9nH8VM4qAqfRkjqF7L1hDnk+p1mbm4L7I4iRe+4m0Lwicsl64aad36HTgYNybEx5ofcfjWOTOzg1M+DCeDg2LyL71hg2GO0j8ZhTZS3mud+sNlgJZbrRU+KEe/FuEvSkSuzw28/ZG3TBD9WmQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781644981140557.8578621363946; Tue, 16 Jun 2026 14:23:01 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wZbDv-0005kq-I0; Tue, 16 Jun 2026 17:21:31 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wZbDh-0005c8-9V for qemu-devel@nongnu.org; Tue, 16 Jun 2026 17:21:18 -0400 Received: from mail-pj1-x1036.google.com ([2607:f8b0:4864:20::1036]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wZbDf-0007Rp-Hw for qemu-devel@nongnu.org; Tue, 16 Jun 2026 17:21:17 -0400 Received: by mail-pj1-x1036.google.com with SMTP id 98e67ed59e1d1-36babe2c4bdso3119282a91.1 for ; Tue, 16 Jun 2026 14:21:15 -0700 (PDT) Received: from stoup.. (174-21-129-215.tukw.qwest.net. [174.21.129.215]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-37c521e76d1sm3820063a91.8.2026.06.16.14.21.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 16 Jun 2026 14:21:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781644874; x=1782249674; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=D1d1aEjn4LJhKQ30FhQTml2wsIITUmwS+fUTg53jjKs=; b=A465g4Sjb5uVoqsvRYxqAUlACVlTvDX+qrDZ3K6eIzO/rnZwC91EO30+dfPeuAj9AI 9xP+0/7E4tb/cfWiME9gR4dggwXTJP9MTgnigRgewizxEreG36K/DvK+DF8XceWZYnpl EEQvXET0dXnbHJjZmBcHr5fwa21yjb0rw6Hku9KXlbYFzXQrJ9sRvOFFDsMuiHLtKZAh Trnjo2GuTLd+2jYF/CwmNrXT7GMwSnMsaVRAPOTZw+OqHFpPSzpAh+DblVYcyqxtsF3o nWtybi/7DAuTepn8YIUlmU8yS78vMOrjjCVHetXYQEITrjM1KVKF6PrDlkv/QwJgwq6q BmSA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781644874; x=1782249674; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=D1d1aEjn4LJhKQ30FhQTml2wsIITUmwS+fUTg53jjKs=; b=iohm1Kq5JDQJfhwowqy166HW4WUVIw52FUBLvWhAeU7U0pr+F7/LLpmRM2AF2vmnCR 0k+fac6miu8DrPMOxBJxJo77WP+1V9ycuKBTlW18pK/U/bgn1t3xJxIwYVTeSVntPrnn HHCqxZAaOE/wH6twvmSXV+u9HmMlLTb9MM37BQHUBSyOmwL0AvW7qEEm8enF/t/G2I3Z d4110t9MBNZgO+WGcNUM7iayCAArnRrechJ21ifNpXVX3CPIL+mx7j5cUkYDvf/V3X05 SnzQN4Pl+3ajUjdIpXY2M34ZAu2oIdezqVGlsLCWBp4PwXTB9an61YDG74JBxFRL+B36 8bvg== X-Gm-Message-State: AOJu0Yyz+/DrDNfgz7BCBo0NAnzLtC2Vet+bB5OEcXPxzixfbcO+py87 GG/aeb1XBZYDjsGnE+g+g0vuj38D+zWpk5rT3YaabbDCpJ5cUmMItXMQO/ymGRn4cYpEBdAHCB/ vBHxF X-Gm-Gg: Acq92OGF/yDOFIOkdJqNksYaYnKlkVeWOU43I52b6BI/wtndGOIJ5oPyLHftPvtzLxs 8OCVi6fcEsmVzTpeK0Ts0JTcv3qGw8Szh6rUdKuAjIooYY2S9dGrRxKRRGtTEBzc6VwqabzSWXG LxCpSuSmsJRvAADWtpyKFAUhejSu7omNk6Fnnpdk91IjE2E6mI1IJL9E19f1RtcZbGvtX9JwezG 8ZIy4KUzZxGImu5eZav9CJmgS455m1o9wnn5xzFykF0aBUKIVIDOF+TKvbJTNiS/j8tnVtHTLcZ 2MiIgQgRy4T5f1AmsndGIKgb4te+/ZfoRjYVOWaQy7gzdeLeHq/6wV1AlCR/aPQts/uWPtU1KR3 yRew7/xqSEGwQqlyKM5vRabi+uFqU/ZhrNqk+ZbdnBB0LHlSAiCedQVBFkNLNNzsO/IyG0FLysI iBrmMetWONOEI/4eifGOnQKYJupvz0QIY9Fd+Ozzofs9q7Ox+JVtqTH6X1cqQn X-Received: by 2002:a17:90a:e18c:b0:369:7421:b376 with SMTP id 98e67ed59e1d1-37c9369eed3mr944374a91.19.1781644874241; Tue, 16 Jun 2026 14:21:14 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: deller@gmx.de Subject: [PATCH v2 12/13] bsd-user: Use probe_guest_base Date: Tue, 16 Jun 2026 14:20:53 -0700 Message-ID: <20260616212055.334466-13-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260616212055.334466-1-richard.henderson@linaro.org> References: <20260616212055.334466-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1036; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1036.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1781644981702158500 Content-Type: text/plain; charset="utf-8" Merge the PT_LOAD loop with the PT_INTERP loop, as the XXX comment suggests. Pass the probed range to probe_guest_base. Signed-off-by: Richard Henderson Tested-by: Helge Deller buf); /* exec-header */ @@ -654,10 +656,10 @@ int load_elf_binary(struct bsd_binprm *bprm, struct t= arget_pt_regs *regs, =20 elf_brk =3D 0; =20 - elf_interpreter =3D NULL; - for (i =3D 0; i < elf_ex.e_phnum; i++) { - if (elf_ppnt->p_type =3D=3D PT_INTERP) { + for (i =3D 0; i < elf_ex.e_phnum; i++, elf_ppnt++) { + switch (elf_ppnt->p_type) { + case PT_INTERP: if (elf_interpreter !=3D NULL) { free(elf_phdata); free(elf_interpreter); @@ -709,8 +711,14 @@ int load_elf_binary(struct bsd_binprm *bprm, struct ta= rget_pt_regs *regs, close(bprm->fd); return retval; } + break; + + case PT_LOAD: + range.lo =3D MIN(range.lo, elf_ppnt->p_vaddr); + range.hi =3D MAX(range.hi, + elf_ppnt->p_vaddr + elf_ppnt->p_memsz - 1); + break; } - elf_ppnt++; } =20 /* Some simple consistency checks for the interpreter */ @@ -740,19 +748,12 @@ int load_elf_binary(struct bsd_binprm *bprm, struct t= arget_pt_regs *regs, info->end_code =3D 0; elf_entry =3D (abi_ulong) elf_ex.e_entry; =20 - /* XXX Join this with PT_INTERP search? */ - baddr =3D 0; - for (i =3D 0, elf_ppnt =3D elf_phdata; i < elf_ex.e_phnum; i++, elf_pp= nt++) { - if (elf_ppnt->p_type !=3D PT_LOAD) { - continue; - } - baddr =3D elf_ppnt->p_vaddr; - break; - } - et_dyn_addr =3D 0; - if (elf_ex.e_type =3D=3D ET_DYN && baddr =3D=3D 0) { - et_dyn_addr =3D ELF_ET_DYN_LOAD_ADDR; + if (elf_ex.e_type =3D=3D ET_DYN) { + probe_guest_base(bprm->filename, NULL, NULL); + et_dyn_addr =3D ELF_ET_DYN_LOAD_ADDR - range.lo; + } else { + probe_guest_base(bprm->filename, &range, NULL); } =20 /* @@ -766,7 +767,7 @@ int load_elf_binary(struct bsd_binprm *bprm, struct tar= get_pt_regs *regs, info->elf_flags =3D elf_ex.e_flags; =20 error =3D load_elf_sections(&elf_ex, elf_phdata, bprm->fd, et_dyn_addr, - &load_addr); + &load_addr); for (i =3D 0, elf_ppnt =3D elf_phdata; i < elf_ex.e_phnum; i++, elf_pp= nt++) { if (elf_ppnt->p_type !=3D PT_LOAD) { continue; diff --git a/bsd-user/main.c b/bsd-user/main.c index 73aae8c327..772a26199b 100644 --- a/bsd-user/main.c +++ b/bsd-user/main.c @@ -540,41 +540,10 @@ int main(int argc, char **argv) } } =20 - /* - * If reserving host virtual address space, do so now. - * Combined with '-B', ensure that the chosen range is free. - */ - if (reserved_va) { - void *p; - - if (have_guest_base) { - p =3D mmap((void *)guest_base, reserved_va + 1, PROT_NONE, - MAP_ANON | MAP_PRIVATE | MAP_FIXED | MAP_EXCL, -1, 0); - } else { - p =3D mmap(NULL, reserved_va + 1, PROT_NONE, - MAP_ANON | MAP_PRIVATE, -1, 0); - } - if (p =3D=3D MAP_FAILED) { - const char *err =3D strerror(errno); - char *sz =3D size_to_str(reserved_va + 1); - - if (have_guest_base) { - error_report("Cannot allocate %s bytes at -B %p for guest " - "address space: %s", sz, (void *)guest_base, = err); - } else { - error_report("Cannot allocate %s bytes for guest " - "address space: %s", sz, err); - } - exit(1); - } - guest_base =3D (uintptr_t)p; - have_guest_base =3D true; - - /* Ensure that mmap_next_start is within range. */ - if (reserved_va <=3D mmap_next_start) { - mmap_next_start =3D (reserved_va / 4 * 3) - & TARGET_PAGE_MASK & qemu_host_page_mask; - } + /* Ensure that mmap_next_start is within range. */ + if (reserved_va && reserved_va <=3D mmap_next_start) { + mmap_next_start =3D ((reserved_va / 4 * 3) + & TARGET_PAGE_MASK & qemu_host_page_mask); } =20 if (loader_exec(filename, argv + optind, target_environ, regs, info, --=20 2.43.0 From nobody Sun Jul 26 13:30:22 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1781644895; cv=none; d=zohomail.com; s=zohoarc; b=Ryihv4nfYOiuuQ2c++YoSRE7wUWzagWm91PgcstBeHntU8+qSNoKU35q09sjAaMqnC9KImp+yFGFJnbDKkMUoVm9fptpeHNm7bvfG0rdquy7fSG1tuGHtBXgH3CPdD1YZfMA2+VrVgr39NWGXYM3qOnQNP0gh1XVKsYwtvTE8gU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781644895; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=0nnUc8dYVHT+sykoVpT7Jh5Z6Yg/95z1qsRa+JMWz3c=; b=DntxV5uyqbkvgUgLmw7m9yrMgQ0rteDOW3MQv9F/QC6gN1IRAdBlS4DLGh+ScW8Hgp3QN+OKyx/0pzMfYBilIoi1zJuSkDWQbpwaF3t/6Pc5JfprfeTXpoPHb+bWeT+xSmeocYCHUoyeuAcJac/SD/IAYG7PJzOirV8Tm6CGJS4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781644895033719.6367816117784; Tue, 16 Jun 2026 14:21:35 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wZbDr-0005hH-1O; Tue, 16 Jun 2026 17:21:27 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wZbDi-0005cC-0B for qemu-devel@nongnu.org; Tue, 16 Jun 2026 17:21:20 -0400 Received: from mail-pj1-x1036.google.com ([2607:f8b0:4864:20::1036]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wZbDg-0007Ru-HO for qemu-devel@nongnu.org; Tue, 16 Jun 2026 17:21:17 -0400 Received: by mail-pj1-x1036.google.com with SMTP id 98e67ed59e1d1-36b8e1760ccso3142155a91.0 for ; Tue, 16 Jun 2026 14:21:16 -0700 (PDT) Received: from stoup.. (174-21-129-215.tukw.qwest.net. [174.21.129.215]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-37c521e76d1sm3820063a91.8.2026.06.16.14.21.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 16 Jun 2026 14:21:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781644875; x=1782249675; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=0nnUc8dYVHT+sykoVpT7Jh5Z6Yg/95z1qsRa+JMWz3c=; b=A7PjO9KIj+QwCDs+2vy2aoaIQbCJPvAPJTdE8J+oMwoIl/+GIhnqLBUxAuLQUSUFcw +WoSPe544blv2cEN9eCxUrFIPnnKCLKZHrEjEo8NPWCoAsqXhCIpphaS1n1lu4dqax30 x7N2MVZ+BPfTutsBxO4/8M03KuKBHnmgZRI7jGUrULCQ4KWXTgzYywKvEL1k5fE/pMvT N60bdTbAqDyh5bxMrPDfddAWHjScw4TGnqTdoRjwZmz09Y7d0trSplJ3Y1xv2ptLDnjw dTGAevcH/l+I3/O+Z87wnRgfNB+dabEDSblVNqFLVQ3Lb4GXvGL+v7AW/E7qe8ay4Hde 3HOQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781644875; x=1782249675; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=0nnUc8dYVHT+sykoVpT7Jh5Z6Yg/95z1qsRa+JMWz3c=; b=oDmNG1E2Fbi0ZrOQZ91NPrA60+POJf7ow/Tu0Jmeoi3GvLAun4/VJ6pOUVhX/O7L8H YOxNzlMBiRRqmamKBOxByxFv2v/eVUOxCZ85QxCSgoQzInntMwUH/fB8oTSjwdRPR5y8 tvEarWgscorOojyEfVa6hK+kQ+/K+pi9FZvGTCfx8Go86ttjPAI3nCD9cSFMjHod3gkL tCi1MX84sB52I+k1xOdM4FS/PuN6Yvu8wCt1ty4cPSQPk8AgPGya5XSH2dGvJphrfBfq zkhEWJrR7SM/Js25MgLTILtYtF82YZlLcYJzgZspftSjVtl+9nyaRSmtftqEIXgbxE/I yxPg== X-Gm-Message-State: AOJu0YzH8wEGkmQvrbcIo9iKr4OVOo/DZD1us5tdWVgP0knVAT2rzv2s ixjra4EaRJ2UCfWlgf6015ZxJi38JfhWGvLvjdMwN5pAdMFUTymx1gogmG3NGOn2yNtN4qm5PcX s+uQj X-Gm-Gg: Acq92OHKS0B6NsDIYbT0uw/eemBYy2PyteiPqMewYJwoqQtHZKRZbGJ4aXNVI/shq6c qLNPr/ZffLoUyKBH/oD9HzZtGSLw2R3B5W/C3DwRyFz4ashB3fYUbk6d3i7lUwSEBj8UlRDV5rt tByLqUGf2YKi7/B5TfWwZ4Qd0BI6KQ6HZFFU1PpsSFjW4AJCOGEHCNvR1f5++jRFN/P+YLZflYJ veoW2hPJo1gnlzcKO+/p295hEtIH4tpca5KoEZ4SQXZgG6GGqTA3O6RoWF1M8t37CCTkNYaLUmY jqGy4etdifTVdEnBghsDrzk9v4LbNXexIjXW8lf+1K1dTNdnInp43SbgXFLqkDz6b5WTy5AWXCn YGTF99RtF/dtWahJ6FsJoqPgONlbOgYUJwh0gmVRgYh1p23dtwuF04FkLpojWMsop8h9Hv/f9Qy 41h7UcJr2ERrVr/Phs9fhIg4bDxrMjN+kJjqfrtmck4ya2ap7YCvaZwp+PH3wW X-Received: by 2002:a17:90b:4d81:b0:36b:bb66:fbd0 with SMTP id 98e67ed59e1d1-37c92ea98f5mr986647a91.4.1781644875132; Tue, 16 Jun 2026 14:21:15 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: deller@gmx.de, Warner Losh Subject: [PATCH v2 13/13] common-user: Move guest_base, have_guest_base to probe-guest-base.c Date: Tue, 16 Jun 2026 14:20:54 -0700 Message-ID: <20260616212055.334466-14-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260616212055.334466-1-richard.henderson@linaro.org> References: <20260616212055.334466-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1036; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1036.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1781644897389158500 Content-Type: text/plain; charset="utf-8" Unify the definitions of guest_base and have_guest_base. Reviewed-by: Warner Losh Signed-off-by: Richard Henderson Reviewed-by: Helge Deller