From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 F1A2649625 for ; Sun, 29 Jun 2025 18:43:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1751222624; cv=none; b=USVo/TZyB0UN1dnlVB2C+TNjeLHYVsCB1EjFMtZAT8PFBrR8qvLiWZ1pCVUV61nTHjlcv/L8sP8TBiChNKrY3hFXwV00Nyhlzx501Np9Fm9iVluiPWdbPYJG9O0WOFruCKV2pnR9InNNqQxVS9WumBZjx+D++P/VpaEF/4mr9Ek= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1751222624; c=relaxed/simple; bh=fHpdz9zZ7xVat8v2GURb0uLpC2gVJk3ZqhE5g1LuvM8=; h=Date:From:To:Cc:Subject:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=uDhDS+iXOwZe9dtCtigqGPSv3lqzZ7MV4ThXw10IlMP5MKc1xiVRCG7OXm5GI7of3iSlNP15jKzXs27Lc799ONFslKX9eEBc4DPaDwGcQzFChb7kGR/WJfqS9mVx1GqyoBnYc9hzKCDvQZTgxpBILXiKyqmtQtnKB+PmoFl++qY= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=oN3H9d9W; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="oN3H9d9W" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 27368C4CEEB; Sun, 29 Jun 2025 18:43:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1751222623; bh=fHpdz9zZ7xVat8v2GURb0uLpC2gVJk3ZqhE5g1LuvM8=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=oN3H9d9W5gTPjjtiiz+neH0mGDjuCB5829d86Vcjm/OvYp34HjMhh22FLv9x/yuGv D2qkyZGcbO2pqVqRUc2tblaP7pgmLjJ3Z7CRFCaLh0RvduYzlHgKuP+C9Q5sbcQOZB Ou7cMT9ifK2AQti6pIYxm6LBoFtrvPl1aFF/Ujn90DHY5RyN7CCpHSj5IDTbSebt3r cO802PyBo5/6SiZ1wce9XBa5RPLbW8sI4KWbxhGQ9B2VCXOHvrJfgxMGTwcdUAknla g/n4VPEFCXj9l5InG0JaHoDWXM/hepRfO0NkPTgLiSZMSjTO8vpu9Kmhu9UU7eZdcv l5YSkD7Jcaxrg== Date: Sun, 29 Jun 2025 19:43:36 +0100 From: Jonathan Cameron To: linux-iio@vger.kernel.org, Nuno =?UTF-8?B?U8Oh?= , Andy Shevchenko , David Lechner , Matti Vaittinen Cc: Jonathan Cameron Subject: Re: [PATCH] iio: accel: kionix-kx022a: Apply approximate iwyu principles to includes Message-ID: <20250629194336.34a03946@jic23-huawei> In-Reply-To: <20250629183649.184479-1-jic23@kernel.org> References: <20250629183649.184479-1-jic23@kernel.org> X-Mailer: Claws Mail 4.3.1 (GTK 3.24.49; x86_64-pc-linux-gnu) Precedence: bulk X-Mailing-List: linux-iio@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit On Sun, 29 Jun 2025 19:36:49 +0100 Jonathan Cameron wrote: > From: Jonathan Cameron > > Motivated by the W=1 warning about export.h that was introduced this cycle > this is an attempt to apply an approximation of the principles of including > whatever is used in the file directly. > > Helped by the include-what-you-use tool. > > Reasoning: > - Drop linux/moduleparam.h as completely unused. > - linux/array_size.h for ARRAY_SIZE() > - linux/bitmap.h for for_each_set_bit > - linux/errno.h for error codes. > - linux/export.h for EXPORT_SYMBOL*() > - linux/math64.h for do_div - alternative would be asm/div64.h > - linux/minmax.h for min() > - linux/sysfs.h for sysfs_emit() > - linux/time64.h for USEC_PER_MSEC > - linux/iio/buffer.h for iio_push_to_buffers_with_timestamp() > - asm/byteorder.h for le16_to_cpu() > > Signed-off-by: Jonathan Cameron > --- > > I picked this one fairly randomly as an example but longer term I'd like > to look through at least all new drivers with this in mind + all the ones > that are currently messing up my W=1 build logs. > > Note I've been very descriptive in this patch to allow people to suggest > better alternatives for some of the ones that aren't entirely obvious. > Helpfully I had a script lying around from 2021: https://lore.kernel.org/all/20211003153306.391766-1-jic23@kernel.org/ Just for reference I used iwyu with: make LLVM=1 LOCALVERSION= W=1 -j12 C=1 CHECK=include-what-you-use CHECKFLAGS="-Xiwyu --no_default_mappings -Xiwyu --mapping_file=iio.imp" where iio.imp is from a few years ago and contains: { include: ["\"linux/sizes.h\"", "private", , "public"] }, { include: ["\"linux/slab.h\"", "private", , "public"] }, { include: ["\"linux/spinlock.h\"", "private", , "public"] }, { include: ["\"linux/spinlock_types.h\"", "private", , "public"] }, { include: ["\"linux/spi/spi.h\"", "private", , "public"] }, { include: ["\"linux/stat.h\"", "private", , "public"] }, { include: ["\"linux/stdarg.h\"", "private", , "public"] }, { include: ["\"linux/stddef.h\"", "private", , "public"] }, { include: ["\"linux/string.h\"", "private", , "public"] }, { include: ["\"linux/stringify.h\"", "private", , "public"] }, { include: ["\"linux/sysfs.h\"", "private", , "public"] }, { include: ["\"linux/types.h\"", "private", , "public"] }, { include: ["\"linux/uuid.h\"", "private", , "public"] }, { include: ["\"linux/sched.h\"", "private", , "public"] }, { include: ["\"linux/wait.h\"", "private", , "public"] }, { include: ["\"linux/workqueue.h\"", "private", , "public"] }, { include: ["\"asm-generic/int-ll64.h\"", "private", , "public"] }, { include: ["\"linux/device.h\"", "private", , "public"] }, { include: ["\"linux/dev_printk.h\"", "private", , "public"] }, { include: ["\"linux/device/bus.h\"", "private", , "public"] }, { include: ["\"linux/device/driver.h\"", "private", , "public"] }, { include: ["\"linux/bits.h\"", "private", , "public"] }, { include: ["\"vdso/bits.h\"", "private", , "public"] }, { include: ["\"vdso/limits.h\"", "private", , "public"] }, { include: ["\"linux/limits.h\"", "private", , "public"] }, { include: ["\"vdso/ktime.h\"", "private", , "public"] }, { include: ["\"linux/ktime.h\"", "private", , "public"] }, { include: ["\"vdso/time64.h\"", "private", , "public"] }, { include: ["\"linux/time.h\"", "private", , "public"] }, { include: ["\"linux/timer.h\"", "private", , "public"] } ] Clear this needs a few upates, like mutex_types.h -> mutex.h and probably devres.h->device.h output was: drivers/iio/accel/kionix-kx022a.c should add these lines: #include // for le16_to_cpu #include // for do_div #include // for for_each_set_bit #include // for __aligned #include // for EINVAL, EBUSY, ENOMEM, ENODEV #include // for EXPORT_SYMBOL_NS_GPL #include // for iio_push_to_buffers_with_tim... #include // for __cmp_op_min, min, __cmp_op_max #include // for false, true, NULL #include // for sysfs_emit #include // for USEC_PER_MSEC, NSEC_PER_MSEC #include "linux/array_size.h" // for ARRAY_SIZE #include "linux/device/devres.h" // for devm_kasprintf #include "linux/gfp_types.h" // for GFP_KERNEL #include "linux/mutex_types.h" // for mutex drivers/iio/accel/kionix-kx022a.c should remove these lines: - #include // lines 13-13 The full include-list for drivers/iio/accel/kionix-kx022a.c: #include "kionix-kx022a.h" #include // for le16_to_cpu #include // for do_div #include // for for_each_set_bit #include // for guard #include // for __aligned #include // for msleep #include // for dev_err_probe, dev_err, dev_... #include // for EINVAL, EBUSY, ENOMEM, ENODEV #include // for EXPORT_SYMBOL_NS_GPL #include // for iio_push_to_buffers_with_tim... #include // for iio_chan_info_enum, iio_endian #include // for IIO_DEVICE_ATTR_RO #include // for devm_iio_trigger_register #include // for iio_trigger_notify_done, iio... #include // for devm_iio_triggered_buffer_se... #include // for irqreturn, irqreturn_t, devm... #include // for __cmp_op_min, min, __cmp_op_max #include // for MODULE_AUTHOR, MODULE_DESCRI... #include // for mutex_unlock, mutex_lock #include // for fwnode_irq_get_byname, dev_f... #include // for regmap_range, regmap_set_bits #include // for devm_regulator_bulk_get_enable #include // for kfree, kmalloc_array #include // for false, true, NULL #include // for str_on_off #include // for sysfs_emit #include // for USEC_PER_MSEC, NSEC_PER_MSEC #include // for __le16, bool, int64_t, ssize_t #include // for MEGA #include "linux/array_size.h" // for ARRAY_SIZE #include "linux/device/devres.h" // for devm_kasprintf #include "linux/gfp_types.h" // for GFP_KERNEL #include "linux/mutex_types.h" // for mutex > --- > drivers/iio/accel/kionix-kx022a.c | 12 +++++++++++- > 1 file changed, 11 insertions(+), 1 deletion(-) > > diff --git a/drivers/iio/accel/kionix-kx022a.c b/drivers/iio/accel/kionix-kx022a.c > index 07dcf5f0599f..39485572a76b 100644 > --- a/drivers/iio/accel/kionix-kx022a.c > +++ b/drivers/iio/accel/kionix-kx022a.c > @@ -5,27 +5,37 @@ > * ROHM/KIONIX accelerometer driver > */ > > +#include > +#include > #include > #include > #include > +#include > +#include > #include > +#include > +#include > #include > -#include > #include > #include > #include > #include > #include > #include > +#include > +#include > #include > #include > > #include > +#include > #include > #include > #include > #include > > +#include > + > #include "kionix-kx022a.h" > > /*