From nobody Sun May 24 20:33:26 2026 Received: from mail-wm1-f44.google.com (mail-wm1-f44.google.com [209.85.128.44]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4F8263019D9 for ; Sat, 23 May 2026 05:36:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.44 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779514613; cv=none; b=QRQCVpG0NERmFbLaKALt+HLyoVznZVamkMg/gs+oPIsJ9WBaXqvHxmgXcLjkpeHcLxRWgV4bZZGqKApMHT+q6tVVqJMuucGxsJoiB1ZcdfjGOgiimwpJSTat/UeIqxTV/2Cbr1OsMgEnkX7oejY8NEK+mupqnf7INDOJXy23cW4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779514613; c=relaxed/simple; bh=qbuLMSIdwLDMQyPVrXzwv3hnPVTrG6PN3h5ruMoiwoE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Q8dCIy259z9UVe5Czu7ZW0BGQFojM4ZD46mL9O09kPJGr1VX7tdd/LAq9CZ6auoSTKkk5+1zeHp4liGd1afT3OcTkfWafrWsn+nU0EWAiARlcpPBVpsI35S+uybTGrBFy1cr5kUiA+1ksXQJjDaYFXw0rYftZCg3Wm7qzZvTToM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=qZynej5R; arc=none smtp.client-ip=209.85.128.44 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="qZynej5R" Received: by mail-wm1-f44.google.com with SMTP id 5b1f17b1804b1-48a7fe4f40bso92566735e9.0 for ; Fri, 22 May 2026 22:36:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1779514611; x=1780119411; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=WQYLpktcHIxxq3vHSLAXOh6GKgha74zW++4ibCzeh9M=; b=qZynej5RiJqLyevkIeqhFXGqwnXNv5WgnM7UIbJj2+7MnV+PcKPmEGID2gl9uh69DS 2JWxEje2l7/2NLafDcAsSTZ0Ef17/gkMdOvt3Uj6JWU3tLhVRArFh7/jvkBMzDRwq6mC vniiZkZQHn5epJrzmf3otz1dFSOatuywY6GAjXIdhnHqKI73mqVl4pyORjGBynV4wkYm 6c0gqv+2iMb3Ml+D/aPX4tHF1AE+C5JrIyS5CCSfTxrYFAbBj1MHWf1eCT5E5/1XU6l3 h6cMF6Y5D+hh/ObaPGGqAsT+NvSZZzQbjoYyJ80asAz1trhd0VHmsxFJQmcG97WsDblc Oq1w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779514611; x=1780119411; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=WQYLpktcHIxxq3vHSLAXOh6GKgha74zW++4ibCzeh9M=; b=km6Bda6cHYLXN+MKI09udskJcDSphRhPdw9hsHZawDRduN1XydPmEWJt4OjF7L6cs4 oMOm3Pi4hmLilONind9h1ir9Puku4BigowuFXGtdvFv0SJgdVTg3R09kkCkmsX8FI/aD dxzW1NGdA4YgqKZ1wNwmGN575XC5kdR2fh2gV0RJ+2BbLWLmNIWEkzWo1HV2IEks5Too FVUWd9PNF8yktR6x1MHu5M+I9KCn7NJNcFDPGK1XgRwJPXxe94P7W3ycLvfs6zC4xFjP lTgUgSL48n3rCeguoq7Vr+ahlsr3TYkqZU8nYAn9GbKnJy3gftkyUE6anl0l/ulLjKFX hh4w== X-Gm-Message-State: AOJu0Yx1+9ja25yLaNtZBVrm0dAz3WvEGPOOiKYOJb+0WZrbMK38R6ri 2iFCtvDDIphk3uO4lAZMorjFUryvnjwJf374sOwxPR7PxekfcUqCRitLJfj7Og== X-Gm-Gg: Acq92OFObbAZVCfDLCaViax90xHZGbkzvGFw9Y82LPKh5xP57LS3ubDnaLDBlZrFzkr YYvXj4xx4wVzZL26lx9U5ieO1fDiD7KuSY5AqbFMIqeRk7DoS5AIfARG/bf3Aid7Xh2fpRIqzNs EPPNcIKKm08nX8hDinraukaASeB7PKMbmsafFPJPQJ6IWqZ5jZ7jOWiIl67CeVyZ49c6T8agQLW LbAE6BMdqwH9cv+qh9DA/PGgkP/cGKx1E8bYOYpMbnSgnySXltcFaCwQH+7Nkym71qKOTr2Ck74 GD6/xAC56bKozPssdOzOnmWir5wLTNIlTj4CHFNZdOSXD89wK+zMeyM/86uEmKghYBunS9LKQKM fDm/n5mrYC6zWvUs/m5GfEHEZeGm4SHYNXpQasymwFRXPW8jG41CVusrq0wi/ekQNRZcAvL/DRq czJHEEVckJOmnpjE5nsEzfvlr+Pui9ZURsENv7VFiMzY95XjyLo0u/K/Y2/ymx3WiKuvVph0Z9m GTOZw== X-Received: by 2002:a05:600c:46c6:b0:490:4927:3777 with SMTP id 5b1f17b1804b1-490492738a4mr55083855e9.2.1779514610640; Fri, 22 May 2026 22:36:50 -0700 (PDT) Received: from localhost (brnt-04-b2-v4wan-170138-cust2432.vm7.cable.virginm.net. [94.175.9.129]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4904527f7f7sm142490395e9.7.2026.05.22.22.36.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 22 May 2026 22:36:49 -0700 (PDT) From: Stafford Horne To: LKML Cc: Linux OpenRISC , Stafford Horne , Jonas Bonn , Stefan Kristiansson Subject: [PATCH 1/3] openrisc: Cache invalidation cleanup Date: Sat, 23 May 2026 06:36:16 +0100 Message-ID: <20260523053624.630443-2-shorne@gmail.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260523053624.630443-1-shorne@gmail.com> References: <20260523053624.630443-1-shorne@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" When working on new cache invalidation functions I noticed these cleanups in the cache initialization code. Remove unused and commented instructions to avoid confusion. Signed-off-by: Stafford Horne --- arch/openrisc/kernel/head.S | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/arch/openrisc/kernel/head.S b/arch/openrisc/kernel/head.S index bd760066f1cd..65f474c2df4f 100644 --- a/arch/openrisc/kernel/head.S +++ b/arch/openrisc/kernel/head.S @@ -852,26 +852,19 @@ _ic_enable: l.sll r14,r30,r28 =20 /* Establish number of cache sets - r16 contains number of cache sets r28 contains log(# of cache sets) */ l.andi r26,r24,SPR_ICCFGR_NCS l.srli r28,r26,3 - l.ori r30,r0,1 - l.sll r16,r30,r28 =20 /* Invalidate IC */ l.addi r6,r0,0 l.sll r5,r14,r28 -// l.mul r5,r14,r16 -// l.trap 1 -// l.addi r5,r0,IC_SIZE 1: l.mtspr r0,r6,SPR_ICBIR l.sfne r6,r5 l.bf 1b l.add r6,r6,r14 - // l.addi r6,r6,IC_LINE =20 /* Enable IC */ l.mfspr r6,r0,SPR_SR @@ -918,13 +911,10 @@ _dc_enable: l.sll r14,r30,r28 =20 /* Establish number of cache sets - r16 contains number of cache sets r28 contains log(# of cache sets) */ l.andi r26,r24,SPR_DCCFGR_NCS l.srli r28,r26,3 - l.ori r30,r0,1 - l.sll r16,r30,r28 =20 /* Invalidate DC */ l.addi r6,r0,0 --=20 2.53.0 From nobody Sun May 24 20:33:26 2026 Received: from mail-wm1-f47.google.com (mail-wm1-f47.google.com [209.85.128.47]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 32BB13314D9 for ; Sat, 23 May 2026 05:36:56 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779514617; cv=none; b=Fd6UMtIa1ApJPJL+w+cRAqrPoU+eaYlxLRNHf20/HWShdy5jg4/lL8Ep2xq5lqwsyxeZJAQyKj9dyn2Ip8iRjvuSOwzfqsPUKyy4XaBUoRqZenkNkE7o6l3Vu2xB2tUn1RzlzeLMkWzSR8W2BbIlidveELmFTzvqPVNxuUpcmUA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779514617; c=relaxed/simple; bh=Ld1JJn+zGIIrv4OfEQcvAVuHm3e1kxZgfP5KYvnpil4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=KeiezDmczTOsU9hnYZnpbb/WcGGmnEgg8E5CdLKoX1B1XK8CrGUPCFgC4JWgy6NKT53HwOa86vp2zv/QCQ130/QayOwn+cQm+f4NFCgPGOkY29LstxEwOKZibBPaBE2I8AqZ8OgUoFzicBKcf3UO0InJvcb/5yvVgLBqaSSCDvk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=VQeeVL4Q; arc=none smtp.client-ip=209.85.128.47 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="VQeeVL4Q" Received: by mail-wm1-f47.google.com with SMTP id 5b1f17b1804b1-4891c0620bcso50383975e9.1 for ; Fri, 22 May 2026 22:36:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1779514615; x=1780119415; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=nUwKR3yq6fKwgsxnrOqNBKyVRzqIoUnbsdF3bmKoKC4=; b=VQeeVL4QUyCLjLvwJHM1Yqzxhyzk5qt82EpvewGnJZENq4vOseqQLyuzzr1Vq17HRJ W2Qr/YFxC9ycyMYHMVD6YPD4AyIrQj12F/HHhg9k3hV+6x/7JtlzqxmuDbdWCnZapBmU pd9cwbOtTD4Z5fCR0wHOqHaaAKqjCYRjougNWfR65WBeDQ7+nyL65h6+0MkI8ZTNTqnO Sc1mYu/A4kIytUkJ55XLlLBsIeNvqtyyP4lXFNAyv2DJp4V0fU2eDpL0gFepv5zj9DF3 Z+EGcJrWbVJlFMtoc9W57WlhU9aoDPfvBsinFUnMzOPcfFQE9Q8W3kd5aw4Atrd4r08i IYPA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779514615; x=1780119415; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=nUwKR3yq6fKwgsxnrOqNBKyVRzqIoUnbsdF3bmKoKC4=; b=BlPpT93MsjzpO2ptDUsJHlSjcmebSK6HW6R2fQIPfXvJGgx8kSFbYyOtSjQnLG0ISp lcbMtJZLommPjgaLprY2QkW1ti2ze+LUWiMtg0VSHgH7wv6FbXwv7Mzgd5iqgSHP/sKp VV/sac80TlelbiYOrp4aznku6YWsJYawvvkXx6x1hXqU144PyhEMEqyez46NvTSFpOl8 N/oZy0BscRqD/4jirsqv7qieQYxAF8nRJ1aLFZcyUb+1QAEhaE95bN+KcbE42hD9r14c LUx3UyEJFtqaXNzEuXB1se8kwl8a6HWfeC8ymqvR0e6vJu4V8jSmB0o1Wjr8yTaHiorc nwFA== X-Gm-Message-State: AOJu0YylmLbcmM7ZTwck13HJNfzPUEMmCOyJD85sNxpcNwDgDVo2Dz2M /1Hpzu/VmrIrpMIVP8F1YHSUxzIE7u/Ii1suQ8hBv6RCh/NvuieRDnydnkn+gA== X-Gm-Gg: Acq92OGE+4tesdg7QVJWvoIB6XOt6Ih9QM8HjLJ2tFF7VfxNbhDaywAyN72J++dgM5P 2TGqR5TN2JeSCV/8iHQnJzny9UcJ+PG5577v7+pBXlrWDADeWlqeIDjr9thN4wxw5lZk/WyGLot /B870p1d5wuI2R/hgpNwwqKvi7ZK1kx14bsh+wzfQhe+d1PWo8zclrLEkFoFNB9D4ZePaldsjBg xR0SNGU0ntjxYasoN8Jcj8Sh+OgkVssmA+CgLzvSoZAZ/tbxCah/jnJjabyTfM2Y5vqGRlA4Jrd t67we89C2LFdrHyUtd098z0ScwIIoJDyiIcEKZ4RT8eDV/hKTW+qz0AYLazvc1dSPLqaF1TcV3V XblAAeCyZF7pcya6nPgKnxv9AWrcMcIZQ8JmnJ47/3l4cQaPrErRhRoGWtXPQg+xWVqV33m7eHI jmw+MDtgn6PZMcaTWWbaACUaaEcp4SE/GNnGanaNH15pU+apKR4mfSMdyG4ZLPM049U3HTP5ueE 5mvrQ== X-Received: by 2002:a05:600c:6287:b0:48f:eb8b:997a with SMTP id 5b1f17b1804b1-49042ae285bmr93143975e9.31.1779514614442; Fri, 22 May 2026 22:36:54 -0700 (PDT) Received: from localhost (brnt-04-b2-v4wan-170138-cust2432.vm7.cable.virginm.net. [94.175.9.129]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-45eb6c9f6ffsm9336779f8f.1.2026.05.22.22.36.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 22 May 2026 22:36:53 -0700 (PDT) From: Stafford Horne To: LKML Cc: Linux OpenRISC , Stafford Horne , stable@vger.kernel.org, Jonas Bonn , Stefan Kristiansson , "Matthew Wilcox (Oracle)" , Zi Yan , Andrew Morton , Thomas Gleixner Subject: [PATCH 2/3] openrisc: Add full instruction cache invalidate functions Date: Sat, 23 May 2026 06:36:17 +0100 Message-ID: <20260523053624.630443-3-shorne@gmail.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260523053624.630443-1-shorne@gmail.com> References: <20260523053624.630443-1-shorne@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Add functions to invalidate all cache lines which we will use for static_key patching. On OpenRISC there is no instruction to invalidate an entire cache so we loop and invalidate cache lines one by one. This is not extremely expensive on OpenRISC as we usually have only a few hundred cache lines. I considered using the invalidate cache page or range functions. However, tracking which ranges need invalidation would have been more expensive than flushing all pages. Cc: stable@vger.kernel.org Signed-off-by: Stafford Horne --- arch/openrisc/include/asm/cacheflush.h | 4 ++++ arch/openrisc/kernel/smp.c | 21 +++++++++++++++++++++ arch/openrisc/mm/cache.c | 16 ++++++++++++++++ 3 files changed, 41 insertions(+) diff --git a/arch/openrisc/include/asm/cacheflush.h b/arch/openrisc/include= /asm/cacheflush.h index cd8f971c0fec..7b8c043a831d 100644 --- a/arch/openrisc/include/asm/cacheflush.h +++ b/arch/openrisc/include/asm/cacheflush.h @@ -26,6 +26,7 @@ extern void local_icache_page_inv(struct page *page); extern void local_dcache_range_flush(unsigned long start, unsigned long en= d); extern void local_dcache_range_inv(unsigned long start, unsigned long end); extern void local_icache_range_inv(unsigned long start, unsigned long end); +extern void local_icache_all_inv(void); =20 /* * Data cache flushing always happen on the local cpu. Instruction cache @@ -35,10 +36,13 @@ extern void local_icache_range_inv(unsigned long start,= unsigned long end); #ifndef CONFIG_SMP #define dcache_page_flush(page) local_dcache_page_flush(page) #define icache_page_inv(page) local_icache_page_inv(page) +#define icache_all_inv() local_icache_all_inv() #else /* CONFIG_SMP */ #define dcache_page_flush(page) local_dcache_page_flush(page) #define icache_page_inv(page) smp_icache_page_inv(page) +#define icache_all_inv() smp_icache_all_inv() extern void smp_icache_page_inv(struct page *page); +extern void smp_icache_all_inv(void); #endif /* CONFIG_SMP */ =20 /* diff --git a/arch/openrisc/kernel/smp.c b/arch/openrisc/kernel/smp.c index 040ca201b692..65599252f3d4 100644 --- a/arch/openrisc/kernel/smp.c +++ b/arch/openrisc/kernel/smp.c @@ -346,3 +346,24 @@ void smp_icache_page_inv(struct page *page) on_each_cpu(ipi_icache_page_inv, page, 1); } EXPORT_SYMBOL(smp_icache_page_inv); + +static void ipi_icache_all_inv(void *arg) +{ + local_icache_all_inv(); +} + +void smp_icache_all_inv(void) +{ + if (num_online_cpus() < 2) { + local_icache_all_inv(); + return; + } + + /* + * Ensure stores complete before we request remote icaches + * to invalidate. + */ + mb(); + + on_each_cpu(ipi_icache_all_inv, NULL, 1); +} diff --git a/arch/openrisc/mm/cache.c b/arch/openrisc/mm/cache.c index f33df46dae4e..2667d90691b5 100644 --- a/arch/openrisc/mm/cache.c +++ b/arch/openrisc/mm/cache.c @@ -63,6 +63,22 @@ void local_icache_page_inv(struct page *page) } EXPORT_SYMBOL(local_icache_page_inv); =20 +void local_icache_all_inv(void) +{ + if (cpu_cache_is_present(SPR_UPR_ICP)) { + unsigned long iccfgr =3D mfspr(SPR_ICCFGR); + unsigned long sets =3D 1 << ((iccfgr & SPR_ICCFGR_NCS) >> 3); + unsigned long block_size =3D 16 << ((iccfgr & SPR_ICCFGR_CBS) >> 7); + unsigned long paddr =3D 0; + unsigned long end =3D sets * block_size; + + while (paddr < end) { + mtspr(SPR_ICBIR, paddr); + paddr +=3D block_size; + } + } +} + void local_dcache_range_flush(unsigned long start, unsigned long end) { cache_loop(start, end, SPR_DCBFR, SPR_UPR_DCP); --=20 2.53.0 From nobody Sun May 24 20:33:26 2026 Received: from mail-wr1-f41.google.com (mail-wr1-f41.google.com [209.85.221.41]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 575138287E for ; Sat, 23 May 2026 05:36:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779514620; cv=none; b=ETUvMwE7AHOpq+IVi8MQ0x9mv0tuv+1Gz/lAgwgBDy/sVNjuQ/ul22V7FNOz37ZnhLge8lqi4NP7FrFApGEp7NVuhynS9VhPaaczLw+h2pZDKJu0Mjc1QFTs7JG+iicGS+F6hqWRRtr5HDzfxoMYKifBrF44tr9e7DOKzjCQ+6Q= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779514620; c=relaxed/simple; bh=K1iy/7Us+v9iabohnw6QHdQ4FKbTQ+1yjGBvyFrzzaw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=djG5X6yyAlMpRcAeE/h+XvSG9aprDv6c13l44bO2mLP5B14zOPCjtm1eYLIch0pxsSCtA1f3DV7nnJHcjX+NOBxKpbhbkdLL3PjHhP/KTqewmQbBSAdVJqHsb6Aj0fuEyovjEJRsWaaiE+E4EbNT+Iv0m6bSTce3y6nitiTY1VQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=rQ8PAWkF; arc=none smtp.client-ip=209.85.221.41 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="rQ8PAWkF" Received: by mail-wr1-f41.google.com with SMTP id ffacd0b85a97d-45d96d21e82so4521328f8f.0 for ; Fri, 22 May 2026 22:36:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1779514618; x=1780119418; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=LfCXYx65YgeEukMHypUmArLMk/VIi+xGB6BZmr+icPM=; b=rQ8PAWkFYtCSvihyR3Nf21St1nM3N2XyrNwWp8eAh+Z7W3C51MJKlyyTV5sNh4nf/e OU2OhCghSunIuXKUdvO5m1HMc8NB4beWjqIGZXMcTIgvi4F5AkZQ5jZnsr0ktvmOUQka fgz3Aspqm5+Cn9ti8uEA0ccnHJpPONqqeS2NGUGSGLiQHg7pA5XMlaIR6GJ7vyFe11jW DOg05O70HxJsAIKheBwB4um7XLvk+bRHXiHEq/hKF/6sQMkrZmKKbx8o31Rev1AID48c 2FuEpWgQFLb6VKHQk3h6Q37OGPb4MdkpMQHe3HbYZeEpPwqEERKsXVXmcDEZiOGLVyHM 5t3Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779514618; x=1780119418; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=LfCXYx65YgeEukMHypUmArLMk/VIi+xGB6BZmr+icPM=; b=Rb/jccWGHNHUIj0R7ij8kwWMD+vhOcEKBhyYHWs+VN/QaUBTy904BfQlkNOjPYSbrw GYU+OKRipyrVOcL+QC6wJ+FyLUOUTz24rQqZq5o4fXbwLHS/AA/3qZq1iyC1nBbKhenX 2hui0U4eH2iZ8cTdmrBXvVpLKE82r/dlGxcu/nmqE69ZGG3O4dYmbZAjtWfDcXesjMaT mrDKB+t9lthyRMD4iLsxxIaRjxWhkriM0mdBTaAWPiHVBMrZbZjn4+qJ4TbMhkfIr6r/ NGouhsq76otAZvoRBkX+wopNbqhga+lFAz13yDTgxvU+btnr0VeF33krU+1fPlD+YjyY 7wsg== X-Gm-Message-State: AOJu0YzchbgQTgXbDM3DWJwXFjKpq6nkbFEIivPpe4WGzaVzURXScaeq Xyac0ER/0EPRtsyGaERyXqQfx3SE7S7VCQGUM8bMVxmYa25dYoQwMU9UXozT/yHx X-Gm-Gg: Acq92OHBKAX4xY173sBojBCeKz/iCEOmB0rqtirrQBHS7syKo0nIzLlfV741jmDOUn+ OvnhQfmGab7+AVtyxHY8e+pzlcCFn6ak9t/CfGhQ2foCuToBFMYKuaPLL6Mrrff0CnsMLEmjLLj mqGG4UBjBzxr/y8whWbNYoct5tejbN9hNLUvv3YugvWfCyX+bJrdgWAvAiVlf9J0zgxECiVlSxD RiG/u9ml1X2I99tBvkTCxwXNU9mB0tOerD2BSdKFaHURtT1XlPQaiQDJvNFw9/LRhBkWbMtDA6/ 98zmA5KPfaTExHrXyzDU7vTUxY0gaa1Ncd5ZkvvxRAjzOOWgO2TcmMDg7QUcjexDHrdGt9dXOh1 1mkjzyQ0IiNATaB2wqkg1T5hoYnco7eg3Xp0uJJ43dOVTkbiWjaAUbVywEuaeZFF6UWa9Ll3nGg +2wJpJhp0r8lr7yph0GXwBQ7sWFmAscBghf3RsZ33b7MuBtOHcFCcDNU4Dop0sNWqjFJI+5ZhZK WSr5Q== X-Received: by 2002:a05:6000:2007:b0:43e:a81d:c475 with SMTP id ffacd0b85a97d-45eb3673201mr10681423f8f.6.1779514617661; Fri, 22 May 2026 22:36:57 -0700 (PDT) Received: from localhost (brnt-04-b2-v4wan-170138-cust2432.vm7.cable.virginm.net. [94.175.9.129]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-45eb6d5e484sm9473519f8f.30.2026.05.22.22.36.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 22 May 2026 22:36:56 -0700 (PDT) From: Stafford Horne To: LKML Cc: Linux OpenRISC , Stafford Horne , stable@vger.kernel.org, Peter Zijlstra , Josh Poimboeuf , Jason Baron , Alice Ryhl , Steven Rostedt , Ard Biesheuvel , Jonas Bonn , Stefan Kristiansson , chenmiao Subject: [PATCH 3/3] openrisc: Fix jump_label smp syncing Date: Sat, 23 May 2026 06:36:18 +0100 Message-ID: <20260523053624.630443-4-shorne@gmail.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260523053624.630443-1-shorne@gmail.com> References: <20260523053624.630443-1-shorne@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The original commit 8c30b0018f9d ("openrisc: Add jump label support") copies from arm64 and does not properly consider how icache invalidation on remote cores works in OpenRISC. On OpenRISC remote icaches need to be invalidated otherwise static key's may remain state after updating. Fix SMP cache syncing by: 1. Properly invalidate remote core icaches on SMP systems by using icache_all_inv. The old code uses kick_all_cpus_sync() which runs a no-op IPI function call on remote CPU's which does execute a lot of code and flushes many cache lines in the process, but does not flush all and it's not correct on OpenRISC. 2. For architectures that do not have WRITETHROUGH caches be sure to flush the dcache after patching. To test this I first reproduced the issue using a custom test module [0]. The test confirmed that some icache lines maintained stale static_key code sequences after calling static_branch_enable(). After this patch there are no longer jump_label coherency issues. [0] https://github.com/stffrdhrn/or1k-utils/tree/master/tests/smp_static_ke= y_test Cc: stable@vger.kernel.org # depends on openrisc: Add icache_all_inv Fixes: 8c30b0018f9d ("openrisc: Add jump label support") Signed-off-by: Stafford Horne --- arch/openrisc/kernel/jump_label.c | 2 +- arch/openrisc/kernel/patching.c | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/arch/openrisc/kernel/jump_label.c b/arch/openrisc/kernel/jump_= label.c index ab7137c23b46..9cb63f2d2e2b 100644 --- a/arch/openrisc/kernel/jump_label.c +++ b/arch/openrisc/kernel/jump_label.c @@ -47,5 +47,5 @@ bool arch_jump_label_transform_queue(struct jump_entry *e= ntry, =20 void arch_jump_label_transform_apply(void) { - kick_all_cpus_sync(); + icache_all_inv(); } diff --git a/arch/openrisc/kernel/patching.c b/arch/openrisc/kernel/patchin= g.c index d186172beb33..5db027b78bc4 100644 --- a/arch/openrisc/kernel/patching.c +++ b/arch/openrisc/kernel/patching.c @@ -49,6 +49,9 @@ static int __patch_insn_write(void *addr, u32 insn) waddr =3D patch_map(addr, FIX_TEXT_POKE0); =20 ret =3D copy_to_kernel_nofault(waddr, &insn, OPENRISC_INSN_SIZE); + if (!IS_ENABLED(CONFIG_DCACHE_WRITETHROUGH)) + local_dcache_range_flush((unsigned long)waddr, + (unsigned long)waddr + OPENRISC_INSN_SIZE); local_icache_range_inv((unsigned long)waddr, (unsigned long)waddr + OPENRISC_INSN_SIZE); =20 --=20 2.53.0