From nobody Tue Jun 9 00:55:10 2026 Received: from smtpbgbr1.qq.com (smtpbgbr1.qq.com [54.207.19.206]) (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 6B0A55478D for ; Mon, 25 May 2026 07:06:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=54.207.19.206 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779692773; cv=none; b=TS+MFNkLetoKdCiF4hNcSSMPQhfzgJd+7Et/FjVUTkRA3T06mEUBy99YnTw8JYISW8o+zUSwbpW5L2wWpFPYmGjkKe/3Zd5C5mAEJshp5B7jxpcU0oHiKxLLauahxMK1V36xs7wZItcCu5O2w1LC58DhsxvG6aGwhFEDzvIktDk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779692773; c=relaxed/simple; bh=IQaioOMFuWAMZrncpaq1DdoXfwzsBsRBvzHwogfL38I=; h=From:To:Cc:Subject:Date:Message-Id:MIME-Version; b=uyt52abg9LWMOiWR2NqnnjLI2F36LvdV3zcHkIpFMszJ+3CdC96mbJsfcJJ+xZ3P18lE1Y6hHnyyjvF+rokYGaiJ97Qw9f5A+svOd7kbEjprzwi2a8N+73wJkC1nxp13fW8dhrsV4KgWxKtYNwizqut2KOnNC/JHmLhGhjlNDiE= 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=FeguLB0Q; arc=none smtp.client-ip=54.207.19.206 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="FeguLB0Q" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=uniontech.com; s=onoh2408; t=1779692729; bh=+JZLKFtpbQa8t9YWCzWKT298a/vqKh+ZeEagqjX9ofs=; h=From:To:Subject:Date:Message-Id:MIME-Version; b=FeguLB0QX9wnwRnDLJGt4jy3zBw6xYZO6whWbYMH8dMfHhbMZB1IOjOFhFgvpoROP 6LfPWLAReuPHKiv7NrqeL5d/HusEgtrruf6k+U+ZinnSCDvdnYfhsgJJ3nWg8f9Epc dsDY7m9ZysGrgozcjCx+G5KTyAhwPlftSN89YARM= X-QQ-mid: esmtpgz14t1779692724t210dc481 X-QQ-Originating-IP: CuQZge4QakGktiS/NrnUQnbGf4fq6Fu9PTH/xCnNwTI= Received: from localhost.localdomain ( [113.57.152.160]) by bizesmtp.qq.com (ESMTP) with id ; Mon, 25 May 2026 15:05:22 +0800 (CST) X-QQ-SSF: 0000000000000000000000000000000 X-QQ-GoodBg: 1 X-BIZMAIL-ID: 609239275968540913 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 v2] genksyms: Support arm64 CRC32 hardware acceleration Date: Mon, 25 May 2026 15:03:45 +0800 Message-Id: <20260525070344.1564886-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: esmtpgz:uniontech.com:qybglogicsvrgz:qybglogicsvrgz3a-0 X-QQ-XMAILINFO: NrnJSkE52p6cxrBFoK6QRWHH/MM3IF6siGezmsedJb1HyCkZu102EHU3 47Gw1JBbh10GW+MNRRqML4ry1N7oVZSv7+TnWNagH3iHwNFHoPq2pNEM6+4yjVozN5b2RrV /SBMMkYzJ/2887MQ1sDHSUasv1bw6D8eKHjRIMVqylxjRyzpvXLeHshCvunBDjdii+zhovN 6fqnbXztFYmqSbQU2iopSERAHBzEaOCqMYjIAlTI7u7T3gB1TvLOfwwcukDc4zONarqfWUk gD3xhozLoPX1OTgpsWKp/cRyKSXYWJ5r9AbK8TdES5TFe/b+lmlsJQ4ff8kmT0FylYgtq89 X+rMQPZLuuss84C+GH8Q0aJo6uBuqFQ7CLETKk5MU/NvHkiZrP3FWmle04BXgjtDmXgZArl vnljxGXalIkqF85kmgtfWxbRx56Ihkekwcw9WFsnwnIirmKcpcDzPWJPEVkUzpaec9Dj+Ik 07hApYloJ6cTGJTmBRybIX8hW11zRh6ccWoGjR9rNfJROtvTaH5dyONirugEHJvbgmbce3p taWE8Rd8JIUo1T68MKWQF3wDyZw4IJO86QNwwCPYKXLcIVVLYp8x1NlNuIgs2ojhTx1OeRa kTLCPdp99PmYcXc56+XLsk+rwFBDaJXi+KN1PY+K0Xe5ukDnpzjdT/HiaF2DlvGCtmKvYND aJcSprZHmIOPE91T9W9MHKqzbG5JLxkdcu6X7Whv/POI6QBr01f8MPlsZTJgwxcUP4OwU26 e2RkB+MdYHmGtAdH+u+mv3fXpGgbIbOESHZNw5vE8m1dgJbYU5fx0eyzLuQDsjhgeoWeVoZ upwEAm6niMZA+W5UqHLypK12mYjqNHey2x9rnRVeRTb0fnYkRPbPrgXDmkDp+P8S/wZ19fa iqWNILQPoVQqa/gI8f4RJdcmQ+zu6wRsEWmRem5qENdd7DW8maotfCvM1ENIq40SD6oaDgz KXRpoYv4hVtihdNbAhRWXVYslMEOkFgyZG/1NKNU6k+jkOTBByI7irzJ2EhCEr/nwIverQF zDsRyxOHMdJIHO/gmYorlSIoy7fMb3dNs+fubO99GJ10rFaV7uxcG4XApzAOrNVDhJYRdPh zZuHUr30CbyW4Y16vmvQG9rA5rWi+ZftXlroHuznoP7+ipFJK1d/fO2xx8HBMtwv/jcD88G mcCZ X-QQ-XMRINFO: M/715EihBoGS47X28/vv4NpnfpeBLnr4Qg== X-QQ-RECHKSPAM: 0 Content-Type: text/plain; charset="utf-8" Use hardware 'crc32b' to partial_crc32_one() when support, it shows 2x speed up than crctab32 way. I think it will be scaled to more architecture. Signed-off-by: Wentao Guan --- changelog: 1. remove change in partial_crc32(), for partial_crc32_one() already use crc32b. --- --- scripts/genksyms/genksyms.c | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/scripts/genksyms/genksyms.c b/scripts/genksyms/genksyms.c index 83e48670c2fcf..80b7797c842aa 100644 --- a/scripts/genksyms/genksyms.c +++ b/scripts/genksyms/genksyms.c @@ -116,8 +116,40 @@ 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 @@ -740,6 +772,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