On Fri, May 30, 2025 at 1:53 AM Armin Wolf <W_Armin@xxxxxx> wrote: > > On the MSI Modern 14 C5M the ECDT table contains invalid data: > > UID : 00000000 > GPE Number : 00 /* Invalid, 03 would be correct */ > Namepath : "" /* Invalid, "\_SB.PCI0.SBRG.EC" would > * be correct > */ > > This slows down the EC access as the wrong GPE event is used for > communication. Additionally the ID string is invalid. > > Ignore such faulty ECDT tables by verifying that the ID string has > a valid format. > > Tested-by: glpnk@xxxxxxxxx > Signed-off-by: Armin Wolf <W_Armin@xxxxxx> > --- > drivers/acpi/ec.c | 17 +++++++++++++++++ > 1 file changed, 17 insertions(+) > > diff --git a/drivers/acpi/ec.c b/drivers/acpi/ec.c > index 6f4203716b53..75c7db8b156a 100644 > --- a/drivers/acpi/ec.c > +++ b/drivers/acpi/ec.c > @@ -23,8 +23,10 @@ > #include <linux/delay.h> > #include <linux/interrupt.h> > #include <linux/list.h> > +#include <linux/printk.h> > #include <linux/spinlock.h> > #include <linux/slab.h> > +#include <linux/string.h> > #include <linux/suspend.h> > #include <linux/acpi.h> > #include <linux/dmi.h> > @@ -2031,6 +2033,21 @@ void __init acpi_ec_ecdt_probe(void) > goto out; > } > > + if (!strstarts(ecdt_ptr->id, "\\")) { > + /* > + * The ECDT table on some MSI notebooks contains invalid data, together > + * with an empty ID string (""). > + * > + * Section 5.2.15 of the ACPI specification requires the ID string to be > + * a "fully qualified reference to the (...) embedded controller device", > + * so this string always has to start with a backslash. > + * > + * By verifying this we can avoid such faulty ECDT tables in a safe way. > + */ > + pr_err(FW_BUG "Ignoring ECDT due to invalid ID string \"%s\"\n", ecdt_ptr->id); > + goto out; > + } > + > ec = acpi_ec_alloc(); > if (!ec) > goto out; > -- Applied as 6.16-rc material, thanks!