Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1253746 > unrolled thread
| Started by | Chen Yu <yu.c.chen@intel.com> |
|---|---|
| First post | 2015-10-22 14:10 +0200 |
| Last post | 2015-10-24 18:10 +0200 |
| Articles | 3 — 3 participants |
Back to article view | Back to linux.kernel
[PATCH 1/3] ACPI: Using correct irq when uninstalling acpi irq handler Chen Yu <yu.c.chen@intel.com> - 2015-10-22 14:10 +0200
Re: [PATCH 1/3] ACPI: Using correct irq when uninstalling acpi irq handler "Rafael J. Wysocki" <rjw@rjwysocki.net> - 2015-10-24 15:10 +0200
RE: [PATCH 1/3] ACPI: Using correct irq when uninstalling acpi irq handler "Chen, Yu C" <yu.c.chen@intel.com> - 2015-10-24 18:10 +0200
| From | Chen Yu <yu.c.chen@intel.com> |
|---|---|
| Date | 2015-10-22 14:10 +0200 |
| Subject | [PATCH 1/3] ACPI: Using correct irq when uninstalling acpi irq handler |
| Message-ID | <qmmQX-1Wt-41@gated-at.bofh.it> |
Currently when system is trying to uninstall the acpi irq
handler, it uses the acpi_gbl_FADT.sci_interrupt directly.
But acpi irq handler is actually installed by mapped irq
in acpi_os_install_interrupt_handler, so this patch fixes
this problem by using the mapped irq returned from acpi_gsi_to_irq.
Cc: <stable@vger.kernel.org> # 2.6.39+
Acked-by: Lv Zheng <lv.zheng@intel.com>
Signed-off-by: Chen Yu <yu.c.chen@intel.com>
---
drivers/acpi/osl.c | 10 +++++++---
include/linux/acpi.h | 3 +++
2 files changed, 10 insertions(+), 3 deletions(-)
diff --git a/drivers/acpi/osl.c b/drivers/acpi/osl.c
index 739a4a6..2e9eccf 100644
--- a/drivers/acpi/osl.c
+++ b/drivers/acpi/osl.c
@@ -81,6 +81,7 @@ static struct workqueue_struct *kacpid_wq;
static struct workqueue_struct *kacpi_notify_wq;
static struct workqueue_struct *kacpi_hotplug_wq;
static bool acpi_os_initialized;
+unsigned int acpi_sci_irq = INVALID_ACPI_IRQ;
/*
* This list of permanent mappings is for memory that may be accessed from
@@ -856,17 +857,20 @@ acpi_os_install_interrupt_handler(u32 gsi, acpi_osd_handler handler,
acpi_irq_handler = NULL;
return AE_NOT_ACQUIRED;
}
+ acpi_sci_irq = irq;
return AE_OK;
}
-acpi_status acpi_os_remove_interrupt_handler(u32 irq, acpi_osd_handler handler)
+acpi_status acpi_os_remove_interrupt_handler(u32 gsi, acpi_osd_handler handler)
{
- if (irq != acpi_gbl_FADT.sci_interrupt)
+ if ((gsi != acpi_gbl_FADT.sci_interrupt) ||
+ IS_INVALID_ACPI_IRQ(acpi_sci_irq))
return AE_BAD_PARAMETER;
- free_irq(irq, acpi_irq);
+ free_irq(acpi_sci_irq, acpi_irq);
acpi_irq_handler = NULL;
+ acpi_sci_irq = INVALID_ACPI_IRQ;
return AE_OK;
}
diff --git a/include/linux/acpi.h b/include/linux/acpi.h
index 43856d1..bad159c 100644
--- a/include/linux/acpi.h
+++ b/include/linux/acpi.h
@@ -193,6 +193,9 @@ int acpi_ioapic_registered(acpi_handle handle, u32 gsi_base);
void acpi_irq_stats_init(void);
extern u32 acpi_irq_handled;
extern u32 acpi_irq_not_handled;
+extern unsigned int acpi_sci_irq;
+#define INVALID_ACPI_IRQ ((unsigned)-1)
+#define IS_INVALID_ACPI_IRQ(x) unlikely((x) == INVALID_ACPI_IRQ)
extern int sbf_port;
extern unsigned long acpi_realmode_flags;
--
1.8.4.2
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[toc] | [next] | [standalone]
| From | "Rafael J. Wysocki" <rjw@rjwysocki.net> |
|---|---|
| Date | 2015-10-24 15:10 +0200 |
| Message-ID | <qn6K5-1az-9@gated-at.bofh.it> |
| In reply to | #1253746 |
On Thursday, October 22, 2015 08:03:08 PM Chen Yu wrote:
> Currently when system is trying to uninstall the acpi irq
> handler, it uses the acpi_gbl_FADT.sci_interrupt directly.
> But acpi irq handler is actually installed by mapped irq
> in acpi_os_install_interrupt_handler, so this patch fixes
> this problem by using the mapped irq returned from acpi_gsi_to_irq.
>
> Cc: <stable@vger.kernel.org> # 2.6.39+
> Acked-by: Lv Zheng <lv.zheng@intel.com>
> Signed-off-by: Chen Yu <yu.c.chen@intel.com>
> ---
> drivers/acpi/osl.c | 10 +++++++---
> include/linux/acpi.h | 3 +++
> 2 files changed, 10 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/acpi/osl.c b/drivers/acpi/osl.c
> index 739a4a6..2e9eccf 100644
> --- a/drivers/acpi/osl.c
> +++ b/drivers/acpi/osl.c
> @@ -81,6 +81,7 @@ static struct workqueue_struct *kacpid_wq;
> static struct workqueue_struct *kacpi_notify_wq;
> static struct workqueue_struct *kacpi_hotplug_wq;
> static bool acpi_os_initialized;
> +unsigned int acpi_sci_irq = INVALID_ACPI_IRQ;
>
> /*
> * This list of permanent mappings is for memory that may be accessed from
> @@ -856,17 +857,20 @@ acpi_os_install_interrupt_handler(u32 gsi, acpi_osd_handler handler,
> acpi_irq_handler = NULL;
> return AE_NOT_ACQUIRED;
> }
> + acpi_sci_irq = irq;
>
> return AE_OK;
> }
>
> -acpi_status acpi_os_remove_interrupt_handler(u32 irq, acpi_osd_handler handler)
> +acpi_status acpi_os_remove_interrupt_handler(u32 gsi, acpi_osd_handler handler)
> {
> - if (irq != acpi_gbl_FADT.sci_interrupt)
> + if ((gsi != acpi_gbl_FADT.sci_interrupt) ||
> + IS_INVALID_ACPI_IRQ(acpi_sci_irq))
The white space doesn't follow the kernel coding style, should be something
like
if ((gsi != acpi_gbl_FADT.sci_interrupt) ||
IS_INVALID_ACPI_IRQ(acpi_sci_irq))
(spaces instead of the second tab).
Another minor nit is that this probably is the only place you check the
IS_INVALID_ACPI_IRQ(acpi_sci_irq) thing without logical negation and you
only pass acpi_sci_irq to IS_INVALID_ACPI_IRQ() AFAICS.
It would be more straightforward to define something like acpi_sci_irq_valid()
instead (see below) IMO.
> return AE_BAD_PARAMETER;
>
> - free_irq(irq, acpi_irq);
> + free_irq(acpi_sci_irq, acpi_irq);
> acpi_irq_handler = NULL;
> + acpi_sci_irq = INVALID_ACPI_IRQ;
>
> return AE_OK;
> }
> diff --git a/include/linux/acpi.h b/include/linux/acpi.h
> index 43856d1..bad159c 100644
> --- a/include/linux/acpi.h
> +++ b/include/linux/acpi.h
> @@ -193,6 +193,9 @@ int acpi_ioapic_registered(acpi_handle handle, u32 gsi_base);
> void acpi_irq_stats_init(void);
> extern u32 acpi_irq_handled;
> extern u32 acpi_irq_not_handled;
> +extern unsigned int acpi_sci_irq;
> +#define INVALID_ACPI_IRQ ((unsigned)-1)
#define INVALID_ACPI_IRQ ((unsigned int)-1)
> +#define IS_INVALID_ACPI_IRQ(x) unlikely((x) == INVALID_ACPI_IRQ)
Maybe something like:
static inline bool acpi_sci_irq_valid(void)
{
return acpi_sci_irq != INVALID_ACPI_IRQ;
}
>
> extern int sbf_port;
> extern unsigned long acpi_realmode_flags;
>
Thanks,
Rafael
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | "Chen, Yu C" <yu.c.chen@intel.com> |
|---|---|
| Date | 2015-10-24 18:10 +0200 |
| Subject | RE: [PATCH 1/3] ACPI: Using correct irq when uninstalling acpi irq handler |
| Message-ID | <qn9yh-5bR-5@gated-at.bofh.it> |
| In reply to | #1255178 |
SGksIFJhZmFlbA0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IFJhZmFl bCBKLiBXeXNvY2tpIFttYWlsdG86cmp3QHJqd3lzb2NraS5uZXRdDQo+IFNlbnQ6IFNhdHVyZGF5 LCBPY3RvYmVyIDI0LCAyMDE1IDk6MzIgUE0NCj4gVG86IENoZW4sIFl1IEMNCj4gQ2M6IGxlbmJA a2VybmVsLm9yZzsgWmhhbmcsIFJ1aTsgWmhlbmcsIEx2OyBsaW51eC1hY3BpQHZnZXIua2VybmVs Lm9yZzsNCj4gbGludXgtcG1Admdlci5rZXJuZWwub3JnOyBsaW51eC1rZXJuZWxAdmdlci5rZXJu ZWwub3JnOw0KPiBzdGFibGVAdmdlci5rZXJuZWwub3JnDQo+IFN1YmplY3Q6IFJlOiBbUEFUQ0gg MS8zXSBBQ1BJOiBVc2luZyBjb3JyZWN0IGlycSB3aGVuIHVuaW5zdGFsbGluZyBhY3BpIGlycQ0K PiBoYW5kbGVyDQo+IA0KPiBPbiBUaHVyc2RheSwgT2N0b2JlciAyMiwgMjAxNSAwODowMzowOCBQ TSBDaGVuIFl1IHdyb3RlOg0KPiA+IEN1cnJlbnRseSB3aGVuIHN5c3RlbSBpcyB0cnlpbmcgdG8g dW5pbnN0YWxsIHRoZSBhY3BpIGlycSBoYW5kbGVyLCBpdA0KPiA+IHVzZXMgdGhlIGFjcGlfZ2Js X0ZBRFQuc2NpX2ludGVycnVwdCBkaXJlY3RseS4NCj4gPiBCdXQgYWNwaSBpcnEgaGFuZGxlciBp cyBhY3R1YWxseSBpbnN0YWxsZWQgYnkgbWFwcGVkIGlycSBpbg0KPiA+IGFjcGlfb3NfaW5zdGFs bF9pbnRlcnJ1cHRfaGFuZGxlciwgc28gdGhpcyBwYXRjaCBmaXhlcyB0aGlzIHByb2JsZW0gYnkN Cj4gPiB1c2luZyB0aGUgbWFwcGVkIGlycSByZXR1cm5lZCBmcm9tIGFjcGlfZ3NpX3RvX2lycS4N Cj4gPg0KPiA+IENjOiA8c3RhYmxlQHZnZXIua2VybmVsLm9yZz4gIyAyLjYuMzkrDQo+ID4gQWNr ZWQtYnk6IEx2IFpoZW5nIDxsdi56aGVuZ0BpbnRlbC5jb20+DQo+ID4gU2lnbmVkLW9mZi1ieTog Q2hlbiBZdSA8eXUuYy5jaGVuQGludGVsLmNvbT4NCj4gPiAtLS0NCj4gPiAgZHJpdmVycy9hY3Bp L29zbC5jICAgfCAxMCArKysrKysrLS0tDQo+ID4gIGluY2x1ZGUvbGludXgvYWNwaS5oIHwgIDMg KysrDQo+ID4gIDIgZmlsZXMgY2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMo LSkNCj4gPg0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2FjcGkvb3NsLmMgYi9kcml2ZXJzL2Fj cGkvb3NsLmMgaW5kZXgNCj4gPiA3MzlhNGE2Li4yZTllY2NmIDEwMDY0NA0KPiA+IC0tLSBhL2Ry aXZlcnMvYWNwaS9vc2wuYw0KPiA+ICsrKyBiL2RyaXZlcnMvYWNwaS9vc2wuYw0KPiA+IEBAIC04 MSw2ICs4MSw3IEBAIHN0YXRpYyBzdHJ1Y3Qgd29ya3F1ZXVlX3N0cnVjdCAqa2FjcGlkX3dxOyAg c3RhdGljDQo+ID4gc3RydWN0IHdvcmtxdWV1ZV9zdHJ1Y3QgKmthY3BpX25vdGlmeV93cTsgIHN0 YXRpYyBzdHJ1Y3QNCj4gPiB3b3JrcXVldWVfc3RydWN0ICprYWNwaV9ob3RwbHVnX3dxOyAgc3Rh dGljIGJvb2wgYWNwaV9vc19pbml0aWFsaXplZDsNCj4gPiArdW5zaWduZWQgaW50IGFjcGlfc2Np X2lycSA9IElOVkFMSURfQUNQSV9JUlE7DQo+ID4NCj4gPiAgLyoNCj4gPiAgICogVGhpcyBsaXN0 IG9mIHBlcm1hbmVudCBtYXBwaW5ncyBpcyBmb3IgbWVtb3J5IHRoYXQgbWF5IGJlIGFjY2Vzc2Vk DQo+ID4gZnJvbSBAQCAtODU2LDE3ICs4NTcsMjAgQEAgYWNwaV9vc19pbnN0YWxsX2ludGVycnVw dF9oYW5kbGVyKHUzMiBnc2ksDQo+IGFjcGlfb3NkX2hhbmRsZXIgaGFuZGxlciwNCj4gPiAgCQlh Y3BpX2lycV9oYW5kbGVyID0gTlVMTDsNCj4gPiAgCQlyZXR1cm4gQUVfTk9UX0FDUVVJUkVEOw0K PiA+ICAJfQ0KPiA+ICsJYWNwaV9zY2lfaXJxID0gaXJxOw0KPiA+DQo+ID4gIAlyZXR1cm4gQUVf T0s7DQo+ID4gIH0NCj4gPg0KPiA+IC1hY3BpX3N0YXR1cyBhY3BpX29zX3JlbW92ZV9pbnRlcnJ1 cHRfaGFuZGxlcih1MzIgaXJxLA0KPiA+IGFjcGlfb3NkX2hhbmRsZXIgaGFuZGxlcikNCj4gPiAr YWNwaV9zdGF0dXMgYWNwaV9vc19yZW1vdmVfaW50ZXJydXB0X2hhbmRsZXIodTMyIGdzaSwNCj4g PiArYWNwaV9vc2RfaGFuZGxlciBoYW5kbGVyKQ0KPiA+ICB7DQo+ID4gLQlpZiAoaXJxICE9IGFj cGlfZ2JsX0ZBRFQuc2NpX2ludGVycnVwdCkNCj4gPiArCWlmICgoZ3NpICE9IGFjcGlfZ2JsX0ZB RFQuc2NpX2ludGVycnVwdCkgfHwNCj4gPiArCQkJSVNfSU5WQUxJRF9BQ1BJX0lSUShhY3BpX3Nj aV9pcnEpKQ0KPiANCj4gVGhlIHdoaXRlIHNwYWNlIGRvZXNuJ3QgZm9sbG93IHRoZSBrZXJuZWwg Y29kaW5nIHN0eWxlLCBzaG91bGQgYmUgc29tZXRoaW5nDQo+IGxpa2UNCj4gDQo+IAlpZiAoKGdz aSAhPSBhY3BpX2dibF9GQURULnNjaV9pbnRlcnJ1cHQpIHx8DQo+IAkgICAgSVNfSU5WQUxJRF9B Q1BJX0lSUShhY3BpX3NjaV9pcnEpKQ0KPiANCj4gKHNwYWNlcyBpbnN0ZWFkIG9mIHRoZSBzZWNv bmQgdGFiKS4NCj4gDQpBaCwgZ290IGl0LCB0aGFua3MuDQoNCj4gQW5vdGhlciBtaW5vciBuaXQg aXMgdGhhdCB0aGlzIHByb2JhYmx5IGlzIHRoZSBvbmx5IHBsYWNlIHlvdSBjaGVjayB0aGUNCj4g SVNfSU5WQUxJRF9BQ1BJX0lSUShhY3BpX3NjaV9pcnEpIHRoaW5nIHdpdGhvdXQgbG9naWNhbCBu ZWdhdGlvbiBhbmQgeW91DQo+IG9ubHkgcGFzcyBhY3BpX3NjaV9pcnEgdG8gSVNfSU5WQUxJRF9B Q1BJX0lSUSgpIEFGQUlDUy4NCj4gDQo+IEl0IHdvdWxkIGJlIG1vcmUgc3RyYWlnaHRmb3J3YXJk IHRvIGRlZmluZSBzb21ldGhpbmcgbGlrZSBhY3BpX3NjaV9pcnFfdmFsaWQoKQ0KPiBpbnN0ZWFk IChzZWUgYmVsb3cpIElNTy4NCj4gDQo+ID4gIAkJcmV0dXJuIEFFX0JBRF9QQVJBTUVURVI7DQo+ ID4NCj4gPiAtCWZyZWVfaXJxKGlycSwgYWNwaV9pcnEpOw0KPiA+ICsJZnJlZV9pcnEoYWNwaV9z Y2lfaXJxLCBhY3BpX2lycSk7DQo+ID4gIAlhY3BpX2lycV9oYW5kbGVyID0gTlVMTDsNCj4gPiAr CWFjcGlfc2NpX2lycSA9IElOVkFMSURfQUNQSV9JUlE7DQo+ID4NCj4gPiAgCXJldHVybiBBRV9P SzsNCj4gPiAgfQ0KPiA+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2FjcGkuaCBiL2luY2x1 ZGUvbGludXgvYWNwaS5oIGluZGV4DQo+ID4gNDM4NTZkMS4uYmFkMTU5YyAxMDA2NDQNCj4gPiAt LS0gYS9pbmNsdWRlL2xpbnV4L2FjcGkuaA0KPiA+ICsrKyBiL2luY2x1ZGUvbGludXgvYWNwaS5o DQo+ID4gQEAgLTE5Myw2ICsxOTMsOSBAQCBpbnQgYWNwaV9pb2FwaWNfcmVnaXN0ZXJlZChhY3Bp X2hhbmRsZSBoYW5kbGUsIHUzMg0KPiA+IGdzaV9iYXNlKTsgIHZvaWQgYWNwaV9pcnFfc3RhdHNf aW5pdCh2b2lkKTsgIGV4dGVybiB1MzINCj4gPiBhY3BpX2lycV9oYW5kbGVkOyAgZXh0ZXJuIHUz MiBhY3BpX2lycV9ub3RfaGFuZGxlZDsNCj4gPiArZXh0ZXJuIHVuc2lnbmVkIGludCBhY3BpX3Nj aV9pcnE7DQo+ID4gKyNkZWZpbmUgSU5WQUxJRF9BQ1BJX0lSUSAoKHVuc2lnbmVkKS0xKQ0KPiAN Cj4gI2RlZmluZSBJTlZBTElEX0FDUElfSVJRCSgodW5zaWduZWQgaW50KS0xKQ0KPiANCj4gPiAr I2RlZmluZSBJU19JTlZBTElEX0FDUElfSVJRKHgpIHVubGlrZWx5KCh4KSA9PSBJTlZBTElEX0FD UElfSVJRKQ0KPiANCj4gTWF5YmUgc29tZXRoaW5nIGxpa2U6DQo+IA0KPiAJc3RhdGljIGlubGlu ZSBib29sIGFjcGlfc2NpX2lycV92YWxpZCh2b2lkKQ0KPiAJew0KPiAJCXJldHVybiBhY3BpX3Nj aV9pcnEgIT0gSU5WQUxJRF9BQ1BJX0lSUTsNCj4gCX0NCj4gDQpPSywgd2lsbCBzZW5kIG91dCBh IHZlcnNpb24gMiB3aXRoIGJvdGggYW5vdGhlciB0d28gcGF0Y2hlcyBtb2RpZmllZC4NCg0KQmVz dCBSZWdhcmRzLA0KWXUNCg== -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web