From nobody Tue Jun 9 00:54:26 2026 Received: from smtpbgeu2.qq.com (smtpbgeu2.qq.com [18.194.254.142]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D1AEB3A962C for ; Mon, 25 May 2026 06:45:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=18.194.254.142 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779691546; cv=none; b=LXCJve6+z0hPLVAiz5U2BzNXjCa4q/HhY63pLRhQKxyh5m412l1CoIVUkyYGLNCnveYySsGORpo47lnuejyyvCBzJs9HDELqKoSxKwRkoYzA0DzKlSg/1OlMgq6l9cwnjp0Mu96I8SRmJP9EZ6wufiQOgxH27CZEOjbY0W0jjdo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779691546; c=relaxed/simple; bh=QWd2shMhh2OQsIztdOGr/onTypypobYQ28Bxiw8rnQI=; h=From:To:Cc:Subject:Date:Message-Id:MIME-Version; b=uByVwzuGUWziV+P2SdLzv6XT9emYv61RU5vC8NCPj+W4xw/6ZaEhs4QwLcs5N3LhJlLWfQoiipvVoMau0X/M+Tm5J+gXA/l62whIuxLShkfQUpmul4AW8GO6tpJTtELP2o4p/l2MXybQSeVvYPlSBP9m72Bd/Zf6wbVzp1AZY3o= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=uniontech.com; spf=pass smtp.mailfrom=uniontech.com; dkim=pass (1024-bit key) header.d=uniontech.com header.i=@uniontech.com header.b=KQ4Qw5Lq; arc=none smtp.client-ip=18.194.254.142 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=uniontech.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=uniontech.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=uniontech.com header.i=@uniontech.com header.b="KQ4Qw5Lq" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=uniontech.com; s=onoh2408; t=1779691487; bh=eYMVMA07AWRtw6/HYMt3CmFzx1+0WEIBg2tZFNKIAPk=; h=From:To:Subject:Date:Message-Id:MIME-Version; b=KQ4Qw5LqhiXl/6kku2ZQzVYPMpBrGoCU9OsVcP+aSlThym+4tdMylnLBghPfNb3oo D4d+ig2MVQK/RxIBTt85TYEGXtCdzg9fbB/IKhOoYtyOwVBSbxOsNslOK6SevIB1LI qL2h/NcPGF3YbcbcTVYBR7EQ1ipuvkYnGq/6kDDQ= X-QQ-mid: esmtpsz18t1779691481t4a6f4dae X-QQ-Originating-IP: /RsXuNNKq/ca4ikzsT+cYFLF4h7Ohjy+wsY0QzGR2BI= Received: from localhost.localdomain ( [113.57.152.160]) by bizesmtp.qq.com (ESMTP) with id ; Mon, 25 May 2026 14:44:40 +0800 (CST) X-QQ-SSF: 0000000000000000000000000000000 X-QQ-GoodBg: 1 X-BIZMAIL-ID: 13192660009275866404 EX-QQ-RecipientCnt: 4 From: Wentao Guan To: masahiroy@kernel.org Cc: petr.pavlu@suse.com, linux-kernel@vger.kernel.org, Wentao Guan Subject: [PATCH] genksyms: Support arm64 CRC32 hardware acceleration Date: Mon, 25 May 2026 14:43:14 +0800 Message-Id: <20260525064314.1559017-1-guanwentao@uniontech.com> X-Mailer: git-send-email 2.30.2 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 X-QQ-SENDSIZE: 520 Feedback-ID: esmtpsz:uniontech.com:qybglogicsvrgz:qybglogicsvrgz3a-0 X-QQ-XMAILINFO: OFGgCAbPpgzGC1fYWTL+DTwQf+6fQDsXL/uWJBJRVGqXzMpBJs+U+nhn gO3Tk+XkXu6F3iYLZpi71mdWSN78GDERIRtEF72p+FI+aVc/sq3CSoa7fwtodM2CRx6reDe UEwQY9IXHaVVcUiYD3Ey0+Vplp2rcSTecQuz5VbrGcezSZdJ/8gIhsyglEvnEVUzRNxWBPg 49zxA1DcvwH1m/mc+ycFQeymMgayeGrkL4rbFoTg9EjYYzfrFJ/HTtPy9H0cjdmgkjpTCJU Uk4OKOLpTG1rExAyONNrreB2P6CsVlK5weSTRazxu2i7JFz/toyH6zgZXGE1oJ0NdqxILac mmk4WX40d/NzdqfgUOXm4jg6Oko6/NYYduGtZhk+mgTz8sp++nB0qvUJUTtJvMK9fO2BeCR lt7rf7nU9DVUTTw69d50WG6mYaWqC95drPPl3z8nR9GZ/AVs7rsa4/CVOZfbPuMpHIChAHR MIskrAO7E40pdCUBdR5BRFW8u71SNJRSIev3b3iEv4erUqaHvIaiT1qudW0J7nHZ/PDvHLx 4AlXvBkr64Talcu4GR1QjECiKmRPHPXPdVFokNTdmY/Ji12RGrkYZ+39AxV9AEoOAsSmuoO 9xUddY3B072qvzFeL5GxmOJKcs/yQvVGzNnLOCvyL7SBAbdtaE58t1nOzVgpkbExMErbcMq MxLgxg2NsivIBRevW1RuLyUBpkDPyeNQ8+TPfJSnDDrS8+PFV2nKMSN85+H8knqrrMQbewU ZTmIWhP/8CReirKfbbR3oN0g7qg4+/Ueyu0IWPXBKBz58mvdjCHGI7oNwHTOoTx9muKOOZx gSWLaO29qXK0iK0N4h14QTS9pQ9vd5zToXCHwFc7ChmC4uDma/vybbvQXnFHDECQXHzm+mf NnQS1DxMqmHeIOcFd5UBfbN5Trb9/E6+Z6A0DoW/rFfPoOIyNe2ji2E5fXR/wxaiyzRAT00 nuJgWwTetFlsvgcLbl9fHaxrBE6nFsMmfIu34mad+E5dwGXhL45cLe4BK4eglTc18zAZevb 1WeRI8RkSs/o+syEBzz8pOPdW+1DArQzA/cuEmwiPG6DwUWkVm6KrjqkUPuKA= X-QQ-XMRINFO: NyFYKkN4Ny6FuXrnB5Ye7Aabb3ujjtK+gg== X-QQ-RECHKSPAM: 0 Content-Type: text/plain; charset="utf-8" Use hardware 'crc32b' to build genksyms when support, it shows 2x speed up than crctab32 way. Signed-off-by: Wentao Guan --- scripts/genksyms/genksyms.c | 41 +++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/scripts/genksyms/genksyms.c b/scripts/genksyms/genksyms.c index 83e48670c2fcf..8a56782195593 100644 --- a/scripts/genksyms/genksyms.c +++ b/scripts/genksyms/genksyms.c @@ -116,13 +116,52 @@ static const uint32_t crctab32[] =3D { 0x2d02ef8dU }; =20 +/* + * Architecture-specific CRC32 hardware acceleration. + */ +static int crc32_hw_available; + +#ifdef __aarch64__ +#include +#include + +static void crc32_check_hw(void) +{ + crc32_hw_available =3D (getauxval(AT_HWCAP) & HWCAP_CRC32) !=3D 0; +} + +static inline uint32_t crc32_hw_byte(uint8_t c, uint32_t crc) +{ + asm volatile(".arch_extension crc\n\t" + "crc32b %w0, %w0, %w1" : "+r"(crc) : "r"(c)); + return crc; +} + +#else +static void crc32_check_hw(void) +{ + crc32_hw_available =3D 0; +} +#endif + static uint32_t partial_crc32_one(uint8_t c, uint32_t crc) { +#if defined(__aarch64__) + if (__builtin_expect(crc32_hw_available, 0)) + return crc32_hw_byte(c, crc); +#endif return crctab32[(crc ^ c) & 0xff] ^ (crc >> 8); } =20 static uint32_t partial_crc32(const char *s, uint32_t crc) { +#if defined(__aarch64__) + if (__builtin_expect(crc32_hw_available, 0)) { + while (*s) + crc =3D crc32_hw_byte(*s++, crc); + return crc; + } +#endif while (*s) crc =3D partial_crc32_one(*s++, crc); return crc; @@ -740,6 +779,8 @@ int main(int argc, char **argv) FILE *dumpfile =3D NULL, *ref_file =3D NULL; int o; =20 + crc32_check_hw(); + struct option long_opts[] =3D { {"debug", 0, 0, 'd'}, {"warnings", 0, 0, 'w'}, --=20 2.30.2