From nobody Thu Apr 17 21:59:15 2025 X-Original-To: dev-commits-src-main@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 4ZdsHS4Kskz5sr5D; Thu, 17 Apr 2025 21:59:16 +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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZdsHR5jLxz3V79; Thu, 17 Apr 2025 21:59:15 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1744927155; 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=dAKXTSRwKrdqVy8l7vj9IUDgud6eJodu7VNZpywwgBI=; b=WvraPmkI6O7vHWTNFKSEDViCUEHJdqOt1gQR6/qWIufOFm4lcy5jWDa2tVWqcZ1fIjzgZk k2KfKTGSZ/SBeviLWlwWC6eXRAKIP2U3k3c9PLMpMImWOdfNyIcTf9Vm/yo4munSqXzOAG uZ+5YobUWOHbBnsbm1Skl5rvpA4L6q3hJuw0i3IuCtuT3kYFdWnuM6X7N7oKCEo6M5fZMt 4fQi2FMkoMR9sXls9zefByZhrzlraXMqpTCQu580ap7kWe9yKQ7dDWrgTSC7xTyEaWdksW pKpDwMwdIUl/ibRQBLG7Ei74IPvEfllPc0xBfJu45BgxUFLHUrHvxNU402yfzg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1744927155; a=rsa-sha256; cv=none; b=FbQYPsqtCikRIvLtEs1oIqSYxY53xHL2BCF4Bt2oJFkmV4YjNEJGBh0auatHJE7V37My73 +QM1zo5/7t4NexhQBxib7/0Kh7MnYZUMQRQOntBhqGTZaFFoTYE9VueJiPpGVKHOvaO2JV pYk/owTWsakjGZbpM1U5POkTbWe0J6G3WNJd10yQuE+NanW0vms4sP9YshiO081YoMNByY Fqqt8Jjz0TH5io9bNbAISZEj+hHH0+zpzN98uZsa0+2rxjqxNM1jxNUXcyRVdiYMp+3AN7 5N/Xvnm+uSLoPAOqTYvlH6W1AJgF/OMCHEP7Fp4Y2N9DvNHU/1PK2NeHOG1IQA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1744927155; 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=dAKXTSRwKrdqVy8l7vj9IUDgud6eJodu7VNZpywwgBI=; b=dBtRH5o4Gl+5IhyXEfWjLqNoQ/Ok6Pubt7fVNQ7+iwY/W8UFrj9eU8Jcf6hMoULOVoWefZ NAY7RHzKgzTgYKo8uTPF1rs+n5PXMP9BTRLccsQAZWpQkEVNJUez0xqAWFKapkQqZUg1Kt Qnnz+FedDf95VMoOd/2IUizqpETD2CSs8SoXwZL0pYpvPb+vo9120VGVPxJ8kkr4q1t0NA TIDLEZD+VcG1JJeA9cOww22O1f3/iJaTONiv3od25zOpd4NXD1dOwan2RLrrwG10i6tZXX QFtXh+e8pZ66hAWuvxEu5lGp+De6FmACab510pIK/CzUnXu+1LQtVj5AT8ozlA== 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 4ZdsHR58hrz15lB; Thu, 17 Apr 2025 21:59:15 +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 53HLxFl5002697; Thu, 17 Apr 2025 21:59:15 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 53HLxF7R002694; Thu, 17 Apr 2025 21:59:15 GMT (envelope-from git) Date: Thu, 17 Apr 2025 21:59:15 GMT Message-Id: <202504172159.53HLxF7R002694@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Warner Losh Subject: git: 0c48531b4698 - main - kboot: Account for machine specific padding List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: imp X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 0c48531b4698c62d3553d75b283b3ebc26e19063 Auto-Submitted: auto-generated The branch main has been updated by imp: URL: https://cgit.FreeBSD.org/src/commit/?id=0c48531b4698c62d3553d75b283b3ebc26e19063 commit 0c48531b4698c62d3553d75b283b3ebc26e19063 Author: Warner Losh AuthorDate: 2025-04-17 04:04:13 +0000 Commit: Warner Losh CommitDate: 2025-04-17 21:56:46 +0000 kboot: Account for machine specific padding AMD64 kernels have an extra 2MB of padding that we need to account for. So make the padding proper on a per-architecture basis. Sponsored by: Netflix Reviewed by: kevans, jhibbits Differential Revision: https://reviews.freebsd.org/D49861 --- stand/kboot/kboot/main.c | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/stand/kboot/kboot/main.c b/stand/kboot/kboot/main.c index 65f7b77f1ace..5b7bfa246f55 100644 --- a/stand/kboot/kboot/main.c +++ b/stand/kboot/kboot/main.c @@ -49,9 +49,23 @@ static void kboot_zfs_probe(void); extern int command_fdt_internal(int argc, char *argv[]); +/* + * On amd64, KERNSTART is where the first actual kernel page is mapped, after + * the compatibility mapping. We reserve 2MB at the start of the address space + * for the page tables, etc, and so need to offset this there (and only there). + * The loader needs to know about this so we can pad everything to the proper + * place in PA. Ideally, we'd include vmparam.h to figure this out, but the + * macros it uses are not easily available in this compile environment, so we + * hard code that knowledge here. + */ +#if defined(__amd64__) +#define KERN_PADDING (2 << 20) +#else +#define KERN_PADDING 0 +#endif + #define PA_INVAL (vm_offset_t)-1 static vm_offset_t pa_start = PA_INVAL; -static vm_offset_t padding; static vm_offset_t offset; static uint64_t commit_limit; @@ -386,6 +400,8 @@ main(int argc, const char **argv) bootdev = getenv("currdev"); } #endif + if (bootdev == NULL) + bootdev = "host:/"; if (bootdev != NULL) { /* * Otherwise, honor what's on the command line. If we've been @@ -514,15 +530,13 @@ kboot_copyin(const void *src, vm_offset_t dest, const size_t len) if (pa_start == PA_INVAL) { pa_start = kboot_get_phys_load_segment(); -// padding = 2 << 20; /* XXX amd64: revisit this when we make it work */ - padding = 0; offset = dest; get_phys_buffer(pa_start, len, &destbuf); } remainder = len; do { - segsize = get_phys_buffer(dest + pa_start + padding - offset, remainder, &destbuf); + segsize = get_phys_buffer(dest + pa_start + KERN_PADDING - offset, remainder, &destbuf); bcopy(src, destbuf, segsize); remainder -= segsize; src += segsize; @@ -540,7 +554,7 @@ kboot_copyout(vm_offset_t src, void *dest, const size_t len) remainder = len; do { - segsize = get_phys_buffer(src + pa_start + padding - offset, remainder, &srcbuf); + segsize = get_phys_buffer(src + pa_start + KERN_PADDING - offset, remainder, &srcbuf); bcopy(srcbuf, dest, segsize); remainder -= segsize; src += segsize;