Received: by 2002:a25:6193:0:0:0:0:0 with SMTP id v141csp3405795ybb; Mon, 13 Apr 2020 07:25:43 -0700 (PDT) X-Google-Smtp-Source: APiQypLWn5R/eF7A6aCVfbl+RFRGGwugnnj3/11Hsw4iRi110kBgn07VmChJ10/AoH95HNnDQkwO X-Received: by 2002:a05:6402:17aa:: with SMTP id j10mr15680657edy.146.1586787942904; Mon, 13 Apr 2020 07:25:42 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1586787942; cv=none; d=google.com; s=arc-20160816; b=xa/j6MCjN69tZLA3WiTF+klhk0QDnAGSY3M+Qg1iLCczPITeV3uRnLfUVAiCvCarLI amsXB6i8dX+BT2fphoVLD5yDz7LxpOO1Dsl8dky41HTEbSe6IMnq5udcI2a/QaABuRXF TR0+Ij4+oIzQOD+xoJcDDPcdyB/wdmcun7x109suZqHV77xT9cVPPSQ1teYJfXDhj4af RW9U7AgNoPnSV9u78tGpNIH/OQ6bCKdIucNwwxGedBcwBGIW4YtT5qA3VU5CrAsykUOg cbaqes5oeYGwCDw6j91i80qCvv2K9bpiV3ZxvHFhUiTUtAd2zxC8tl7TxPnsy4qQhyfn cQ2g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:dkim-signature; bh=XvxhXtIy+wheS7yaW6bUKLtah9JhZFBpa3f8f0PzFw0=; b=G8tAlnH59qQ2S2mEolKnbpmlXGGIeWX52NX1aUe9prLP93chPg7pRsKJqZxeS3BgL2 fMmwdbTQ+hJ1BwiNc6sxCfgdtqZHn1o95BBxjdJLnyDzdyefoH719EB7os3proMFGkCa XUtldgy8NINUfxz/059pcU67svUa8l+lHTKYvHhMt10ELW8Hb9utc+U1zddWEncusNIU VVmC65ZccjcdfLOnspbreAPX+ZeyfK1OhPneGyM5vQw+Ck9nnbLiC1Jci7EuBzFHY+/x jXzz1g0OteWM3O5KR+k6R4aB3ODdzfxGKdZsQAaMrfs1L71duo9uj1DhtkHAudxhMqdw uQlg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=RrcG67ZJ; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id me19si6526289ejb.352.2020.04.13.07.25.11; Mon, 13 Apr 2020 07:25:42 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=RrcG67ZJ; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728609AbgDMKbB (ORCPT + 99 others); Mon, 13 Apr 2020 06:31:01 -0400 Received: from mail.kernel.org ([198.145.29.99]:51608 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727806AbgDMKbA (ORCPT ); Mon, 13 Apr 2020 06:31:00 -0400 Received: from mail-io1-f47.google.com (mail-io1-f47.google.com [209.85.166.47]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id C6FB52054F; Mon, 13 Apr 2020 10:30:59 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1586773859; bh=h01TVcjgIHX6FUskz6JjMnvCNlJroUk4jJme6wnS/LE=; h=References:In-Reply-To:From:Date:Subject:To:Cc:From; b=RrcG67ZJ3fAFvV98m4dH/lsCLeCQwwZzOqvt0QqkgSnLtSWRpwJw/OUZITKOHL2OF jUEqOPPAW0lzg8HIjIN87BNqQdLQIE2p+levrK3VTnqcr6RveBoc2R4sKQ83ZoI8L0 d+lqceYmVIy9MISfjBDFNYGYgIUGQD6FWtkBzA3g= Received: by mail-io1-f47.google.com with SMTP id m4so8845768ioq.6; Mon, 13 Apr 2020 03:30:59 -0700 (PDT) X-Gm-Message-State: AGi0PuaOjnc36AyxV+BqVTLIeID8Geu36iPo2F6Ju5+FCoPUcVI0rSeW Jt/FxbVQIMwFfW+bp9y9EFttM4lL85vdVmUOv/o= X-Received: by 2002:a6b:ef03:: with SMTP id k3mr4297625ioh.203.1586773859224; Mon, 13 Apr 2020 03:30:59 -0700 (PDT) MIME-Version: 1.0 References: <20200412024927.GA6884@dhcp-128-65.nay.redhat.com> In-Reply-To: <20200412024927.GA6884@dhcp-128-65.nay.redhat.com> From: Ard Biesheuvel Date: Mon, 13 Apr 2020 12:30:47 +0200 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH] efi/earlycon: fix early printk for wider fonts To: Dave Young Cc: linux-efi , Linux Kernel Mailing List Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Sun, 12 Apr 2020 at 04:49, Dave Young wrote: > > When I play with terminus fonts I noticed the efi early printk does > not work because the earlycon code assumes font width is 8. > > Here add the code to adapt with larger fonts. Tested with all kinds > of kernel built-in fonts on my laptop. Also tested with a local draft > patch for 14x28 !bold terminus font. > > Signed-off-by: Dave Young Thanks Dave. I tested this with the 10x18 font, which is utterly broken for efifb unless I apply this patch. I'll queue this as a fix. > --- > drivers/firmware/efi/earlycon.c | 14 ++++++++------ > 1 file changed, 8 insertions(+), 6 deletions(-) > > --- linux-x86.orig/drivers/firmware/efi/earlycon.c > +++ linux-x86/drivers/firmware/efi/earlycon.c > @@ -114,14 +114,16 @@ static void efi_earlycon_write_char(u32 > const u32 color_black = 0x00000000; > const u32 color_white = 0x00ffffff; > const u8 *src; > - u8 s8; > - int m; > + int m, n, bytes; > + u8 x; > > - src = font->data + c * font->height; > - s8 = *(src + h); > + bytes = BITS_TO_BYTES(font->width); > + src = font->data + c * font->height * bytes + h * bytes; > > - for (m = 0; m < 8; m++) { > - if ((s8 >> (7 - m)) & 1) > + for (m = 0; m < font->width; m++) { > + n = m % 8; > + x = *(src + m / 8); > + if ((x >> (7 - n)) & 1) > *dst = color_white; > else > *dst = color_black; >