Received: by 2002:a05:6358:489b:b0:bb:da1:e618 with SMTP id x27csp6827382rwn; Tue, 13 Sep 2022 09:30:03 -0700 (PDT) X-Google-Smtp-Source: AA6agR5YXgB8QfesE2Q53YQ3g5Oe0GqG0nkqqT+ELgBnp0zcvx/MmrYTwRjxMjkqxZJni490y1DD X-Received: by 2002:a17:907:3f11:b0:77d:c6da:bade with SMTP id hq17-20020a1709073f1100b0077dc6dabademr7145886ejc.382.1663086602863; Tue, 13 Sep 2022 09:30:02 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1663086602; cv=none; d=google.com; s=arc-20160816; b=GCj3HyIG7CG3Ese181yXli6MkzyzWoAa+AZni3d+ywQ0GhaGlmhSDs4Cw3YrmkMZH3 PkUPli9KRFpKNUKGEzReTtQWGF590Myz02q/++dp2+Iz2y0zXt0DhYnI48/0mi7gSrqA Gw1s0wBFVf7ytuP+0AfCdpaRIOLFv3tz2FpjNjDzjn6Q5/xDEdZEasEwTr2jfQ4XIWDo ZmaJg7+k8L4bONYdw4ZujyU/XdCqDwUGZqmlsGcUN5xaidxn4T/TgLUCsKi76CxRJYSx 9WV/wMB18e011TG8BB+JIz+ByW5pxPL67T2Tn+Hjym4GuCFWqq1OcrTdgGIfFFwaZdms +CEg== 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=i+F9F9dNoSuDeK4oy8BSiUDLhI3VOwHZiX+FyQ08gZM=; b=q2lb7crix5IbOIJETvPzrFy0KwISpH/jlIC05/4oslxmvq+B4vZNtVW0I4cKJ1CHh9 FgsU5+cErAScxk6eV4Y48JfeGnS+g7ypPDZaLbM+kuSKtjVkl29hSfP64vfqpJxnVsn5 noIGJJDfWbZOnIefDh5UjekOBuo4Au/jmjta9YQm3umHHi7KiUtn0571NT17mvfRIrmX rwgmv3PzuXhL2/3rGamN7WjNO7IcErpgSQEWyHU1SvHUpNss7F520HQpUCHuI9W1FR+6 cNpjrbMB7Q8ZQ/+94lj1hCw0dqZWv/xFt7BxEoiVihEMJBlrtDVIrsrq0qS3yEwCvonC LB7A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=rSNF2zM5; 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 h9-20020a056402280900b00450d9c3012bsi11577919ede.518.2022.09.13.09.29.35; Tue, 13 Sep 2022 09:30:02 -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=rSNF2zM5; 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 S235877AbiIMPTo (ORCPT + 99 others); Tue, 13 Sep 2022 11:19:44 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56746 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235867AbiIMPSM (ORCPT ); Tue, 13 Sep 2022 11:18:12 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4C50B66137; Tue, 13 Sep 2022 07:35:03 -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 61D7D614E1; Tue, 13 Sep 2022 14:35:01 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 77CE6C433D6; Tue, 13 Sep 2022 14:35:00 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1663079700; bh=0cH85VvIYBOZ+pBLS98yG/BMwMyFTJk/yyn7iuR9B+E=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=rSNF2zM5abJsNqli1ss+JkIMYc23mpmAsKdyKzp76KOT9p6i6gw4bX3vzr+YSmmfb Q9gtYNWgA2jpPrEHIHS8mFnt4/9ei9/rtFkBEEQa6PipuQfqumxfbj1dz8liL/7TIg Kr7/eDGjg8dGIAbB0psmFbWafCuCJpQSmVNQAqIQ= 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.14 41/61] parisc: Add runtime check to prevent PA2.0 kernels on PA1.x machines Date: Tue, 13 Sep 2022 16:07:43 +0200 Message-Id: <20220913140348.521918153@linuxfoundation.org> X-Mailer: git-send-email 2.37.3 In-Reply-To: <20220913140346.422813036@linuxfoundation.org> References: <20220913140346.422813036@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 9b99eb0712ad1..2f570a5205866 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