From nobody Fri Aug 18 05:09:51 2023 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4RRqgP0JNpz4qgSK; Fri, 18 Aug 2023 05:09:53 +0000 (UTC) (envelope-from kevans@FreeBSD.org) Received: from smtp.freebsd.org (smtp.freebsd.org [IPv6:2610:1c1:1:606c::24b:4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "smtp.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4RRqgN5zJwz4Jb2; Fri, 18 Aug 2023 05:09:52 +0000 (UTC) (envelope-from kevans@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1692335392; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=RMVn905q3mGimf19sTX6YqnmN+if8OI43Bz4Q4B/GUc=; b=O6tbCkOjnAVnj9IUQQFONyEewh3e4Mmv6LiKiCICN5Un+0qdYnhswjDtE4wCyq5kX3MfQl XWrw02QxuLR9GUOsGK/Xpyzz8Viv014bl8o7V6ZXet6sqRciKgWpjcEwoEaR6RnhK9LWid jevIfRgOPEpAuJ1mWBSFv0IK18uF4J/LCQRcbEJC2wiMJ4pbSTdMCsXNh1OFf42oFxCqzM B6SNizeKlrlv6Ou4waMDZs0GhEitaZ4jznFC4Qqd5ZHpZAnSIBQ8XmigdIUp9KeZdXtQl1 XeqAN4TW8B5dwjHBkTnEAc++0igNNKy2yKz7Fu8w+wkNAEl5BGQmzL+4FF3GGw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1692335392; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=RMVn905q3mGimf19sTX6YqnmN+if8OI43Bz4Q4B/GUc=; b=d/YEPEtsWKMeqoT6FnbJuDJx/453MRp1XVTQcLvXUBG/DmKrMpmiZnIYhNnn+XA9PsuM+H e+u+d/kC/SYMqr2TLHx6vzR3UPArUfcywWb98TNMiJcoRUosJDH3yY9EfuWNH3qCiav6t9 FHtSvftYteH/mycw5TKPRhM2RE+WnIn2zdl9uhiRsaGxFgwh5F/q65ChHOzHuqHHzCKhPO fQNn46Xcl/LQGOYRhQRWAaQ/uq/PbQwJniiSr1ZSg1LC587mmEeaZy3VEBJ7BRXyBz4vOh 1lsH5hZt7aWzGxWjfkPeDp1aB32iHvhcYaXNcsrAmNuZ66cR/Ji4Lj7fnCKRlQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1692335392; a=rsa-sha256; cv=none; b=SWn1Zd0L/DbHkhyjG6uIVNkwUFxrFrVcvdXYRB7rUOGkaXQCNMu18GKkA/9ZCCgdiDeWw7 kBkyHMwD/PrHegBWXQi/A4YWD+jonFuBowzspgdht2V/2YaB+k6E5hrUxO8mI0IEKqdC37 yg7GxlmjBfMANxovMcPYfB7GquRHfiWyGOlZhL6+wjeoNAqFmjbixs5YXN2gFWaDJ4dnWR aroN1orzF8UdmuztU5mNXl4RAEYC2skagNxrfgLDfUSBzf/14wJjlkU5xGqbp99cabT7aO wxXzH6PaR9JVePa3CF0HbpdQP9Zv1wNTb0LzutYnXtCGfvLOn5YBuF4DHYO6Yg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from [10.9.4.95] (unknown [209.182.120.176]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) (Authenticated sender: kevans/mail) by smtp.freebsd.org (Postfix) with ESMTPSA id 4RRqgN2BZPz141k; Fri, 18 Aug 2023 05:09:52 +0000 (UTC) (envelope-from kevans@FreeBSD.org) Message-ID: Date: Fri, 18 Aug 2023 00:09:51 -0500 List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:102.0) Gecko/20100101 Thunderbird/102.13.0 Subject: Re: git: b80ea452375f - main - LinuxKPI: implement mul_u64_u64_div_u64() Content-Language: en-US To: "Bjoern A. Zeeb" , src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org References: <202308180121.37I1LPTc024071@gitrepo.freebsd.org> From: Kyle Evans In-Reply-To: <202308180121.37I1LPTc024071@gitrepo.freebsd.org> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 8/17/23 20:21, Bjoern A. Zeeb wrote: > The branch main has been updated by bz: > > URL: https://cgit.FreeBSD.org/src/commit/?id=b80ea452375f52a3ab7d82a9aef10da0d89985d9 > > commit b80ea452375f52a3ab7d82a9aef10da0d89985d9 > Author: Bjoern A. Zeeb > AuthorDate: 2023-05-16 20:55:00 +0000 > Commit: Bjoern A. Zeeb > CommitDate: 2023-08-18 01:20:39 +0000 > > LinuxKPI: implement mul_u64_u64_div_u64() > > Implement mul_u64_u64_div_u64() for an updated iwlwifi driver (though > we do not yet use it there; it is used for in-kernel ptp on wifi). > > Sponsored by: The FreeBSD Foundation > Submitted by: cperciva > MFC after: 10 days > Reviewed by: cperciva, dwmalone > Differential Revision: https://reviews.freebsd.org/D40120 This broke buildkernel on multiple architectures, it seems: https://ci.freebsd.org/tinderbox/ I've confirmed that reverting this commit fixes it. I'd be lying if I claimed to understand what's going on: 23:09:45 In file included from /usr/src/sys/dev/cxgbe/iw_cxgbe/device.c:39: 23:09:45 In file included from /usr/src/sys/compat/linuxkpi/common/include/linux/module.h:41: 23:09:45 In file included from /usr/src/sys/compat/linuxkpi/common/include/linux/kobject.h:34: 23:09:45 In file included from /usr/src/sys/compat/linuxkpi/common/include/linux/kernel.h:48: 23:09:45 In file included from /usr/src/sys/compat/linuxkpi/common/include/linux/sched.h:43: 23:09:45 In file included from /usr/src/sys/compat/linuxkpi/common/include/linux/hrtimer.h:32: 23:09:45 /usr/src/sys/compat/linuxkpi/common/include/linux/ktime.h:34:2: error: embedding a #include directive within macro arguments is not supported 23:09:45 #include 23:09:45 ^ 23:09:45 /usr/src/sys/compat/linuxkpi/common/include/linux/math64.h:151:2: note: expansion of macro 'KASSERT' requested here 23:09:45 KASSERT(rem < z, ("%s: rem %ju >= z %ju\n", __func__, 23:09:45 ^ > --- > sys/compat/linuxkpi/common/include/linux/math64.h | 48 +++++++++++++++++++++++ > 1 file changed, 48 insertions(+) > > diff --git a/sys/compat/linuxkpi/common/include/linux/math64.h b/sys/compat/linuxkpi/common/include/linux/math64.h > index 1b00fd71e69f..e4ddce5b823e 100644 > --- a/sys/compat/linuxkpi/common/include/linux/math64.h > +++ b/sys/compat/linuxkpi/common/include/linux/math64.h > @@ -106,6 +106,54 @@ mul_u64_u32_div(uint64_t x, uint32_t y, uint32_t div) > return ((x / div) * y + (rem * y) / div); > } > > +static inline uint64_t > +mul_u64_u64_div_u64(uint64_t x, uint64_t y, uint64_t z) > +{ > + uint64_t res, rem; > + uint64_t x1, y1, y1z; > + > + res = rem = 0; > + x1 = x; > + y1z = y / z; > + y1 = y - y1z * z; > + > + /* > + * INVARIANT: x * y = res * z + rem + (y1 + y1z * z) * x1 > + * INVARIANT: y1 < z > + * INVARIANT: rem < z > + */ > + while (x1 > 0) { > + /* Handle low bit. */ > + if (x1 & 1) { > + x1 &= ~1; > + res += y1z; > + rem += y1; > + if ((rem < y1) || (rem >= z)) { > + res += 1; > + rem -= z; > + } > + } > + > + /* Shift x1 right and (y1 + y1z * z) left */ > + x1 >>= 1; > + if ((y1 * 2 < y1) || (y1 * 2 >= z)) { > + y1z = y1z * 2 + 1; > + y1 = y1 * 2 - z; > + } else { > + y1z *= 2; > + y1 *= 2; > + } > + } > + > + KASSERT(res * z + rem == x * y, ("%s: res %ju * z %ju + rem %ju != " > + "x %ju * y %ju", __func__, (uintmax_t)res, (uintmax_t)z, > + (uintmax_t)rem, (uintmax_t)x, (uintmax_t)y)); > + KASSERT(rem < z, ("%s: rem %ju >= z %ju\n", __func__, > + (uintmax_t)rem, (uintmax_t)z); > + > + return (res); > +} > + > static inline uint64_t > mul_u64_u32_shr(uint64_t x, uint32_t y, unsigned int shift) > {