Received: by 2002:a25:ab43:0:0:0:0:0 with SMTP id u61csp6659232ybi; Wed, 5 Jun 2019 04:34:19 -0700 (PDT) X-Google-Smtp-Source: APXvYqw7ijjwiKq0QNMkZvayTjfEHc1T0aMa55Jwf/G8ylwQJBJpqqcLIctYYOsufwtsp2q+wCVY X-Received: by 2002:a63:4419:: with SMTP id r25mr3792444pga.247.1559734459225; Wed, 05 Jun 2019 04:34:19 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1559734459; cv=none; d=google.com; s=arc-20160816; b=NcKGN7iApkC+6CeVFzJ3EE5DRraaTeLG+xIJkhK/9t8IdI5bMUQa2tJgG3z565WJK2 7cIBm/pJ78p3CNuf6Yt1GBlmk7DIVAKb0dAbawF08Z8gXQQ+iDyZnU8I+9W3WGZf3rHf afOytvcdxoVUaw2/XxyaEDPMV8Jw/4WNyokPbbSB9ak2fXJJWrVupm9lwuFHQUh6pLmI aVsTJW2EcxzeAvmXbxkZ1SVjrsaG7xYg1ywhiI5NP0VTslUL50hfi4wvNolXC0W9LbTK Mu5f0L1URd8I6ijtJwrFNES+OPmfMcqgR5iGyhJcrgOAi7S9p5ZXf6leebql+vhqHADD OfCQ== 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; bh=gKIrzdoUs9Q5HqSQ9aF++SWQgmsoIMMP53yLp9JAEhA=; b=xpb+TFGVoRv0/jBwmO4THFBqemLkEItxJ2ZMMzs3k9BadAeKY7gvMKSPy1GOL94Ipq f/V8mGzHWC4ZtH6UKNZ2oOn+rdGlTtc/1BHxYpPWQJV7GhXJoH21GQU4jn7arNM+Qb/u 2vU3Z/J4Z8+5GIIlYlryzHdtaRjj4WCoNFBL6MP3WRkUfjQAqKv67jA02ElNFFHQTGpW W/wLNO/H7Oj3KgYmzWfdbu9YuhcmLsjla+LIuPIvy9f9sc427XQPZYxbOdcjEY13EroI 1svoegB4zPc/Hy1OE7TynqXYTAoZH2r9X9SxL63aPwbcoukELIzdMcVeUMVJwSpzVpFy FCrQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id d12si29901236pla.121.2019.06.05.04.34.02; Wed, 05 Jun 2019 04:34:19 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727469AbfFELcv (ORCPT + 99 others); Wed, 5 Jun 2019 07:32:51 -0400 Received: from mail-ot1-f65.google.com ([209.85.210.65]:37007 "EHLO mail-ot1-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727289AbfFELcv (ORCPT ); Wed, 5 Jun 2019 07:32:51 -0400 Received: by mail-ot1-f65.google.com with SMTP id r10so389266otd.4 for ; Wed, 05 Jun 2019 04:32:50 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=gKIrzdoUs9Q5HqSQ9aF++SWQgmsoIMMP53yLp9JAEhA=; b=ASxSrmtV8oqK/ZrUUrLAnKBya9OZ/o3Il8yH+huWIb/QH7zeWh9Rh+cP7EZqXIdRAU NoQaXqlZQ9TKgmWJ3UJZvdJvtMQUYSNuPhvMiywhK8dGUKKppclgHcW+/G5IpEXUVOMk MZMS+sW3UQ3ys/GwXXHqpqgtDs0pUF0Pw4CBMQ6BW5/6jhE1/9cjNhTvFCQP92Roq/LC uENooC2Xd0TKfxdYypMkLzuU8WeHW+E3sdf8QKYZWwfMoDczuKyxBwq8Gb+cNXI+936B JIM6Gm3irK0Zoose0QBWX7SK0GbDrT3AfOOOc6OhVCfwwEzNCa2tlI065qrrivns56f3 MfwQ== X-Gm-Message-State: APjAAAWnDH04ikYPRZr9w3DNJ/9n94O8BrCVxeb06U7RSEzPSgXIXTfc d/o8DNh4o5tUIt7JlDqIUpvos/s1ShnGxokGHPVQVPeW X-Received: by 2002:a9d:7987:: with SMTP id h7mr9178825otm.284.1559734370049; Wed, 05 Jun 2019 04:32:50 -0700 (PDT) MIME-Version: 1.0 References: <90d30adb0943a11ab127808c03229ba657478df4.1559566521.git.christophe.leroy@c-s.fr> In-Reply-To: <90d30adb0943a11ab127808c03229ba657478df4.1559566521.git.christophe.leroy@c-s.fr> From: Mathieu Malaterre Date: Wed, 5 Jun 2019 13:32:39 +0200 Message-ID: Subject: Re: [PATCH] powerpc/32s: fix booting with CONFIG_PPC_EARLY_DEBUG_BOOTX To: Christophe Leroy Cc: Benjamin Herrenschmidt , Paul Mackerras , Michael Ellerman , LKML , linuxppc-dev 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 Mon, Jun 3, 2019 at 3:00 PM Christophe Leroy wrote: > > When booting through OF, setup_disp_bat() does nothing because > disp_BAT are not set. By change, it used to work because BOOTX > buffer is mapped 1:1 at address 0x81000000 by the bootloader, and > btext_setup_display() sets virt addr same as phys addr. > > But since commit 215b823707ce ("powerpc/32s: set up an early static > hash table for KASAN."), a temporary page table overrides the > bootloader mapping. > > This 0x81000000 is also problematic with the newly implemented > Kernel Userspace Access Protection (KUAP) because it is within user > address space. > > This patch fixes those issues by properly setting disp_BAT through > a call to btext_prepare_BAT(), allowing setup_disp_bat() to > properly setup BAT3 for early bootx screen buffer access. > > Reported-by: Mathieu Malaterre > Fixes: 215b823707ce ("powerpc/32s: set up an early static hash table for KASAN.") > Signed-off-by: Christophe Leroy The patch below does fix the symptoms I reported. Tested with CONFIG_KASAN=n : Tested-by: Mathieu Malaterre Thanks ! > --- > arch/powerpc/include/asm/btext.h | 4 ++++ > arch/powerpc/kernel/prom_init.c | 1 + > arch/powerpc/kernel/prom_init_check.sh | 2 +- > 3 files changed, 6 insertions(+), 1 deletion(-) > > diff --git a/arch/powerpc/include/asm/btext.h b/arch/powerpc/include/asm/btext.h > index 3ffad030393c..461b0f193864 100644 > --- a/arch/powerpc/include/asm/btext.h > +++ b/arch/powerpc/include/asm/btext.h > @@ -13,7 +13,11 @@ extern void btext_update_display(unsigned long phys, int width, int height, > int depth, int pitch); > extern void btext_setup_display(int width, int height, int depth, int pitch, > unsigned long address); > +#ifdef CONFIG_PPC32 > extern void btext_prepare_BAT(void); > +#else > +static inline void btext_prepare_BAT(void) { } > +#endif > extern void btext_map(void); > extern void btext_unmap(void); > > diff --git a/arch/powerpc/kernel/prom_init.c b/arch/powerpc/kernel/prom_init.c > index 3555cad7bdde..ed446b7ea164 100644 > --- a/arch/powerpc/kernel/prom_init.c > +++ b/arch/powerpc/kernel/prom_init.c > @@ -2336,6 +2336,7 @@ static void __init prom_check_displays(void) > prom_printf("W=%d H=%d LB=%d addr=0x%x\n", > width, height, pitch, addr); > btext_setup_display(width, height, 8, pitch, addr); > + btext_prepare_BAT(); > } > #endif /* CONFIG_PPC_EARLY_DEBUG_BOOTX */ > } > diff --git a/arch/powerpc/kernel/prom_init_check.sh b/arch/powerpc/kernel/prom_init_check.sh > index 518d416971c1..160bef0d553d 100644 > --- a/arch/powerpc/kernel/prom_init_check.sh > +++ b/arch/powerpc/kernel/prom_init_check.sh > @@ -24,7 +24,7 @@ fi > WHITELIST="add_reloc_offset __bss_start __bss_stop copy_and_flush > _end enter_prom $MEM_FUNCS reloc_offset __secondary_hold > __secondary_hold_acknowledge __secondary_hold_spinloop __start > -logo_linux_clut224 > +logo_linux_clut224 btext_prepare_BAT > reloc_got2 kernstart_addr memstart_addr linux_banner _stext > __prom_init_toc_start __prom_init_toc_end btext_setup_display TOC." > > -- > 2.13.3 >