From nobody Sat Oct 10 18:29:00 2026 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 4j2C1934djz6vd9M for ; Sat, 10 Oct 2026 18:29:01 +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 "YR2" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4j2C1910yVz4n8K for ; Sat, 10 Oct 2026 18:29:01 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1791656941; 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=cLjRFEI38lHVw/PY15bms95Nv39Y+DIPtUc85EBQ33s=; b=Kp5+jnqdVxukDaiNQmsMsTT8kF4tLLHCv7aAdIHF3RhoEgPhtOtD6kOMAbgIv7mMZfu4DD UfLcvoORUDVnb+t0Xs48yehrwWz9ls878MeZAkujDz6L5in5D8c00DPUysHafNXkZN1Jfx djoFOG0ou69C5o1HvL1g8Fu5RyRqliug2bZm0Hm6uXxCRFS/A+SQqma5kbVGt443Dyry5Q bQH4s+kQ5EiFy81FPm/din+0ZxL78VuDe7OAivQ+qcimExBSIWwsDlmoEKDSkjvft24WI0 grxnnn9c6TrDMgwUskahZddh4CufsxbM84H9UBdZcijSs/E1Oz4QFw6jv9rxgw== ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791656941; b=KjO42qsroilu5lfL/tmJKNppyMnvzeFF7Ize2mspn5dojbL2czh4TOA71blcfGCXeLuOxg qWwU4qql6TmNfu73AEIxr883HH6spDE9s7zSGOw/pJykcKu/QDFeb8cmd+48bxdmL2vKnX lkfHb9dv0KO3rmHe1dpe4+aecSJ8Iaf+rwe2MQ6KutBh26JJmkFhCrJSW4tPyWfy5ugS9C FOhpOQZPnPhTjvvoxXTR/Jr9gLUW+l77y7ulX6+d4r6/iuNoMZAbZLzKMWNj/vVku3y78f gJYhJgOsuSsXN5zafQ6RKj3RffwFcZ5WU2TrGqh+zUKzejMnkHzR4Xt3j+Tr+Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1791656941; 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=cLjRFEI38lHVw/PY15bms95Nv39Y+DIPtUc85EBQ33s=; b=ozmR4peM4Vvrhxlb5m6GmHwQdot+J+K9yRI76RexEf+hYMGYyj8wEEt0v6Tj0k+mlGLJe5 Pp2kJhmDQIGMXw+f1DpWRbjU3Mo67zaf72JzbJODxdcMJTFrl4ifXiJC6aV8XJw6AH+0bf mxPsfjYH7uaz20Bnp03lyJ7iJctkdgXNmTrmbHzoxxuDSW1fRZ7O9yrA9nVfMSc9Fqw1fv W+muTkjZM+05HdvaKYvIuOCJVCiSf6WSQkKE2zlmt3TjDYt+p87AYe0L4bTiJH4mLJCoX3 Wbi6qvBkvb54ZXN3nR85r+ogKznao+m+wQ0jh9KQzjILrgYowtWjPuN+fO089Q== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4j2C1874yXz15KK for ; Sat, 10 Oct 2026 18:29:00 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 22df4 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Sat, 10 Oct 2026 18:29:00 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Bjoern A. Zeeb Subject: git: 53beb6950f94 - main - LinuxKPI; factor out parts of device.h into device/devres.h List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: bz X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 53beb6950f9415eb06dc24b9addea5932e3bd0da Auto-Submitted: auto-generated Date: Sat, 10 Oct 2026 18:29:00 +0000 Message-Id: <6aca83ec.22df4.27aeddb5@gitrepo.freebsd.org> The branch main has been updated by bz: URL: https://cgit.FreeBSD.org/src/commit/?id=53beb6950f9415eb06dc24b9addea5932e3bd0da commit 53beb6950f9415eb06dc24b9addea5932e3bd0da Author: Bjoern A. Zeeb AuthorDate: 2026-10-01 23:09:14 +0000 Commit: Bjoern A. Zeeb CommitDate: 2026-10-10 18:28:32 +0000 LinuxKPI; factor out parts of device.h into device/devres.h In [1] it was pointed out that devm_kmemdup_* have moved apparently in Linux 7.0 into their own device/devres.h header file from device.h. Move them and other parts (some being dependencies) along. device/devres.h gets included from device.h so all that changes is prototype, macro, and inline function ordering. This should prepare us in case drivers start directly including the sub-header. It also helps to keep device.h more reasable. Suggested by: dumbbell (in D56396) [1] MFC after: 3 days Reviewed by: emaste Differential Revision: https://reviews.freebsd.org/D60213 --- sys/compat/linuxkpi/common/include/linux/device.h | 53 +--------------- .../linuxkpi/common/include/linux/device/devres.h | 70 ++++++++++++++++++++++ 2 files changed, 71 insertions(+), 52 deletions(-) diff --git a/sys/compat/linuxkpi/common/include/linux/device.h b/sys/compat/linuxkpi/common/include/linux/device.h index 0d06f4df59c6..08a0d809d0a4 100644 --- a/sys/compat/linuxkpi/common/include/linux/device.h +++ b/sys/compat/linuxkpi/common/include/linux/device.h @@ -48,6 +48,7 @@ #include #include /* via linux/dev_printk.h */ #include +#include #include #include @@ -291,26 +292,8 @@ dev_err_probe(const struct device *dev, int err, const char *fmt, ...) #define dev_err_cast_probe(dev, err, fmt, ...) \ ERR_PTR(dev_err_probe((dev), PTR_ERR(err), fmt, ##__VA_ARGS__) -/* Public and LinuxKPI internal devres functions. */ -void *lkpi_devres_alloc(void(*release)(struct device *, void *), size_t, gfp_t); -void lkpi_devres_add(struct device *, void *); -void lkpi_devres_free(void *); -void *lkpi_devres_find(struct device *, void(*release)(struct device *, void *), - int (*match)(struct device *, void *, void *), void *); -int lkpi_devres_destroy(struct device *, void(*release)(struct device *, void *), - int (*match)(struct device *, void *, void *), void *); -#define devres_alloc(_r, _s, _g) lkpi_devres_alloc(_r, _s, _g) -#define devres_add(_d, _p) lkpi_devres_add(_d, _p) -#define devres_free(_p) lkpi_devres_free(_p) -#define devres_find(_d, _rfn, _mfn, _mp) \ - lkpi_devres_find(_d, _rfn, _mfn, _mp) -#define devres_destroy(_d, _rfn, _mfn, _mp) \ - lkpi_devres_destroy(_d, _rfn, _mfn, _mp) void lkpi_devres_release_free_list(struct device *); void lkpi_devres_unlink(struct device *, void *); -void lkpi_devm_kmalloc_release(struct device *, void *); -void lkpi_devm_kfree(struct device *, const void *); -#define devm_kfree(_d, _p) lkpi_devm_kfree(_d, _p) static inline const char * dev_driver_string(const struct device *dev) @@ -703,40 +686,6 @@ char *lkpi_devm_kasprintf(struct device *, gfp_t, const char *, ...); #define devm_kasprintf(_dev, _gfp, _fmt, ...) \ lkpi_devm_kasprintf(_dev, _gfp, _fmt, ##__VA_ARGS__) -static __inline void * -devm_kmalloc(struct device *dev, size_t size, gfp_t gfp) -{ - void *p; - - p = lkpi_devres_alloc(lkpi_devm_kmalloc_release, size, gfp); - if (p != NULL) - lkpi_devres_add(dev, p); - - return (p); -} - -static inline void * -devm_kmemdup(struct device *dev, const void *src, size_t len, gfp_t gfp) -{ - void *dst; - - if (len == 0) - return (NULL); - - dst = devm_kmalloc(dev, len, gfp); - if (dst != NULL) - memcpy(dst, src, len); - - return (dst); -} - -static inline void * -devm_kmemdup_array(struct device *dev, const void *src, size_t n, size_t len, - gfp_t gfp) -{ - return (devm_kmemdup(dev, src, size_mul(n, len), gfp)); -} - #define devm_kzalloc(_dev, _size, _gfp) \ devm_kmalloc((_dev), (_size), (_gfp) | __GFP_ZERO) diff --git a/sys/compat/linuxkpi/common/include/linux/device/devres.h b/sys/compat/linuxkpi/common/include/linux/device/devres.h new file mode 100644 index 000000000000..f05cdb7b065c --- /dev/null +++ b/sys/compat/linuxkpi/common/include/linux/device/devres.h @@ -0,0 +1,70 @@ +/* + * SPDX-License-Identifier: BSD-2-Clause + * + * Copyright (c) 2021-2026 The FreeBSD Foundation + * + * Portions of this software were developed by Björn Zeeb + * under sponsorship from the FreeBSD Foundation. + * + */ +#ifndef _LINUXKPI_LINUX_DEVICE_DEVRES_H_ +#define _LINUXKPI_LINUX_DEVICE_DEVRES_H_ + +#include + +/* Public and LinuxKPI internal devres functions. */ +void *lkpi_devres_alloc(void(*release)(struct device *, void *), size_t, gfp_t); +void lkpi_devres_add(struct device *, void *); +void lkpi_devres_free(void *); +void *lkpi_devres_find(struct device *, void(*release)(struct device *, void *), + int (*match)(struct device *, void *, void *), void *); +int lkpi_devres_destroy(struct device *, void(*release)(struct device *, void *), + int (*match)(struct device *, void *, void *), void *); +#define devres_alloc(_r, _s, _g) lkpi_devres_alloc(_r, _s, _g) +#define devres_add(_d, _p) lkpi_devres_add(_d, _p) +#define devres_free(_p) lkpi_devres_free(_p) +#define devres_find(_d, _rfn, _mfn, _mp) \ + lkpi_devres_find(_d, _rfn, _mfn, _mp) +#define devres_destroy(_d, _rfn, _mfn, _mp) \ + lkpi_devres_destroy(_d, _rfn, _mfn, _mp) + +void lkpi_devm_kfree(struct device *, const void *); +#define devm_kfree(_d, _p) lkpi_devm_kfree(_d, _p) + +void lkpi_devm_kmalloc_release(struct device *, void *); + +static inline void * +devm_kmalloc(struct device *dev, size_t size, gfp_t gfp) +{ + void *p; + + p = lkpi_devres_alloc(lkpi_devm_kmalloc_release, size, gfp); + if (p != NULL) + lkpi_devres_add(dev, p); + + return (p); +} + +static inline void * +devm_kmemdup(struct device *dev, const void *src, size_t len, gfp_t gfp) +{ + void *dst; + + if (len == 0) + return (NULL); + + dst = devm_kmalloc(dev, len, gfp); + if (dst != NULL) + memcpy(dst, src, len); + + return (dst); +} + +static inline void * +devm_kmemdup_array(struct device *dev, const void *src, size_t n, size_t len, + gfp_t gfp) +{ + return (devm_kmemdup(dev, src, size_mul(n, len), gfp)); +} + +#endif /* _LINUXKPI_LINUX_DEVICE_DEVRES_H_ */