From nobody Tue Oct 15 21:18:05 2024 X-Original-To: dev-commits-src-main@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 4XSn4t0R6Mz5Z1q2; Tue, 15 Oct 2024 21:18:06 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (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 "mxrelay.nyi.freebsd.org", Issuer "R11" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4XSn4s73JYz54wB; Tue, 15 Oct 2024 21:18:05 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1729027086; 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; bh=MQOkHRK48YceP9ksbpYNm5g5PUhXhZYfVlCOujVWLv0=; b=qgevh0XwqN6U9SDwqRnDcpuiSk7QgV5WxWUQo/O+w7oc2yWINuH5oJIJhc2Y6Q6hwuw0AY M8ccT6K5VwvC7pOQCc2cKbMN+QhuD1xt6BJqgipFS+/Bkhvkw5KoRlWk8GpY6hbHkpMZUT tILsBw6YoU/zib3WRY+sc3GuKOF/5HKteQ+KLz1VyhAtDfQJ/X5FkPtd6lLmPfz3oJuRvo ulS4pzts1U+PXJ2ps8i49s5gycyKzHo9oPwmwp7AD0x4S8dHPC9ItSbMkVTidagUbYyh7B QZalV3Qrlifwl0XbtokP66g1mzERo8myYW+0MqZFt5Km3PtnLI9B6V4fcu/3IA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1729027086; 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; bh=MQOkHRK48YceP9ksbpYNm5g5PUhXhZYfVlCOujVWLv0=; b=IzeMDgXRK562h4orqozUIbaVTRRnNIUjgrvvVWtCAiDPNau2cc5iXQno/2Q5XfFNIFemM1 dKbxo6JVtgjC2YNin8YPElcZkKu0yoL6/3DkO8zWyQ2xywL2xLA7cHqbptacnONv3l6L5I aAGHPReVUHbCNB8NCVog6MhD57Rkj1qF+R752ZPBu0Jd/0z8Db6r9iQ8nSt3zPMVREvR3V JuqZ6q5VepF2AJoU52Lgr6kM05QfRBrc5LfuU+kNGXycYjDENT/yggKlZGdFEbx3R9grsd KJBXMA7LzlpeVpWvlG2ce6K4otHvgNYGuHkH9klswfZm0uJbmO5Te3eF0jHitA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1729027086; a=rsa-sha256; cv=none; b=ANJb76RuhVIBqDFokYpsQgh/nJqOGgmXq2YSj683jods5wuvOGXzlnPD9EHwLDuwYuCGSm FK8svz8kUW7QyirUtU98P1ol3ys/EgLl9zrsSbqLRYMg32AuAFOtwIdKOXz6DFQqj1zvWt AQ1O5qoEpobSxsaL4E52DUyUDvomWedzkqXlOykeCNfweDBGd/BYUD0RqzPgzJQ5T77Uk0 KoaP6NfafHxonmyBKXIjvVxM82UY7zloCtKGqL0/ZA/Pr8CWQxDO1SkLILy+hEe6mwaZcn ZRr9KeYSYYf/DvGflDrxMFUmredok8EH/qRLfgySAyhIu5sTOO9TeWsewSVodQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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 did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4XSn4s6fTRzf34; Tue, 15 Oct 2024 21:18:05 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 49FLI5ss021604; Tue, 15 Oct 2024 21:18:05 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 49FLI5Or021601; Tue, 15 Oct 2024 21:18:05 GMT (envelope-from git) Date: Tue, 15 Oct 2024 21:18:05 GMT Message-Id: <202410152118.49FLI5Or021601@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Warner Losh Subject: git: b487b1f50289 - main - openzfs/freebsd: Use compiler.h from FreeBSD's base's linuxkpi List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: imp X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: b487b1f502899530951bd3923b3927c067d13ffb Auto-Submitted: auto-generated The branch main has been updated by imp: URL: https://cgit.FreeBSD.org/src/commit/?id=b487b1f502899530951bd3923b3927c067d13ffb commit b487b1f502899530951bd3923b3927c067d13ffb Author: Warner Losh AuthorDate: 2024-10-15 19:49:42 +0000 Commit: Warner Losh CommitDate: 2024-10-15 21:05:49 +0000 openzfs/freebsd: Use compiler.h from FreeBSD's base's linuxkpi The FreeBSD linux/compiler.h in OpenZFS was copied from a very old version of FreeBSD's linuxkpi's linux/compiler.h. There's no need for this duplication. Use FreeBSD's linuxkpi version instead, and provide zfs_fallthrough to augment it (it's all that's needed). Use #pragma once to avoid naming issues for guard variables. Since this is a complete rewrite, use my copyright here (the original code in FreeBSD still credits everybody). Remove extra copies of macros that were defined elsewhere, but are now properly defined in LinuxKPI so are redundant. This is currently pull request #16650 upstream. Committing now to get wider testing (make universe works, but historically doesn't catch all errors). Sponsored by: Netflix Reviewed by: brooks Differential Revision: https://reviews.freebsd.org/D47131 --- .../openzfs/include/os/freebsd/linux/compiler.h | 83 +++------------------- .../openzfs/include/os/freebsd/spl/sys/ccompat.h | 9 --- .../openzfs/include/os/freebsd/spl/sys/debug.h | 4 -- 3 files changed, 8 insertions(+), 88 deletions(-) diff --git a/sys/contrib/openzfs/include/os/freebsd/linux/compiler.h b/sys/contrib/openzfs/include/os/freebsd/linux/compiler.h index b408b77c746d..24f09c722158 100644 --- a/sys/contrib/openzfs/include/os/freebsd/linux/compiler.h +++ b/sys/contrib/openzfs/include/os/freebsd/linux/compiler.h @@ -1,10 +1,5 @@ /* - * Copyright (c) 2010 Isilon Systems, Inc. - * Copyright (c) 2010 iXsystems, Inc. - * Copyright (c) 2010 Panasas, Inc. - * Copyright (c) 2013-2016 Mellanox Technologies, Ltd. - * Copyright (c) 2015 François Tigeot - * All rights reserved. + * Copyright (c) 2024 Warner Losh. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -26,76 +21,14 @@ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * $FreeBSD$ */ -#ifndef _LINUX_COMPILER_H_ -#define _LINUX_COMPILER_H_ - -#include - -#define __user -#define __kernel -#define __safe -#define __force -#define __nocast -#define __iomem -#define __chk_user_ptr(x) ((void)0) -#define __chk_io_ptr(x) ((void)0) -#define __builtin_warning(x, y...) (1) -#define __acquires(x) -#define __releases(x) -#define __acquire(x) do { } while (0) -#define __release(x) do { } while (0) -#define __cond_lock(x, c) (c) -#define __bitwise -#define __devinitdata -#define __deprecated -#define __init -#define __initconst -#define __devinit -#define __devexit -#define __exit -#define __rcu -#define __percpu -#define __weak __weak_symbol -#define __malloc -#define ___stringify(...) #__VA_ARGS__ -#define __stringify(...) ___stringify(__VA_ARGS__) -#define __attribute_const__ __attribute__((__const__)) -#undef __always_inline -#define __always_inline inline -#define noinline __noinline -#define ____cacheline_aligned __aligned(CACHE_LINE_SIZE) -#define zfs_fallthrough __attribute__((__fallthrough__)) - -#if !defined(_KERNEL) && !defined(_STANDALONE) -#define likely(x) __builtin_expect(!!(x), 1) -#define unlikely(x) __builtin_expect(!!(x), 0) -#endif -#define typeof(x) __typeof(x) - -#define uninitialized_var(x) x = x -#define __maybe_unused __unused -#define __always_unused __unused -#define __must_check __result_use_check - -#define __printf(a, b) __printflike(a, b) -#define barrier() __asm__ __volatile__("": : :"memory") -#define ___PASTE(a, b) a##b -#define __PASTE(a, b) ___PASTE(a, b) - -#define ACCESS_ONCE(x) (*(volatile __typeof(x) *)&(x)) - -#define WRITE_ONCE(x, v) do { \ - barrier(); \ - ACCESS_ONCE(x) = (v); \ - barrier(); \ -} while (0) - -#define lockless_dereference(p) READ_ONCE(p) +/* + * FreeBSD's LinuxKPI compiler.h as far back as FreeBSD 12 has what we need, + * except zfs_fallthrough. + */ +#pragma once -#define _AT(T, X) ((T)(X)) +#include -#endif /* _LINUX_COMPILER_H_ */ +#define zfs_fallthrough __attribute__((__fallthrough__)) diff --git a/sys/contrib/openzfs/include/os/freebsd/spl/sys/ccompat.h b/sys/contrib/openzfs/include/os/freebsd/spl/sys/ccompat.h index 48749fb8eea2..07b3515ad964 100644 --- a/sys/contrib/openzfs/include/os/freebsd/spl/sys/ccompat.h +++ b/sys/contrib/openzfs/include/os/freebsd/spl/sys/ccompat.h @@ -70,15 +70,6 @@ hlist_del(struct hlist_node *n) n->next->pprev = n->pprev; } /* BEGIN CSTYLED */ -#define READ_ONCE(x) ({ \ - __typeof(x) __var = ({ \ - barrier(); \ - ACCESS_ONCE(x); \ - }); \ - barrier(); \ - __var; \ -}) - #define HLIST_HEAD_INIT { } #define HLIST_HEAD(name) struct hlist_head name = HLIST_HEAD_INIT #define INIT_HLIST_HEAD(head) (head)->first = NULL diff --git a/sys/contrib/openzfs/include/os/freebsd/spl/sys/debug.h b/sys/contrib/openzfs/include/os/freebsd/spl/sys/debug.h index f041dde34fc8..9eb424dd0373 100644 --- a/sys/contrib/openzfs/include/os/freebsd/spl/sys/debug.h +++ b/sys/contrib/openzfs/include/os/freebsd/spl/sys/debug.h @@ -95,10 +95,6 @@ spl_assert(const char *buf, const char *file, const char *func, int line) #ifndef expect #define expect(expr, value) (__builtin_expect((expr), (value))) #endif -#ifndef __linux__ -#define likely(expr) expect((expr) != 0, 1) -#define unlikely(expr) expect((expr) != 0, 0) -#endif #define PANIC(fmt, a...) \ spl_panic(__FILE__, __FUNCTION__, __LINE__, fmt, ## a)