From patchwork Tue May 17 15:29:43 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Helge Deller X-Patchwork-Id: 12852687 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id D5B3AC4332F for ; Tue, 17 May 2022 15:30:01 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236666AbiEQPaB (ORCPT ); Tue, 17 May 2022 11:30:01 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50702 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231574AbiEQP37 (ORCPT ); Tue, 17 May 2022 11:29:59 -0400 Received: from mout.gmx.net (mout.gmx.net [212.227.17.21]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 09DE04F9D6 for ; Tue, 17 May 2022 08:29:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1652801387; bh=AtI6cxJvlls7QPJfLLVkiiWMpWtq0jk94S2/6mm1TS8=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date; b=k9tTqfzPyMWykSkZep5biNVyX9Hia/38UCpvFVeEOIw2wJkypEK/qFESWzXrzMRia bpseQgptH4ls2uaUyTkW+7zC1sZ+eWhjM3W2llF1r9YZaAgLjQ2j0dtWE05E1aCS0l 7tByly1EdgCbYXJFbrPHw/wD29a8ON634/Kic+G0= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from p100.fritz.box ([92.116.173.219]) by mail.gmx.net (mrgmx105 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MEm27-1o5UnY3IKp-00GF6R; Tue, 17 May 2022 17:29:47 +0200 From: Helge Deller To: linux-parisc@vger.kernel.org Cc: James Bottomley , John David Anglin Subject: [PATCH 1/4] parisc: Prevent ldil() to sign-extend into upper 32 bits Date: Tue, 17 May 2022 17:29:43 +0200 Message-Id: <20220517152946.187638-1-deller@gmx.de> X-Mailer: git-send-email 2.35.3 MIME-Version: 1.0 X-Provags-ID: V03:K1:BiAdXxMYj7wYHI+jQreb66Rgufktb9unCLIEZpU+0fOTUnLWxU/ yPmKjAyP9OrRt5XuTRWscoOVJ8/l6aK4op3++cpe4cz03qF0bwuWd0H3/7PDzKdTTshJSeJ U8QWXt8eh9w4gxiWNn5W0V7QZ7itLsy+GEBeha7jaJZJHSA45Ekc1jwqUtjL0qBtqUVWcOb GVrZwYyIYjPMoY3o+uwyA== X-UI-Out-Filterresults: notjunk:1;V03:K0:H5fpUgZo7x0=:1E9e5mFuPLieqVTabB12Kp nmZxKwDs+wKtb4KTeuV0VpzmKku1o6XaCyk9GF0VnNvb7x1wSs2zWlEVPMHGj258W1IJxTesV rFiOnOLOFZdIXTqHnz4ldbOV3gJSfyuXvwKripG4CT0sKjvgVcYt2TfSovjt5CHyGXjys90aI czoQVa7DUtpQH7qzZlww/ilpxTSJ6ts9gn4wgQhwrEpIIR+r1eHmWKseticlewxGZlVuOYm7+ 7UlYXB6Ah2QS5TX2JZBzxNLnNyu9wG6Gc9diicaf7SlXXiJjLHkZ/p349BMO6rGD8jKH+r10v 6/4+riyG+cMglFTh0FnGzlrEkQwC+0DfHwA6/6/1f52YqEQHsNFWwnGRa61RJaRm6wfMckJom j9ayIRLhwTxbXrUNop1dtf+y+FtFrbG72mXNq1x2n1RoeC8ds+KxD8ngGDiVlgTCiNcX29oZW 4Dy0e5imdFxy3vOq2bagRMOuQeVo/fhTXpskTRenW9PkuoWGXMoWrQmoeXl+/TpGhsXY6z3n5 bxxvkIOXD02uZMkXDajsruw1ptzre4CLb3r1ldYy50SMJldfrJkQX/8jfJq5mseon4yfi8RPe KSnCQ5zRQHTFO1+oTjyo6M5+NsWMFrD1vZbrv1ZjB9T0t0TFfY3avjwjfmNwC7vhzijF2gqVk r74DN8uF6FZh3MeUJNCd5lZYL9ZSHO9w/ltF5wyEyG7fPr9aDhfRaxkrHZx1ol3IW6Jn4aQLJ xefmiYTVR1L5/LXXKeQE1JYUMvsalDTE51zjCt4c65Nh10dTJn8PpKcYZPejHdAiCsuRUMCDX TeScMhH6Apj1tc5RXY2vBaEeCY/6amWbq/15E+FzRdeBFQB25DOOAi0/P5nRq7OaDcuSQaPHt dqKhdOyaqEfqKjUhQc+figX1mFkRSRaG8fiPCwtTUY88HKKrn+J75itmag7+Nb2jrT7gs9yNO MtPazAK9XjuA0WtmN592V15CgLw5rJA6y7FkdRoW3PFFQPt+bbv14L7D359iaPxypxvK94cBS 1rS7jPYgJJDp154k9nWFIUBa81GXVtUJSUw4DodeU+3NkvJzxJYrMhH0QouykuREwKDAXwBnm VjovDETuJEwue6UE5bITJ0xn/QD/MqJ3ItRaSZJW2I4JrzC/Q7qqZu6Ag== Precedence: bulk List-ID: X-Mailing-List: linux-parisc@vger.kernel.org Add some build time checks to prevent that the various usages of "ldil L%(TMPALIAS_MAP_START), %reg" sign-extends into the upper 32 bits when building a 64-bit kernel. Signed-off-by: Helge Deller --- arch/parisc/mm/init.c | 6 ++++++ 1 file changed, 6 insertions(+) -- 2.35.3 diff --git a/arch/parisc/mm/init.c b/arch/parisc/mm/init.c index 1dc2e88e7b04..0a81499dd35e 100644 --- a/arch/parisc/mm/init.c +++ b/arch/parisc/mm/init.c @@ -555,6 +555,12 @@ void __init mem_init(void) BUILD_BUG_ON(PT_INITIAL > PTRS_PER_PGD); #endif +#ifdef CONFIG_64BIT + /* avoid ldil_%L() asm statements to sign-extend into upper 32-bits */ + BUILD_BUG_ON(__PAGE_OFFSET >= 0x80000000); + BUILD_BUG_ON(TMPALIAS_MAP_START >= 0x80000000); +#endif + high_memory = __va((max_pfn << PAGE_SHIFT)); set_max_mapnr(max_low_pfn); memblock_free_all(); From patchwork Tue May 17 15:29:44 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Helge Deller X-Patchwork-Id: 12852686 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 839E3C433FE for ; Tue, 17 May 2022 15:30:01 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S243726AbiEQPaA (ORCPT ); Tue, 17 May 2022 11:30:00 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50700 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236666AbiEQP37 (ORCPT ); Tue, 17 May 2022 11:29:59 -0400 Received: from mout.gmx.net (mout.gmx.net [212.227.17.21]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E023A4F9CA for ; Tue, 17 May 2022 08:29:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1652801388; bh=rQE/QQszg9caukrVw+WOK8hY+UhT3DXviwVBj3XbWv0=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:In-Reply-To:References; b=lezkhdhRwU/Y6cCD/+8V1z6KxBLxkqwmpvZCsxI+SfnRbWL6UClU/Gcykg9xf4NPU F8X+LHd5ykKYZqu+uBapoOJZC5xMhbxPS01ddC+gC7BIa+TI78gCLsb2YUWGeolTzn nwD+ycw7iuq4QOb7+qpSflbWR9V5lvEkv7EC2PGA= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from p100.fritz.box ([92.116.173.219]) by mail.gmx.net (mrgmx105 [212.227.17.168]) with ESMTPSA (Nemesis) id 1N9Mtg-1nnYqN3lki-015KgW; Tue, 17 May 2022 17:29:47 +0200 From: Helge Deller To: linux-parisc@vger.kernel.org Cc: James Bottomley , John David Anglin Subject: [PATCH 2/4] parisc: Fix comment for shr macro - usage of same registers are allowed Date: Tue, 17 May 2022 17:29:44 +0200 Message-Id: <20220517152946.187638-2-deller@gmx.de> X-Mailer: git-send-email 2.35.3 In-Reply-To: <20220517152946.187638-1-deller@gmx.de> References: <20220517152946.187638-1-deller@gmx.de> MIME-Version: 1.0 X-Provags-ID: V03:K1:jeM6JNMUow3PBfq6uEZyjnNT/hweUMmmUSCl/f2iCTJz1sr08Hn pAEq7Od5C28ifQbTkihvTW8MR+xA6ae6r3SCfWYxnItngvWrU0A25ouykRIboZSpKMc4lia vMsq3Kh5sKYDTJ6djsZnmkaVvqpJlNdViI3xUnlm0CtPYAzbdUrF6yidVzsizH01ClBArAi FR43UbHZAE+1Nai2dcC1A== X-UI-Out-Filterresults: notjunk:1;V03:K0:KvFb7XsDQ1w=:YDC3dSoXQeUDu0HinBlcQI NOoNrJbhSEZKEyJc5Ai7/Q0hZv1XKW5gWvtPW3cWYx6+ljrSRChkWT4eqlwqc32GWUu+dez3z Pqnik0cb9weLB5Ukh2OMs9qW3eRsmWyK+ANNoKQR5orm7hv5Ipbd7jUhZhxN0ie4ZYDc/U/h7 oPKd8NDhev7h1w1/FMwJpU6KGT+BwpStDmhDLu57Bxm9y9TFGuS6rSGRkKOuiBZvBTNDyGKxF s8PF0YjePvqUW3lJr+vH1iqpFv4j1uGqOyTwU8+5+hnL8wCwyuS7UTUV/DboaxrqaYrx9rtuK bacpF/5NcgV9E/9brIr0/DASVyXXu2F5R6jTUAk0q6np/tUSWc9odN2lvphk0unNd6ohLgFYQ eB749i0DBFqjXiNaWjWar2QC0LNm3yyRCwean9CgpHXxaP0xGdKpYGvZa3vV+WmCu7TWEFOg5 I2XHborqzt8SyTZJdHZ7B/aC4luiTtb8PpY7pwHblfZ6pbYjWVo6W+XL06/e8fTxoiaS25KL1 /yBZ+8J8lXpxzSzyyTC0zgPZXpU4zFBFLFA3fj8rEoRw1nG9Rif/OZnm585DW1XiuQA6y7GDn VMZeWsmPr0Zu94DJCuQvc14JbTqpl4UslAU6HRYV05Dut7xXqR5LwegE9q4k1rBJryXIXt+uV cOTNQ+aFQ03mPaKvlDtpAN+TTrwsDzPnzDMEKrmiLHLrZM321h2GmgLHUcSu16czJaakN2pmI p9sLjaUURs47NG94rCL4OitFY6HnC9gGOn2z6CsIjdezts/G0ekHtikoGnNxKbNVrhiCXzmcf mKP84A9etJzMwXDdp5nJn7EX82++XapetpymHGrYjLXP45VGNtmMZLbuBqM7Wf544UV9CktWB BwmmeXCgZNdpVwEDfzUmMCRjMCWMvYxUGfA7/FaS2TbQy+ADzCYRMf8SvGIwS1wwa4ogZojVQ PtdORYiJVsrMTFi2gIJNJzQIzaIwmBLYIk3lKR2Vq3mBDDDM/BPGOnTBRdWeBgUkey5IgdoAK 1cVhJ5lZs6gGGMf3MlXzl7Iv7dXgPY267ca2KhMg8JCFU4+x7GxwMDXUplxhNnD/ElAwu0EYg g0H48tG4BXrmrIoIajH5Rc9am3UmdvKXtm9UMaoYXjF0eLUB4axHcXEew== Precedence: bulk List-ID: X-Mailing-List: linux-parisc@vger.kernel.org The comment that the source and target register can not be the same is wrong. Instead on PA2.0 use of extru can clobber upper 32-bits. This patch fixes the comment. Signed-off-by: Helge Deller --- arch/parisc/include/asm/assembly.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -- 2.35.3 diff --git a/arch/parisc/include/asm/assembly.h b/arch/parisc/include/asm/assembly.h index ea0cb318b13d..be784b41048c 100644 --- a/arch/parisc/include/asm/assembly.h +++ b/arch/parisc/include/asm/assembly.h @@ -143,7 +143,7 @@ depd,z \r, 63-(\sa), 64-(\sa), \t .endm - /* Shift Right - note the r and t can NOT be the same! */ + /* Shift Right for 32-bit. Clobbers upper 32-bit on PA2.0. */ .macro shr r, sa, t extru \r, 31-(\sa), 32-(\sa), \t .endm From patchwork Tue May 17 15:29:45 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Helge Deller X-Patchwork-Id: 12852685 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 3BE4EC433F5 for ; Tue, 17 May 2022 15:30:01 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230243AbiEQPaA (ORCPT ); Tue, 17 May 2022 11:30:00 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50704 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S243726AbiEQP37 (ORCPT ); Tue, 17 May 2022 11:29:59 -0400 Received: from mout.gmx.net (mout.gmx.net [212.227.17.20]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9FEFB4F9D9 for ; Tue, 17 May 2022 08:29:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1652801388; bh=Fc5qIZe4rJNu60cudMzST+OOzayPFdm81IC5dlxgg+Q=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:In-Reply-To:References; b=ijx4jIG+Aj5fIBOzEGcfu/PB7cYcDnBwB5aQEnNMPtloPoLJdtImbDrcL1gKXPeqa 71036BcRGfvyz0jlgGPHklD6Q/Iy1mefQcKzuG/fjUHwVwD34/25WjAvJUK07oiIz0 dSMi7AnlMiWRRMxeb4AQPAF+6BAFWWZqzrtf6O1c= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from p100.fritz.box ([92.116.173.219]) by mail.gmx.net (mrgmx105 [212.227.17.168]) with ESMTPSA (Nemesis) id 1Mdvqg-1nIC5a0Cko-00b2Gs; Tue, 17 May 2022 17:29:48 +0200 From: Helge Deller To: linux-parisc@vger.kernel.org Cc: James Bottomley , John David Anglin Subject: [PATCH 3/4] parisc: Add a dep_safe() macro to deposit a value in 32- and 64-kernels Date: Tue, 17 May 2022 17:29:45 +0200 Message-Id: <20220517152946.187638-3-deller@gmx.de> X-Mailer: git-send-email 2.35.3 In-Reply-To: <20220517152946.187638-1-deller@gmx.de> References: <20220517152946.187638-1-deller@gmx.de> MIME-Version: 1.0 X-Provags-ID: V03:K1:ICe8WgMcN26e0X8+pa7e28VYDlhrjKMRjsd3uQQkCDQ5fZtW7wr ZevNBA7/F7gaPl4k/ChZrMG7mxChomwlX88KOZwhpeqCsVV5VSHJQiH/te0juReuOPtvHA6 HoLvF0DtJFkl1sXT/QfL4xk/SFQ39mDuXMSkD1mJg/pfapMwwcNYJ6cLHHAzg2TT1vOCZZ+ zw3qvcMgZIo4XGk11IzWA== X-UI-Out-Filterresults: notjunk:1;V03:K0:Nr0InANdU5s=:ajk7w0T1Ub93dzH06qtEFU XkIu2ImHFzGjG3riXZ1TRicx5O0j9M48JC/n6xhNicGBufXf6809hwn/7Di4PFxPSR0WgYafy /QX4dedfcBVvATDz5cxMITkM8bjRo3gzuY8wXm9eWdNdsOZY6nc9g8/5Y4mzy3xWWpEUUWuR6 mawicLXpBDVxaOvZRTNjySCTj/gL7t1KO0iXNPwNrq2NCjvSSEonHRKp78HevvBDAN86shXiq U/sYJs2H/E2Z5Alqx+logBbZRItHsK5wRYspybDXzmRur8ZIFHwUrNJv3Q6F8SjI/c7x4Ic/I A+l01EwgavJXugiDLZ6gaJ1WOz59rx+gTkuHqy4HLC7iP4d5suGmjUG3nsEgonDktxwqML/NO pypzoDPIMnohjUWEl/g04dIY9cqf97gihYduXcVsPG6Y8A/+anSaPW6LNfxZz4cxibEs4sa0H H8OqHOYqF/g9i5zkUlH+L7yT9hlSSvIkzQmD+7OF2cV1FZLZmArnDWXAFjfEOAbxL9/OWKlrd 9dI/JQmIPKHhR5iGOKCW8/4OFhnmqutpuy6Sk5n93MXeci9sZl+yEhx1T0UxIRofaE/qh6MMx eZXXX2ROq4K65j0vp0DDfuupqQD3m8mZOTWpxgKUQxx7v4NWkP1Fh+wxM5MrkYmyu5leX1Ko9 dfbhWgMpzGPgc+fUb4pIT+EKC3EAE7i6S8YdPvAuuDlDy9sq0e93WYpCtvhCAoQ/Bs1/Hk24p oSszfSKYsSOYjnjwiz2nR59Q8NaZNU4CfEijw38uzmKkf1xRzhVqjtWI8EyugVmUCRaBDD/Br zV0Tx/cnRLVBpQFXbYH4Pv1bKtdMzw2nUzjj7qnrhCjtbkK0JFM5NLNSpaduOEve17UmgkaA1 8OLhg46a2/7NWkDECmGYy0Xz76UPccX4mghGzpkSelgZXH6KToeFY0r44fO/5yQxmqZteHgxm 18swdXV0GVlXTsl2s7qtGYdyIwmnAN9W5uo52OrNY6bvaKwoA+6nwJkpZaWbKi/sxmeF7mz+e nkGzSYhN3r13BYIt82douUGCS8E6fDrwe9mr3j7OACbUwgj4R6kxgmJZgPpdL1MtFwgkd50kw ouaiaL0sWZ8Q+cxLEVOcR3AKsDoUTZcNqqncjXMVxfpci90vSEABFKHbA== Precedence: bulk List-ID: X-Mailing-List: linux-parisc@vger.kernel.org Signed-off-by: Helge Deller --- arch/parisc/include/asm/assembly.h | 10 ++++++++++ 1 file changed, 10 insertions(+) -- 2.35.3 diff --git a/arch/parisc/include/asm/assembly.h b/arch/parisc/include/asm/assembly.h index be784b41048c..0f0d4a496fef 100644 --- a/arch/parisc/include/asm/assembly.h +++ b/arch/parisc/include/asm/assembly.h @@ -174,6 +174,16 @@ #endif .endm + /* The depw instruction leaves the most significant 32 bits of the + * target register in an undefined state on PA 2.0 systems. */ + .macro dep_safe i, p, len, t +#ifdef CONFIG_64BIT + depd \i, 32+(\p), \len, \t +#else + depw \i, \p, \len, \t +#endif + .endm + /* load 32-bit 'value' into 'reg' compensating for the ldil * sign-extension when running in wide mode. * WARNING!! neither 'value' nor 'reg' can be expressions From patchwork Tue May 17 15:29:46 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Helge Deller X-Patchwork-Id: 12852684 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 37BAAC433EF for ; Tue, 17 May 2022 15:30:00 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1348825AbiEQP37 (ORCPT ); Tue, 17 May 2022 11:29:59 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50698 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230243AbiEQP37 (ORCPT ); Tue, 17 May 2022 11:29:59 -0400 Received: from mout.gmx.net (mout.gmx.net [212.227.17.22]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C01904F9C7 for ; Tue, 17 May 2022 08:29:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1652801388; bh=iIVB+hrru/oy4IYiyGN+pLm4Cy/9LJ+xUoIumTDXfVQ=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:In-Reply-To:References; b=bJ33LtUY1AQsx7J7pScUOgIvlOX6/HnpjuuE7iQAWTOQmYH54l8bsMmc3f2x/iXzJ e4nzCdnQhrRrEk9+TucgR28HIjQz1crf9HD2MCVr6EJNil3Sv4393ksK10WLc/qtyy NSJ0YytcEAlfIL4fdJ3apcTd9UxtgeP19VNF8FH8= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from p100.fritz.box ([92.116.173.219]) by mail.gmx.net (mrgmx105 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MfpOT-1nNwqz0eSn-00gGGP; Tue, 17 May 2022 17:29:48 +0200 From: Helge Deller To: linux-parisc@vger.kernel.org Cc: James Bottomley , John David Anglin Subject: [PATCH 4/4] parisc: Optimize tmpalias function calls Date: Tue, 17 May 2022 17:29:46 +0200 Message-Id: <20220517152946.187638-4-deller@gmx.de> X-Mailer: git-send-email 2.35.3 In-Reply-To: <20220517152946.187638-1-deller@gmx.de> References: <20220517152946.187638-1-deller@gmx.de> MIME-Version: 1.0 X-Provags-ID: V03:K1:c++TCu6ejDZUq6bFWXk9VKabhNGhgiU2ytse4928Uxu7sh198GT 4WnYMICNyVQIzHNl0vSoV0dBRIpsjXcFBm/1pIhZKtc+V3Xpz3RYswIB0Lr7IQmBrZzY5SB XFgg0d3bFJ2cPPvrKdxHoW2aPMpH+C9/KYXNdJSYpTvmJCeh0oOhwqhO4l856m9QWG1ALub AfX8St4iiY2KOct574wWQ== X-UI-Out-Filterresults: notjunk:1;V03:K0:nmWk8QNt0ng=:Fr93QSywCqvBuYGER98UPC 6ru6tLGNnIgX4ol8Y1yOzq0ruXOa6g5LW/5jojywit3J7wAl5jfELtj4EGaa+2Nq/ak2tJPyl TRosXO+BPrw8+6VX/hLWJ+FqdSiyM2D84Gj2BMUE+HOBH0bptNOZKSOVze3DJhYVz+EWpsMqp 3h5l/t7LlMnhVbotwHLZ3xitwAmA30CE+iJCPqQASWeUnXBtbaOWjpMT1y+LsD4ZOrk5rVwMI F0wz6iqlF+WPFo3t1lkDF2v5mE1fOvweytUelp9CTID4RJfxxd1f9uy6/053EjdYSWamk2VRm puD0pv79EmAF8a54b/tvQgHm4QweLgbb57vvEOdSVP1to4GzXc9yJ6+qpbge+BN/5jeyzbtwu DDzin8Wf4bilXofponTaPBreGM7cF2C1CkpZGfHWqJkhjPkaVebIU7Ddogx8g+FbqwuChyw3h BoElYRNrV6inTElGjtRfXVxPWM55v/gXwXpUWeNd4dMxB2VdEzYTYaZVEr9erZfeMP3bDHUT6 tDIFs0yfo49LnaKErPM96Nl5J3pPPJM6M+zuHFbB4WNwiT9fzcVJ6zmgKsKek7bUarKL/wUFT dVleknYA8oSpKQ0FyUz5bOa2i4r7qwaQ4C2oiCSNJGUsKhdBWEVf3OzqR5+O/oM9e4CBt1/xC y5ILPBbc3sj24TEsUgUny/y+CkrCT0O3lFMsQoGQyv3DXv/x//ye0SDPyOlvfyAKGQqgo19GL eizVgw6dAvzg77Qvul/5reWDCpmMg5IPSKmuY8O/CCYDXw3pHfSd5UZ/xAGOkyZwQqlWaOTuc ijxkvz+IaNYR3m4UXCMD4XQTakzyiuIMz+AybWBQSc17DZBtlc3TKrECl+Usrk76fQfNvLY5k naoVgW1VcC55VDXdmWiXLA2sj0+tQPdMqHC/OvxST1fXJPgP6CIjBuesgHrmMzPbohUxcTxVC 94EKpFMLKBusyOI/x895/Rt7VxAA7ukLUlC9ot17z9yLCpFBRRfGhqUT29akAEP8a3+KEgtIp 0+bV/AvIS6xYrG2iAEsW7zJOhF7bNdjIQZCZZTk9A/g/54UtTWo4gq9BiYngg3OJOuvyM8sop IHvCsAOfoCu/7hvVhucAU07xqsguDf+Igt1J7V/qzidmsUGbAYVXA/Aew== Precedence: bulk List-ID: X-Mailing-List: linux-parisc@vger.kernel.org Instead of converting the physical address of the mapping to the tlb insert format inside all the various tmpalias functions, move this conversion over to the DTLB miss handler. The physical address is already in %r26 (or will be calculated into %r32), so there are no additional steps needed. Additionally we can now use the dep_safe() and depi_safe() macros to avoid differentiating between 32- and 64-bit builds and as such make the code much more readable. The check if "ldil L%(TMPALIAS_MAP_START)" would sign extend into the upper 32 bits can be dropped, because we added a compile time check in an earlier patch. Signed-off-by: Helge Deller --- arch/parisc/kernel/entry.S | 13 ++---- arch/parisc/kernel/pacache.S | 89 ++++++------------------------------ 2 files changed, 17 insertions(+), 85 deletions(-) -- 2.35.3 diff --git a/arch/parisc/kernel/entry.S b/arch/parisc/kernel/entry.S index 2af27c8b4aa6..df8102fb435f 100644 --- a/arch/parisc/kernel/entry.S +++ b/arch/parisc/kernel/entry.S @@ -566,11 +566,6 @@ .macro do_alias spc,tmp,tmp1,va,pte,prot,fault,patype cmpib,COND(<>),n 0,\spc,\fault ldil L%(TMPALIAS_MAP_START),\tmp -#if defined(CONFIG_64BIT) && (TMPALIAS_MAP_START >= 0x80000000) - /* on LP64, ldi will sign extend into the upper 32 bits, - * which is behaviour we don't want */ - depdi 0,31,32,\tmp -#endif copy \va,\tmp1 depi_safe 0,31,TMPALIAS_SIZE_BITS+1,\tmp1 cmpb,COND(<>),n \tmp,\tmp1,\fault @@ -605,13 +600,13 @@ * OK, it is in the temp alias region, check whether "from" or "to". * Check "subtle" note in pacache.S re: r23/r26. */ -#ifdef CONFIG_64BIT - extrd,u,*= \va,63-TMPALIAS_SIZE_BITS,1,%r0 -#else extrw,u,= \va,31-TMPALIAS_SIZE_BITS,1,%r0 -#endif or,COND(tr) %r23,%r0,\pte or %r26,%r0,\pte + + /* convert phys addr in \pte (from r23 or r26) to tlb insert format */ + SHRREG \pte,PAGE_SHIFT+PAGE_ADD_SHIFT-5, \pte + depi_safe _PAGE_SIZE_ENCODING_DEFAULT, 31,5, \pte .endm diff --git a/arch/parisc/kernel/pacache.S b/arch/parisc/kernel/pacache.S index 45762a9ca064..9a0018f1f42c 100644 --- a/arch/parisc/kernel/pacache.S +++ b/arch/parisc/kernel/pacache.S @@ -500,19 +500,10 @@ ENDPROC_CFI(copy_page_asm) * miss on the translation, the dtlb miss handler inserts the * translation into the tlb using these values: * - * %r26 physical page (shifted for tlb insert) of "to" translation - * %r23 physical page (shifted for tlb insert) of "from" translation + * %r26 physical address of "to" translation + * %r23 physical address of "from" translation */ - /* Drop prot bits and convert to page addr for iitlbt and idtlbt */ - #define PAGE_ADD_SHIFT (PAGE_SHIFT-12) - .macro convert_phys_for_tlb_insert20 phys - extrd,u \phys, 56-PAGE_ADD_SHIFT, 32-PAGE_ADD_SHIFT, \phys -#if _PAGE_SIZE_ENCODING_DEFAULT - depdi _PAGE_SIZE_ENCODING_DEFAULT, 63, (63-58), \phys -#endif - .endm - /* * copy_user_page_asm() performs a page copy using mappings * equivalent to the user page mappings. It can be used to @@ -541,24 +532,10 @@ ENTRY_CFI(copy_user_page_asm) sub %r25, %r1, %r23 ldil L%(TMPALIAS_MAP_START), %r28 -#ifdef CONFIG_64BIT -#if (TMPALIAS_MAP_START >= 0x80000000) - depdi 0, 31,32, %r28 /* clear any sign extension */ -#endif - convert_phys_for_tlb_insert20 %r26 /* convert phys addr to tlb insert format */ - convert_phys_for_tlb_insert20 %r23 /* convert phys addr to tlb insert format */ - depd %r24,63,TMPALIAS_SIZE_BITS, %r28 /* Form aliased virtual address 'to' */ - depdi 0, 63,PAGE_SHIFT, %r28 /* Clear any offset bits */ - copy %r28, %r29 - depdi 1, 63-TMPALIAS_SIZE_BITS,1, %r29 /* Form aliased virtual address 'from' */ -#else - extrw,u %r26, 24,25, %r26 /* convert phys addr to tlb insert format */ - extrw,u %r23, 24,25, %r23 /* convert phys addr to tlb insert format */ - depw %r24, 31,TMPALIAS_SIZE_BITS, %r28 /* Form aliased virtual address 'to' */ - depwi 0, 31,PAGE_SHIFT, %r28 /* Clear any offset bits */ + dep_safe %r24, 31,TMPALIAS_SIZE_BITS, %r28 /* Form aliased virtual address 'to' */ + depi_safe 0, 31,PAGE_SHIFT, %r28 /* Clear any offset bits */ copy %r28, %r29 - depwi 1, 31-TMPALIAS_SIZE_BITS,1, %r29 /* Form aliased virtual address 'from' */ -#endif + depi_safe 1, 31-TMPALIAS_SIZE_BITS,1, %r29 /* Form aliased virtual address 'from' */ /* Purge any old translations */ @@ -688,18 +665,8 @@ ENTRY_CFI(clear_user_page_asm) tophys_r1 %r26 ldil L%(TMPALIAS_MAP_START), %r28 -#ifdef CONFIG_64BIT -#if (TMPALIAS_MAP_START >= 0x80000000) - depdi 0, 31,32, %r28 /* clear any sign extension */ -#endif - convert_phys_for_tlb_insert20 %r26 /* convert phys addr to tlb insert format */ - depd %r25, 63,TMPALIAS_SIZE_BITS, %r28 /* Form aliased virtual address 'to' */ - depdi 0, 63,PAGE_SHIFT, %r28 /* Clear any offset bits */ -#else - extrw,u %r26, 24,25, %r26 /* convert phys addr to tlb insert format */ - depw %r25, 31,TMPALIAS_SIZE_BITS, %r28 /* Form aliased virtual address 'to' */ - depwi 0, 31,PAGE_SHIFT, %r28 /* Clear any offset bits */ -#endif + dep_safe %r25, 31,TMPALIAS_SIZE_BITS, %r28 /* Form aliased virtual address 'to' */ + depi_safe 0, 31,PAGE_SHIFT, %r28 /* Clear any offset bits */ /* Purge any old translation */ @@ -764,18 +731,8 @@ ENDPROC_CFI(clear_user_page_asm) ENTRY_CFI(flush_dcache_page_asm) ldil L%(TMPALIAS_MAP_START), %r28 -#ifdef CONFIG_64BIT -#if (TMPALIAS_MAP_START >= 0x80000000) - depdi 0, 31,32, %r28 /* clear any sign extension */ -#endif - convert_phys_for_tlb_insert20 %r26 /* convert phys addr to tlb insert format */ - depd %r25, 63,TMPALIAS_SIZE_BITS, %r28 /* Form aliased virtual address 'to' */ - depdi 0, 63,PAGE_SHIFT, %r28 /* Clear any offset bits */ -#else - extrw,u %r26, 24,25, %r26 /* convert phys addr to tlb insert format */ - depw %r25, 31,TMPALIAS_SIZE_BITS, %r28 /* Form aliased virtual address 'to' */ - depwi 0, 31,PAGE_SHIFT, %r28 /* Clear any offset bits */ -#endif + dep_safe %r25, 31,TMPALIAS_SIZE_BITS, %r28 /* Form aliased virtual address 'to' */ + depi_safe 0, 31,PAGE_SHIFT, %r28 /* Clear any offset bits */ /* Purge any old translation */ @@ -823,18 +780,8 @@ ENDPROC_CFI(flush_dcache_page_asm) ENTRY_CFI(purge_dcache_page_asm) ldil L%(TMPALIAS_MAP_START), %r28 -#ifdef CONFIG_64BIT -#if (TMPALIAS_MAP_START >= 0x80000000) - depdi 0, 31,32, %r28 /* clear any sign extension */ -#endif - convert_phys_for_tlb_insert20 %r26 /* convert phys addr to tlb insert format */ - depd %r25, 63,TMPALIAS_SIZE_BITS, %r28 /* Form aliased virtual address 'to' */ - depdi 0, 63,PAGE_SHIFT, %r28 /* Clear any offset bits */ -#else - extrw,u %r26, 24,25, %r26 /* convert phys addr to tlb insert format */ - depw %r25, 31,TMPALIAS_SIZE_BITS, %r28 /* Form aliased virtual address 'to' */ - depwi 0, 31,PAGE_SHIFT, %r28 /* Clear any offset bits */ -#endif + dep_safe %r25, 31,TMPALIAS_SIZE_BITS, %r28 /* Form aliased virtual address 'to' */ + depi_safe 0, 31,PAGE_SHIFT, %r28 /* Clear any offset bits */ /* Purge any old translation */ @@ -882,18 +829,8 @@ ENDPROC_CFI(purge_dcache_page_asm) ENTRY_CFI(flush_icache_page_asm) ldil L%(TMPALIAS_MAP_START), %r28 -#ifdef CONFIG_64BIT -#if (TMPALIAS_MAP_START >= 0x80000000) - depdi 0, 31,32, %r28 /* clear any sign extension */ -#endif - convert_phys_for_tlb_insert20 %r26 /* convert phys addr to tlb insert format */ - depd %r25, 63,TMPALIAS_SIZE_BITS, %r28 /* Form aliased virtual address 'to' */ - depdi 0, 63,PAGE_SHIFT, %r28 /* Clear any offset bits */ -#else - extrw,u %r26, 24,25, %r26 /* convert phys addr to tlb insert format */ - depw %r25, 31,TMPALIAS_SIZE_BITS, %r28 /* Form aliased virtual address 'to' */ - depwi 0, 31,PAGE_SHIFT, %r28 /* Clear any offset bits */ -#endif + dep_safe %r25, 31,TMPALIAS_SIZE_BITS, %r28 /* Form aliased virtual address 'to' */ + depi_safe 0, 31,PAGE_SHIFT, %r28 /* Clear any offset bits */ /* Purge any old translation. Note that the FIC instruction * may use either the instruction or data TLB. Given that we