Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1185274 > unrolled thread
| Started by | Kamal Mostafa <kamal@canonical.com> |
|---|---|
| First post | 2015-07-16 03:40 +0200 |
| Last post | 2015-07-17 03:30 +0200 |
| Articles | 2 — 2 participants |
Back to article view | Back to linux.kernel
This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by
below is the oldest one visible, not the original post.
[PATCH 3.19.y-ckt 173/251] clocksource: exynos_mct: Avoid blocking calls in the cpu hotplug notifier Kamal Mostafa <kamal@canonical.com> - 2015-07-16 03:40 +0200
RE: [PATCH 3.19.y-ckt 173/251] clocksource: exynos_mct: Avoid blocking calls in the cpu hotplug notifier Duan Andy <fugang.duan@freescale.com> - 2015-07-17 03:30 +0200
| From | Kamal Mostafa <kamal@canonical.com> |
|---|---|
| Date | 2015-07-16 03:40 +0200 |
| Subject | [PATCH 3.19.y-ckt 173/251] clocksource: exynos_mct: Avoid blocking calls in the cpu hotplug notifier |
| Message-ID | <pMGjx-dw-45@gated-at.bofh.it> |
3.19.8-ckt4 -stable review patch. If anyone has any objections, please let me know.
------------------
From: Damian Eppel <d.eppel@samsung.com>
commit 56a94f13919c0db5958611b388e1581b4852f3c9 upstream.
Whilst testing cpu hotplug events on kernel configured with
DEBUG_PREEMPT and DEBUG_ATOMIC_SLEEP we get following BUG message,
caused by calling request_irq() and free_irq() in the context of
hotplug notification (which is in this case atomic context).
[ 40.785859] CPU1: Software reset
[ 40.786660] BUG: sleeping function called from invalid context at mm/slub.c:1241
[ 40.786668] in_atomic(): 1, irqs_disabled(): 128, pid: 0, name: swapper/1
[ 40.786678] Preemption disabled at:[< (null)>] (null)
[ 40.786681]
[ 40.786692] CPU: 1 PID: 0 Comm: swapper/1 Not tainted 3.19.0-rc4-00024-g7dca860 #36
[ 40.786698] Hardware name: SAMSUNG EXYNOS (Flattened Device Tree)
[ 40.786728] [<c0014a00>] (unwind_backtrace) from [<c0011980>] (show_stack+0x10/0x14)
[ 40.786747] [<c0011980>] (show_stack) from [<c0449ba0>] (dump_stack+0x70/0xbc)
[ 40.786767] [<c0449ba0>] (dump_stack) from [<c00c6124>] (kmem_cache_alloc+0xd8/0x170)
[ 40.786785] [<c00c6124>] (kmem_cache_alloc) from [<c005d6f8>] (request_threaded_irq+0x64/0x128)
[ 40.786804] [<c005d6f8>] (request_threaded_irq) from [<c0350b8c>] (exynos4_local_timer_setup+0xc0/0x13c)
[ 40.786820] [<c0350b8c>] (exynos4_local_timer_setup) from [<c0350ca8>] (exynos4_mct_cpu_notify+0x30/0xa8)
[ 40.786838] [<c0350ca8>] (exynos4_mct_cpu_notify) from [<c003b330>] (notifier_call_chain+0x44/0x84)
[ 40.786857] [<c003b330>] (notifier_call_chain) from [<c0022fd4>] (__cpu_notify+0x28/0x44)
[ 40.786873] [<c0022fd4>] (__cpu_notify) from [<c0013714>] (secondary_start_kernel+0xec/0x150)
[ 40.786886] [<c0013714>] (secondary_start_kernel) from [<40008764>] (0x40008764)
Interrupts cannot be requested/freed in the CPU_STARTING/CPU_DYING
notifications which run on the hotplugged cpu with interrupts and
preemption disabled.
To avoid the issue, request the interrupts for all possible cpus in
the boot code. The interrupts are marked NO_AUTOENABLE to avoid a racy
request_irq/disable_irq() sequence. The flag prevents the
request_irq() code from enabling the interrupt immediately.
The interrupt is then enabled in the CPU_STARTING notifier of the
hotplugged cpu and again disabled with disable_irq_nosync() in the
CPU_DYING notifier.
[ tglx: Massaged changelog to match the patch ]
Fixes: 7114cd749a12 ("clocksource: exynos_mct: use (request/free)_irq calls for local timer registration")
Reported-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
Reviewed-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
Tested-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
Tested-by: Marcin Jabrzyk <m.jabrzyk@samsung.com>
Signed-off-by: Damian Eppel <d.eppel@samsung.com>
Cc: m.szyprowski@samsung.com
Cc: kyungmin.park@samsung.com
Cc: daniel.lezcano@linaro.org
Cc: kgene@kernel.org
Cc: linux-arm-kernel@lists.infradead.org
Link: http://lkml.kernel.org/r/1435324984-7328-1-git-send-email-d.eppel@samsung.com
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Kamal Mostafa <kamal@canonical.com>
---
drivers/clocksource/exynos_mct.c | 43 ++++++++++++++++++++++++++++------------
1 file changed, 30 insertions(+), 13 deletions(-)
diff --git a/drivers/clocksource/exynos_mct.c b/drivers/clocksource/exynos_mct.c
index 83564c9..c844616 100644
--- a/drivers/clocksource/exynos_mct.c
+++ b/drivers/clocksource/exynos_mct.c
@@ -466,15 +466,12 @@ static int exynos4_local_timer_setup(struct clock_event_device *evt)
exynos4_mct_write(TICK_BASE_CNT, mevt->base + MCT_L_TCNTB_OFFSET);
if (mct_int_type == MCT_INT_SPI) {
- evt->irq = mct_irqs[MCT_L0_IRQ + cpu];
- if (request_irq(evt->irq, exynos4_mct_tick_isr,
- IRQF_TIMER | IRQF_NOBALANCING,
- evt->name, mevt)) {
- pr_err("exynos-mct: cannot register IRQ %d\n",
- evt->irq);
+
+ if (evt->irq == -1)
return -EIO;
- }
- irq_force_affinity(mct_irqs[MCT_L0_IRQ + cpu], cpumask_of(cpu));
+
+ irq_force_affinity(evt->irq, cpumask_of(cpu));
+ enable_irq(evt->irq);
} else {
enable_percpu_irq(mct_irqs[MCT_L0_IRQ], 0);
}
@@ -487,10 +484,12 @@ static int exynos4_local_timer_setup(struct clock_event_device *evt)
static void exynos4_local_timer_stop(struct clock_event_device *evt)
{
evt->set_mode(CLOCK_EVT_MODE_UNUSED, evt);
- if (mct_int_type == MCT_INT_SPI)
- free_irq(evt->irq, this_cpu_ptr(&percpu_mct_tick));
- else
+ if (mct_int_type == MCT_INT_SPI) {
+ if (evt->irq != -1)
+ disable_irq_nosync(evt->irq);
+ } else {
disable_percpu_irq(mct_irqs[MCT_L0_IRQ]);
+ }
}
static int exynos4_mct_cpu_notify(struct notifier_block *self,
@@ -522,7 +521,7 @@ static struct notifier_block exynos4_mct_cpu_nb = {
static void __init exynos4_timer_resources(struct device_node *np, void __iomem *base)
{
- int err;
+ int err, cpu;
struct mct_clock_event_device *mevt = this_cpu_ptr(&percpu_mct_tick);
struct clk *mct_clk, *tick_clk;
@@ -549,7 +548,25 @@ static void __init exynos4_timer_resources(struct device_node *np, void __iomem
WARN(err, "MCT: can't request IRQ %d (%d)\n",
mct_irqs[MCT_L0_IRQ], err);
} else {
- irq_set_affinity(mct_irqs[MCT_L0_IRQ], cpumask_of(0));
+ for_each_possible_cpu(cpu) {
+ int mct_irq = mct_irqs[MCT_L0_IRQ + cpu];
+ struct mct_clock_event_device *pcpu_mevt =
+ per_cpu_ptr(&percpu_mct_tick, cpu);
+
+ pcpu_mevt->evt.irq = -1;
+
+ irq_set_status_flags(mct_irq, IRQ_NOAUTOEN);
+ if (request_irq(mct_irq,
+ exynos4_mct_tick_isr,
+ IRQF_TIMER | IRQF_NOBALANCING,
+ pcpu_mevt->name, pcpu_mevt)) {
+ pr_err("exynos-mct: cannot register IRQ (cpu%d)\n",
+ cpu);
+
+ continue;
+ }
+ pcpu_mevt->evt.irq = mct_irq;
+ }
}
err = register_cpu_notifier(&exynos4_mct_cpu_nb);
--
1.9.1
--
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 | Duan Andy <fugang.duan@freescale.com> |
|---|---|
| Date | 2015-07-17 03:30 +0200 |
| Subject | RE: [PATCH 3.19.y-ckt 173/251] clocksource: exynos_mct: Avoid blocking calls in the cpu hotplug notifier |
| Message-ID | <pN2Do-7lA-1@gated-at.bofh.it> |
| In reply to | #1185274 |
RnJvbTogS3J6eXN6dG9mIEtvemxvd3NraSA8ay5rb3psb3dza2lAc2Ftc3VuZy5jb20+IFNlbnQ6 IFRodXJzZGF5LCBKdWx5IDE2LCAyMDE1IDU6NTIgUE0NCj4gVG86IER1YW4gRnVnYW5nLUIzODYx MQ0KPiBDYzogS3J6eXN6dG9mIEtvemxvd3NraTsgS2FtYWwgTW9zdGFmYTsgZGFuaWVsLmxlemNh bm9AbGluYXJvLm9yZzsgbGludXgtDQo+IGtlcm5lbEB2Z2VyLmtlcm5lbC5vcmc7IHN0YWJsZUB2 Z2VyLmtlcm5lbC5vcmc7IERhbWlhbiBFcHBlbDsNCj4ga2dlbmVAa2VybmVsLm9yZzsga3l1bmdt aW4ucGFya0BzYW1zdW5nLmNvbTsgVGhvbWFzIEdsZWl4bmVyOw0KPiBtLnN6eXByb3dza2lAc2Ft c3VuZy5jb207IGxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZzsga2VybmVsLQ0K PiB0ZWFtQGxpc3RzLnVidW50dS5jb20NCj4gU3ViamVjdDogUmU6IFtQQVRDSCAzLjE5LnktY2t0 IDE3My8yNTFdIGNsb2Nrc291cmNlOiBleHlub3NfbWN0OiBBdm9pZA0KPiBibG9ja2luZyBjYWxs cyBpbiB0aGUgY3B1IGhvdHBsdWcgbm90aWZpZXINCj4gDQo+IDIwMTUtMDctMTYgMTc6MTQgR01U KzA5OjAwIER1YW4gQW5keSA8ZnVnYW5nLmR1YW5AZnJlZXNjYWxlLmNvbT46DQo+ID4gRnJvbTog S3J6eXN6dG9mIEtvemxvd3NraSA8ay5rb3psb3dza2lAc2Ftc3VuZy5jb20+IFNlbnQ6IFRodXJz ZGF5LA0KPiA+IEp1bHkgMTYsIDIwMTUgMjo1NiBQTQ0KPiA+PiBUbzogRHVhbiBGdWdhbmctQjM4 NjExDQo+ID4+IENjOiBLYW1hbCBNb3N0YWZhOyBsaW51eC1rZXJuZWxAdmdlci5rZXJuZWwub3Jn Ow0KPiA+PiBzdGFibGVAdmdlci5rZXJuZWwub3JnOyBrZXJuZWwtdGVhbUBsaXN0cy51YnVudHUu Y29tOw0KPiA+PiBkYW5pZWwubGV6Y2Fub0BsaW5hcm8ub3JnOyBEYW1pYW4gRXBwZWw7IGt5dW5n bWluLnBhcmtAc2Ftc3VuZy5jb207DQo+ID4+IGtnZW5lQGtlcm5lbC5vcmc7IFRob21hcyBHbGVp eG5lcjsgbGludXgtYXJtLQ0KPiA+PiBrZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZzsgbS5zenlw cm93c2tpQHNhbXN1bmcuY29tDQo+ID4+IFN1YmplY3Q6IFJlOiBbUEFUQ0ggMy4xOS55LWNrdCAx NzMvMjUxXSBjbG9ja3NvdXJjZTogZXh5bm9zX21jdDoNCj4gPj4gQXZvaWQgYmxvY2tpbmcgY2Fs bHMgaW4gdGhlIGNwdSBob3RwbHVnIG5vdGlmaWVyDQo+ID4+DQo+ID4+IDIwMTUtMDctMTYgMTU6 MzcgR01UKzA5OjAwIER1YW4gQW5keSA8ZnVnYW5nLmR1YW5AZnJlZXNjYWxlLmNvbT46DQo+ID4+ ID4gRnJvbTogS2FtYWwgTW9zdGFmYSA8a2FtYWxAY2Fub25pY2FsLmNvbT4gU2VudDogVGh1cnNk YXksIEp1bHkgMTYsDQo+ID4+ID4gMjAxNSA5OjA4IEFNDQo+ID4+ID4+IFRvOiBsaW51eC1rZXJu ZWxAdmdlci5rZXJuZWwub3JnOyBzdGFibGVAdmdlci5rZXJuZWwub3JnOyBrZXJuZWwtDQo+ID4+ ID4+IHRlYW1AbGlzdHMudWJ1bnR1LmNvbQ0KPiA+PiA+PiBDYzogS2FtYWwgTW9zdGFmYTsgZGFu aWVsLmxlemNhbm9AbGluYXJvLm9yZzsNCj4gPj4gPj4ga3l1bmdtaW4ucGFya0BzYW1zdW5nLmNv bTsgRGFtaWFuIEVwcGVsOyBrZ2VuZUBrZXJuZWwub3JnOyBUaG9tYXMNCj4gPj4gPj4gR2xlaXhu ZXI7IGxpbnV4LWFybS0ga2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmc7DQo+ID4+ID4+IG0uc3p5 cHJvd3NraUBzYW1zdW5nLmNvbQ0KPiA+PiA+PiBTdWJqZWN0OiBbUEFUQ0ggMy4xOS55LWNrdCAx NzMvMjUxXSBjbG9ja3NvdXJjZTogZXh5bm9zX21jdDogQXZvaWQNCj4gPj4gPj4gYmxvY2tpbmcg Y2FsbHMgaW4gdGhlIGNwdSBob3RwbHVnIG5vdGlmaWVyDQo+ID4+ID4+DQo+ID4+ID4+IDMuMTku OC1ja3Q0IC1zdGFibGUgcmV2aWV3IHBhdGNoLiAgSWYgYW55b25lIGhhcyBhbnkgb2JqZWN0aW9u cywNCj4gPj4gPj4gcGxlYXNlIGxldCBtZSBrbm93Lg0KPiA+PiA+Pg0KPiA+PiA+PiAtLS0tLS0t LS0tLS0tLS0tLS0NCj4gPj4gPj4NCj4gPj4gPj4gRnJvbTogRGFtaWFuIEVwcGVsIDxkLmVwcGVs QHNhbXN1bmcuY29tPg0KPiA+PiA+Pg0KPiA+PiA+PiBjb21taXQgNTZhOTRmMTM5MTljMGRiNTk1 ODYxMWIzODhlMTU4MWI0ODUyZjNjOSB1cHN0cmVhbS4NCj4gPj4gPj4NCj4gPj4gPj4gV2hpbHN0 IHRlc3RpbmcgY3B1IGhvdHBsdWcgZXZlbnRzIG9uIGtlcm5lbCBjb25maWd1cmVkIHdpdGgNCj4g Pj4gPj4gREVCVUdfUFJFRU1QVCBhbmQgREVCVUdfQVRPTUlDX1NMRUVQIHdlIGdldCBmb2xsb3dp bmcgQlVHIG1lc3NhZ2UsDQo+ID4+ID4+IGNhdXNlZCBieSBjYWxsaW5nDQo+ID4+ID4+IHJlcXVl c3RfaXJxKCkgYW5kIGZyZWVfaXJxKCkgaW4gdGhlIGNvbnRleHQgb2YgaG90cGx1Zw0KPiA+PiA+ PiBub3RpZmljYXRpb24gKHdoaWNoIGlzIGluIHRoaXMgY2FzZSBhdG9taWMgY29udGV4dCkuDQo+ ID4+ID4+DQo+ID4+ID4+IFsgICA0MC43ODU4NTldIENQVTE6IFNvZnR3YXJlIHJlc2V0DQo+ID4+ ID4+IFsgICA0MC43ODY2NjBdIEJVRzogc2xlZXBpbmcgZnVuY3Rpb24gY2FsbGVkIGZyb20gaW52 YWxpZCBjb250ZXh0DQo+IGF0DQo+ID4+ID4+IG1tL3NsdWIuYzoxMjQxDQo+ID4+ID4+IFsgICA0 MC43ODY2NjhdIGluX2F0b21pYygpOiAxLCBpcnFzX2Rpc2FibGVkKCk6IDEyOCwgcGlkOiAwLCBu YW1lOg0KPiA+PiA+PiBzd2FwcGVyLzENCj4gPj4gPj4gWyAgIDQwLjc4NjY3OF0gUHJlZW1wdGlv biBkaXNhYmxlZCBhdDpbPCAgKG51bGwpPl0gICAobnVsbCkNCj4gPj4gPj4gWyAgIDQwLjc4NjY4 MV0NCj4gPj4gPj4gWyAgIDQwLjc4NjY5Ml0gQ1BVOiAxIFBJRDogMCBDb21tOiBzd2FwcGVyLzEg Tm90IHRhaW50ZWQgMy4xOS4wLQ0KPiByYzQtDQo+ID4+ID4+IDAwMDI0LWc3ZGNhODYwICMzNg0K PiA+PiA+PiBbICAgNDAuNzg2Njk4XSBIYXJkd2FyZSBuYW1lOiBTQU1TVU5HIEVYWU5PUyAoRmxh dHRlbmVkIERldmljZSBUcmVlKQ0KPiA+PiA+PiBbICAgNDAuNzg2NzI4XSBbPGMwMDE0YTAwPl0g KHVud2luZF9iYWNrdHJhY2UpIGZyb20gWzxjMDAxMTk4MD5dDQo+ID4+ID4+IChzaG93X3N0YWNr KzB4MTAvMHgxNCkNCj4gPj4gPj4gWyAgIDQwLjc4Njc0N10gWzxjMDAxMTk4MD5dIChzaG93X3N0 YWNrKSBmcm9tIFs8YzA0NDliYTA+XQ0KPiA+PiA+PiAoZHVtcF9zdGFjaysweDcwLzB4YmMpDQo+ ID4+ID4+IFsgICA0MC43ODY3NjddIFs8YzA0NDliYTA+XSAoZHVtcF9zdGFjaykgZnJvbSBbPGMw MGM2MTI0Pl0NCj4gPj4gPj4gKGttZW1fY2FjaGVfYWxsb2MrMHhkOC8weDE3MCkNCj4gPj4gPj4g WyAgIDQwLjc4Njc4NV0gWzxjMDBjNjEyND5dIChrbWVtX2NhY2hlX2FsbG9jKSBmcm9tIFs8YzAw NWQ2Zjg+XQ0KPiA+PiA+PiAocmVxdWVzdF90aHJlYWRlZF9pcnErMHg2NC8weDEyOCkNCj4gPj4g Pj4gWyAgIDQwLjc4NjgwNF0gWzxjMDA1ZDZmOD5dIChyZXF1ZXN0X3RocmVhZGVkX2lycSkgZnJv bSBbPGMwMzUwYjhjPl0NCj4gPj4gPj4gKGV4eW5vczRfbG9jYWxfdGltZXJfc2V0dXArMHhjMC8w eDEzYykNCj4gPj4gPj4gWyAgIDQwLjc4NjgyMF0gWzxjMDM1MGI4Yz5dIChleHlub3M0X2xvY2Fs X3RpbWVyX3NldHVwKSBmcm9tDQo+ID4+IFs8YzAzNTBjYTg+XQ0KPiA+PiA+PiAoZXh5bm9zNF9t Y3RfY3B1X25vdGlmeSsweDMwLzB4YTgpDQo+ID4+ID4+IFsgICA0MC43ODY4MzhdIFs8YzAzNTBj YTg+XSAoZXh5bm9zNF9tY3RfY3B1X25vdGlmeSkgZnJvbQ0KPiBbPGMwMDNiMzMwPl0NCj4gPj4g Pj4gKG5vdGlmaWVyX2NhbGxfY2hhaW4rMHg0NC8weDg0KQ0KPiA+PiA+PiBbICAgNDAuNzg2ODU3 XSBbPGMwMDNiMzMwPl0gKG5vdGlmaWVyX2NhbGxfY2hhaW4pIGZyb20gWzxjMDAyMmZkND5dDQo+ ID4+ID4+IChfX2NwdV9ub3RpZnkrMHgyOC8weDQ0KQ0KPiA+PiA+PiBbICAgNDAuNzg2ODczXSBb PGMwMDIyZmQ0Pl0gKF9fY3B1X25vdGlmeSkgZnJvbSBbPGMwMDEzNzE0Pl0NCj4gPj4gPj4gKHNl Y29uZGFyeV9zdGFydF9rZXJuZWwrMHhlYy8weDE1MCkNCj4gPj4gPj4gWyAgIDQwLjc4Njg4Nl0g WzxjMDAxMzcxND5dIChzZWNvbmRhcnlfc3RhcnRfa2VybmVsKSBmcm9tDQo+IFs8NDAwMDg3NjQ+ XQ0KPiA+PiA+PiAoMHg0MDAwODc2NCkNCj4gPj4gPj4NCj4gPj4gPj4gSW50ZXJydXB0cyBjYW5u b3QgYmUgcmVxdWVzdGVkL2ZyZWVkIGluIHRoZSBDUFVfU1RBUlRJTkcvQ1BVX0RZSU5HDQo+ID4+ ID4+IG5vdGlmaWNhdGlvbnMgd2hpY2ggcnVuIG9uIHRoZSBob3RwbHVnZ2VkIGNwdSB3aXRoIGlu dGVycnVwdHMgYW5kDQo+ID4+ID4+IHByZWVtcHRpb24gZGlzYWJsZWQuDQo+ID4+ID4+DQo+ID4+ ID4+IFRvIGF2b2lkIHRoZSBpc3N1ZSwgcmVxdWVzdCB0aGUgaW50ZXJydXB0cyBmb3IgYWxsIHBv c3NpYmxlIGNwdXMNCj4gPj4gPj4gaW4gdGhlIGJvb3QgY29kZS4gVGhlIGludGVycnVwdHMgYXJl IG1hcmtlZCBOT19BVVRPRU5BQkxFIHRvIGF2b2lkDQo+ID4+ID4+IGEgcmFjeQ0KPiA+PiA+PiBy ZXF1ZXN0X2lycS9kaXNhYmxlX2lycSgpIHNlcXVlbmNlLiBUaGUgZmxhZyBwcmV2ZW50cyB0aGUN Cj4gPj4gPj4gcmVxdWVzdF9pcnEoKSBjb2RlIGZyb20gZW5hYmxpbmcgdGhlIGludGVycnVwdCBp bW1lZGlhdGVseS4NCj4gPj4gPj4NCj4gPj4gPj4gVGhlIGludGVycnVwdCBpcyB0aGVuIGVuYWJs ZWQgaW4gdGhlIENQVV9TVEFSVElORyBub3RpZmllciBvZiB0aGUNCj4gPj4gPj4gaG90cGx1Z2dl ZCBjcHUgYW5kIGFnYWluIGRpc2FibGVkIHdpdGggZGlzYWJsZV9pcnFfbm9zeW5jKCkgaW4gdGhl DQo+ID4+ID4+IENQVV9EWUlORyBub3RpZmllci4NCj4gPj4gPj4NCj4gPj4gPj4gWyB0Z2x4OiBN YXNzYWdlZCBjaGFuZ2Vsb2cgdG8gbWF0Y2ggdGhlIHBhdGNoIF0NCj4gPj4gPj4NCj4gPj4gPj4g Rml4ZXM6IDcxMTRjZDc0OWExMiAoImNsb2Nrc291cmNlOiBleHlub3NfbWN0OiB1c2UNCj4gPj4g Pj4gKHJlcXVlc3QvZnJlZSlfaXJxIGNhbGxzIGZvciBsb2NhbCB0aW1lciByZWdpc3RyYXRpb24i KQ0KPiA+PiA+PiBSZXBvcnRlZC1ieTogS3J6eXN6dG9mIEtvemxvd3NraSA8ay5rb3psb3dza2lA c2Ftc3VuZy5jb20+DQo+ID4+ID4+IFJldmlld2VkLWJ5OiBLcnp5c3p0b2YgS296bG93c2tpIDxr Lmtvemxvd3NraUBzYW1zdW5nLmNvbT4NCj4gPj4gPj4gVGVzdGVkLWJ5OiBLcnp5c3p0b2YgS296 bG93c2tpIDxrLmtvemxvd3NraUBzYW1zdW5nLmNvbT4NCj4gPj4gPj4gVGVzdGVkLWJ5OiBNYXJj aW4gSmFicnp5ayA8bS5qYWJyenlrQHNhbXN1bmcuY29tPg0KPiA+PiA+PiBTaWduZWQtb2ZmLWJ5 OiBEYW1pYW4gRXBwZWwgPGQuZXBwZWxAc2Ftc3VuZy5jb20+DQo+ID4+ID4+IENjOiBtLnN6eXBy b3dza2lAc2Ftc3VuZy5jb20NCj4gPj4gPj4gQ2M6IGt5dW5nbWluLnBhcmtAc2Ftc3VuZy5jb20N Cj4gPj4gPj4gQ2M6IGRhbmllbC5sZXpjYW5vQGxpbmFyby5vcmcNCj4gPj4gPj4gQ2M6IGtnZW5l QGtlcm5lbC5vcmcNCj4gPj4gPj4gQ2M6IGxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFk Lm9yZw0KPiA+PiA+PiBMaW5rOiBodHRwOi8vbGttbC5rZXJuZWwub3JnL3IvMTQzNTMyNDk4NC03 MzI4LTEtZ2l0LXNlbmQtZW1haWwtDQo+ID4+ID4+IGQuZXBwZWxAc2Ftc3VuZy5jb20NCj4gPj4g Pj4gU2lnbmVkLW9mZi1ieTogVGhvbWFzIEdsZWl4bmVyIDx0Z2x4QGxpbnV0cm9uaXguZGU+DQo+ ID4+ID4+IFNpZ25lZC1vZmYtYnk6IEthbWFsIE1vc3RhZmEgPGthbWFsQGNhbm9uaWNhbC5jb20+ DQo+ID4+ID4+IC0tLQ0KPiA+PiA+PiAgZHJpdmVycy9jbG9ja3NvdXJjZS9leHlub3NfbWN0LmMg fCA0Mw0KPiA+PiA+PiArKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tDQo+ID4+ID4+ IC0tLS0tLQ0KPiA+PiA+PiAgMSBmaWxlIGNoYW5nZWQsIDMwIGluc2VydGlvbnMoKyksIDEzIGRl bGV0aW9ucygtKQ0KPiA+PiA+Pg0KPiA+PiA+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9jbG9ja3Nv dXJjZS9leHlub3NfbWN0LmMNCj4gPj4gPj4gYi9kcml2ZXJzL2Nsb2Nrc291cmNlL2V4eW5vc19t Y3QuYw0KPiA+PiA+PiBpbmRleCA4MzU2NGM5Li5jODQ0NjE2IDEwMDY0NA0KPiA+PiA+PiAtLS0g YS9kcml2ZXJzL2Nsb2Nrc291cmNlL2V4eW5vc19tY3QuYw0KPiA+PiA+PiArKysgYi9kcml2ZXJz L2Nsb2Nrc291cmNlL2V4eW5vc19tY3QuYw0KPiA+PiA+PiBAQCAtNDY2LDE1ICs0NjYsMTIgQEAg c3RhdGljIGludCBleHlub3M0X2xvY2FsX3RpbWVyX3NldHVwKHN0cnVjdA0KPiA+PiA+PiBjbG9j a19ldmVudF9kZXZpY2UgKmV2dCkNCj4gPj4gPj4gICAgICAgZXh5bm9zNF9tY3Rfd3JpdGUoVElD S19CQVNFX0NOVCwgbWV2dC0+YmFzZSArDQo+ID4+ID4+IE1DVF9MX1RDTlRCX09GRlNFVCk7DQo+ ID4+ID4+DQo+ID4+ID4+ICAgICAgIGlmIChtY3RfaW50X3R5cGUgPT0gTUNUX0lOVF9TUEkpIHsN Cj4gPj4gPj4gLSAgICAgICAgICAgICBldnQtPmlycSA9IG1jdF9pcnFzW01DVF9MMF9JUlEgKyBj cHVdOw0KPiA+PiA+PiAtICAgICAgICAgICAgIGlmIChyZXF1ZXN0X2lycShldnQtPmlycSwgZXh5 bm9zNF9tY3RfdGlja19pc3IsDQo+ID4+ID4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAg IElSUUZfVElNRVIgfCBJUlFGX05PQkFMQU5DSU5HLA0KPiA+PiA+PiAtICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBldnQtPm5hbWUsIG1ldnQpKSB7DQo+ID4+ID4+IC0gICAgICAgICAgICAg ICAgICAgICBwcl9lcnIoImV4eW5vcy1tY3Q6IGNhbm5vdCByZWdpc3RlciBJUlEgJWRcbiIsDQo+ ID4+ID4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2dC0+aXJxKTsNCj4gPj4gPj4g Kw0KPiA+PiA+PiArICAgICAgICAgICAgIGlmIChldnQtPmlycSA9PSAtMSkNCj4gPj4gPj4gICAg ICAgICAgICAgICAgICAgICAgIHJldHVybiAtRUlPOw0KPiA+PiA+PiAtICAgICAgICAgICAgIH0N Cj4gPj4gPj4gLSAgICAgICAgICAgICBpcnFfZm9yY2VfYWZmaW5pdHkobWN0X2lycXNbTUNUX0ww X0lSUSArIGNwdV0sDQo+ID4+ID4+IGNwdW1hc2tfb2YoY3B1KSk7DQo+ID4+ID4+ICsNCj4gPj4g Pj4gKyAgICAgICAgICAgICBpcnFfZm9yY2VfYWZmaW5pdHkoZXZ0LT5pcnEsIGNwdW1hc2tfb2Yo Y3B1KSk7DQo+ID4+ID4+ICsgICAgICAgICAgICAgZW5hYmxlX2lycShldnQtPmlycSk7DQo+ID4+ ID4+ICAgICAgIH0gZWxzZSB7DQo+ID4+ID4+ICAgICAgICAgICAgICAgZW5hYmxlX3BlcmNwdV9p cnEobWN0X2lycXNbTUNUX0wwX0lSUV0sIDApOw0KPiA+PiA+DQo+ID4+ID4gSW4gaGVyZSwgd2h5 IG5vdCB1c2UgZW5hYmxlX3BlcmNwdV9pcnEoZXZ0LT5pcnEpID8NCj4gPj4gPg0KPiA+PiA+PiAg ICAgICB9DQo+ID4+ID4+IEBAIC00ODcsMTAgKzQ4NCwxMiBAQCBzdGF0aWMgaW50IGV4eW5vczRf bG9jYWxfdGltZXJfc2V0dXAoc3RydWN0DQo+ID4+ID4+IGNsb2NrX2V2ZW50X2RldmljZSAqZXZ0 KSAgc3RhdGljIHZvaWQNCj4gPj4gPj4gZXh5bm9zNF9sb2NhbF90aW1lcl9zdG9wKHN0cnVjdCBj bG9ja19ldmVudF9kZXZpY2UgKmV2dCkgIHsNCj4gPj4gPj4gICAgICAgZXZ0LT5zZXRfbW9kZShD TE9DS19FVlRfTU9ERV9VTlVTRUQsIGV2dCk7DQo+ID4+ID4+IC0gICAgIGlmIChtY3RfaW50X3R5 cGUgPT0gTUNUX0lOVF9TUEkpDQo+ID4+ID4+IC0gICAgICAgICAgICAgZnJlZV9pcnEoZXZ0LT5p cnEsIHRoaXNfY3B1X3B0cigmcGVyY3B1X21jdF90aWNrKSk7DQo+ID4+ID4+IC0gICAgIGVsc2UN Cj4gPj4gPj4gKyAgICAgaWYgKG1jdF9pbnRfdHlwZSA9PSBNQ1RfSU5UX1NQSSkgew0KPiA+PiA+ PiArICAgICAgICAgICAgIGlmIChldnQtPmlycSAhPSAtMSkNCj4gPj4gPj4gKyAgICAgICAgICAg ICAgICAgICAgIGRpc2FibGVfaXJxX25vc3luYyhldnQtPmlycSk7DQo+ID4+ID4+ICsgICAgIH0g ZWxzZSB7DQo+ID4+ID4+ICAgICAgICAgICAgICAgZGlzYWJsZV9wZXJjcHVfaXJxKG1jdF9pcnFz W01DVF9MMF9JUlFdKTsNCj4gPj4gPg0KPiA+PiA+IEluIGhlcmUsIHdoeSBub3QgdXNlIGRpc2Fi bGVfcGVyY3B1X2lycShldnQtPmlycSkgPw0KPiA+Pg0KPiA+PiBZb3Uga25vdyB0aGlzIGlzIGp1 c3QgYSBzZW1pLWF1dG9tYXRpYyBzdGFibGUgYmFja3BvcnQgYW5kIHRoaXMgd2FzDQo+ID4+IGFs cmVhZHkgbWVyZ2VkIHRvIG1haW5saW5lPw0KPiA+Pg0KPiA+PiBCZXN0IHJlZ2FyZHMsDQo+ID4+ IEtyenlzenRvZg0KPiA+DQo+ID4gWWVzLCBJIGtub3cuIERvIHlvdSBrbm93IHRoZSByZWFzb24g d2h5IG5vdCBlbmFibGUgb3RoZXIgY3B1cyBpcnEgPw0KPiA+IEkgd2FudCB0byBjb25maXJtIHdo ZXRoZXIgaXQgaXMgcmlnaHQgYWZ0ZXIgYmVsb3cgY2hhbmdlID8NCj4gPiBlbmFibGVfcGVyY3B1 X2lycShtY3RfaXJxc1tNQ1RfTDBfSVJRXSwgMCk7IC0+DQo+ID4gZW5hYmxlX3BlcmNwdV9pcnEo ZXZ0LT5pcnEsIDApOw0KPiA+IGRpc2FibGVfcGVyY3B1X2lycShtY3RfaXJxc1tNQ1RfTDBfSVJR XSkgLT4NCj4gPiBkaXNhYmxlX3BlcmNwdV9pcnEoZXZ0LT5pcnEpDQo+IA0KPiBUaGlzIGlzIGEg YmFja3BvcnQgc28gYXJlIHRoZXJlIGFueSBvYmplY3Rpb25zIGFib3V0IHRoaXMgcGF0Y2g/IERv IHlvdQ0KPiB0aGluayB0aGUgcGF0Y2ggaXMgaW52YWxpZCBzbyBpdCBzaG91bGQgbm90IGJlIGJh Y2twb3J0ZWQgdG8gc3RhYmxlPw0KPiANCk5vLCBJIGp1c3QgaGF2ZSBzb21lIHF1ZXN0aW9ucyBh Ym91dCB0aGUgb3JpZ2luYWwgY29kZSBkZXNpZ24uDQpZb3VyIHBhdGNoIGhhcyBubyBwcm9ibGVt Lg0KDQpSZWdhcmRzLA0KQW5keQ0K -- 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