Received: by 2002:a05:6358:489b:b0:bb:da1:e618 with SMTP id x27csp6770499rwn; Tue, 13 Sep 2022 08:48:18 -0700 (PDT) X-Google-Smtp-Source: AA6agR6H59jWXEc7fCtwuZHZvENKVHjwyy5T0x0d5cZnCdjBn70YSr353IVVu8Vp5rwWanXnFYGp X-Received: by 2002:a05:6402:520a:b0:450:fcc3:d321 with SMTP id s10-20020a056402520a00b00450fcc3d321mr18343139edd.327.1663084096830; Tue, 13 Sep 2022 08:48:16 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1663084096; cv=none; d=google.com; s=arc-20160816; b=U9MwsppHaJtg/RFzkT0Pq04JwaCMtFKMaixqsxvdNkzB2Dqy9kUkpU7QRgu82KwgvU Xt680OIOurRNiNPLB1Kl76RFQQP3sxRzDAyMkrre8uC5v5XFFequfwRWy877wLfXm4BS vbzS9kI734RADGTCh1uNttfJiVXHW0wWSoHDYzBjfIqiklXxtvPNCk0sAZ9FDu1E9xVJ C+HCf5EgZnOJ36C78zYOwMohJNgFX8yhYBKy3Hwew5NhTw07N7TNLSFnrOYM5w4MzTPA pVodKjyMPA5WPIZjhekAm2XU73r49SMUCIiSd8rZ0BrVHvu9t1pL5kq4wMeWkfbS2ENa eKdg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=nEIJm3qzaysmHlyy4/+ehA+l71SHATYVyqq6p6dNuzk=; b=fxUYWL3Xpz2FC8ChXIiZWig5WKT/1S3vFyEKdcHuwsOEd7xbrmagc2rwyFKryCG1CI pS74tthjIpYZjbCUdm0gU8LfdYlSWdN7Tg7evW+ZlzK2PdsP8LtRJK74qScSbyhZnrF1 J4qI4S+t1wJv8PdwjqE1TTEbiDEs5B4FCMGnK+3HjQDxouReTtfSn0prWkvaeAfBlELH wjb9TfIAJyp7+EJDNA9+rsR0yvzC+335TymqG/hzgZ4wdyzyM46yIoUXS64wkUhq5Jp+ ClZrq9tsgy9ll9Vv9uO2NLIr7k1Ma56nMUjF2SsL61YWUqqqHhdi5Nen1Ce03h6myCTR g8tg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=2nqRKvzG; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id d2-20020a170906040200b00732fd99cdb5si7249225eja.854.2022.09.13.08.47.48; Tue, 13 Sep 2022 08:48:16 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=2nqRKvzG; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235857AbiIMPRY (ORCPT + 99 others); Tue, 13 Sep 2022 11:17:24 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51832 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231932AbiIMPQP (ORCPT ); Tue, 13 Sep 2022 11:16:15 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9FC9A11466; Tue, 13 Sep 2022 07:34:25 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 94845614EE; Tue, 13 Sep 2022 14:32:05 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id A0785C433C1; Tue, 13 Sep 2022 14:32:04 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1663079525; bh=liXSGOfA48KdGblo1/n4YmJw3QleA2+6wHOtnX37PqI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=2nqRKvzG2JASxArhXIlzcRjT8jvgIchgPeHjYFobHaig6jfwfMCNLbeUGMcGEUTDl sywDkHN91Ba2bM1ZmE0UJ4CCumQl9cG9zGvcE0A9/FQZQe6RUdinsxZ0o7hbDGO92c O0XHwp9mSz6NRXVruLphXoAWjV8zIuQ4JHf3DXls= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Helge Deller , Sasha Levin Subject: [PATCH 4.19 52/79] parisc: Add runtime check to prevent PA2.0 kernels on PA1.x machines Date: Tue, 13 Sep 2022 16:07:10 +0200 Message-Id: <20220913140351.418026863@linuxfoundation.org> X-Mailer: git-send-email 2.37.3 In-Reply-To: <20220913140348.835121645@linuxfoundation.org> References: <20220913140348.835121645@linuxfoundation.org> User-Agent: quilt/0.67 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-7.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_HI, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Helge Deller [ Upstream commit 591d2108f3abc4db9f9073cae37cf3591fd250d6 ] If a 32-bit kernel was compiled for PA2.0 CPUs, it won't be able to run on machines with PA1.x CPUs. Add a check and bail out early if a PA1.x machine is detected. Signed-off-by: Helge Deller Signed-off-by: Sasha Levin --- arch/parisc/kernel/head.S | 43 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 42 insertions(+), 1 deletion(-) diff --git a/arch/parisc/kernel/head.S b/arch/parisc/kernel/head.S index f56cbab64ac10..92bc2fa7e6929 100644 --- a/arch/parisc/kernel/head.S +++ b/arch/parisc/kernel/head.S @@ -22,7 +22,7 @@ #include #include - .level PA_ASM_LEVEL + .level 1.1 __INITDATA ENTRY(boot_args) @@ -69,6 +69,47 @@ $bss_loop: stw,ma %arg2,4(%r1) stw,ma %arg3,4(%r1) +#if !defined(CONFIG_64BIT) && defined(CONFIG_PA20) + /* This 32-bit kernel was compiled for PA2.0 CPUs. Check current CPU + * and halt kernel if we detect a PA1.x CPU. */ + ldi 32,%r10 + mtctl %r10,%cr11 + .level 2.0 + mfctl,w %cr11,%r10 + .level 1.1 + comib,<>,n 0,%r10,$cpu_ok + + load32 PA(msg1),%arg0 + ldi msg1_end-msg1,%arg1 +$iodc_panic: + copy %arg0, %r10 + copy %arg1, %r11 + load32 PA(init_stack),%sp +#define MEM_CONS 0x3A0 + ldw MEM_CONS+32(%r0),%arg0 // HPA + ldi ENTRY_IO_COUT,%arg1 + ldw MEM_CONS+36(%r0),%arg2 // SPA + ldw MEM_CONS+8(%r0),%arg3 // layers + load32 PA(__bss_start),%r1 + stw %r1,-52(%sp) // arg4 + stw %r0,-56(%sp) // arg5 + stw %r10,-60(%sp) // arg6 = ptr to text + stw %r11,-64(%sp) // arg7 = len + stw %r0,-68(%sp) // arg8 + load32 PA(.iodc_panic_ret), %rp + ldw MEM_CONS+40(%r0),%r1 // ENTRY_IODC + bv,n (%r1) +.iodc_panic_ret: + b . /* wait endless with ... */ + or %r10,%r10,%r10 /* qemu idle sleep */ +msg1: .ascii "Can't boot kernel which was built for PA8x00 CPUs on this machine.\r\n" +msg1_end: + +$cpu_ok: +#endif + + .level PA_ASM_LEVEL + /* Initialize startup VM. Just map first 16/32 MB of memory */ load32 PA(swapper_pg_dir),%r4 mtctl %r4,%cr24 /* Initialize kernel root pointer */ -- 2.35.1