Received: by 2002:a05:6358:489b:b0:bb:da1:e618 with SMTP id x27csp6776143rwn; Tue, 13 Sep 2022 08:53:05 -0700 (PDT) X-Google-Smtp-Source: AA6agR7OnsHszaGOzsHQO9fufFQK49slJ+2OnnnPH0igKAOJWucPo3+kP5OtjFjHSW5GK6DuEs14 X-Received: by 2002:a17:906:8466:b0:77b:43e9:48b5 with SMTP id hx6-20020a170906846600b0077b43e948b5mr11068774ejc.254.1663084384772; Tue, 13 Sep 2022 08:53:04 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1663084384; cv=none; d=google.com; s=arc-20160816; b=DII/D9a3Xc0u/zElp6FIzP7q6e+UIhRHuqYoAytSupTrDLMWeTDXlyWMKJpCbogB6J g63o+BygQIFjAduCor5eglFFv0Wdpp6o1U8efRp1awU26NTVC8NZFheeVqvyZ/703yb6 rFvrtistTHIJ7Hm82GAeLWz2Kl5vwGue5HnwIczU1NipN5shM08YBkorQd5sqmfh4aUW RDH1J0AVhlQr+HebJOn0NfkMcFORBm2YIw+8eYee/0jC6rsi4hCwnHvQK337jTXc/wT2 Glm+Pn6bZdmtteNu0S4pi6vq1xVPU2cGPgqUyTcO+XkjuieCf/1+51ZiJecZ+2/2C5u2 kU3w== 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=kwPT+AmvoQ3kTCcrzhM9+InBlbYAXxUfZ3b3VkvsMUoWCcNh6vQVUHtUK4hxyLQO6Z VLWq98viOfuBLIKOs+eYyHFmlGtlh1K+BQzSfRHKxNFvrfKYs9l3ODVNBkR/vZeLwAlu o5bxiFn059/yLzF8LDRun0uNMDDMz6SyPloJiR2Hf5ZrLR1luYxhYuZ5GPAfspXEZr9+ uhjV1rtNzAk7PHMBsni0PIKnyidDTnfh9vA0oHn8Q4mbi/5PR966LtqbsaWME6gSyE/Y us/5HNdiWo1rWzgCVtBI8OAky2XCtgZxTImYgg865H6itLG1WsoOPMFGGeu8gdc1ZLN7 W8zQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=pCwvpqoH; 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 hg5-20020a1709072cc500b0078005ff79e2si1233247ejc.880.2022.09.13.08.52.37; Tue, 13 Sep 2022 08:53:04 -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=pCwvpqoH; 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 S236585AbiIMPbR (ORCPT + 99 others); Tue, 13 Sep 2022 11:31:17 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46544 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236611AbiIMP3N (ORCPT ); Tue, 13 Sep 2022 11:29:13 -0400 Received: from ams.source.kernel.org (ams.source.kernel.org [145.40.68.75]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0C6C86CD17; Tue, 13 Sep 2022 07:39:48 -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 ams.source.kernel.org (Postfix) with ESMTPS id 7847DB81025; Tue, 13 Sep 2022 14:37:53 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id CEFF0C433B5; Tue, 13 Sep 2022 14:37:51 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1663079872; bh=0cH85VvIYBOZ+pBLS98yG/BMwMyFTJk/yyn7iuR9B+E=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=pCwvpqoHc+i8eQz6qgJPmroQ88KWWJR5o0KM3SaoFDhY31cYRGjaFjTfqoALZCcqR Z0IiLpLSXtp0U69ia9urwgP0wEEtkkJ9wBxww9PXjI/tX00fy994KCIvLtgz95/XFY 0DyoYzXu9qCP8KcKGvh1oGxLmnRH+C6VFRyim6j0= 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.9 27/42] parisc: Add runtime check to prevent PA2.0 kernels on PA1.x machines Date: Tue, 13 Sep 2022 16:07:58 +0200 Message-Id: <20220913140343.691058185@linuxfoundation.org> X-Mailer: git-send-email 2.37.3 In-Reply-To: <20220913140342.228397194@linuxfoundation.org> References: <20220913140342.228397194@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