Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1185274 > unrolled thread

[PATCH 3.19.y-ckt 173/251] clocksource: exynos_mct: Avoid blocking calls in the cpu hotplug notifier

Started byKamal Mostafa <kamal@canonical.com>
First post2015-07-16 03:40 +0200
Last post2015-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.


Contents

  [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

#1185274 — [PATCH 3.19.y-ckt 173/251] clocksource: exynos_mct: Avoid blocking calls in the cpu hotplug notifier

FromKamal Mostafa <kamal@canonical.com>
Date2015-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]


#1186361 — RE: [PATCH 3.19.y-ckt 173/251] clocksource: exynos_mct: Avoid blocking calls in the cpu hotplug notifier

FromDuan Andy <fugang.duan@freescale.com>
Date2015-07-17 03:30 +0200
SubjectRE: [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