On Wed, Jun 12, 2024 at 12:42 PM Hans de Goede <hdegoede@xxxxxxxxxx> wrote: > > It seems that all Dell laptops with IPU6 camera or the Tiger Lake, > Alder Lake and Raptor Lake generations have broken ACPI MIPI DISCO > information. > > Instead of adding a lot of DMI quirks for this, check for these CPU > generations and disable ACPI MIPI DISCO support on all Dell laptops > with these CPU generations. > > Fixes: bd721b934323 ("ACPI: scan: Extract CSI-2 connection graph from _CRS") > Cc: stable@xxxxxxxxxxxxxxx > Signed-off-by: Hans de Goede <hdegoede@xxxxxxxxxx> > --- > drivers/acpi/internal.h | 4 ++++ > drivers/acpi/mipi-disco-img.c | 28 +++++++++++++++++++--------- > 2 files changed, 23 insertions(+), 9 deletions(-) > > diff --git a/drivers/acpi/internal.h b/drivers/acpi/internal.h > index 2a0e9fc7b74c..601b670356e5 100644 > --- a/drivers/acpi/internal.h > +++ b/drivers/acpi/internal.h > @@ -302,6 +302,10 @@ void acpi_mipi_check_crs_csi2(acpi_handle handle); > void acpi_mipi_scan_crs_csi2(void); > void acpi_mipi_init_crs_csi2_swnodes(void); > void acpi_mipi_crs_csi2_cleanup(void); > +#ifdef CONFIG_X86 > bool acpi_graph_ignore_port(acpi_handle handle); > +#else > +static inline bool acpi_graph_ignore_port(acpi_handle handle) { return false; } > +#endif > > #endif /* _ACPI_INTERNAL_H_ */ > diff --git a/drivers/acpi/mipi-disco-img.c b/drivers/acpi/mipi-disco-img.c > index d05413a0672a..0ab13751f0db 100644 > --- a/drivers/acpi/mipi-disco-img.c > +++ b/drivers/acpi/mipi-disco-img.c > @@ -725,14 +725,20 @@ void acpi_mipi_crs_csi2_cleanup(void) > acpi_mipi_del_crs_csi2(csi2); > } > > -static const struct dmi_system_id dmi_ignore_port_nodes[] = { > - { > - .matches = { > - DMI_EXACT_MATCH(DMI_SYS_VENDOR, "Dell Inc."), > - DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "XPS 9315"), > - }, > - }, > - { } > +#ifdef CONFIG_X86 > +#include <asm/cpu_device_id.h> > +#include <asm/intel-family.h> > + > +/* CPU matches for Dell generations with broken ACPI MIPI DISCO info */ > +static const struct x86_cpu_id dell_broken_mipi_disco_cpu_gens[] = { > + X86_MATCH_INTEL_FAM6_MODEL(TIGERLAKE, NULL), > + X86_MATCH_INTEL_FAM6_MODEL(TIGERLAKE_L, NULL), > + X86_MATCH_INTEL_FAM6_MODEL(ALDERLAKE, NULL), > + X86_MATCH_INTEL_FAM6_MODEL(ALDERLAKE_L, NULL), > + X86_MATCH_INTEL_FAM6_MODEL(RAPTORLAKE, NULL), > + X86_MATCH_INTEL_FAM6_MODEL(RAPTORLAKE_P, NULL), > + X86_MATCH_INTEL_FAM6_MODEL(RAPTORLAKE_S, NULL), > + {} > }; > > static const char *strnext(const char *s1, const char *s2) > @@ -761,7 +767,10 @@ bool acpi_graph_ignore_port(acpi_handle handle) > static bool dmi_tested, ignore_port; > > if (!dmi_tested) { > - ignore_port = dmi_first_match(dmi_ignore_port_nodes); > + if (dmi_name_in_vendors("Dell Inc.") && > + x86_match_cpu(dell_broken_mipi_disco_cpu_gens)) > + ignore_port = true; > + > dmi_tested = true; > } > > @@ -794,3 +803,4 @@ bool acpi_graph_ignore_port(acpi_handle handle) > kfree(orig_path); > return false; > } > +#endif > -- I'm inclined to apply this one with the changelog adjusted as requested by Sakari. Can you please make the changes in the changelog and resend?