Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1243110 > unrolled thread
| Started by | Chen Yu <yu.c.chen@intel.com> |
|---|---|
| First post | 2015-10-09 10:20 +0200 |
| Last post | 2015-10-14 19:50 +0200 |
| Articles | 6 — 4 participants |
Back to article view | Back to linux.kernel
[PATCH][v3] ACPI / PM: Fix incorrect wakeup irq setting before suspend-to-idle Chen Yu <yu.c.chen@intel.com> - 2015-10-09 10:20 +0200
RE: [PATCH][v3] ACPI / PM: Fix incorrect wakeup irq setting before suspend-to-idle "Zheng, Lv" <lv.zheng@intel.com> - 2015-10-09 10:40 +0200
RE: [PATCH][v3] ACPI / PM: Fix incorrect wakeup irq setting before suspend-to-idle "Chen, Yu C" <yu.c.chen@intel.com> - 2015-10-09 12:00 +0200
RE: [PATCH][v3] ACPI / PM: Fix incorrect wakeup irq setting before suspend-to-idle "Zheng, Lv" <lv.zheng@intel.com> - 2015-10-10 04:30 +0200
Re: [PATCH][v3] ACPI / PM: Fix incorrect wakeup irq setting before suspend-to-idle "Rafael J. Wysocki" <rjw@rjwysocki.net> - 2015-10-12 22:00 +0200
RE: [PATCH][v3] ACPI / PM: Fix incorrect wakeup irq setting before suspend-to-idle "Chen, Yu C" <yu.c.chen@intel.com> - 2015-10-14 19:50 +0200
| From | Chen Yu <yu.c.chen@intel.com> |
|---|---|
| Date | 2015-10-09 10:20 +0200 |
| Subject | [PATCH][v3] ACPI / PM: Fix incorrect wakeup irq setting before suspend-to-idle |
| Message-ID | <qhB4e-4TO-5@gated-at.bofh.it> |
For ACPI compatible system, SCI(ACPI System Control
Interrupt) is used to wake system up from suspend-to-idle.
Once CPU is woken up by SCI, interrupt handler will
firstly checks if current interrupt is legal to wake up
the whole system, thus irq_pm_check_wakeup is invoked
to validate the irq number. However, before suspend-to-idle,
acpi_gbl_FADT.sci_interrupt is marked rather than actual
irq number in acpi_freeze_prepare, this might lead to unable
to wake up the system.
This patch fixes this problem by marking the irq number
return by acpi_gsi_to_irq as IRQD_WAKEUP_STATE, rather than
marking the acpi_gbl_FADT.sci_interrupt. Meanwhile this patch
fixes the same problems inside acpi_os_remove_interrupt_handler
and acpi_os_wait_events_complete respectively.
Signed-off-by: Chen Yu <yu.c.chen@intel.com>
---
v3:
- 1.Rename acpi_inuse_irq to acpi_sci_irq for better understanding.
2.If the irq handler is not registered, skip the synchronize_hardirq
in acpi_os_wait_events_complete and return immediately in
acpi_os_remove_interrupt_handler.
3.For acpi_freeze_prepare and acpi_freeze_restore, if the acpi irq
handler is not properly registered, we do not leverage acpi irq
to wake up the system, but expect other peripherals(such as PCI devices
and USB devices)to invoke enable_irq_wake for us.
v2:
- 1.Define a global acpi_inuse_irq variable, store irq in it
and access it directly from acpi_freeze_prepare(), and it
doesn't have to depend on CONFIG_SUSPEND as it is just the
IRQ number actually used by ACPI.
2.Also fix the same problems inside acpi_os_remove_interrupt_handler,
acpi_os_wait_events_complete.
---
drivers/acpi/osl.c | 12 ++++++++----
drivers/acpi/sleep.c | 6 ++++--
include/linux/acpi.h | 3 +++
3 files changed, 15 insertions(+), 6 deletions(-)
diff --git a/drivers/acpi/osl.c b/drivers/acpi/osl.c
index 739a4a6..8e1a5d3 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)
{
- if (irq != acpi_gbl_FADT.sci_interrupt)
+ if ((irq != 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;
}
@@ -1180,8 +1184,8 @@ void acpi_os_wait_events_complete(void)
* Make sure the GPE handler or the fixed event handler is not used
* on another CPU after removal.
*/
- if (acpi_irq_handler)
- synchronize_hardirq(acpi_gbl_FADT.sci_interrupt);
+ if (!IS_INVALID_ACPI_IRQ(acpi_sci_irq))
+ synchronize_hardirq(acpi_sci_irq);
flush_workqueue(kacpid_wq);
flush_workqueue(kacpi_notify_wq);
}
diff --git a/drivers/acpi/sleep.c b/drivers/acpi/sleep.c
index 2f0d4db..1704595 100644
--- a/drivers/acpi/sleep.c
+++ b/drivers/acpi/sleep.c
@@ -632,14 +632,16 @@ static int acpi_freeze_prepare(void)
acpi_enable_wakeup_devices(ACPI_STATE_S0);
acpi_enable_all_wakeup_gpes();
acpi_os_wait_events_complete();
- enable_irq_wake(acpi_gbl_FADT.sci_interrupt);
+ if (!IS_INVALID_ACPI_IRQ(acpi_sci_irq))
+ enable_irq_wake(acpi_sci_irq);
return 0;
}
static void acpi_freeze_restore(void)
{
acpi_disable_wakeup_devices(ACPI_STATE_S0);
- disable_irq_wake(acpi_gbl_FADT.sci_interrupt);
+ if (!IS_INVALID_ACPI_IRQ(acpi_sci_irq))
+ disable_irq_wake(acpi_sci_irq);
acpi_enable_all_runtime_gpes();
}
diff --git a/include/linux/acpi.h b/include/linux/acpi.h
index 43856d1..2f05dc0 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 | "Zheng, Lv" <lv.zheng@intel.com> |
|---|---|
| Date | 2015-10-09 10:40 +0200 |
| Subject | RE: [PATCH][v3] ACPI / PM: Fix incorrect wakeup irq setting before suspend-to-idle |
| Message-ID | <qhBnz-5g1-5@gated-at.bofh.it> |
| In reply to | #1243110 |
Hi, Yu
> From: Chen, Yu C
> Sent: Friday, October 09, 2015 4:20 PM
>
> For ACPI compatible system, SCI(ACPI System Control
> Interrupt) is used to wake system up from suspend-to-idle.
> Once CPU is woken up by SCI, interrupt handler will
> firstly checks if current interrupt is legal to wake up
> the whole system, thus irq_pm_check_wakeup is invoked
> to validate the irq number. However, before suspend-to-idle,
> acpi_gbl_FADT.sci_interrupt is marked rather than actual
> irq number in acpi_freeze_prepare, this might lead to unable
> to wake up the system.
>
> This patch fixes this problem by marking the irq number
> return by acpi_gsi_to_irq as IRQD_WAKEUP_STATE, rather than
> marking the acpi_gbl_FADT.sci_interrupt. Meanwhile this patch
> fixes the same problems inside acpi_os_remove_interrupt_handler
> and acpi_os_wait_events_complete respectively.
>
> Signed-off-by: Chen Yu <yu.c.chen@intel.com>
> ---
> v3:
> - 1.Rename acpi_inuse_irq to acpi_sci_irq for better understanding.
> 2.If the irq handler is not registered, skip the synchronize_hardirq
> in acpi_os_wait_events_complete and return immediately in
> acpi_os_remove_interrupt_handler.
> 3.For acpi_freeze_prepare and acpi_freeze_restore, if the acpi irq
> handler is not properly registered, we do not leverage acpi irq
> to wake up the system, but expect other peripherals(such as PCI devices
> and USB devices)to invoke enable_irq_wake for us.
> v2:
> - 1.Define a global acpi_inuse_irq variable, store irq in it
> and access it directly from acpi_freeze_prepare(), and it
> doesn't have to depend on CONFIG_SUSPEND as it is just the
> IRQ number actually used by ACPI.
> 2.Also fix the same problems inside acpi_os_remove_interrupt_handler,
> acpi_os_wait_events_complete.
> ---
> drivers/acpi/osl.c | 12 ++++++++----
> drivers/acpi/sleep.c | 6 ++++--
> include/linux/acpi.h | 3 +++
> 3 files changed, 15 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/acpi/osl.c b/drivers/acpi/osl.c
> index 739a4a6..8e1a5d3 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)
Why don't you rename irq here to gsi to improve the readability?
The false naming and the wrong example written for this function are probably the root causes of all other bad code.
So if we want to stop people making future mistakes, we need to cleanup ourselves.
Thanks and best regards
-Lv
> {
> - if (irq != acpi_gbl_FADT.sci_interrupt)
> + if ((irq != 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;
> }
> @@ -1180,8 +1184,8 @@ void acpi_os_wait_events_complete(void)
> * Make sure the GPE handler or the fixed event handler is not used
> * on another CPU after removal.
> */
> - if (acpi_irq_handler)
> - synchronize_hardirq(acpi_gbl_FADT.sci_interrupt);
> + if (!IS_INVALID_ACPI_IRQ(acpi_sci_irq))
> + synchronize_hardirq(acpi_sci_irq);
> flush_workqueue(kacpid_wq);
> flush_workqueue(kacpi_notify_wq);
> }
> diff --git a/drivers/acpi/sleep.c b/drivers/acpi/sleep.c
> index 2f0d4db..1704595 100644
> --- a/drivers/acpi/sleep.c
> +++ b/drivers/acpi/sleep.c
> @@ -632,14 +632,16 @@ static int acpi_freeze_prepare(void)
> acpi_enable_wakeup_devices(ACPI_STATE_S0);
> acpi_enable_all_wakeup_gpes();
> acpi_os_wait_events_complete();
> - enable_irq_wake(acpi_gbl_FADT.sci_interrupt);
> + if (!IS_INVALID_ACPI_IRQ(acpi_sci_irq))
> + enable_irq_wake(acpi_sci_irq);
> return 0;
> }
>
> static void acpi_freeze_restore(void)
> {
> acpi_disable_wakeup_devices(ACPI_STATE_S0);
> - disable_irq_wake(acpi_gbl_FADT.sci_interrupt);
> + if (!IS_INVALID_ACPI_IRQ(acpi_sci_irq))
> + disable_irq_wake(acpi_sci_irq);
> acpi_enable_all_runtime_gpes();
> }
>
> diff --git a/include/linux/acpi.h b/include/linux/acpi.h
> index 43856d1..2f05dc0 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] | [prev] | [next] | [standalone]
| From | "Chen, Yu C" <yu.c.chen@intel.com> |
|---|---|
| Date | 2015-10-09 12:00 +0200 |
| Subject | RE: [PATCH][v3] ACPI / PM: Fix incorrect wakeup irq setting before suspend-to-idle |
| Message-ID | <qhCD0-6Yo-15@gated-at.bofh.it> |
| In reply to | #1243127 |
Hi, LV > -----Original Message----- > From: Zheng, Lv > Sent: Friday, October 09, 2015 4:33 PM > To: Chen, Yu C; rjw@rjwysocki.net; lenb@kernel.org > Cc: linux-pm@vger.kernel.org; linux-acpi@vger.kernel.org; linux- > kernel@vger.kernel.org; Zhang, Rui > Subject: RE: [PATCH][v3] ACPI / PM: Fix incorrect wakeup irq setting before > suspend-to-idle > > Hi, Yu > > > From: Chen, Yu C > > Sent: Friday, October 09, 2015 4:20 PM > > > > > > acpi_status acpi_os_remove_interrupt_handler(u32 irq, > > acpi_osd_handler handler) > > Why don't you rename irq here to gsi to improve the readability? > The false naming and the wrong example written for this function are > probably the root causes of all other bad code. > So if we want to stop people making future mistakes, we need to cleanup > ourselves. > OK, will rewrite in next version. > Thanks and best regards > -Lv > -- 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 | "Zheng, Lv" <lv.zheng@intel.com> |
|---|---|
| Date | 2015-10-10 04:30 +0200 |
| Subject | RE: [PATCH][v3] ACPI / PM: Fix incorrect wakeup irq setting before suspend-to-idle |
| Message-ID | <qhS53-44H-3@gated-at.bofh.it> |
| In reply to | #1243205 |
Hi, > From: Chen, Yu C > Sent: Friday, October 09, 2015 5:50 PM > > Hi, LV > > > From: Zheng, Lv > > Sent: Friday, October 09, 2015 4:33 PM > > > > Hi, Yu > > > > > From: Chen, Yu C > > > Sent: Friday, October 09, 2015 4:20 PM > > > > > > > > > acpi_status acpi_os_remove_interrupt_handler(u32 irq, > > > acpi_osd_handler handler) > > > > Why don't you rename irq here to gsi to improve the readability? > > The false naming and the wrong example written for this function are > > probably the root causes of all other bad code. > > So if we want to stop people making future mistakes, we need to cleanup > > ourselves. > > > OK, will rewrite in next version. You can add Acked-by: Lv Zheng <lv.zheng@intel.com> And don't forget to mark it as a stable material. One more question is: Do you want the modules to use "acpi_sci_irq"? If the answer is no, then please ignore this question. Thanks and best regards -Lv > > > Thanks and best regards > > -Lv > > -- 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 | "Rafael J. Wysocki" <rjw@rjwysocki.net> |
|---|---|
| Date | 2015-10-12 22:00 +0200 |
| Message-ID | <qiRqi-A2-13@gated-at.bofh.it> |
| In reply to | #1243205 |
On Friday, October 09, 2015 09:50:21 AM Chen, Yu C wrote: > Hi, LV > > > -----Original Message----- > > From: Zheng, Lv > > Sent: Friday, October 09, 2015 4:33 PM > > To: Chen, Yu C; rjw@rjwysocki.net; lenb@kernel.org > > Cc: linux-pm@vger.kernel.org; linux-acpi@vger.kernel.org; linux- > > kernel@vger.kernel.org; Zhang, Rui > > Subject: RE: [PATCH][v3] ACPI / PM: Fix incorrect wakeup irq setting before > > suspend-to-idle > > > > Hi, Yu > > > > > From: Chen, Yu C > > > Sent: Friday, October 09, 2015 4:20 PM > > > > > > > > > acpi_status acpi_os_remove_interrupt_handler(u32 irq, > > > acpi_osd_handler handler) > > > > Why don't you rename irq here to gsi to improve the readability? > > The false naming and the wrong example written for this function are > > probably the root causes of all other bad code. > > So if we want to stop people making future mistakes, we need to cleanup > > ourselves. > > > OK, will rewrite in next version. It would be good to change the subject of the patch too I think, because it is not about wakeup IRQs only any more. 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-14 19:50 +0200 |
| Subject | RE: [PATCH][v3] ACPI / PM: Fix incorrect wakeup irq setting before suspend-to-idle |
| Message-ID | <qjylB-5Hm-21@gated-at.bofh.it> |
| In reply to | #1245080 |
SGkgLFJhZmFlbCwNCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBSYWZh ZWwgSi4gV3lzb2NraSBbbWFpbHRvOnJqd0Byand5c29ja2kubmV0XQ0KPiBTZW50OiBUdWVzZGF5 LCBPY3RvYmVyIDEzLCAyMDE1IDQ6MjAgQU0NCj4gVG86IENoZW4sIFl1IEMNCj4gQ2M6IFpoZW5n LCBMdjsgbGludXgtcG1Admdlci5rZXJuZWwub3JnOyBsaW51eC1hY3BpQHZnZXIua2VybmVsLm9y ZzsgbGludXgtDQo+IGtlcm5lbEB2Z2VyLmtlcm5lbC5vcmc7IFpoYW5nLCBSdWk7IFd5c29ja2ks IFJhZmFlbCBKOyBCcm93biwgTGVuDQo+IFN1YmplY3Q6IFJlOiBbUEFUQ0hdW3YzXSBBQ1BJIC8g UE06IEZpeCBpbmNvcnJlY3Qgd2FrZXVwIGlycSBzZXR0aW5nIGJlZm9yZQ0KPiBzdXNwZW5kLXRv LWlkbGUNCj4gDQo+IE9uIEZyaWRheSwgT2N0b2JlciAwOSwgMjAxNSAwOTo1MDoyMSBBTSBDaGVu LCBZdSBDIHdyb3RlOg0KPiA+IEhpLCBMVg0KPiA+DQo+ID4gPiAtLS0tLU9yaWdpbmFsIE1lc3Nh Z2UtLS0tLQ0KPiA+ID4gRnJvbTogWmhlbmcsIEx2DQo+ID4gPiBTZW50OiBGcmlkYXksIE9jdG9i ZXIgMDksIDIwMTUgNDozMyBQTQ0KPiA+ID4gVG86IENoZW4sIFl1IEM7IHJqd0Byand5c29ja2ku bmV0OyBsZW5iQGtlcm5lbC5vcmcNCj4gPiA+IENjOiBsaW51eC1wbUB2Z2VyLmtlcm5lbC5vcmc7 IGxpbnV4LWFjcGlAdmdlci5rZXJuZWwub3JnOyBsaW51eC0NCj4gPiA+IGtlcm5lbEB2Z2VyLmtl cm5lbC5vcmc7IFpoYW5nLCBSdWkNCj4gPiA+IFN1YmplY3Q6IFJFOiBbUEFUQ0hdW3YzXSBBQ1BJ IC8gUE06IEZpeCBpbmNvcnJlY3Qgd2FrZXVwIGlycSBzZXR0aW5nDQo+ID4gPiBiZWZvcmUgc3Vz cGVuZC10by1pZGxlDQo+ID4gPg0KPiA+ID4gSGksIFl1DQo+ID4gPg0KPiA+ID4gPiBGcm9tOiBD aGVuLCBZdSBDDQo+ID4gPiA+IFNlbnQ6IEZyaWRheSwgT2N0b2JlciAwOSwgMjAxNSA0OjIwIFBN DQo+ID4gPiA+DQo+ID4gPiA+DQo+ID4gPiA+ICBhY3BpX3N0YXR1cyBhY3BpX29zX3JlbW92ZV9p bnRlcnJ1cHRfaGFuZGxlcih1MzIgaXJxLA0KPiA+ID4gPiBhY3BpX29zZF9oYW5kbGVyIGhhbmRs ZXIpDQo+ID4gPg0KPiA+ID4gV2h5IGRvbid0IHlvdSByZW5hbWUgaXJxIGhlcmUgdG8gZ3NpIHRv IGltcHJvdmUgdGhlIHJlYWRhYmlsaXR5Pw0KPiA+ID4gVGhlIGZhbHNlIG5hbWluZyBhbmQgdGhl IHdyb25nIGV4YW1wbGUgd3JpdHRlbiBmb3IgdGhpcyBmdW5jdGlvbiBhcmUNCj4gPiA+IHByb2Jh Ymx5IHRoZSByb290IGNhdXNlcyBvZiBhbGwgb3RoZXIgYmFkIGNvZGUuDQo+ID4gPiBTbyBpZiB3 ZSB3YW50IHRvIHN0b3AgcGVvcGxlIG1ha2luZyBmdXR1cmUgbWlzdGFrZXMsIHdlIG5lZWQgdG8N Cj4gPiA+IGNsZWFudXAgb3Vyc2VsdmVzLg0KPiA+ID4NCj4gPiBPSywgd2lsbCByZXdyaXRlIGlu IG5leHQgdmVyc2lvbi4NCj4gDQo+IEl0IHdvdWxkIGJlIGdvb2QgdG8gY2hhbmdlIHRoZSBzdWJq ZWN0IG9mIHRoZSBwYXRjaCB0b28gSSB0aGluaywgYmVjYXVzZSBpdCBpcw0KPiBub3QgYWJvdXQg d2FrZXVwIElSUXMgb25seSBhbnkgbW9yZS4NCj4gDQpPSywgd2lsbCBzZW5kIGFub3RoZXIgc2Vy aWVzIG9mIHBhdGNoZXMuDQoNCkJlc3QgUmVnYXJkcywNCll1DQoNCg== -- 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