Message ID | 86258A5CC0A3704780874CF6004BA8A62DCBFF56@lhreml502-mbs |
---|---|
State | New |
Headers | show |
On Thursday, March 16, 2017 04:08:17 PM Shiju Jose wrote: > System Controller Interrupts are received by ACPI's error device, > which in turn notifies the GHES code. The same is true of > APEI's GSIV and GPIO notification types. > Add support for GSIV and GPIO sharing the SCI > register/unregister/notifier code.Rename the list and notifier > to show this is no longer just SCI, but anything from the > Hardware Error Device. > > Signed-off-by: Shiju Jose <shiju.jose@huawei.com> > [james.morse@arm.com: rewrote commit log] > Signed-off-by: James Morse <james.morse@arm.com> > CC: James Morse <james.morse@arm.com> > CC: Hanjun Guo <guohanjun@huawei.com> > Reviewed-by: James Morse <james.morse@arm.com> Boris, Tony, any concerns? If not, do you want to route this through the RAS tree? > --- > drivers/acpi/apei/ghes.c | 28 +++++++++++++++++----------- > 1 file changed, 17 insertions(+), 11 deletions(-) > > diff --git a/drivers/acpi/apei/ghes.c b/drivers/acpi/apei/ghes.c > index b192b42..fd39929 100644 > --- a/drivers/acpi/apei/ghes.c > +++ b/drivers/acpi/apei/ghes.c > @@ -89,14 +89,14 @@ > module_param_named(disable, ghes_disable, bool, 0); > > /* > - * All error sources notified with SCI shares one notifier function, > + * All error sources notified with HED shares one notifier function, > * so they need to be linked and checked one by one. This is applied > * to NMI too. > * > * RCU is used for these lists, so ghes_list_mutex is only used for > * list changing, not for traversing. > */ > -static LIST_HEAD(ghes_sci); > +static LIST_HEAD(ghes_hed); > static DEFINE_MUTEX(ghes_list_mutex); > > /* > @@ -702,14 +702,14 @@ static irqreturn_t ghes_irq_func(int irq, void *data) > return IRQ_HANDLED; > } > > -static int ghes_notify_sci(struct notifier_block *this, > +static int ghes_notify_hed(struct notifier_block *this, > unsigned long event, void *data) > { > struct ghes *ghes; > int ret = NOTIFY_DONE; > > rcu_read_lock(); > - list_for_each_entry_rcu(ghes, &ghes_sci, list) { > + list_for_each_entry_rcu(ghes, &ghes_hed, list) { > if (!ghes_proc(ghes)) > ret = NOTIFY_OK; > } > @@ -718,8 +718,8 @@ static int ghes_notify_sci(struct notifier_block *this, > return ret; > } > > -static struct notifier_block ghes_notifier_sci = { > - .notifier_call = ghes_notify_sci, > +static struct notifier_block ghes_notifier_hed = { > + .notifier_call = ghes_notify_hed, > }; > > #ifdef CONFIG_HAVE_ACPI_APEI_NMI > @@ -966,6 +966,8 @@ static int ghes_probe(struct platform_device *ghes_dev) > case ACPI_HEST_NOTIFY_POLLED: > case ACPI_HEST_NOTIFY_EXTERNAL: > case ACPI_HEST_NOTIFY_SCI: > + case ACPI_HEST_NOTIFY_GSIV: > + case ACPI_HEST_NOTIFY_GPIO: > break; > case ACPI_HEST_NOTIFY_NMI: > if (!IS_ENABLED(CONFIG_HAVE_ACPI_APEI_NMI)) { > @@ -1026,10 +1028,12 @@ static int ghes_probe(struct platform_device *ghes_dev) > } > break; > case ACPI_HEST_NOTIFY_SCI: > + case ACPI_HEST_NOTIFY_GSIV: > + case ACPI_HEST_NOTIFY_GPIO: > mutex_lock(&ghes_list_mutex); > - if (list_empty(&ghes_sci)) > - register_acpi_hed_notifier(&ghes_notifier_sci); > - list_add_rcu(&ghes->list, &ghes_sci); > + if (list_empty(&ghes_hed)) > + register_acpi_hed_notifier(&ghes_notifier_hed); > + list_add_rcu(&ghes->list, &ghes_hed); > mutex_unlock(&ghes_list_mutex); > break; > case ACPI_HEST_NOTIFY_NMI: > @@ -1068,10 +1072,12 @@ static int ghes_remove(struct platform_device *ghes_dev) > free_irq(ghes->irq, ghes); > break; > case ACPI_HEST_NOTIFY_SCI: > + case ACPI_HEST_NOTIFY_GSIV: > + case ACPI_HEST_NOTIFY_GPIO: > mutex_lock(&ghes_list_mutex); > list_del_rcu(&ghes->list); > - if (list_empty(&ghes_sci)) > - unregister_acpi_hed_notifier(&ghes_notifier_sci); > + if (list_empty(&ghes_hed)) > + unregister_acpi_hed_notifier(&ghes_notifier_hed); > mutex_unlock(&ghes_list_mutex); > break; > case ACPI_HEST_NOTIFY_NMI: > -- 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
Just nitpicks below. On Thu, Mar 16, 2017 at 04:08:17PM +0000, Shiju Jose wrote: > System Controller Interrupts are received by ACPI's error device, > which in turn notifies the GHES code. The same is true of > APEI's GSIV and GPIO notification types. > Add support for GSIV and GPIO sharing the SCI > register/unregister/notifier code.Rename the list and notifier > to show this is no longer just SCI, but anything from the > Hardware Error Device. > > Signed-off-by: Shiju Jose <shiju.jose@huawei.com> > [james.morse@arm.com: rewrote commit log] > Signed-off-by: James Morse <james.morse@arm.com> > CC: James Morse <james.morse@arm.com> > CC: Hanjun Guo <guohanjun@huawei.com> > Reviewed-by: James Morse <james.morse@arm.com> > --- > drivers/acpi/apei/ghes.c | 28 +++++++++++++++++----------- > 1 file changed, 17 insertions(+), 11 deletions(-) > > diff --git a/drivers/acpi/apei/ghes.c b/drivers/acpi/apei/ghes.c > index b192b42..fd39929 100644 > --- a/drivers/acpi/apei/ghes.c > +++ b/drivers/acpi/apei/ghes.c > @@ -89,14 +89,14 @@ > module_param_named(disable, ghes_disable, bool, 0); > > /* > - * All error sources notified with SCI shares one notifier function, > + * All error sources notified with HED shares one notifier function, s/shares one notifier function/share a single notifier callback/ Also, let's write out here what HED stands for. > * so they need to be linked and checked one by one. This is applied > * to NMI too. This sentence wants to say "This holds true for NMIs too." I presume? > * > * RCU is used for these lists, so ghes_list_mutex is only used for > * list changing, not for traversing. > */ > -static LIST_HEAD(ghes_sci); > +static LIST_HEAD(ghes_hed); > static DEFINE_MUTEX(ghes_list_mutex); > > /* > @@ -702,14 +702,14 @@ static irqreturn_t ghes_irq_func(int irq, void *data) > return IRQ_HANDLED; > } > > -static int ghes_notify_sci(struct notifier_block *this, > +static int ghes_notify_hed(struct notifier_block *this, > unsigned long event, void *data) Align args at opening brace. > { > struct ghes *ghes; > int ret = NOTIFY_DONE; > > rcu_read_lock(); > - list_for_each_entry_rcu(ghes, &ghes_sci, list) { > + list_for_each_entry_rcu(ghes, &ghes_hed, list) { > if (!ghes_proc(ghes)) > ret = NOTIFY_OK; > } > @@ -718,8 +718,8 @@ static int ghes_notify_sci(struct notifier_block *this, > return ret; > } > > -static struct notifier_block ghes_notifier_sci = { > - .notifier_call = ghes_notify_sci, > +static struct notifier_block ghes_notifier_hed = { > + .notifier_call = ghes_notify_hed, > }; > > #ifdef CONFIG_HAVE_ACPI_APEI_NMI > @@ -966,6 +966,8 @@ static int ghes_probe(struct platform_device *ghes_dev) > case ACPI_HEST_NOTIFY_POLLED: > case ACPI_HEST_NOTIFY_EXTERNAL: > case ACPI_HEST_NOTIFY_SCI: > + case ACPI_HEST_NOTIFY_GSIV: > + case ACPI_HEST_NOTIFY_GPIO: > break; <-- \n here for readability. > case ACPI_HEST_NOTIFY_NMI: > if (!IS_ENABLED(CONFIG_HAVE_ACPI_APEI_NMI)) { > @@ -1026,10 +1028,12 @@ static int ghes_probe(struct platform_device *ghes_dev) > } > break; ditto. > case ACPI_HEST_NOTIFY_SCI: > + case ACPI_HEST_NOTIFY_GSIV: > + case ACPI_HEST_NOTIFY_GPIO: > mutex_lock(&ghes_list_mutex); > - if (list_empty(&ghes_sci)) > - register_acpi_hed_notifier(&ghes_notifier_sci); > - list_add_rcu(&ghes->list, &ghes_sci); > + if (list_empty(&ghes_hed)) > + register_acpi_hed_notifier(&ghes_notifier_hed); > + list_add_rcu(&ghes->list, &ghes_hed); > mutex_unlock(&ghes_list_mutex); > break; ditto. > case ACPI_HEST_NOTIFY_NMI: > @@ -1068,10 +1072,12 @@ static int ghes_remove(struct platform_device *ghes_dev) > free_irq(ghes->irq, ghes); > break; > case ACPI_HEST_NOTIFY_SCI: > + case ACPI_HEST_NOTIFY_GSIV: > + case ACPI_HEST_NOTIFY_GPIO: > mutex_lock(&ghes_list_mutex); > list_del_rcu(&ghes->list); > - if (list_empty(&ghes_sci)) > - unregister_acpi_hed_notifier(&ghes_notifier_sci); > + if (list_empty(&ghes_hed)) > + unregister_acpi_hed_notifier(&ghes_notifier_hed); > mutex_unlock(&ghes_list_mutex); > break; ditto. -- Regards/Gruss, Boris. SUSE Linux GmbH, GF: Felix Imendörffer, Jane Smithard, Graham Norton, HRB 21284 (AG Nürnberg) -- -- 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
SGkgQm9yaXMsDQoNClRoYW5rcyBmb3IgeW91ciBjb21tZW50cy4NCkkgd2lsbCBhZGRyZXNzIHRo ZSBjb21tZW50cyBpbiB0aGUgbmV4dCB2ZXJzaW9uLg0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2Fn ZS0tLS0tDQo+IEZyb206IGxpbnV4LWFjcGktb3duZXJAdmdlci5rZXJuZWwub3JnIFttYWlsdG86 bGludXgtYWNwaS0NCj4gb3duZXJAdmdlci5rZXJuZWwub3JnXSBPbiBCZWhhbGYgT2YgQm9yaXNs YXYgUGV0a292DQo+IFNlbnQ6IDE4IEFwcmlsIDIwMTcgMTc6MzUNCj4gVG86IFNoaWp1IEpvc2UN Cj4gQ2M6IHJqd0Byand5c29ja2kubmV0OyBsZW5iQGtlcm5lbC5vcmc7IG1pbmdvQGtlcm5lbC5v cmc7DQo+IHByYXJpdEByZWRoYXQuY29tOyB0YmFpY2FyQGNvZGVhdXJvcmEub3JnOyBwdW5pdC5h Z3Jhd2FsQGFybS5jb207DQo+IGxpbnV4LWFjcGlAdmdlci5rZXJuZWwub3JnOyBqYW1lcy5tb3Jz ZUBhcm0uY29tOyBmdS53ZWlAbGluYXJvLm9yZzsNCj4gR3VvaGFuanVuIChIYW5qdW4gR3VvKTsg R2FicmllbGUgUGFvbG9uaTsgSm9obiBHYXJyeTsgeHV3ZWkgKE8pOw0KPiBaaGVuZ3FpYW5nICh0 dXJpbmcpDQo+IFN1YmplY3Q6IFJlOiBbUEFUQ0ggVjJdIGFjcGk6YXBlaTpoYW5kbGUgR1NJViBh bmQgR1BJTyBub3RpZmljYXRpb24NCj4gdHlwZXMNCj4gDQo+IEp1c3Qgbml0cGlja3MgYmVsb3cu DQo+IA0KPiBPbiBUaHUsIE1hciAxNiwgMjAxNyBhdCAwNDowODoxN1BNICswMDAwLCBTaGlqdSBK b3NlIHdyb3RlOg0KPiA+IFN5c3RlbSBDb250cm9sbGVyIEludGVycnVwdHMgYXJlIHJlY2VpdmVk IGJ5IEFDUEkncyBlcnJvciBkZXZpY2UsDQo+ID4gd2hpY2ggaW4gdHVybiBub3RpZmllcyB0aGUg R0hFUyBjb2RlLiBUaGUgc2FtZSBpcyB0cnVlIG9mIEFQRUkncyBHU0lWDQo+ID4gYW5kIEdQSU8g bm90aWZpY2F0aW9uIHR5cGVzLg0KPiA+IEFkZCBzdXBwb3J0IGZvciBHU0lWIGFuZCBHUElPIHNo YXJpbmcgdGhlIFNDSQ0KPiA+IHJlZ2lzdGVyL3VucmVnaXN0ZXIvbm90aWZpZXIgY29kZS5SZW5h bWUgdGhlIGxpc3QgYW5kIG5vdGlmaWVyIHRvDQo+IHNob3cNCj4gPiB0aGlzIGlzIG5vIGxvbmdl ciBqdXN0IFNDSSwgYnV0IGFueXRoaW5nIGZyb20gdGhlIEhhcmR3YXJlIEVycm9yDQo+ID4gRGV2 aWNlLg0KPiA+DQo+ID4gU2lnbmVkLW9mZi1ieTogU2hpanUgSm9zZSA8c2hpanUuam9zZUBodWF3 ZWkuY29tPg0KPiA+IFtqYW1lcy5tb3JzZUBhcm0uY29tOiByZXdyb3RlIGNvbW1pdCBsb2ddDQo+ ID4gU2lnbmVkLW9mZi1ieTogSmFtZXMgTW9yc2UgPGphbWVzLm1vcnNlQGFybS5jb20+DQo+ID4g Q0M6IEphbWVzIE1vcnNlIDxqYW1lcy5tb3JzZUBhcm0uY29tPg0KPiA+IENDOiBIYW5qdW4gR3Vv IDxndW9oYW5qdW5AaHVhd2VpLmNvbT4NCj4gPiBSZXZpZXdlZC1ieTogSmFtZXMgTW9yc2UgPGph bWVzLm1vcnNlQGFybS5jb20+DQo+ID4gLS0tDQo+ID4gIGRyaXZlcnMvYWNwaS9hcGVpL2doZXMu YyB8IDI4ICsrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0NCj4gPiAgMSBmaWxlIGNoYW5nZWQs IDE3IGluc2VydGlvbnMoKyksIDExIGRlbGV0aW9ucygtKQ0KPiA+DQo+ID4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvYWNwaS9hcGVpL2doZXMuYyBiL2RyaXZlcnMvYWNwaS9hcGVpL2doZXMuYw0KPiBp bmRleA0KPiA+IGIxOTJiNDIuLmZkMzk5MjkgMTAwNjQ0DQo+ID4gLS0tIGEvZHJpdmVycy9hY3Bp L2FwZWkvZ2hlcy5jDQo+ID4gKysrIGIvZHJpdmVycy9hY3BpL2FwZWkvZ2hlcy5jDQo+ID4gQEAg LTg5LDE0ICs4OSwxNCBAQA0KPiA+ICBtb2R1bGVfcGFyYW1fbmFtZWQoZGlzYWJsZSwgZ2hlc19k aXNhYmxlLCBib29sLCAwKTsNCj4gPg0KPiA+ICAvKg0KPiA+IC0gKiBBbGwgZXJyb3Igc291cmNl cyBub3RpZmllZCB3aXRoIFNDSSBzaGFyZXMgb25lIG5vdGlmaWVyIGZ1bmN0aW9uLA0KPiA+ICsg KiBBbGwgZXJyb3Igc291cmNlcyBub3RpZmllZCB3aXRoIEhFRCBzaGFyZXMgb25lIG5vdGlmaWVy IGZ1bmN0aW9uLA0KPiANCj4gcy9zaGFyZXMgb25lIG5vdGlmaWVyIGZ1bmN0aW9uL3NoYXJlIGEg c2luZ2xlIG5vdGlmaWVyIGNhbGxiYWNrLw0KPiANCj4gQWxzbywgbGV0J3Mgd3JpdGUgb3V0IGhl cmUgd2hhdCBIRUQgc3RhbmRzIGZvci4NCg0KT2sgSSB3aWxsIG1ha2UgdGhlc2UgY2hhbmdlcy4g DQoNCj4gDQo+ID4gICAqIHNvIHRoZXkgbmVlZCB0byBiZSBsaW5rZWQgYW5kIGNoZWNrZWQgb25l IGJ5IG9uZS4gIFRoaXMgaXMNCj4gYXBwbGllZA0KPiA+ICAgKiB0byBOTUkgdG9vLg0KPiANCj4g VGhpcyBzZW50ZW5jZSB3YW50cyB0byBzYXkgIlRoaXMgaG9sZHMgdHJ1ZSBmb3IgTk1JcyB0b28u IiBJIHByZXN1bWU/DQoNCk9rLiBJIHdpbGwgY2hhbmdlIHRoaXMgc2VudGVuY2UgdG8gIlRoaXMg aG9sZHMgdHJ1ZSBmb3IgTk1JcyB0b28uIg0KDQo+IA0KPiA+ICAgKg0KPiA+ICAgKiBSQ1UgaXMg dXNlZCBmb3IgdGhlc2UgbGlzdHMsIHNvIGdoZXNfbGlzdF9tdXRleCBpcyBvbmx5IHVzZWQgZm9y DQo+ID4gICAqIGxpc3QgY2hhbmdpbmcsIG5vdCBmb3IgdHJhdmVyc2luZy4NCj4gPiAgICovDQo+ ID4gLXN0YXRpYyBMSVNUX0hFQUQoZ2hlc19zY2kpOw0KPiA+ICtzdGF0aWMgTElTVF9IRUFEKGdo ZXNfaGVkKTsNCj4gPiAgc3RhdGljIERFRklORV9NVVRFWChnaGVzX2xpc3RfbXV0ZXgpOw0KPiA+ DQo+ID4gIC8qDQo+ID4gQEAgLTcwMiwxNCArNzAyLDE0IEBAIHN0YXRpYyBpcnFyZXR1cm5fdCBn aGVzX2lycV9mdW5jKGludCBpcnEsIHZvaWQNCj4gKmRhdGEpDQo+ID4gIAlyZXR1cm4gSVJRX0hB TkRMRUQ7DQo+ID4gIH0NCj4gPg0KPiA+IC1zdGF0aWMgaW50IGdoZXNfbm90aWZ5X3NjaShzdHJ1 Y3Qgbm90aWZpZXJfYmxvY2sgKnRoaXMsDQo+ID4gK3N0YXRpYyBpbnQgZ2hlc19ub3RpZnlfaGVk KHN0cnVjdCBub3RpZmllcl9ibG9jayAqdGhpcywNCj4gPiAgCQkJCSAgdW5zaWduZWQgbG9uZyBl dmVudCwgdm9pZCAqZGF0YSkNCj4gDQo+IEFsaWduIGFyZ3MgYXQgb3BlbmluZyBicmFjZS4NCg0K T2suIEkgd2lsbCBhbGlnbiB0aGUgYXJncy4NCg0KPiANCj4gPiAgew0KPiA+ICAJc3RydWN0IGdo ZXMgKmdoZXM7DQo+ID4gIAlpbnQgcmV0ID0gTk9USUZZX0RPTkU7DQo+ID4NCj4gPiAgCXJjdV9y ZWFkX2xvY2soKTsNCj4gPiAtCWxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KGdoZXMsICZnaGVzX3Nj aSwgbGlzdCkgew0KPiA+ICsJbGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoZ2hlcywgJmdoZXNfaGVk LCBsaXN0KSB7DQo+ID4gIAkJaWYgKCFnaGVzX3Byb2MoZ2hlcykpDQo+ID4gIAkJCXJldCA9IE5P VElGWV9PSzsNCj4gPiAgCX0NCj4gPiBAQCAtNzE4LDggKzcxOCw4IEBAIHN0YXRpYyBpbnQgZ2hl c19ub3RpZnlfc2NpKHN0cnVjdCBub3RpZmllcl9ibG9jaw0KPiAqdGhpcywNCj4gPiAgCXJldHVy biByZXQ7DQo+ID4gIH0NCj4gPg0KPiA+IC1zdGF0aWMgc3RydWN0IG5vdGlmaWVyX2Jsb2NrIGdo ZXNfbm90aWZpZXJfc2NpID0gew0KPiA+IC0JLm5vdGlmaWVyX2NhbGwgPSBnaGVzX25vdGlmeV9z Y2ksDQo+ID4gK3N0YXRpYyBzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgZ2hlc19ub3RpZmllcl9oZWQg PSB7DQo+ID4gKwkubm90aWZpZXJfY2FsbCA9IGdoZXNfbm90aWZ5X2hlZCwNCj4gPiAgfTsNCj4g Pg0KPiA+ICAjaWZkZWYgQ09ORklHX0hBVkVfQUNQSV9BUEVJX05NSQ0KPiA+IEBAIC05NjYsNiAr OTY2LDggQEAgc3RhdGljIGludCBnaGVzX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UNCj4g KmdoZXNfZGV2KQ0KPiA+ICAJY2FzZSBBQ1BJX0hFU1RfTk9USUZZX1BPTExFRDoNCj4gPiAgCWNh c2UgQUNQSV9IRVNUX05PVElGWV9FWFRFUk5BTDoNCj4gPiAgCWNhc2UgQUNQSV9IRVNUX05PVElG WV9TQ0k6DQo+ID4gKwljYXNlIEFDUElfSEVTVF9OT1RJRllfR1NJVjoNCj4gPiArCWNhc2UgQUNQ SV9IRVNUX05PVElGWV9HUElPOg0KPiA+ICAJCWJyZWFrOw0KPiANCj4gPC0tIFxuIGhlcmUgZm9y IHJlYWRhYmlsaXR5Lg0KDQpPayBJIHdpbGwgYWRkIG5ldyBsaW5lIGhlcmUuDQoNCj4gDQo+ID4g IAljYXNlIEFDUElfSEVTVF9OT1RJRllfTk1JOg0KPiA+ICAJCWlmICghSVNfRU5BQkxFRChDT05G SUdfSEFWRV9BQ1BJX0FQRUlfTk1JKSkgeyBAQCAtMTAyNiwxMA0KPiArMTAyOCwxMg0KPiA+IEBA IHN0YXRpYyBpbnQgZ2hlc19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpnaGVzX2RldikN Cj4gPiAgCQl9DQo+ID4gIAkJYnJlYWs7DQo+IA0KPiBkaXR0by4NCg0KT2sgSSB3aWxsIGFkZCBu ZXcgbGluZSBoZXJlLg0KDQo+ID4gIAljYXNlIEFDUElfSEVTVF9OT1RJRllfU0NJOg0KPiA+ICsJ Y2FzZSBBQ1BJX0hFU1RfTk9USUZZX0dTSVY6DQo+ID4gKwljYXNlIEFDUElfSEVTVF9OT1RJRllf R1BJTzoNCj4gPiAgCQltdXRleF9sb2NrKCZnaGVzX2xpc3RfbXV0ZXgpOw0KPiA+IC0JCWlmIChs aXN0X2VtcHR5KCZnaGVzX3NjaSkpDQo+ID4gLQkJCXJlZ2lzdGVyX2FjcGlfaGVkX25vdGlmaWVy KCZnaGVzX25vdGlmaWVyX3NjaSk7DQo+ID4gLQkJbGlzdF9hZGRfcmN1KCZnaGVzLT5saXN0LCAm Z2hlc19zY2kpOw0KPiA+ICsJCWlmIChsaXN0X2VtcHR5KCZnaGVzX2hlZCkpDQo+ID4gKwkJCXJl Z2lzdGVyX2FjcGlfaGVkX25vdGlmaWVyKCZnaGVzX25vdGlmaWVyX2hlZCk7DQo+ID4gKwkJbGlz dF9hZGRfcmN1KCZnaGVzLT5saXN0LCAmZ2hlc19oZWQpOw0KPiA+ICAJCW11dGV4X3VubG9jaygm Z2hlc19saXN0X211dGV4KTsNCj4gPiAgCQlicmVhazsNCj4gDQo+IGRpdHRvLg0KDQpPayBJIHdp bGwgYWRkIG5ldyBsaW5lIGhlcmUuDQoNCj4gDQo+ID4gIAljYXNlIEFDUElfSEVTVF9OT1RJRllf Tk1JOg0KPiA+IEBAIC0xMDY4LDEwICsxMDcyLDEyIEBAIHN0YXRpYyBpbnQgZ2hlc19yZW1vdmUo c3RydWN0IHBsYXRmb3JtX2RldmljZQ0KPiAqZ2hlc19kZXYpDQo+ID4gIAkJZnJlZV9pcnEoZ2hl cy0+aXJxLCBnaGVzKTsNCj4gPiAgCQlicmVhazsNCj4gPiAgCWNhc2UgQUNQSV9IRVNUX05PVElG WV9TQ0k6DQo+ID4gKwljYXNlIEFDUElfSEVTVF9OT1RJRllfR1NJVjoNCj4gPiArCWNhc2UgQUNQ SV9IRVNUX05PVElGWV9HUElPOg0KPiA+ICAJCW11dGV4X2xvY2soJmdoZXNfbGlzdF9tdXRleCk7 DQo+ID4gIAkJbGlzdF9kZWxfcmN1KCZnaGVzLT5saXN0KTsNCj4gPiAtCQlpZiAobGlzdF9lbXB0 eSgmZ2hlc19zY2kpKQ0KPiA+IC0JCQl1bnJlZ2lzdGVyX2FjcGlfaGVkX25vdGlmaWVyKCZnaGVz X25vdGlmaWVyX3NjaSk7DQo+ID4gKwkJaWYgKGxpc3RfZW1wdHkoJmdoZXNfaGVkKSkNCj4gPiAr CQkJdW5yZWdpc3Rlcl9hY3BpX2hlZF9ub3RpZmllcigmZ2hlc19ub3RpZmllcl9oZWQpOw0KPiA+ ICAJCW11dGV4X3VubG9jaygmZ2hlc19saXN0X211dGV4KTsNCj4gPiAgCQlicmVhazsNCj4gDQo+ IGRpdHRvLg0KDQpPayBJIHdpbGwgYWRkIG5ldyBsaW5lIGhlcmUuDQoNCj4gDQo+IC0tDQo+IFJl Z2FyZHMvR3J1c3MsDQo+ICAgICBCb3Jpcy4NCj4NCg0KVGhhbmtzLA0KU2hpanUNCiANCj4gU1VT RSBMaW51eCBHbWJILCBHRjogRmVsaXggSW1lbmTDtnJmZmVyLCBKYW5lIFNtaXRoYXJkLCBHcmFo YW0gTm9ydG9uLA0KPiBIUkIgMjEyODQgKEFHIE7DvHJuYmVyZykNCj4gLS0NCj4gLS0NCj4gVG8g dW5zdWJzY3JpYmUgZnJvbSB0aGlzIGxpc3Q6IHNlbmQgdGhlIGxpbmUgInVuc3Vic2NyaWJlIGxp bnV4LWFjcGkiDQo+IGluIHRoZSBib2R5IG9mIGEgbWVzc2FnZSB0byBtYWpvcmRvbW9Admdlci5r ZXJuZWwub3JnIE1vcmUgbWFqb3Jkb21vDQo+IGluZm8gYXQgIGh0dHA6Ly92Z2VyLmtlcm5lbC5v cmcvbWFqb3Jkb21vLWluZm8uaHRtbA0K -- 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 --git a/drivers/acpi/apei/ghes.c b/drivers/acpi/apei/ghes.c index b192b42..fd39929 100644 --- a/drivers/acpi/apei/ghes.c +++ b/drivers/acpi/apei/ghes.c @@ -89,14 +89,14 @@ module_param_named(disable, ghes_disable, bool, 0); /* - * All error sources notified with SCI shares one notifier function, + * All error sources notified with HED shares one notifier function, * so they need to be linked and checked one by one. This is applied * to NMI too. * * RCU is used for these lists, so ghes_list_mutex is only used for * list changing, not for traversing. */ -static LIST_HEAD(ghes_sci); +static LIST_HEAD(ghes_hed); static DEFINE_MUTEX(ghes_list_mutex); /* @@ -702,14 +702,14 @@ static irqreturn_t ghes_irq_func(int irq, void *data) return IRQ_HANDLED; } -static int ghes_notify_sci(struct notifier_block *this, +static int ghes_notify_hed(struct notifier_block *this, unsigned long event, void *data) { struct ghes *ghes; int ret = NOTIFY_DONE; rcu_read_lock(); - list_for_each_entry_rcu(ghes, &ghes_sci, list) { + list_for_each_entry_rcu(ghes, &ghes_hed, list) { if (!ghes_proc(ghes)) ret = NOTIFY_OK; } @@ -718,8 +718,8 @@ static int ghes_notify_sci(struct notifier_block *this, return ret; } -static struct notifier_block ghes_notifier_sci = { - .notifier_call = ghes_notify_sci, +static struct notifier_block ghes_notifier_hed = { + .notifier_call = ghes_notify_hed, }; #ifdef CONFIG_HAVE_ACPI_APEI_NMI @@ -966,6 +966,8 @@ static int ghes_probe(struct platform_device *ghes_dev) case ACPI_HEST_NOTIFY_POLLED: case ACPI_HEST_NOTIFY_EXTERNAL: case ACPI_HEST_NOTIFY_SCI: + case ACPI_HEST_NOTIFY_GSIV: + case ACPI_HEST_NOTIFY_GPIO: break; case ACPI_HEST_NOTIFY_NMI: if (!IS_ENABLED(CONFIG_HAVE_ACPI_APEI_NMI)) { @@ -1026,10 +1028,12 @@ static int ghes_probe(struct platform_device *ghes_dev) } break; case ACPI_HEST_NOTIFY_SCI: + case ACPI_HEST_NOTIFY_GSIV: + case ACPI_HEST_NOTIFY_GPIO: mutex_lock(&ghes_list_mutex); - if (list_empty(&ghes_sci)) - register_acpi_hed_notifier(&ghes_notifier_sci); - list_add_rcu(&ghes->list, &ghes_sci); + if (list_empty(&ghes_hed)) + register_acpi_hed_notifier(&ghes_notifier_hed); + list_add_rcu(&ghes->list, &ghes_hed); mutex_unlock(&ghes_list_mutex); break; case ACPI_HEST_NOTIFY_NMI: @@ -1068,10 +1072,12 @@ static int ghes_remove(struct platform_device *ghes_dev) free_irq(ghes->irq, ghes); break; case ACPI_HEST_NOTIFY_SCI: + case ACPI_HEST_NOTIFY_GSIV: + case ACPI_HEST_NOTIFY_GPIO: mutex_lock(&ghes_list_mutex); list_del_rcu(&ghes->list); - if (list_empty(&ghes_sci)) - unregister_acpi_hed_notifier(&ghes_notifier_sci); + if (list_empty(&ghes_hed)) + unregister_acpi_hed_notifier(&ghes_notifier_hed); mutex_unlock(&ghes_list_mutex); break; case ACPI_HEST_NOTIFY_NMI: