On 4/5/24 04:21, Andy Shevchenko wrote: > Replace rather heavy acpi.h inclusion by a simple forward declaration > in the public header. Update the local one to include acpi.h as some > of the code requires it. > > Signed-off-by: Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx> > --- > drivers/ata/libata.h | 3 +++ > include/linux/libata.h | 5 ++++- > 2 files changed, 7 insertions(+), 1 deletion(-) > > diff --git a/drivers/ata/libata.h b/drivers/ata/libata.h > index 5c685bb1939e..29e9387eb249 100644 > --- a/drivers/ata/libata.h > +++ b/drivers/ata/libata.h > @@ -90,6 +90,9 @@ extern unsigned int ata_read_log_page(struct ata_device *dev, u8 log, > #define to_ata_port(d) container_of(d, struct ata_port, tdev) > > /* libata-acpi.c */ > + > +#include <linux/acpi.h> I am really not a big fan of including files in the middle of a header file. > + > #ifdef CONFIG_ATA_ACPI > extern unsigned int ata_acpi_gtf_filter; > extern void ata_acpi_dissociate(struct ata_host *host); > diff --git a/include/linux/libata.h b/include/linux/libata.h > index 66937b787cca..68b969de410f 100644 > --- a/include/linux/libata.h > +++ b/include/linux/libata.h > @@ -19,7 +19,6 @@ > #include <linux/ata.h> > #include <linux/workqueue.h> > #include <scsi/scsi_host.h> > -#include <linux/acpi.h> Why not: #ifdef CONFIG_ATA_ACPI #include <linux/acpi.h> #endif Which avoids the union forward declaration below. > #include <linux/cdrom.h> > #include <linux/sched.h> > #include <linux/async.h> > @@ -660,6 +659,10 @@ struct ata_cpr_log { > struct ata_cpr cpr[] __counted_by(nr_cpr); > }; > > +#ifdef CONFIG_ATA_ACPI > +union acpi_object; > +#endif > + > struct ata_device { > struct ata_link *link; > unsigned int devno; /* 0 or 1 */ -- Damien Le Moal Western Digital Research