From nobody Mon Nov 27 22:46:23 2023 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 4SfLKq57Cyz52jJK; Mon, 27 Nov 2023 22:46:23 +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 "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4SfLKq4K45z3Vgb; Mon, 27 Nov 2023 22:46:23 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1701125183; 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=4b9G3i8oAjqp49PAQsmy5G8Zulbv03uCx9ejd2+hgQw=; b=NY33YQQMHPizCu2lq935A5yKb57PrnR0AdIZBCRVl3oNVn0GhD2jiK5Mvmaclj4MS58Cmz MMtL3erGBpwQ5LpPT66MLuH4MZLKGZy03+fadRyGukESm+02bTA1GbcjUXNQ/LoIn34Fwq MTwMsUUFdRv19Btg/b9OC86nNiXz1xliGH1NEkJuZBtXeT5M9HSI/02xo4FHFLHJe2I5Pz Aft6e7ntPJRmfarUxsu2NHrxr7cbe2ZtqOtELVs+D8CE56ONkVKQe7EIfHf4eeBLya8FTg yOhsGl4nOf4s8Im/e4D/PtSp8vFTSi4KSNl0zFFxasSu4HqIduDW+abfxmcdlw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1701125183; 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=4b9G3i8oAjqp49PAQsmy5G8Zulbv03uCx9ejd2+hgQw=; b=hngwfvBPsiOGE0n7arcDWrYVKDOIN0xNZz/n/Msfj/5KSh8YMI4PyVXiaA1rFgVYuZlLJ3 WJUlqs+S/BUmYmqtd/+/qYJMntjNPet2wR5fvgCisASEACw3pjMJQ4P17QJu4yQVWP5cSQ X/dcHL5zACi15BZ/hPx4ILx2uUTMdKSgMp82BCvahu3AlNlW92RCe4zufxDmNd8Xa6PQfi 1MdPXf/hTaBT7ErH1DG8+u6LlxeACSdVZz6ug2kN00quI6rDAt1TccLkjqSXRaw9V332vd M0fU751doZUSNHTdKfLpwq7aSjKbFHZLYXfxvieH+6qdi1Y9zae3oVAMIqYJlQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1701125183; a=rsa-sha256; cv=none; b=HREYrXENnZ1IpEEj2LtKv/dpOYeU1ZKEhESZP7Qi+bNp92rGQ0DAKOJdAkGiAGdiLGM6a6 X+ComIAoJhDQZ+osQxtr9rLFTBVtkbOmr+0AoKTjY8iuftkXpZZbupzBhzG/HHSAcUbcY7 JTKce+hSAiF/Hi1izKcHM03puf0R4ytyHlcom68lTulKNFpLiK7Syr7PhmlNNXJCJGJjek 7trWTe4z3NIFHnpdT7MnpzwzSF0KPe+9iryj+m4hSuSmFgOj1M20ROqtkKhOr/ArX01IoA OqrG5nxuDzxLL6avJYHZGXhzXa6RJbwNa4RxpZPxSsBJIu2hm4S8IljLbW2d5w== 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 4SfLKq3BjDzwss; Mon, 27 Nov 2023 22:46:23 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 3ARMkN2n037270; Mon, 27 Nov 2023 22:46:23 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 3ARMkNS1037267; Mon, 27 Nov 2023 22:46:23 GMT (envelope-from git) Date: Mon, 27 Nov 2023 22:46:23 GMT Message-Id: <202311272246.3ARMkNS1037267@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: c596126a5d3d - main - pmbr: Only load the first 545k rather than error out 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: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@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: c596126a5d3d2ee015ee6807b4041efa5b9d9b07 Auto-Submitted: auto-generated The branch main has been updated by imp: URL: https://cgit.FreeBSD.org/src/commit/?id=c596126a5d3d2ee015ee6807b4041efa5b9d9b07 commit c596126a5d3d2ee015ee6807b4041efa5b9d9b07 Author: Warner Losh AuthorDate: 2023-11-27 22:40:40 +0000 Commit: Warner Losh CommitDate: 2023-11-27 22:45:56 +0000 pmbr: Only load the first 545k rather than error out It would be nice to have larger boot partitions for ESPs to live in one day. It's trivial to carve out 5M 10M or 200M when provisioning, but logistical issues may make it hard to do it after the fact. So only warn when the partition is > 545k. If we ever grow the boot loader larger than that, then it will be responsible for loading the rest anyway. Sponsored by: Netflix Reviewed by: tsoome Differential Revision: https://reviews.freebsd.org/D42774 --- stand/i386/pmbr/pmbr.S | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/stand/i386/pmbr/pmbr.S b/stand/i386/pmbr/pmbr.S index c61acbe261bd..60b26df15720 100644 --- a/stand/i386/pmbr/pmbr.S +++ b/stand/i386/pmbr/pmbr.S @@ -155,8 +155,10 @@ next_boot: addl $1,(%si) # Next LBA mov %es,%ax # Adjust segment for next addw $SECSIZE/16,%ax # sector cmp $0x9000,%ax # Don't load past 0x90000, - jae err_big # 545k should be enough for - mov %ax,%es # any boot code. :) + jb sz_ok # 545k should be enough for + call err_big # any boot code, but warn + mov $0x9000-SECSIZE/16,%ax # and truncate +sz_ok: mov %ax,%es jmp load_boot # # Move to the next partition. If we walk off the end of the sector, load @@ -203,17 +205,21 @@ getdrvparams: # # Various error message entry points. # -err_big: movw $msg_big,%si # "Boot loader too - jmp putstr # large" +err_big: movw $msg_big,%si # "Truncated + call putstr # to 545k" + ret err_pt: movw $msg_pt,%si # "Invalid partition - jmp putstr # table" + call putstr # table" +err_pt.1: jmp err_pt.1 # Await reset err_rd: movw $msg_rd,%si # "I/O error loading - jmp putstr # boot loader" + call putstr # boot loader" + jmp err_pt.1 err_noboot: movw $msg_noboot,%si # "Missing boot - jmp putstr # loader" + call putstr # loader" + jmp err_pt.1 # # Output an ASCIZ string to the console via the BIOS. # @@ -223,9 +229,9 @@ putstr.0: movw $0x7,%bx # Page:attribute putstr: lodsb # Get character testb %al,%al # End of string? jnz putstr.0 # No -putstr.1: jmp putstr.1 # Await reset + ret -msg_big: .asciz "Boot loader too large" +msg_big: .asciz "Loaded only 545k" msg_pt: .asciz "Invalid partition table" msg_rd: .asciz "I/O error loading boot loader" msg_noboot: .asciz "Missing boot loader"