diff mbox

ACPI: Parse entire table as a term_list for Dell XPS 9570 and Precision M5530

Message ID 20180130060744.19049-1-kai.heng.feng@canonical.com (mailing list archive)
State Superseded, archived
Headers show

Commit Message

Kai-Heng Feng Jan. 30, 2018, 6:07 a.m. UTC
The i2c touchpad on Dell XPS 9570 and Precision M5530 doesn't work out
of box.

The touchpad relies on its _INI method to update its _HID value from
XXXX0000 to SYNA2393.
Also, the _STA relies on value of I2CN to report correct status.

Set acpi_gbl_parse_table_as_term_list so the value of I2CN can be
correctly set up, and _INI can get run. The ACPI table in this machine
is designed to get parsed this way.

Also, change the quirk table to a more generic name.

Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=198515
Cc: Mario Limonciello <mario.limonciello@dell.com>
Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
---
v2: Andy's suggestion, merge to a single quirk table.

 drivers/acpi/bus.c | 35 ++++++++++++++++++++++++++++++++---
 1 file changed, 32 insertions(+), 3 deletions(-)

Comments

Andy Shevchenko Jan. 30, 2018, 6:17 p.m. UTC | #1
On Tue, Jan 30, 2018 at 8:07 AM, Kai-Heng Feng
<kai.heng.feng@canonical.com> wrote:
> The i2c touchpad on Dell XPS 9570 and Precision M5530 doesn't work out
> of box.
>
> The touchpad relies on its _INI method to update its _HID value from
> XXXX0000 to SYNA2393.
> Also, the _STA relies on value of I2CN to report correct status.
>
> Set acpi_gbl_parse_table_as_term_list so the value of I2CN can be
> correctly set up, and _INI can get run. The ACPI table in this machine
> is designed to get parsed this way.
>
> Also, change the quirk table to a more generic name.

> +static int set_gbl_term_list(const struct dmi_system_id *id)
> +{
> +       pr_notice("%s detected - parse the entire table as a term_list\n",
> +                 id->ident);
> +       acpi_gbl_parse_table_as_term_list = 1;
> +       return 0;
> +}
>  #endif

The above should be outside of another #ifdef. Basically after the above #endif.

>  #else

>  #endif

> @@ -1005,7 +1034,7 @@ void __init acpi_early_init(void)

>          * If the machine falls into the DMI check table,
>          * DSDT will be copied to memory
>          */

It might make sense to adjust comment above that it's about quirks in
general. And, if needed, move current content to actual DMI group of
records.

> -       dmi_check_system(dsdt_dmi_table);
> +       dmi_check_system(acpi_quirks_dmi_table);
Schmauss, Erik Jan. 30, 2018, 6:37 p.m. UTC | #2
Hi,
> -----Original Message-----

> From: linux-acpi-owner@vger.kernel.org [mailto:linux-acpi-

> owner@vger.kernel.org] On Behalf Of Andy Shevchenko

> Sent: Tuesday, January 30, 2018 10:18 AM

> To: Kai-Heng Feng <kai.heng.feng@canonical.com>

> Cc: Rafael J. Wysocki <rjw@rjwysocki.net>; Len Brown <lenb@kernel.org>; ACPI

> Devel Maling List <linux-acpi@vger.kernel.org>; Linux Kernel Mailing List <linux-

> kernel@vger.kernel.org>; Mario Limonciello <mario.limonciello@dell.com>

> Subject: Re: [PATCH] ACPI: Parse entire table as a term_list for Dell XPS 9570 and

> Precision M5530

> 

> On Tue, Jan 30, 2018 at 8:07 AM, Kai-Heng Feng

> <kai.heng.feng@canonical.com> wrote:

> > The i2c touchpad on Dell XPS 9570 and Precision M5530 doesn't work out

> > of box.

> >

> > The touchpad relies on its _INI method to update its _HID value from

> > XXXX0000 to SYNA2393.

> > Also, the _STA relies on value of I2CN to report correct status.

> >

> > Set acpi_gbl_parse_table_as_term_list so the value of I2CN can be

> > correctly set up, and _INI can get run. The ACPI table in this machine

> > is designed to get parsed this way.


I thought I would give everyone an update: we are getting close to finishing patches to enable this term list parsing by default as well as a few other fixes with forward referencing of package elements. Once we have established that these patches are stable, we will get rid of acpi_gbl_parse_table_as_term_list. So this quirk may not be needed in the near future...

Erik
> >

> > Also, change the quirk table to a more generic name.

> 

> > +static int set_gbl_term_list(const struct dmi_system_id *id) {

> > +       pr_notice("%s detected - parse the entire table as a term_list\n",

> > +                 id->ident);

> > +       acpi_gbl_parse_table_as_term_list = 1;

> > +       return 0;

> > +}

> >  #endif

> 

> The above should be outside of another #ifdef. Basically after the above #endif.

> 

> >  #else

> 

> >  #endif

> 

> > @@ -1005,7 +1034,7 @@ void __init acpi_early_init(void)

> 

> >          * If the machine falls into the DMI check table,

> >          * DSDT will be copied to memory

> >          */

> 

> It might make sense to adjust comment above that it's about quirks in general.

> And, if needed, move current content to actual DMI group of records.

> 

> > -       dmi_check_system(dsdt_dmi_table);

> > +       dmi_check_system(acpi_quirks_dmi_table);

> 

> --

> With Best Regards,

> Andy Shevchenko

> --

> To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of

> a message to majordomo@vger.kernel.org More majordomo info at

> http://vger.kernel.org/majordomo-info.html
Limonciello, Mario Jan. 30, 2018, 7:03 p.m. UTC | #3
> -----Original Message-----

> From: Schmauss, Erik [mailto:erik.schmauss@intel.com]

> Sent: Tuesday, January 30, 2018 12:38 PM

> To: Andy Shevchenko <andy.shevchenko@gmail.com>; Kai-Heng Feng

> <kai.heng.feng@canonical.com>

> Cc: Rafael J. Wysocki <rjw@rjwysocki.net>; Len Brown <lenb@kernel.org>; ACPI

> Devel Maling List <linux-acpi@vger.kernel.org>; Linux Kernel Mailing List <linux-

> kernel@vger.kernel.org>; Limonciello, Mario <Mario_Limonciello@Dell.com>;

> Moore, Robert <robert.moore@intel.com>

> Subject: RE: [PATCH] ACPI: Parse entire table as a term_list for Dell XPS 9570 and

> Precision M5530

> 

> Hi,

> > -----Original Message-----

> > From: linux-acpi-owner@vger.kernel.org [mailto:linux-acpi-

> > owner@vger.kernel.org] On Behalf Of Andy Shevchenko

> > Sent: Tuesday, January 30, 2018 10:18 AM

> > To: Kai-Heng Feng <kai.heng.feng@canonical.com>

> > Cc: Rafael J. Wysocki <rjw@rjwysocki.net>; Len Brown <lenb@kernel.org>; ACPI

> > Devel Maling List <linux-acpi@vger.kernel.org>; Linux Kernel Mailing List <linux-

> > kernel@vger.kernel.org>; Mario Limonciello <mario.limonciello@dell.com>

> > Subject: Re: [PATCH] ACPI: Parse entire table as a term_list for Dell XPS 9570 and

> > Precision M5530

> >

> > On Tue, Jan 30, 2018 at 8:07 AM, Kai-Heng Feng

> > <kai.heng.feng@canonical.com> wrote:

> > > The i2c touchpad on Dell XPS 9570 and Precision M5530 doesn't work out

> > > of box.

> > >

> > > The touchpad relies on its _INI method to update its _HID value from

> > > XXXX0000 to SYNA2393.

> > > Also, the _STA relies on value of I2CN to report correct status.

> > >

> > > Set acpi_gbl_parse_table_as_term_list so the value of I2CN can be

> > > correctly set up, and _INI can get run. The ACPI table in this machine

> > > is designed to get parsed this way.

> 

> I thought I would give everyone an update: we are getting close to finishing patches

> to enable this term list parsing by default as well as a few other fixes with forward

> referencing of package elements. Once we have established that these patches are

> stable, we will get rid of acpi_gbl_parse_table_as_term_list. So this quirk may not

> be needed in the near future...


Rafael,

Would you be opposed to carrying a patch similar to this (proposed) quirk patch in 
kernel and reverting when Erik submits patches that get rid of
acpi_gbl_parse_table_as_term_list?

The reason being, I think this could also be a candidate to bring back to @stable
and fix this problem on earlier kernels too.

I don’t believe the patches that get rid of acpi_gbl_parse_table_as_term_list likely
will be good candidates for @stable.


> 

> Erik

> > >

> > > Also, change the quirk table to a more generic name.

> >

> > > +static int set_gbl_term_list(const struct dmi_system_id *id) {

> > > +       pr_notice("%s detected - parse the entire table as a term_list\n",

> > > +                 id->ident);

> > > +       acpi_gbl_parse_table_as_term_list = 1;

> > > +       return 0;

> > > +}

> > >  #endif

> >

> > The above should be outside of another #ifdef. Basically after the above #endif.

> >

> > >  #else

> >

> > >  #endif

> >

> > > @@ -1005,7 +1034,7 @@ void __init acpi_early_init(void)

> >

> > >          * If the machine falls into the DMI check table,

> > >          * DSDT will be copied to memory

> > >          */

> >

> > It might make sense to adjust comment above that it's about quirks in general.

> > And, if needed, move current content to actual DMI group of records.

> >

> > > -       dmi_check_system(dsdt_dmi_table);

> > > +       dmi_check_system(acpi_quirks_dmi_table);

> >

> > --

> > With Best Regards,

> > Andy Shevchenko

> > --

> > To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of

> > a message to majordomo@vger.kernel.org More majordomo info at

> > http://vger.kernel.org/majordomo-info.html
Moore, Robert Jan. 30, 2018, 8:09 p.m. UTC | #4
DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogTWFyaW8uTGltb25jaWVs
bG9AZGVsbC5jb20gW21haWx0bzpNYXJpby5MaW1vbmNpZWxsb0BkZWxsLmNvbV0NCj4gU2VudDog
VHVlc2RheSwgSmFudWFyeSAzMCwgMjAxOCAxMTowMyBBTQ0KPiBUbzogU2NobWF1c3MsIEVyaWsg
PGVyaWsuc2NobWF1c3NAaW50ZWwuY29tPjsgYW5keS5zaGV2Y2hlbmtvQGdtYWlsLmNvbTsNCj4g
a2FpLmhlbmcuZmVuZ0BjYW5vbmljYWwuY29tDQo+IENjOiByandAcmp3eXNvY2tpLm5ldDsgbGVu
YkBrZXJuZWwub3JnOyBsaW51eC1hY3BpQHZnZXIua2VybmVsLm9yZzsNCj4gbGludXgta2VybmVs
QHZnZXIua2VybmVsLm9yZzsgTW9vcmUsIFJvYmVydCA8cm9iZXJ0Lm1vb3JlQGludGVsLmNvbT4N
Cj4gU3ViamVjdDogUkU6IFtQQVRDSF0gQUNQSTogUGFyc2UgZW50aXJlIHRhYmxlIGFzIGEgdGVy
bV9saXN0IGZvciBEZWxsDQo+IFhQUyA5NTcwIGFuZCBQcmVjaXNpb24gTTU1MzANCj4gDQo+IA0K
PiANCj4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+IEZyb206IFNjaG1hdXNzLCBF
cmlrIFttYWlsdG86ZXJpay5zY2htYXVzc0BpbnRlbC5jb21dDQo+ID4gU2VudDogVHVlc2RheSwg
SmFudWFyeSAzMCwgMjAxOCAxMjozOCBQTQ0KPiA+IFRvOiBBbmR5IFNoZXZjaGVua28gPGFuZHku
c2hldmNoZW5rb0BnbWFpbC5jb20+OyBLYWktSGVuZyBGZW5nDQo+ID4gPGthaS5oZW5nLmZlbmdA
Y2Fub25pY2FsLmNvbT4NCj4gPiBDYzogUmFmYWVsIEouIFd5c29ja2kgPHJqd0Byand5c29ja2ku
bmV0PjsgTGVuIEJyb3duDQo+ID4gPGxlbmJAa2VybmVsLm9yZz47IEFDUEkgRGV2ZWwgTWFsaW5n
IExpc3QNCj4gPiA8bGludXgtYWNwaUB2Z2VyLmtlcm5lbC5vcmc+OyBMaW51eCBLZXJuZWwgTWFp
bGluZyBMaXN0IDxsaW51eC0NCj4gPiBrZXJuZWxAdmdlci5rZXJuZWwub3JnPjsgTGltb25jaWVs
bG8sIE1hcmlvDQo+ID4gPE1hcmlvX0xpbW9uY2llbGxvQERlbGwuY29tPjsgTW9vcmUsIFJvYmVy
dCA8cm9iZXJ0Lm1vb3JlQGludGVsLmNvbT4NCj4gPiBTdWJqZWN0OiBSRTogW1BBVENIXSBBQ1BJ
OiBQYXJzZSBlbnRpcmUgdGFibGUgYXMgYSB0ZXJtX2xpc3QgZm9yIERlbGwNCj4gPiBYUFMgOTU3
MCBhbmQgUHJlY2lzaW9uIE01NTMwDQo+ID4NCj4gPiBIaSwNCj4gPiA+IC0tLS0tT3JpZ2luYWwg
TWVzc2FnZS0tLS0tDQo+ID4gPiBGcm9tOiBsaW51eC1hY3BpLW93bmVyQHZnZXIua2VybmVsLm9y
ZyBbbWFpbHRvOmxpbnV4LWFjcGktDQo+ID4gPiBvd25lckB2Z2VyLmtlcm5lbC5vcmddIE9uIEJl
aGFsZiBPZiBBbmR5IFNoZXZjaGVua28NCj4gPiA+IFNlbnQ6IFR1ZXNkYXksIEphbnVhcnkgMzAs
IDIwMTggMTA6MTggQU0NCj4gPiA+IFRvOiBLYWktSGVuZyBGZW5nIDxrYWkuaGVuZy5mZW5nQGNh
bm9uaWNhbC5jb20+DQo+ID4gPiBDYzogUmFmYWVsIEouIFd5c29ja2kgPHJqd0Byand5c29ja2ku
bmV0PjsgTGVuIEJyb3duDQo+ID4gPiA8bGVuYkBrZXJuZWwub3JnPjsgQUNQSSBEZXZlbCBNYWxp
bmcgTGlzdA0KPiA+ID4gPGxpbnV4LWFjcGlAdmdlci5rZXJuZWwub3JnPjsgTGludXggS2VybmVs
IE1haWxpbmcgTGlzdCA8bGludXgtDQo+ID4gPiBrZXJuZWxAdmdlci5rZXJuZWwub3JnPjsgTWFy
aW8gTGltb25jaWVsbG8NCj4gPiA+IDxtYXJpby5saW1vbmNpZWxsb0BkZWxsLmNvbT4NCj4gPiA+
IFN1YmplY3Q6IFJlOiBbUEFUQ0hdIEFDUEk6IFBhcnNlIGVudGlyZSB0YWJsZSBhcyBhIHRlcm1f
bGlzdCBmb3INCj4gPiA+IERlbGwgWFBTIDk1NzAgYW5kIFByZWNpc2lvbiBNNTUzMA0KPiA+ID4N
Cj4gPiA+IE9uIFR1ZSwgSmFuIDMwLCAyMDE4IGF0IDg6MDcgQU0sIEthaS1IZW5nIEZlbmcNCj4g
PiA+IDxrYWkuaGVuZy5mZW5nQGNhbm9uaWNhbC5jb20+IHdyb3RlOg0KPiA+ID4gPiBUaGUgaTJj
IHRvdWNocGFkIG9uIERlbGwgWFBTIDk1NzAgYW5kIFByZWNpc2lvbiBNNTUzMCBkb2Vzbid0IHdv
cmsNCj4gPiA+ID4gb3V0IG9mIGJveC4NCj4gPiA+ID4NCj4gPiA+ID4gVGhlIHRvdWNocGFkIHJl
bGllcyBvbiBpdHMgX0lOSSBtZXRob2QgdG8gdXBkYXRlIGl0cyBfSElEIHZhbHVlDQo+ID4gPiA+
IGZyb20NCj4gPiA+ID4gWFhYWDAwMDAgdG8gU1lOQTIzOTMuDQo+ID4gPiA+IEFsc28sIHRoZSBf
U1RBIHJlbGllcyBvbiB2YWx1ZSBvZiBJMkNOIHRvIHJlcG9ydCBjb3JyZWN0IHN0YXR1cy4NCj4g
PiA+ID4NCj4gPiA+ID4gU2V0IGFjcGlfZ2JsX3BhcnNlX3RhYmxlX2FzX3Rlcm1fbGlzdCBzbyB0
aGUgdmFsdWUgb2YgSTJDTiBjYW4gYmUNCj4gPiA+ID4gY29ycmVjdGx5IHNldCB1cCwgYW5kIF9J
TkkgY2FuIGdldCBydW4uIFRoZSBBQ1BJIHRhYmxlIGluIHRoaXMNCj4gPiA+ID4gbWFjaGluZSBp
cyBkZXNpZ25lZCB0byBnZXQgcGFyc2VkIHRoaXMgd2F5Lg0KPiA+DQo+ID4gSSB0aG91Z2h0IEkg
d291bGQgZ2l2ZSBldmVyeW9uZSBhbiB1cGRhdGU6IHdlIGFyZSBnZXR0aW5nIGNsb3NlIHRvDQo+
ID4gZmluaXNoaW5nIHBhdGNoZXMgdG8gZW5hYmxlIHRoaXMgdGVybSBsaXN0IHBhcnNpbmcgYnkg
ZGVmYXVsdCBhcyB3ZWxsDQo+ID4gYXMgYSBmZXcgb3RoZXIgZml4ZXMgd2l0aCBmb3J3YXJkIHJl
ZmVyZW5jaW5nIG9mIHBhY2thZ2UgZWxlbWVudHMuDQo+ID4gT25jZSB3ZSBoYXZlIGVzdGFibGlz
aGVkIHRoYXQgdGhlc2UgcGF0Y2hlcyBhcmUgc3RhYmxlLCB3ZSB3aWxsIGdldA0KPiA+IHJpZCBv
ZiBhY3BpX2dibF9wYXJzZV90YWJsZV9hc190ZXJtX2xpc3QuIFNvIHRoaXMgcXVpcmsgbWF5IG5v
dCBiZQ0KPiBuZWVkZWQgaW4gdGhlIG5lYXIgZnV0dXJlLi4uDQo+IA0KPiBSYWZhZWwsDQo+IA0K
PiBXb3VsZCB5b3UgYmUgb3Bwb3NlZCB0byBjYXJyeWluZyBhIHBhdGNoIHNpbWlsYXIgdG8gdGhp
cyAocHJvcG9zZWQpDQo+IHF1aXJrIHBhdGNoIGluIGtlcm5lbCBhbmQgcmV2ZXJ0aW5nIHdoZW4g
RXJpayBzdWJtaXRzIHBhdGNoZXMgdGhhdCBnZXQNCj4gcmlkIG9mIGFjcGlfZ2JsX3BhcnNlX3Rh
YmxlX2FzX3Rlcm1fbGlzdD8NCj4gDQo+IFRoZSByZWFzb24gYmVpbmcsIEkgdGhpbmsgdGhpcyBj
b3VsZCBhbHNvIGJlIGEgY2FuZGlkYXRlIHRvIGJyaW5nIGJhY2sNCj4gdG8gQHN0YWJsZSBhbmQg
Zml4IHRoaXMgcHJvYmxlbSBvbiBlYXJsaWVyIGtlcm5lbHMgdG9vLg0KPiANCj4gSSBkb27igJl0
IGJlbGlldmUgdGhlIHBhdGNoZXMgdGhhdCBnZXQgcmlkIG9mDQo+IGFjcGlfZ2JsX3BhcnNlX3Rh
YmxlX2FzX3Rlcm1fbGlzdCBsaWtlbHkgd2lsbCBiZSBnb29kIGNhbmRpZGF0ZXMgZm9yDQo+IEBz
dGFibGUuDQo+IA0KDQoNCkRvZXMgYW55b25lIHJlbWVtYmVyIHdoYXQgd2FzIHRoZSBleGFjdCBw
cm9ibGVtIHRoYXQgZm9yY2VkIHRoZSBjcmVhdGlvbiBvZiBwYXJzZV90YWJsZV9hc190ZXJtX2xp
c3QgaW4gdGhlIGZpcnN0IHBsYWNlPw0KDQpCb2INCg0KDQo+IA0KPiA+DQo+ID4gRXJpaw0KPiA+
ID4gPg0KPiA+ID4gPiBBbHNvLCBjaGFuZ2UgdGhlIHF1aXJrIHRhYmxlIHRvIGEgbW9yZSBnZW5l
cmljIG5hbWUuDQo+ID4gPg0KPiA+ID4gPiArc3RhdGljIGludCBzZXRfZ2JsX3Rlcm1fbGlzdChj
b25zdCBzdHJ1Y3QgZG1pX3N5c3RlbV9pZCAqaWQpIHsNCj4gPiA+ID4gKyAgICAgICBwcl9ub3Rp
Y2UoIiVzIGRldGVjdGVkIC0gcGFyc2UgdGhlIGVudGlyZSB0YWJsZSBhcyBhDQo+IHRlcm1fbGlz
dFxuIiwNCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgaWQtPmlkZW50KTsNCj4gPiA+ID4gKyAg
ICAgICBhY3BpX2dibF9wYXJzZV90YWJsZV9hc190ZXJtX2xpc3QgPSAxOw0KPiA+ID4gPiArICAg
ICAgIHJldHVybiAwOw0KPiA+ID4gPiArfQ0KPiA+ID4gPiAgI2VuZGlmDQo+ID4gPg0KPiA+ID4g
VGhlIGFib3ZlIHNob3VsZCBiZSBvdXRzaWRlIG9mIGFub3RoZXIgI2lmZGVmLiBCYXNpY2FsbHkg
YWZ0ZXIgdGhlDQo+IGFib3ZlICNlbmRpZi4NCj4gPiA+DQo+ID4gPiA+ICAjZWxzZQ0KPiA+ID4N
Cj4gPiA+ID4gICNlbmRpZg0KPiA+ID4NCj4gPiA+ID4gQEAgLTEwMDUsNyArMTAzNCw3IEBAIHZv
aWQgX19pbml0IGFjcGlfZWFybHlfaW5pdCh2b2lkKQ0KPiA+ID4NCj4gPiA+ID4gICAgICAgICAg
KiBJZiB0aGUgbWFjaGluZSBmYWxscyBpbnRvIHRoZSBETUkgY2hlY2sgdGFibGUsDQo+ID4gPiA+
ICAgICAgICAgICogRFNEVCB3aWxsIGJlIGNvcGllZCB0byBtZW1vcnkNCj4gPiA+ID4gICAgICAg
ICAgKi8NCj4gPiA+DQo+ID4gPiBJdCBtaWdodCBtYWtlIHNlbnNlIHRvIGFkanVzdCBjb21tZW50
IGFib3ZlIHRoYXQgaXQncyBhYm91dCBxdWlya3MNCj4gaW4gZ2VuZXJhbC4NCj4gPiA+IEFuZCwg
aWYgbmVlZGVkLCBtb3ZlIGN1cnJlbnQgY29udGVudCB0byBhY3R1YWwgRE1JIGdyb3VwIG9mIHJl
Y29yZHMuDQo+ID4gPg0KPiA+ID4gPiAtICAgICAgIGRtaV9jaGVja19zeXN0ZW0oZHNkdF9kbWlf
dGFibGUpOw0KPiA+ID4gPiArICAgICAgIGRtaV9jaGVja19zeXN0ZW0oYWNwaV9xdWlya3NfZG1p
X3RhYmxlKTsNCj4gPiA+DQo+ID4gPiAtLQ0KPiA+ID4gV2l0aCBCZXN0IFJlZ2FyZHMsDQo+ID4g
PiBBbmR5IFNoZXZjaGVua28NCj4gPiA+IC0tDQo+ID4gPiBUbyB1bnN1YnNjcmliZSBmcm9tIHRo
aXMgbGlzdDogc2VuZCB0aGUgbGluZSAidW5zdWJzY3JpYmUNCj4gPiA+IGxpbnV4LWFjcGkiIGlu
IHRoZSBib2R5IG9mIGEgbWVzc2FnZSB0byBtYWpvcmRvbW9Admdlci5rZXJuZWwub3JnDQo+ID4g
PiBNb3JlIG1ham9yZG9tbyBpbmZvIGF0IGh0dHA6Ly92Z2VyLmtlcm5lbC5vcmcvbWFqb3Jkb21v
LWluZm8uaHRtbA0K
--
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Kai-Heng Feng Jan. 31, 2018, 4:20 a.m. UTC | #5
> On 31 Jan 2018, at 2:17 AM, Andy Shevchenko <andy.shevchenko@gmail.com> wrote:
> 
> On Tue, Jan 30, 2018 at 8:07 AM, Kai-Heng Feng
> <kai.heng.feng@canonical.com> wrote:
>> The i2c touchpad on Dell XPS 9570 and Precision M5530 doesn't work out
>> of box.
>> 
>> The touchpad relies on its _INI method to update its _HID value from
>> XXXX0000 to SYNA2393.
>> Also, the _STA relies on value of I2CN to report correct status.
>> 
>> Set acpi_gbl_parse_table_as_term_list so the value of I2CN can be
>> correctly set up, and _INI can get run. The ACPI table in this machine
>> is designed to get parsed this way.
>> 
>> Also, change the quirk table to a more generic name.
> 
>> +static int set_gbl_term_list(const struct dmi_system_id *id)
>> +{
>> +       pr_notice("%s detected - parse the entire table as a term_list\n",
>> +                 id->ident);
>> +       acpi_gbl_parse_table_as_term_list = 1;
>> +       return 0;
>> +}
>> #endif
> 
> The above should be outside of another #ifdef. Basically after the above #endif.

Right, I overlooked that. Thanks.

> 
>> #else
> 
>> #endif
> 
>> @@ -1005,7 +1034,7 @@ void __init acpi_early_init(void)
> 
>>         * If the machine falls into the DMI check table,
>>         * DSDT will be copied to memory
>>         */
> 
> It might make sense to adjust comment above that it's about quirks in
> general. And, if needed, move current content to actual DMI group of
> records.

Thanks for the suggestions.

I’ll address them in patch v3.

Kai-Heng

> 
>> -       dmi_check_system(dsdt_dmi_table);
>> +       dmi_check_system(acpi_quirks_dmi_table);
> 
> -- 
> With Best Regards,
> Andy Shevchenko

--
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Kai-Heng Feng Jan. 31, 2018, 4:27 a.m. UTC | #6
> On 31 Jan 2018, at 2:37 AM, Schmauss, Erik <erik.schmauss@intel.com> wrote:
> 
> Hi,
>> -----Original Message-----
>> From: linux-acpi-owner@vger.kernel.org [mailto:linux-acpi-
>> owner@vger.kernel.org] On Behalf Of Andy Shevchenko
>> Sent: Tuesday, January 30, 2018 10:18 AM
>> To: Kai-Heng Feng <kai.heng.feng@canonical.com>
>> Cc: Rafael J. Wysocki <rjw@rjwysocki.net>; Len Brown <lenb@kernel.org>; ACPI
>> Devel Maling List <linux-acpi@vger.kernel.org>; Linux Kernel Mailing List <linux-
>> kernel@vger.kernel.org>; Mario Limonciello <mario.limonciello@dell.com>
>> Subject: Re: [PATCH] ACPI: Parse entire table as a term_list for Dell XPS 9570 and
>> Precision M5530
>> 
>> On Tue, Jan 30, 2018 at 8:07 AM, Kai-Heng Feng
>> <kai.heng.feng@canonical.com> wrote:
>>> The i2c touchpad on Dell XPS 9570 and Precision M5530 doesn't work out
>>> of box.
>>> 
>>> The touchpad relies on its _INI method to update its _HID value from
>>> XXXX0000 to SYNA2393.
>>> Also, the _STA relies on value of I2CN to report correct status.
>>> 
>>> Set acpi_gbl_parse_table_as_term_list so the value of I2CN can be
>>> correctly set up, and _INI can get run. The ACPI table in this machine
>>> is designed to get parsed this way.
> 
> I thought I would give everyone an update: we are getting close to finishing patches to enable this term list parsing by default as well as a few other fixes with forward referencing of package elements. Once we have established that these patches are stable, we will get rid of acpi_gbl_parse_table_as_term_list. So this quirk may not be needed in the near future…

I am aware it will land into mainline soon, the target version is v4.17 IIRC.
Since the laptops in question are going to hit the market soon,
we want to support it sooner rather then later.

Also, as Mario pointed out, backport is a big factor here.
v4.14 is the current LTS kernel, v4.15 will be used in Ubuntu 18.04,
both of them will have lots of users.
So being able to backport to v4.14 and v4.15 is quite important.

Kai-Heng

> 
> Erik
>>> 
>>> Also, change the quirk table to a more generic name.
>> 
>>> +static int set_gbl_term_list(const struct dmi_system_id *id) {
>>> +       pr_notice("%s detected - parse the entire table as a term_list\n",
>>> +                 id->ident);
>>> +       acpi_gbl_parse_table_as_term_list = 1;
>>> +       return 0;
>>> +}
>>> #endif
>> 
>> The above should be outside of another #ifdef. Basically after the above #endif.
>> 
>>> #else
>> 
>>> #endif
>> 
>>> @@ -1005,7 +1034,7 @@ void __init acpi_early_init(void)
>> 
>>>         * If the machine falls into the DMI check table,
>>>         * DSDT will be copied to memory
>>>         */
>> 
>> It might make sense to adjust comment above that it's about quirks in general.
>> And, if needed, move current content to actual DMI group of records.
>> 
>>> -       dmi_check_system(dsdt_dmi_table);
>>> +       dmi_check_system(acpi_quirks_dmi_table);
>> 
>> --
>> With Best Regards,
>> Andy Shevchenko
>> --
>> To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of
>> a message to majordomo@vger.kernel.org More majordomo info at
>> http://vger.kernel.org/majordomo-info.html

--
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Rafael J. Wysocki Feb. 8, 2018, 9:48 a.m. UTC | #7
On Tuesday, January 30, 2018 9:09:04 PM CET Moore, Robert wrote:
> 
> > -----Original Message-----
> > From: Mario.Limonciello@dell.com [mailto:Mario.Limonciello@dell.com]
> > Sent: Tuesday, January 30, 2018 11:03 AM
> > To: Schmauss, Erik <erik.schmauss@intel.com>; andy.shevchenko@gmail.com;
> > kai.heng.feng@canonical.com
> > Cc: rjw@rjwysocki.net; lenb@kernel.org; linux-acpi@vger.kernel.org;
> > linux-kernel@vger.kernel.org; Moore, Robert <robert.moore@intel.com>
> > Subject: RE: [PATCH] ACPI: Parse entire table as a term_list for Dell
> > XPS 9570 and Precision M5530
> > 
> > 
> > 
> > > -----Original Message-----
> > > From: Schmauss, Erik [mailto:erik.schmauss@intel.com]
> > > Sent: Tuesday, January 30, 2018 12:38 PM
> > > To: Andy Shevchenko <andy.shevchenko@gmail.com>; Kai-Heng Feng
> > > <kai.heng.feng@canonical.com>
> > > Cc: Rafael J. Wysocki <rjw@rjwysocki.net>; Len Brown
> > > <lenb@kernel.org>; ACPI Devel Maling List
> > > <linux-acpi@vger.kernel.org>; Linux Kernel Mailing List <linux-
> > > kernel@vger.kernel.org>; Limonciello, Mario
> > > <Mario_Limonciello@Dell.com>; Moore, Robert <robert.moore@intel.com>
> > > Subject: RE: [PATCH] ACPI: Parse entire table as a term_list for Dell
> > > XPS 9570 and Precision M5530
> > >
> > > Hi,
> > > > -----Original Message-----
> > > > From: linux-acpi-owner@vger.kernel.org [mailto:linux-acpi-
> > > > owner@vger.kernel.org] On Behalf Of Andy Shevchenko
> > > > Sent: Tuesday, January 30, 2018 10:18 AM
> > > > To: Kai-Heng Feng <kai.heng.feng@canonical.com>
> > > > Cc: Rafael J. Wysocki <rjw@rjwysocki.net>; Len Brown
> > > > <lenb@kernel.org>; ACPI Devel Maling List
> > > > <linux-acpi@vger.kernel.org>; Linux Kernel Mailing List <linux-
> > > > kernel@vger.kernel.org>; Mario Limonciello
> > > > <mario.limonciello@dell.com>
> > > > Subject: Re: [PATCH] ACPI: Parse entire table as a term_list for
> > > > Dell XPS 9570 and Precision M5530
> > > >
> > > > On Tue, Jan 30, 2018 at 8:07 AM, Kai-Heng Feng
> > > > <kai.heng.feng@canonical.com> wrote:
> > > > > The i2c touchpad on Dell XPS 9570 and Precision M5530 doesn't work
> > > > > out of box.
> > > > >
> > > > > The touchpad relies on its _INI method to update its _HID value
> > > > > from
> > > > > XXXX0000 to SYNA2393.
> > > > > Also, the _STA relies on value of I2CN to report correct status.
> > > > >
> > > > > Set acpi_gbl_parse_table_as_term_list so the value of I2CN can be
> > > > > correctly set up, and _INI can get run. The ACPI table in this
> > > > > machine is designed to get parsed this way.
> > >
> > > I thought I would give everyone an update: we are getting close to
> > > finishing patches to enable this term list parsing by default as well
> > > as a few other fixes with forward referencing of package elements.
> > > Once we have established that these patches are stable, we will get
> > > rid of acpi_gbl_parse_table_as_term_list. So this quirk may not be
> > needed in the near future...
> > 
> > Rafael,
> > 
> > Would you be opposed to carrying a patch similar to this (proposed)
> > quirk patch in kernel and reverting when Erik submits patches that get
> > rid of acpi_gbl_parse_table_as_term_list?
> > 
> > The reason being, I think this could also be a candidate to bring back
> > to @stable and fix this problem on earlier kernels too.
> > 
> > I don’t believe the patches that get rid of
> > acpi_gbl_parse_table_as_term_list likely will be good candidates for
> > @stable.
> > 
> 
> 
> Does anyone remember what was the exact problem that forced the creation of
> parse_table_as_term_list in the first place?

I don't remember exactly, but it was related to the MLC code.

That was introduced by this kernel commit:

commit de56ba95e8d6d760910711744a548b50b3a4262d
Author: Lv Zheng <lv.zheng@intel.com>
Date:   Wed Sep 7 14:06:54 2016 +0800

    ACPICA: Interpreter: Fix MLC issues by switching to new term_list grammar for table loading
    
    ACPICA commit 0e24fb67cde08d7df7671d7d7b183490dc79707e

which has a very detailed changelog including links to several bug entries.

Thanks,
Rafael

--
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/drivers/acpi/bus.c b/drivers/acpi/bus.c
index 4d0979e02a28..3999e175b6f4 100644
--- a/drivers/acpi/bus.c
+++ b/drivers/acpi/bus.c
@@ -65,9 +65,38 @@  static int set_copy_dsdt(const struct dmi_system_id *id)
 	acpi_gbl_copy_dsdt_locally = 1;
 	return 0;
 }
+
+static int set_gbl_term_list(const struct dmi_system_id *id)
+{
+	pr_notice("%s detected - parse the entire table as a term_list\n",
+		  id->ident);
+	acpi_gbl_parse_table_as_term_list = 1;
+	return 0;
+}
 #endif
 
-static const struct dmi_system_id dsdt_dmi_table[] __initconst = {
+static const struct dmi_system_id acpi_quirks_dmi_table[] __initconst = {
+	/*
+	 * Touchpad on Dell XPS 9570/Precision M5530 doesn't work under I2C
+	 * mode.
+	 * https://bugzilla.kernel.org/show_bug.cgi?id=198515
+	 */
+	{
+		.callback = set_gbl_term_list,
+		.ident = "Dell Precision M5530",
+		.matches = {
+			DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
+			DMI_MATCH(DMI_PRODUCT_NAME, "Precision M5530"),
+		},
+	},
+	{
+		.callback = set_gbl_term_list,
+		.ident = "Dell XPS 15 9570",
+		.matches = {
+			DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
+			DMI_MATCH(DMI_PRODUCT_NAME, "XPS 15 9570"),
+		},
+	},
 	/*
 	 * Invoke DSDT corruption work-around on all Toshiba Satellite.
 	 * https://bugzilla.kernel.org/show_bug.cgi?id=14679
@@ -83,7 +112,7 @@  static const struct dmi_system_id dsdt_dmi_table[] __initconst = {
 	{}
 };
 #else
-static const struct dmi_system_id dsdt_dmi_table[] __initconst = {
+static const struct dmi_system_id acpi_quirks_dmi_table[] __initconst = {
 	{}
 };
 #endif
@@ -1005,7 +1034,7 @@  void __init acpi_early_init(void)
 	 * If the machine falls into the DMI check table,
 	 * DSDT will be copied to memory
 	 */
-	dmi_check_system(dsdt_dmi_table);
+	dmi_check_system(acpi_quirks_dmi_table);
 
 	status = acpi_reallocate_root_table();
 	if (ACPI_FAILURE(status)) {