[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <appnjr2asjxadbvcf2fosrkvfwj3dkcnvq7tk74i4xa4ku5zr3@c7qedqneukyn>
Date: Wed, 11 Feb 2026 12:55:30 +0000
From: Rodrigo Alencar <455.rodrigo.alencar@...il.com>
To: Andy Shevchenko <andriy.shevchenko@...el.com>,
rodrigo.alencar@...log.com
Cc: linux-kernel@...r.kernel.org, linux-iio@...r.kernel.org,
devicetree@...r.kernel.org, Michael Hennerich <Michael.Hennerich@...log.com>,
Lars-Peter Clausen <lars@...afoo.de>, Jonathan Cameron <jic23@...nel.org>,
David Lechner <dlechner@...libre.com>, Andy Shevchenko <andy@...nel.org>, Rob Herring <robh@...nel.org>,
Krzysztof Kozlowski <krzk+dt@...nel.org>, Conor Dooley <conor+dt@...nel.org>
Subject: Re: [PATCH v4 03/11] iio: amplifiers: ad8366: remove unused include
headers
On 26/02/10 09:57PM, Andy Shevchenko wrote:
> On Tue, Feb 10, 2026 at 07:42:03PM +0000, Rodrigo Alencar via B4 Relay wrote:
>
> > Apply IWYU principle, removing the following headers:
> > - linux/device.h: no usage of devm_add_action_or_reset, device_attr...
> > - linux/kernel.h: no usage of container_of, kasprintf, ...
> > - linux/slab.h: memory management handled by iio
> > - linux/sysfs.h: sysfs interaction is managed by iio
> > - linux/iio/sysfs.h: not using iio device attributes in this driver
>
> Yeah, but it also means to add (a lot of) missed headers...
>
> array_size,h
> dev_printk.h
> mod_devicetable.h
> mutex.h
> stddef.h
Are there proper guidelines for IWYU in the kernel?
Include headers end up including a bunch of others, so
the build finishes successfully anyways.
I understand that the concern is build time, so we better
include all small parts that are needed rather than a generic
header that includes that and much more.
This is the output of the iwyu tool without this patch series:
drivers/iio/amplifiers/ad8366.c should add these lines:
#include <stddef.h> // for NULL
#include "asm-generic/errno-base.h" // for EINVAL, ENOMEM
#include "linux/array_size.h" // for ARRAY_SIZE
#include "linux/compiler_attributes.h" // for __aligned
#include "linux/dev_printk.h" // for dev_err
#include "linux/iio/types.h" // for iio_chan_info_enum, iio_chan_...
#include "linux/math.h" // for abs
#include "linux/minmax.h" // for __cmp_op_max
#include "linux/mod_devicetable.h" // for spi_device_id
#include "linux/mutex.h" // for mutex_lock, mutex_unlock, mut...
#include "linux/mutex_types.h" // for mutex
#include "vdso/bits.h" // for BIT
drivers/iio/amplifiers/ad8366.c should remove these lines:
- #include <linux/device.h> // lines 14-14
- #include <linux/iio/sysfs.h> // lines 26-26
- #include <linux/kernel.h> // lines 15-15
- #include <linux/slab.h> // lines 16-16
- #include <linux/sysfs.h> // lines 17-17
The full include-list for drivers/iio/amplifiers/ad8366.c:
#include <linux/bitrev.h> // for bitrev8
#include <linux/err.h> // for IS_ERR, PTR_ERR
#include <linux/gpio/consumer.h> // for devm_gpiod_get_optional, gpio...
#include <linux/iio/iio.h> // for iio_priv, iio_dev, iio_chan_spec
#include <linux/module.h> // for MODULE_AUTHOR, MODULE_DESCRIP...
#include <linux/regulator/consumer.h> // for regulator_disable, devm_regul...
#include <linux/spi/spi.h> // for spi_device, spi_get_device_id
#include <stddef.h> // for NULL
#include "asm-generic/errno-base.h" // for EINVAL, ENOMEM
#include "linux/array_size.h" // for ARRAY_SIZE
#include "linux/compiler_attributes.h" // for __aligned
#include "linux/dev_printk.h" // for dev_err
#include "linux/iio/types.h" // for iio_chan_info_enum, iio_chan_...
#include "linux/math.h" // for abs
#include "linux/minmax.h" // for __cmp_op_max
#include "linux/mod_devicetable.h" // for spi_device_id
#include "linux/mutex.h" // for mutex_lock, mutex_unlock, mut...
#include "linux/mutex_types.h" // for mutex
#include "vdso/bits.h" // for BIT
After all the patches are applied the output is slightly different:
drivers/iio/amplifiers/ad8366.c should add these lines:
#include <stddef.h> // for size_t, NULL
#include "asm-generic/errno-base.h" // for EINVAL, ENOMEM
#include "asm-generic/int-ll64.h" // for u8
#include "linux/compiler_attributes.h" // for __aligned
#include "linux/dev_printk.h" // for dev_err_probe
#include "linux/iio/types.h" // for iio_chan_info_enum, iio_chan_...
#include "linux/math.h" // for DIV_ROUND_CLOSEST
#include "linux/minmax.h" // for __cmp_op_max
#include "linux/mutex_types.h" // for mutex
#include "linux/types.h" // for __be16
#include "vdso/bits.h" // for BIT
The full include-list for drivers/iio/amplifiers/ad8366.c:
#include <linux/bitrev.h> // for bitrev8
#include <linux/err.h> // for IS_ERR, PTR_ERR
#include <linux/gpio/consumer.h> // for devm_gpiod_get_optional, gpio...
#include <linux/iio/iio.h> // for iio_priv, iio_dev, iio_chan_spec
#include <linux/mod_devicetable.h> // for kernel_ulong_t, spi_device_id
#include <linux/module.h> // for MODULE_DEVICE_TABLE, MODULE_A...
#include <linux/mutex.h> // for mutex_lock, mutex_unlock, dev...
#include <linux/regulator/consumer.h> // for devm_regulator_get_enable
#include <linux/reset.h> // for devm_reset_control_get_option...
#include <linux/spi/spi.h> // for spi_write, spi_get_device_id
#include <linux/unaligned.h> // for put_unaligned_be16
#include <stddef.h> // for size_t, NULL
#include "asm-generic/errno-base.h" // for EINVAL, ENOMEM
#include "asm-generic/int-ll64.h" // for u8
#include "linux/compiler_attributes.h" // for __aligned
#include "linux/dev_printk.h" // for dev_err_probe
#include "linux/iio/types.h" // for iio_chan_info_enum, iio_chan_...
#include "linux/math.h" // for DIV_ROUND_CLOSEST
#include "linux/minmax.h" // for __cmp_op_max
#include "linux/mutex_types.h" // for mutex
#include "linux/types.h" // for __be16
#include "vdso/bits.h" // for BIT
--
Kind regards,
Rodrigo Alencar
Powered by blists - more mailing lists