From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id ADDE3606A31E for ; Mon, 19 Oct 2026 20:13:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key, unprotected) header.d=lists.infradead.org header.i=@lists.infradead.org header.a=rsa-sha256 header.s=bombadil.20210309 header.b=Apyv9OPj; dkim=pass (2048-bit key, unprotected) header.d=google.com header.i=@google.com header.a=rsa-sha256 header.s=20251104 header.b=Vdc78mEU DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Content-Type:Cc:To:From: Subject:Message-ID:Mime-Version:Date:Reply-To:Content-Transfer-Encoding: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References:List-Owner; bh=XlJfSKdFCH7ItGXZeKGbQccPhCIHUR7nxzGpcJ+bVqQ=; b=Apyv9OPjhZJmC1UqRzIbcfDzXa n97hwcyqjsxw+Vgl0bSfxgIkHS+/0vxHpgxStnNNx7JGFn8fUSoDq3yfx6W1nPtIDiEiClMjz7hni 93pJRnORXylzpDYO0e8vF4/8gU8aVJkWno41b3EEoV94/b/+BshftwsCkGs56E+BgJ8vSYF/t482+ ZHFHfJ27/8+YpaExQunKtVqihIqvUCb+Md63xD2NTgAOBew+U1F6gdXa75kYsTDfK3wKgLUZoWuSR LWV+zF+s1HOSetFGr2tNmlWQnHzolhGyHfNuUzMf8FQnMN/qJrACM8fZ4b69A8ExBYDcwbljJyaVR 94sZhgHg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.99.1 #2 (Red Hat Linux)) id 1xItjQ-00000008IGS-03ki; Mon, 19 Oct 2026 20:13:16 +0000 Received: from mail-dy1-x1345.google.com ([2607:f8b0:4864:20::1345]) by bombadil.infradead.org with esmtps (Exim 4.99.1 #2 (Red Hat Linux)) id 1xItjM-00000008IFH-1qtl for linux-arm-kernel@lists.infradead.org; Mon, 19 Oct 2026 20:13:14 +0000 Received: by mail-dy1-x1345.google.com with SMTP id 5a478bee46e88-35fb6be0f9fso6427123eec.0 for ; Mon, 19 Oct 2026 13:13:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20251104; t=1792440791; x=1793045591; darn=lists.infradead.org; h=content-type:cc:to:from:subject:message-id:mime-version:date:from :to:cc:subject:date:message-id:reply-to:content-type; bh=XlJfSKdFCH7ItGXZeKGbQccPhCIHUR7nxzGpcJ+bVqQ=; b=Vdc78mEU5vSdTDw+2ExvbFlA1A1FQLRTE9fhM8u0RXXz+q6d+Wx6RkiJoIDRdHqmwf N8qksJaQCQgAYd2MX3HiHWQIn9WkEPttmes3SHEU2QlbH6CSfbTxFmazaadqcYO9wtP0 /jeqBgdReTHdnRHm72l0m8W6cusfjt3YTDlKcRpeu8iosQg/t7kGLRITC9qWk6BCogbd UaDhFagmpSAd7NuPOkpfa4qplamVKPnCguGqiFbfmFiTJwTA2ZrYS4AAwCHdWpcJ18Z4 ZTDb60u8yOFIi2QP1TS8Hotdi598hHCubmv/qX/ou74mO0qWeANURfgBJpNRz34YzYrG roJg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1792440791; x=1793045591; h=content-type:cc:to:from:subject:message-id:mime-version:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=XlJfSKdFCH7ItGXZeKGbQccPhCIHUR7nxzGpcJ+bVqQ=; b=ZPbdjKuVT4XPXTGESiXuSjjvWKS2JvA0S2ZbU/SpkGSZhKDyoZEIl1vbpnRsDVHkOu s8cJTJrIxuG1y4WSEdScztr6plzdrFCKsNh0hMmhZu5YD5mPV04y0sWjLRrd6z6qj6Wx Pq034h0nHx5erjqZt75JEcUUROdby9nOO+5hlew7yl1337qhjqg4MxsMKmlRvalahRyw MYD10E9CWkvDt8LlcRfP7LUzbwpfBrIr8CDaPb2s7c461K0aj5OgKfuSBqS9wNcuFiLq 6QwfmSNLhIWPQRkOlNI9bTq19Hjz35sgeSlQ9sOdc5GlMawpmoOcuIEFmHTjtB7UwVit PWCw== X-Forwarded-Encrypted: i=1; AKwUvBx7uv26BjBmJ+iXiHEJwltB8xePDb9QcQGJes2/1fGoTxcdRmTHqHr0uBWrmPNhbvDAtdGuuyAHZ7CcSJ1onKT1@lists.infradead.org X-Gm-Message-State: AFq9FYLL5xrCNZyEtIa2m2t/RQTWO6sj0fOVHlV6Tg6T7xZglhb5KdAG oB+6aujh7R0AALvDRaEWOF0BjfC/6qDtcdQQQ8ibpEVHQr+vXP4wE4fWMrlx+7a4bw0oCWMzJPz tOn5hWxJh3g== X-Received: from dyrp21.prod.google.com ([2002:a05:693c:69d5:b0:35f:390d:248a]) (user=irogers job=prod-delivery.src-stubby-dispatcher) by 2002:a05:693c:87c2:10b0:34b:4b99:24ab with SMTP id 5a478bee46e88-361a1e501fbmr13784320eec.22.1792440790306; Mon, 19 Oct 2026 13:13:10 -0700 (PDT) Date: Mon, 19 Oct 2026 13:12:56 -0700 X-Archived-By: Mime-Version: 1.0 X-Mailer: git-send-email 2.56.0.212.g129ede20d9-goog Message-ID: <20261019201257.3805356-1-irogers@google.com> Subject: [PATCH v1 1/2] vdso: Add VDSO_UNALIGNED_PACKED config option for ARMv5 From: Ian Rogers To: Thomas Gleixner , Andy Lutomirski , Vincenzo Frascino , Arnd Bergmann , Stefan Kerkmann , Marc Kleine-Budde , Christophe Leroy Cc: David Laight , Arnaldo Carvalho de Melo , Namhyung Kim , Eric Biggers , Al Viro , "Jason A . Donenfeld" , Ian Rogers , linux-arm-kernel@lists.infradead.org, linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org Content-Type: text/plain; charset="UTF-8" X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.9.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20261019_131312_484074_4AA58B11 X-CRM114-Status: GOOD ( 15.15 ) X-Spam-Score: -9.5 (---------) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" X-Spam-Status: No, score=-26.7 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIMWL_WL_MED,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT, USER_IN_DEF_DKIM_WL autolearn=ham autolearn_force=no version=4.0.1 X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on aws-us-west-2-korg-listserv-alma10-1 Commit a339671db64b ("vdso: Switch get/put_unaligned() from packed struct to memcpy()") switched __get_unaligned_t() and __put_unaligned_t() from using a __packed struct to __builtin_memcpy() to avoid strict aliasing undefined behavior. On ARMv5 with GCC, __builtin_memcpy() may not be inlined and instead emit a much slower out-of-line memcpy() call. Add CONFIG_VDSO_UNALIGNED_PACKED, enabled on ARMv5 (CPU_32v5), to use the __packed struct implementation on ARMv5 while keeping __builtin_memcpy() elsewhere. Fixes: a339671db64b ("vdso: Switch get/put_unaligned() from packed struct to memcpy()") Reported-by: Stefan Kerkmann Closes: https://lore.kernel.org/lkml/47f8c30b-e326-4ff0-a2bc-5683209a9e2d@pengutronix.de/ Signed-off-by: Ian Rogers --- include/vdso/unaligned.h | 16 ++++++++++++++++ lib/vdso/Kconfig | 8 ++++++++ 2 files changed, 24 insertions(+) diff --git a/include/vdso/unaligned.h b/include/vdso/unaligned.h index 9076483c9fbb..726fd15efc82 100644 --- a/include/vdso/unaligned.h +++ b/include/vdso/unaligned.h @@ -4,6 +4,20 @@ #include +#ifdef CONFIG_VDSO_UNALIGNED_PACKED + +#define __get_unaligned_t(type, ptr) ({ \ + const struct { type x; } __packed * __get_pptr = (typeof(__get_pptr))(ptr); \ + __get_pptr->x; \ +}) + +#define __put_unaligned_t(type, val, ptr) do { \ + struct { type x; } __packed * __put_pptr = (typeof(__put_pptr))(ptr); \ + __put_pptr->x = (val); \ +} while (0) + +#else /* !CONFIG_VDSO_UNALIGNED_PACKED */ + /** * __get_unaligned_t - read an unaligned value from memory. * @type: the type to load from the pointer. @@ -41,4 +55,6 @@ sizeof(__put_unaligned_val)); \ } while (0) +#endif /* CONFIG_VDSO_UNALIGNED_PACKED */ + #endif /* __VDSO_UNALIGNED_H */ diff --git a/lib/vdso/Kconfig b/lib/vdso/Kconfig index 597f5f0f9681..709eb193999f 100644 --- a/lib/vdso/Kconfig +++ b/lib/vdso/Kconfig @@ -23,3 +23,11 @@ config VDSO_GETRANDOM select VDSO_DATASTORE help Selected by architectures that support vDSO getrandom(). + +config VDSO_UNALIGNED_PACKED + bool + default CPU_32v5 + help + Use packed structs rather than memcpy() in include/vdso/unaligned.h + for unaligned memory accesses. Enabled on ARMv5 where GCC may emit + out-of-line memcpy() calls instead of inlining byte accesses. -- 2.56.0.212.g129ede20d9-goog