From nobody Sun May 11 23:09:32 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 4ZwdjT11XXz5wXnd; Sun, 11 May 2025 23:09:33 +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 4ZwdjS5rpcz3hTN; Sun, 11 May 2025 23:09:32 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1747004972; 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=8FE7SFPpOHZVmiqqALqUuPO5MSoPhKYb4WRrVKALczw=; b=B8n57Pe5YPedtE3PY/zkla0+PfKpch0xK13QncO5U1n8NUBrnVrfnvq5WJxxgN9O9DoNuQ E4DfV9VLBqyMNtFKSwpK9mEd3ApUFosKdF2HE6Bq75xdETXDuwZb8vpcwgP4opuAgDcITD 25leHfieQpi2ei5FC6RcYGYOVYEjDZ21SEgHAw/VhwLC6Lbdwo5m17E1RdCELv80xfXW+N W7FpTWj8TdLEaR49ujSldJ3AO1N/Q2v9lFLj9J4tRkckvxP4PJIwWSkWrwuGxnogJdHvEC SClzdMWIDlzC1dtFWbKB42Xughw+bfRiOoK5HazWBfgvPlFfz27HI2tP9DPdXQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1747004972; 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=8FE7SFPpOHZVmiqqALqUuPO5MSoPhKYb4WRrVKALczw=; b=f6wJDiXn/68A2iH6oPGF1kP2Vucr3yBLN/FNbsOhjENp3h/Pcfmpa2u17INNYdnSMBINSP uwaeg64iBsU+vm9S2TsWgiDvFVnEXsThis4+uDhWJCP6ZRaHFHlKG8O+0o90G+uP8Wjlu/ raqDZmFnfIYLsZhFSFMdvSZ8D/9hw2s9x54VwHTwhh5rW/6ilHlL2K63SXly+qRGy77ufK lnWL2/tsWY1gwdcf1IlwzhcnM0D5XE1fMqBLfZMyAxmvIamLYS8ZJqXGulN2yhvMW0UQvn jW9Lz5rj4qGoUERYCPMSCO24W+mTvMVFdE2BmmYtQbiqHGJqW269ShOCHmzOhQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1747004972; a=rsa-sha256; cv=none; b=xzRAV4bDFJV8RJa4msT4VXG6aI47uyWYQ7r+PPQ3uHhB39zOtu5aFykERymP/obI58TJxr U40mO0DLb/57HdPll+QCejf0AyA88N4S8YPaiP25v+H5qfp+Kv/4ZzYKy6tWL55YA1ZxvB 8TVFXyVliMvCDy5KPvAad9b6NGcWHvozS9T620RCUSmOdhix1iARsIz+tfqqDipHSIujJ5 tCVnp1zIQVYLJTnjXzLhAfh9cIfKRjAly1Abj8eMAiiKsM3BnjQouSq3NRd+7bnvwOKG/2 hg4zR4hIByCWbPg4mQirx6ontVrYJI7aFkjFZO4soA1zo9UHD/GKzxLsyxIk2g== 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 4ZwdjS4zf0zrSS; Sun, 11 May 2025 23:09:32 +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 54BN9W6D041502; Sun, 11 May 2025 23:09:32 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 54BN9WSo041499; Sun, 11 May 2025 23:09:32 GMT (envelope-from git) Date: Sun, 11 May 2025 23:09:32 GMT Message-Id: <202505112309.54BN9WSo041499@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Toomas Soome Subject: git: 5e25f7b09977 - main - loader: loader can pick too large font 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: tsoome X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 5e25f7b09977002b069946e82055f26e0f4aec8d Auto-Submitted: auto-generated The branch main has been updated by tsoome: URL: https://cgit.FreeBSD.org/src/commit/?id=5e25f7b09977002b069946e82055f26e0f4aec8d commit 5e25f7b09977002b069946e82055f26e0f4aec8d Author: Toomas Soome AuthorDate: 2025-05-11 23:07:15 +0000 Commit: Toomas Soome CommitDate: 2025-05-11 23:07:15 +0000 loader: loader can pick too large font While calculating font size based on EDID data, we can end up selecting too large font and too small terminal. Add check to prevent it. Tested by: bz, ziaee Reviewed by: adrian Differential Revision: https://reviews.freebsd.org/D50258 --- stand/common/gfx_fb.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/stand/common/gfx_fb.c b/stand/common/gfx_fb.c index efb210dff210..ad38a657e233 100644 --- a/stand/common/gfx_fb.c +++ b/stand/common/gfx_fb.c @@ -2054,7 +2054,8 @@ gfx_get_ppi(void) * not smaller than calculated size value. */ static vt_font_bitmap_data_t * -gfx_get_font(void) +gfx_get_font(teken_unit_t rows, teken_unit_t cols, teken_unit_t height, + teken_unit_t width) { unsigned ppi, size; vt_font_bitmap_data_t *font = NULL; @@ -2077,6 +2078,14 @@ gfx_get_font(void) size = roundup(size * 2, 10) / 10; STAILQ_FOREACH(fl, &fonts, font_next) { + /* + * Skip too large fonts. + */ + font = fl->font_data; + if (height / font->vfbd_height < rows && + width / font->vfbd_width < cols) + continue; + next = STAILQ_NEXT(fl, font_next); /* @@ -2084,7 +2093,6 @@ gfx_get_font(void) * we have our font. Make sure, it actually is loaded. */ if (next == NULL || next->font_data->vfbd_height < size) { - font = fl->font_data; if (font->vfbd_font == NULL || fl->font_flags == FONT_RELOAD) { if (fl->font_load != NULL && @@ -2093,6 +2101,7 @@ gfx_get_font(void) } break; } + font = NULL; } return (font); @@ -2123,7 +2132,7 @@ set_font(teken_unit_t *rows, teken_unit_t *cols, teken_unit_t h, teken_unit_t w) } if (font == NULL) - font = gfx_get_font(); + font = gfx_get_font(*rows, *cols, h, w); if (font != NULL) { *rows = height / font->vfbd_height;