From nobody Fri Jan 24 12:11:48 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4Yfc9w4Qn2z5lJry; Fri, 24 Jan 2025 12:11:48 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R11" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4Yfc9w3NY9z480s; Fri, 24 Jan 2025 12:11:48 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1737720708; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=xsaBTbWjzIIT+jH9XvfVTiDF6WY+F6LF5LsSjUknyB0=; b=pPUZ6/z9T8I6LRT/R3IsT1p61tGAsCG3GSiNNR4zsZ2BI37t64mOraswTwxa1pfvXxR9Og JnmAXQtnUt8EBkgndHF02DecAJZeIA0kwUgZaTg59xIT4/TG43FgV9JrJtzZVU9X9dxMlN GHJyok7ePhYcd6yw6JoF63u4AatW1deCe/9TzpksQsLKw6VEuLWVRbB4IdXjCusZ2Nvlew 7y8lL3rLUzyMgPqbLA//u1c6Cvm0xIf1QFhQI9ffgrLeNoIGPTvahtqLhnyLsdveodeRg0 VYZTVEIv0NbOv08Xjb+METDfLwVwxKqxhXOmtQhUsNpVYT/yzjwWYLYUqu/gVw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1737720708; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=xsaBTbWjzIIT+jH9XvfVTiDF6WY+F6LF5LsSjUknyB0=; b=sm9/JdQEKbHphNNFR5OrDLGnWlwI6J5/WfLKr/7cFpThPIVaoPx4IanEjIWbqgqZkX0KvX 7hWnWMcwWXlOswpIqLKgwXUJKBYPdcqqPoMal1pef9XDUOLa8vHyDif5f03FNVqGMKuwLY aQnIxxBKFJ8C3RgRHIaY1oFGQQz8cH5C/OCuRUgZLwVrleju7SDlp2iWT6wUW1ggcehCJE jU4UNALehcmreF6JETt9Jl2i9N6hlDCvVIhCXXSa2TouDBj/pr03Ca70w4HApAt7q1Gmel JepCN8tPRCkq+4ZaNaCvwYqornb/fO1GGf22bUgijhS++X633XITaBgizLsVng== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1737720708; a=rsa-sha256; cv=none; b=h2m4D133KWwLtFIqRTTupH3RGTVLmUVhOMdhCwRKdVNLT3m/B2z6zYn+CqUnLrTHZufkl/ 7MaCItI1s/Lo/AiGLs2reSXskAENTR7+VukhApwrCxAZwXAnwUxWMvPmDOngng7GYeYeSO RrzBwp1jJGlwEgyGre2UvGqOY1e63F7UNFn6Ff/dZ1lOiGJU7HdFdEB7ZuQJKrjIDG1z49 Pt4P9WrJTS2lIyqGj+XyGS6hc55rOTE7ZX3Y2DJ9mPfWlN6qRDG3l5zL5Z1umhrkXvf9Vg +1lsePnp+8yZa4pYa2/sI09z2hsc5tmTnWzBc7Li2n6BbD1YA7rXKlAanIU/uA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4Yfc9w2tMFz8x5; Fri, 24 Jan 2025 12:11:48 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 50OCBmZs040302; Fri, 24 Jan 2025 12:11:48 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 50OCBm8j040299; Fri, 24 Jan 2025 12:11:48 GMT (envelope-from git) Date: Fri, 24 Jan 2025 12:11:48 GMT Message-Id: <202501241211.50OCBm8j040299@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Andrew Turner Subject: git: d249bcb712db - main - stand/efi: Limit where we load the arm64 kernel List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: andrew X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: d249bcb712db38bf4f31b99087bd9c39e5178288 Auto-Submitted: auto-generated The branch main has been updated by andrew: URL: https://cgit.FreeBSD.org/src/commit/?id=d249bcb712db38bf4f31b99087bd9c39e5178288 commit d249bcb712db38bf4f31b99087bd9c39e5178288 Author: Andrew Turner AuthorDate: 2025-01-24 11:37:01 +0000 Commit: Andrew Turner CommitDate: 2025-01-24 12:09:28 +0000 stand/efi: Limit where we load the arm64 kernel When FEAT_LPA2 is implemented the hardware supports increasing the physical address space from 48-bit to 52-bit. As older kernels only support a 48-bit physical address space limit where the kernel is loaded to this. Reviewed by: kib, markj Sponsored by: Arm Ltd Differential Revision: https://reviews.freebsd.org/D46625 --- stand/efi/loader/copy.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/stand/efi/loader/copy.c b/stand/efi/loader/copy.c index 935db3a420ba..e4ad865a4acd 100644 --- a/stand/efi/loader/copy.c +++ b/stand/efi/loader/copy.c @@ -290,6 +290,17 @@ get_staging_max(void) res = copy_staging == COPY_STAGING_ENABLE ? G(1) : G(4); return (res); } +#define EFI_ALLOC_MAX_ADDR +#elif defined(__aarch64__) +/* + * Older kernels only support a 48-bit physical address space, and locore.S + * only supports a 50-bit space. Limit to 48 bits so older kernels can boot + * even if FEAT_LPA2 is supported by the hardware. + */ +#define get_staging_max() (1ul << 48) +#define EFI_ALLOC_MAX_ADDR +#endif +#ifdef EFI_ALLOC_MAX_ADDR #define EFI_ALLOC_METHOD AllocateMaxAddress #else #define EFI_ALLOC_METHOD AllocateAnyPages @@ -316,7 +327,7 @@ efi_copy_init(void) if (running_on_hyperv()) efi_verify_staging_size(&nr_pages); #endif -#if defined(__amd64__) || defined(__i386__) +#ifdef EFI_ALLOC_MAX_ADDR staging = get_staging_max(); #endif status = BS->AllocatePages(EFI_ALLOC_METHOD, EfiLoaderCode, @@ -424,7 +435,7 @@ expand: #if EFI_STAGING_2M_ALIGN nr_pages += M(2) / EFI_PAGE_SIZE; #endif -#if defined(__amd64__) || defined(__i386__) +#ifdef EFI_ALLOC_MAX_ADDR new_base = get_staging_max(); #endif status = BS->AllocatePages(EFI_ALLOC_METHOD, EfiLoaderCode,