From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sander Eikelenboom Subject: Re: Xen-unstable Linux 3.14-rc3 and 3.13 Network troubles "bisected" Date: Mon, 17 Mar 2014 23:33:18 +0100 Message-ID: <1563694965.20140317233318@eikelenboom.it> References: <20140312120444.GH19620@zion.uk.xensource.com> <751560446.20140312152336@eikelenboom.it> <20140312144826.GK19620@zion.uk.xensource.com> <1241369584.20140312154946@eikelenboom.it> <20140312145915.GM19620@zion.uk.xensource.com> <309265573.20140312160156@eikelenboom.it> <20140312150435.GO19620@zion.uk.xensource.com> <1934414370.20140312162003@eikelenboom.it> <20140312154501.GQ19620@zion.uk.xensource.com> <1189397636.20140312174729@eikelenboom.it> <20140317103524.GH16807@zion.uk.xensource.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="----------0B81250F128D565F9" Return-path: In-Reply-To: <20140317103524.GH16807@zion.uk.xensource.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: Wei Liu Cc: annie li , Paul Durrant , Zoltan Kiss , xen-devel@lists.xen.org List-Id: xen-devel@lists.xenproject.org ------------0B81250F128D565F9 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Monday, March 17, 2014, 11:35:24 AM, you wrote: > On Wed, Mar 12, 2014 at 05:47:29PM +0100, Sander Eikelenboom wrote: >> >> Wednesday, March 12, 2014, 4:45:01 PM, you wrote: >> >> > On Wed, Mar 12, 2014 at 04:20:03PM +0100, Sander Eikelenboom wrote: >> > [...] >> >> >> >> > Sorry, remove the trailing "S". Actually you only need to look at netback.c. >> >> >> >> What producer index to compare with .. there are quite some RING_GET_REQUESTS .. and i see: >> >> npo->meta_prod >> >> vif->rx.sring->req_prod >> >> vif->pending_prod >> >> >> >> to name a few .. >> >> Any particular RING_GET_REQUESTS call and particular producer index you are interested in ? >> >> >> >> > There are two macros you can use >> >> > RING_REQUEST_CONS_OVERFLOW and RING_REQUEST_PROD_OVERFLOW. >> >> Ah i already produced my own .. diff to netback is attached .. >> >> Netback: >> Mar 12 17:41:26 serveerstertje kernel: [ 464.778614] vif vif-7-0 vif7.0: ?!? npo->meta_prod:37 vif->rx.sring->req_prod:431006 vif->rx.req_cons:431007 >> Mar 12 17:41:26 serveerstertje kernel: [ 464.786203] vif vif-7-0 vif7.0: ?!? npo->meta_prod:38 vif->rx.sring->req_prod:431006 vif->rx.req_cons:431008 > req_prod < req_cons, so there's an overflow. I'm actually curious how > this could happen. > Back to the code, before netback enqueues SKB to its internal queue, it > will check if there's enough room in the ring. Before Paul's changeset, > it checks against a static number (the possible maximum slots that can > be consumed by an SKB). Paul's changeset made it check against the > actual slots the incoming SKB consumes. See > interface.c:xenvif_start_xmit. Another interesting site would be when > the SKB is broken down later on in internal queue. See > netback.c:xenvif_rx_action. The routine to break down an SKB is > xenvif_gop_skb. > Although they look alright to me, but you might want to instrument them > a bit more to see what triggers that overflow. It's a bit frustrating, > but a bug that cannot be easily reproduced is indeed extremely hard to > fix. [ 554.166914] vif vif-7-0 vif7.0: ?!? get_next_rx_buffer before req npo->meta_prod:7 vif->rx.sring->req_prod:301750 vif->rx.req_cons:301751 [ 571.143788] vif vif-7-0 vif7.0: ?!? get_next_rx_buffer before req npo->meta_prod:37 vif->rx.sring->req_prod:364822 vif->rx.req_cons:364823 [ 571.150762] vif vif-7-0 vif7.0: ?!? get_next_rx_buffer after req npo->meta_prod:37 vif->rx.sring->req_prod:364822 vif->rx.req_cons:364823 req->gref:19791875 req->id:22 [ 571.164691] vif vif-7-0 vif7.0: ?!? xenvif_gop_frag_copy Me here 2 npo->meta_prod:38 vif->rx.sring->req_prod:364822 vif->rx.req_cons:364823 npo->copy_gref:19791875 [ 571.179474] vif vif-7-0 vif7.0: ?!? xenvif_gop_skb Me here 3 npo->meta_prod:38 old_meta_prod:30 vif->rx.sring->req_prod:364822 vif->rx.req_cons:364823 gso_type:1 gso_size:1448 nr_frags:1 req->gref:576 req->id:14 [ 571.194844] vif vif-7-0 vif7.0: ?!? xenvif_gop_skb Me here 2 before req npo->meta_prod:38 vif->rx.sring->req_prod:364822 vif->rx.req_cons:364824 gso_type:0 gso_size:0 nr_frags:0 [ 571.211215] vif vif-7-0 vif7.0: ?!? xenvif_gop_skb Me here 2 after req npo->meta_prod:38 vif->rx.sring->req_prod:364822 vif->rx.req_cons:364824 gso_type:0 gso_size:0 nr_frags:0 req->gref:4325379 req->id:23 [ 571.228471] vif vif-7-0 vif7.0: ?!? xenvif_gop_skb Me here 3 npo->meta_prod:39 old_meta_prod:38 vif->rx.sring->req_prod:364822 vif->rx.req_cons:364824 gso_type:0 gso_size:0 nr_frags:0 req->gref:4325379 req->id:23 [ 571.246412] vif vif-7-0 vif7.0: Bad status -3 from copy to DOM7. [ 571.255531] vif vif-7-0 vif7.0: ?!? xenvif_check_gop status err? status:-1 i:7 nr_meta_slots:8 copy_op->status:-3 npo->copy_cons:38 [ 571.264804] vif vif-7-0 vif7.0: ?!? xenvif_rx_action status err? status:-1 meta_slots_used:8 flags:7 size:1 ip_summed:1 is_gso:1 skb_shinfo(skb)->gso_type:1634 vif->meta[npo.meta_cons].gso_type:3 nr_frags:1 npo.copy_prod:39, npo.meta_cons:30 It seems in 'get_next_rx_buffer' you can get the situation that cons > prod, but the first time somehow the code after the actual RING_GET_REQUEST isn't ran (why?!? queue stop ?) .. and it doesn't lead to an immediate problem .. The second time it does get to the code after the RING_GET_REQUEST in 'get_next_rx_buffer' and that leads to mayhem ... So added a netdev_warn to xenvif_start_xmit for the "stop queue" case .. unfortunately it now triggers net_ratelimit at the end: [ 402.909693] vif vif-7-0 vif7.0: ?!? xenvif_start_xmit stopping queue ! min_slots_needed:7 vif->rx.sring->req_prod:189228 vif->rx.req_cons:189222 [ 403.409624] vif vif-7-0 vif7.0: ?!? xenvif_start_xmit stopping queue ! min_slots_needed:4 vif->rx.sring->req_prod:191612 vif->rx.req_cons:191609 [ 403.658975] vif vif-7-0 vif7.0: ?!? xenvif_start_xmit stopping queue ! min_slots_needed:2 vif->rx.sring->req_prod:192860 vif->rx.req_cons:192860 [ 406.417504] vif vif-7-0 vif7.0: ?!? xenvif_start_xmit stopping queue ! min_slots_needed:2 vif->rx.sring->req_prod:204870 vif->rx.req_cons:204869 [ 408.156112] vif vif-7-0 vif7.0: ?!? xenvif_start_xmit stopping queue ! min_slots_needed:1 vif->rx.sring->req_prod:212862 vif->rx.req_cons:212862 [ 408.407375] vif vif-7-0 vif7.0: ?!? xenvif_start_xmit stopping queue ! min_slots_needed:7 vif->rx.sring->req_prod:213613 vif->rx.req_cons:213609 [ 408.899250] vif vif-7-0 vif7.0: ?!? xenvif_start_xmit stopping queue ! min_slots_needed:2 vif->rx.sring->req_prod:215352 vif->rx.req_cons:215352 [ 413.655552] vif vif-7-0 vif7.0: ?!? xenvif_start_xmit stopping queue ! min_slots_needed:2 vif->rx.sring->req_prod:237250 vif->rx.req_cons:237249 [ 417.649867] vif vif-7-0 vif7.0: ?!? xenvif_start_xmit stopping queue ! min_slots_needed:2 vif->rx.sring->req_prod:252580 vif->rx.req_cons:252580 [ 418.400194] vif vif-7-0 vif7.0: ?!? xenvif_start_xmit stopping queue ! min_slots_needed:4 vif->rx.sring->req_prod:255828 vif->rx.req_cons:255826 [ 419.147431] vif vif-7-0 vif7.0: ?!? get_next_rx_buffer before req npo->meta_prod:37 vif->rx.sring->req_prod:258745 vif->rx.req_cons:258746 [ 419.149966] vif vif-7-0 vif7.0: ?!? xenvif_start_xmit stopping queue ! min_slots_needed:1 vif->rx.sring->req_prod:258745 vif->rx.req_cons:258745 [ 419.153145] vif vif-7-0 vif7.0: ?!? get_next_rx_buffer after req npo->meta_prod:37 vif->rx.sring->req_prod:258745 vif->rx.req_cons:258746 req->gref:19791875 req->id:185 [ 419.159518] vif vif-7-0 vif7.0: ?!? xenvif_gop_frag_copy Me here 2 npo->meta_prod:38 vif->rx.sring->req_prod:258745 vif->rx.req_cons:258746 npo->copy_gref:19791875 [ 419.166980] vif vif-7-0 vif7.0: ?!? xenvif_gop_skb Me here 3 npo->meta_prod:38 old_meta_prod:30 vif->rx.sring->req_prod:258745 vif->rx.req_cons:258746 gso_type:1 gso_size:1448 nr_frags:1 req->gref:686 req->id:177 [ 419.175597] vif vif-7-0 vif7.0: ?!? xenvif_gop_skb Me here 2 before req npo->meta_prod:38 vif->rx.sring->req_prod:258745 vif->rx.req_cons:258747 gso_type:0 gso_size:0 nr_frags:0 [ 419.185284] vif vif-7-0 vif7.0: ?!? xenvif_gop_skb Me here 2 after req npo->meta_prod:38 vif->rx.sring->req_prod:258745 vif->rx.req_cons:258747 gso_type:0 gso_size:0 nr_frags:0 req->gref:4325379 req->id:186 [ 422.717242] net_ratelimit: 158 callbacks suppressed Hope that this time it does shed some light :-) diff to netback is attached. -- Sander > Wei. ------------0B81250F128D565F9 Content-Type: application/octet-stream; name="netback_debug.diff" Content-transfer-encoding: base64 Content-Disposition: attachment; filename="netback_debug.diff" ZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3hlbi1uZXRiYWNrL2ludGVyZmFjZS5jIGIvZHJp dmVycy9uZXQveGVuLW5ldGJhY2svaW50ZXJmYWNlLmMKaW5kZXggYjlkZTMxZS4uMTgwOTcy OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQveGVuLW5ldGJhY2svaW50ZXJmYWNlLmMKKysr IGIvZHJpdmVycy9uZXQveGVuLW5ldGJhY2svaW50ZXJmYWNlLmMKQEAgLTEyMiw5ICsxMjIs MTMgQEAgc3RhdGljIGludCB4ZW52aWZfc3RhcnRfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2ti LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogCUJVR19PTihza2ItPmRldiAhPSBkZXYpOwog CiAJLyogRHJvcCB0aGUgcGFja2V0IGlmIHZpZiBpcyBub3QgcmVhZHkgKi8KLQlpZiAodmlm LT50YXNrID09IE5VTEwgfHwgIXhlbnZpZl9zY2hlZHVsYWJsZSh2aWYpKQorCWlmICh2aWYt PnRhc2sgPT0gTlVMTCB8fCAheGVudmlmX3NjaGVkdWxhYmxlKHZpZikpeworICAgICAgICAg ICAgICAgIGlmIChuZXRfcmF0ZWxpbWl0KCkpCisgICAgICAgICAgICAgICAgICAgICAgICBu ZXRkZXZfd2Fybih2aWYtPmRldiwgIj8hPyAlcyBkcm9wcGluZyBwYWNrZXQgdmlmIG5vdCBy ZWFkeSAhICBtaW5fc2xvdHNfbmVlZGVkOiVkIHZpZi0+cnguc3JpbmctPnJlcV9wcm9kOiVk IHZpZi0+cngucmVxX2NvbnM6JWRcbiIsIF9fRlVOQ1RJT05fXywgbWluX3Nsb3RzX25lZWRl ZCwgdmlmLT5yeC5zcmluZy0+cmVxX3Byb2QsIHZpZi0+cngucmVxX2NvbnMpOworCQogCQln b3RvIGRyb3A7Ci0KKwl9CisJCiAJLyogQXQgYmVzdCB3ZSdsbCBuZWVkIG9uZSBzbG90IGZv ciB0aGUgaGVhZGVyIGFuZCBvbmUgZm9yIGVhY2gKIAkgKiBmcmFnLgogCSAqLwpAQCAtMTMz LDE2ICsxMzcsMTkgQEAgc3RhdGljIGludCB4ZW52aWZfc3RhcnRfeG1pdChzdHJ1Y3Qgc2tf YnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogCS8qIElmIHRoZSBza2IgaXMg R1NPIHRoZW4gd2UnbGwgYWxzbyBuZWVkIGFuIGV4dHJhIHNsb3QgZm9yIHRoZQogCSAqIG1l dGFkYXRhLgogCSAqLwotCWlmIChza2Jfc2hpbmZvKHNrYiktPmdzb190eXBlICYgU0tCX0dT T19UQ1BWNCB8fAotCSAgICBza2Jfc2hpbmZvKHNrYiktPmdzb190eXBlICYgU0tCX0dTT19U Q1BWNikKKwlpZiAoc2tiX2lzX2dzbyhza2IpKQogCQltaW5fc2xvdHNfbmVlZGVkKys7CiAK IAkvKiBJZiB0aGUgc2tiIGNhbid0IHBvc3NpYmx5IGZpdCBpbiB0aGUgcmVtYWluaW5nIHNs b3RzCiAJICogdGhlbiB0dXJuIG9mZiB0aGUgcXVldWUgdG8gZ2l2ZSB0aGUgcmluZyBhIGNo YW5jZSB0bwogCSAqIGRyYWluLgogCSAqLwotCWlmICgheGVudmlmX3J4X3Jpbmdfc2xvdHNf YXZhaWxhYmxlKHZpZiwgbWluX3Nsb3RzX25lZWRlZCkpCisJaWYgKCF4ZW52aWZfcnhfcmlu Z19zbG90c19hdmFpbGFibGUodmlmLCBtaW5fc2xvdHNfbmVlZGVkKSl7CisgICAgICAgICAg ICAgICAgaWYgKG5ldF9yYXRlbGltaXQoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIG5l dGRldl93YXJuKHZpZi0+ZGV2LCAiPyE/ICVzIHN0b3BwaW5nIHF1ZXVlICEgIG1pbl9zbG90 c19uZWVkZWQ6JWQgdmlmLT5yeC5zcmluZy0+cmVxX3Byb2Q6JWQgdmlmLT5yeC5yZXFfY29u czolZFxuIiwgX19GVU5DVElPTl9fLCBtaW5fc2xvdHNfbmVlZGVkLCB2aWYtPnJ4LnNyaW5n LT5yZXFfcHJvZCwgdmlmLT5yeC5yZXFfY29ucyk7CisKIAkJeGVudmlmX3N0b3BfcXVldWUo dmlmKTsKKwl9CiAKIAlza2JfcXVldWVfdGFpbCgmdmlmLT5yeF9xdWV1ZSwgc2tiKTsKIAl4 ZW52aWZfa2lja190aHJlYWQodmlmKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3hlbi1u ZXRiYWNrL25ldGJhY2suYyBiL2RyaXZlcnMvbmV0L3hlbi1uZXRiYWNrL25ldGJhY2suYwpp bmRleCA5OGRlOGFiLi4yZjg2YTYzIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC94ZW4tbmV0 YmFjay9uZXRiYWNrLmMKKysrIGIvZHJpdmVycy9uZXQveGVuLW5ldGJhY2svbmV0YmFjay5j CkBAIC0xNTcsNiArMTU3LDggQEAgYm9vbCB4ZW52aWZfcnhfcmluZ19zbG90c19hdmFpbGFi bGUoc3RydWN0IHhlbnZpZiAqdmlmLCBpbnQgbmVlZGVkKQogCQltYigpOwogCX0gd2hpbGUg KHZpZi0+cnguc3JpbmctPnJlcV9wcm9kICE9IHByb2QpOwogCisgICAgICAgCWlmKCh2aWYt PnJ4LnJlcV9jb25zID4gdmlmLT5yeC5zcmluZy0+cmVxX3Byb2QpICYmIG5ldF9yYXRlbGlt aXQoKSl7bmV0ZGV2X3dhcm4odmlmLT5kZXYsICI/IT8gJXMgc2xvdHNhdmFpbGFibGU6IGZh bHNlIHZpZi0+cnguc3JpbmctPnJlcV9wcm9kOiVkIHZpZi0+cngucmVxX2NvbnM6JWQgdmlm LT5yeC5zcmluZy0+cmVxX2V2ZW50OiVkIG5lZWRlZDolZCIsX19GVU5DVElPTl9fLCB2aWYt PnJ4LnNyaW5nLT5yZXFfcHJvZCwgdmlmLT5yeC5yZXFfY29ucywgdmlmLT5yeC5zcmluZy0+ cmVxX2V2ZW50LCBuZWVkZWQpO30KKwogCXJldHVybiBmYWxzZTsKIH0KIApAQCAtMjE1LDcg KzIxNyw5IEBAIHN0YXRpYyBzdHJ1Y3QgeGVudmlmX3J4X21ldGEgKmdldF9uZXh0X3J4X2J1 ZmZlcihzdHJ1Y3QgeGVudmlmICp2aWYsCiAJc3RydWN0IHhlbnZpZl9yeF9tZXRhICptZXRh OwogCXN0cnVjdCB4ZW5fbmV0aWZfcnhfcmVxdWVzdCAqcmVxOwogCisJaWYoKHZpZi0+cngu cmVxX2NvbnMgKyAxID4gdmlmLT5yeC5zcmluZy0+cmVxX3Byb2QpICYmIG5ldF9yYXRlbGlt aXQoKSl7bmV0ZGV2X3dhcm4odmlmLT5kZXYsICI/IT8gJXMgYmVmb3JlIHJlcSBucG8tPm1l dGFfcHJvZDolZCB2aWYtPnJ4LnNyaW5nLT5yZXFfcHJvZDolZCB2aWYtPnJ4LnJlcV9jb25z OiVkIiwgX19GVU5DVElPTl9fLCBucG8tPm1ldGFfcHJvZCAsIHZpZi0+cnguc3JpbmctPnJl cV9wcm9kLCB2aWYtPnJ4LnJlcV9jb25zICsgMSk7fQogCXJlcSA9IFJJTkdfR0VUX1JFUVVF U1QoJnZpZi0+cngsIHZpZi0+cngucmVxX2NvbnMrKyk7CisJaWYoKHZpZi0+cngucmVxX2Nv bnMgPiB2aWYtPnJ4LnNyaW5nLT5yZXFfcHJvZCkgJiYgbmV0X3JhdGVsaW1pdCgpKXtuZXRk ZXZfd2Fybih2aWYtPmRldiwgIj8hPyAlcyBhZnRlciByZXEgbnBvLT5tZXRhX3Byb2Q6JWQg dmlmLT5yeC5zcmluZy0+cmVxX3Byb2Q6JWQgdmlmLT5yeC5yZXFfY29uczolZCByZXEtPmdy ZWY6JWQgcmVxLT5pZDolZCIsIF9fRlVOQ1RJT05fXywgbnBvLT5tZXRhX3Byb2QgLCB2aWYt PnJ4LnNyaW5nLT5yZXFfcHJvZCwgdmlmLT5yeC5yZXFfY29ucywgcmVxLT5ncmVmLCByZXEt PmlkKTt9CiAKIAltZXRhID0gbnBvLT5tZXRhICsgbnBvLT5tZXRhX3Byb2QrKzsKIAltZXRh LT5nc29fdHlwZSA9IFhFTl9ORVRJRl9HU09fVFlQRV9OT05FOwpAQCAtMjQxLDcgKzI0NSw3 IEBAIHN0YXRpYyB2b2lkIHhlbnZpZl9nb3BfZnJhZ19jb3B5KHN0cnVjdCB4ZW52aWYgKnZp Ziwgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAlzdHJ1Y3QgZ250dGFiX2NvcHkgKmNvcHlfZ29w OwogCXN0cnVjdCB4ZW52aWZfcnhfbWV0YSAqbWV0YTsKIAl1bnNpZ25lZCBsb25nIGJ5dGVz OwotCWludCBnc29fdHlwZTsKKwlpbnQgZ3NvX3R5cGUgPSBYRU5fTkVUSUZfR1NPX1RZUEVf Tk9ORTsKIAogCS8qIERhdGEgbXVzdCBub3QgY3Jvc3MgYSBwYWdlIGJvdW5kYXJ5LiAqLwog CUJVR19PTihzaXplICsgb2Zmc2V0ID4gUEFHRV9TSVpFPDxjb21wb3VuZF9vcmRlcihwYWdl KSk7CkBAIC0yNjcsOCArMjcxLDEwIEBAIHN0YXRpYyB2b2lkIHhlbnZpZl9nb3BfZnJhZ19j b3B5KHN0cnVjdCB4ZW52aWYgKnZpZiwgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkJCSAqIGJ1 ZmZlci4KIAkJCSAqLwogCQkJQlVHX09OKCpoZWFkKTsKLQorCQkJaWYoKHZpZi0+cngucmVx X2NvbnMgPiB2aWYtPnJ4LnNyaW5nLT5yZXFfcHJvZCkgJiYgbmV0X3JhdGVsaW1pdCgpKXtu ZXRkZXZfd2Fybih2aWYtPmRldiwgIj8hPyAlcyBNZSBoZXJlIDEgIG5wby0+bWV0YV9wcm9k OiVkIHZpZi0+cnguc3JpbmctPnJlcV9wcm9kOiVkIHZpZi0+cngucmVxX2NvbnM6JWQgbnBv LT5jb3B5X2dyZWY6JWQiLCBfX0ZVTkNUSU9OX18sbnBvLT5tZXRhX3Byb2QsIHZpZi0+cngu c3JpbmctPnJlcV9wcm9kLCB2aWYtPnJ4LnJlcV9jb25zLCBucG8tPmNvcHlfZ3JlZik7fQog CQkJbWV0YSA9IGdldF9uZXh0X3J4X2J1ZmZlcih2aWYsIG5wbyk7CisJCQlpZigodmlmLT5y eC5yZXFfY29ucyA+IHZpZi0+cnguc3JpbmctPnJlcV9wcm9kKSAmJiBuZXRfcmF0ZWxpbWl0 KCkpe25ldGRldl93YXJuKHZpZi0+ZGV2LCAiPyE/ICVzIE1lIGhlcmUgMiAgbnBvLT5tZXRh X3Byb2Q6JWQgdmlmLT5yeC5zcmluZy0+cmVxX3Byb2Q6JWQgdmlmLT5yeC5yZXFfY29uczol ZCBucG8tPmNvcHlfZ3JlZjolZCIsIF9fRlVOQ1RJT05fXyxucG8tPm1ldGFfcHJvZCwgdmlm LT5yeC5zcmluZy0+cmVxX3Byb2QsIHZpZi0+cngucmVxX2NvbnMsIG5wby0+Y29weV9ncmVm KTt9CisKIAkJfQogCiAJCWlmIChucG8tPmNvcHlfb2ZmICsgYnl0ZXMgPiBNQVhfQlVGRkVS X09GRlNFVCkKQEAgLTMwMCwxNiArMzA2LDE3IEBAIHN0YXRpYyB2b2lkIHhlbnZpZl9nb3Bf ZnJhZ19jb3B5KHN0cnVjdCB4ZW52aWYgKnZpZiwgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkJ fQogCiAJCS8qIExlYXZlIGEgZ2FwIGZvciB0aGUgR1NPIGRlc2NyaXB0b3IuICovCi0JCWlm IChza2Jfc2hpbmZvKHNrYiktPmdzb190eXBlICYgU0tCX0dTT19UQ1BWNCkKLQkJCWdzb190 eXBlID0gWEVOX05FVElGX0dTT19UWVBFX1RDUFY0OwotCQllbHNlIGlmIChza2Jfc2hpbmZv KHNrYiktPmdzb190eXBlICYgU0tCX0dTT19UQ1BWNikKLQkJCWdzb190eXBlID0gWEVOX05F VElGX0dTT19UWVBFX1RDUFY2OwotCQllbHNlCi0JCQlnc29fdHlwZSA9IFhFTl9ORVRJRl9H U09fVFlQRV9OT05FOworCQlpZiAoc2tiX2lzX2dzbyhza2IpKSB7CisJCQlpZiAoc2tiX3No aW5mbyhza2IpLT5nc29fdHlwZSAmIFNLQl9HU09fVENQVjQpCisJCQkJZ3NvX3R5cGUgPSBY RU5fTkVUSUZfR1NPX1RZUEVfVENQVjQ7CisJCQllbHNlIGlmIChza2Jfc2hpbmZvKHNrYikt Pmdzb190eXBlICYgU0tCX0dTT19UQ1BWNikKKwkJCQlnc29fdHlwZSA9IFhFTl9ORVRJRl9H U09fVFlQRV9UQ1BWNjsKKwkJfQogCi0JCWlmICgqaGVhZCAmJiAoKDEgPDwgZ3NvX3R5cGUp ICYgdmlmLT5nc29fbWFzaykpCisJCWlmICgqaGVhZCAmJiAoKDEgPDwgZ3NvX3R5cGUpICYg dmlmLT5nc29fbWFzaykpewogCQkJdmlmLT5yeC5yZXFfY29ucysrOwotCisJCQlpZigodmlm LT5yeC5yZXFfY29ucyA+IHZpZi0+cnguc3JpbmctPnJlcV9wcm9kKSAmJiBuZXRfcmF0ZWxp bWl0KCkpe25ldGRldl93YXJuKHZpZi0+ZGV2LCAiPyE/ICVzICBNZSBoZXJlIDMgIG5wby0+ bWV0YV9wcm9kOiVkIHZpZi0+cnguc3JpbmctPnJlcV9wcm9kOiVkIHZpZi0+cngucmVxX2Nv bnM6JWQgZ3NvX3R5cGU6JWQgbnBvLT5jb3B5X2dyZWY6JWQiLCBfX0ZVTkNUSU9OX18sbnBv LT5tZXRhX3Byb2QsIHZpZi0+cnguc3JpbmctPnJlcV9wcm9kLCB2aWYtPnJ4LnJlcV9jb25z LCBza2Jfc2hpbmZvKHNrYiktPmdzb190eXBlLCBucG8tPmNvcHlfZ3JlZik7fQkKKwkJfQog CQkqaGVhZCA9IDA7IC8qIFRoZXJlIG11c3QgYmUgc29tZXRoaW5nIGluIHRoaXMgYnVmZmVy IG5vdy4gKi8KIAogCX0KQEAgLTMzOSwzNyArMzQ2LDM3IEBAIHN0YXRpYyBpbnQgeGVudmlm X2dvcF9za2Ioc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAlpbnQgaGVhZCA9IDE7CiAJaW50IG9s ZF9tZXRhX3Byb2Q7CiAJaW50IGdzb190eXBlOwotCWludCBnc29fc2l6ZTsKIAogCW9sZF9t ZXRhX3Byb2QgPSBucG8tPm1ldGFfcHJvZDsKIAotCWlmIChza2Jfc2hpbmZvKHNrYiktPmdz b190eXBlICYgU0tCX0dTT19UQ1BWNCkgewotCQlnc29fdHlwZSA9IFhFTl9ORVRJRl9HU09f VFlQRV9UQ1BWNDsKLQkJZ3NvX3NpemUgPSBza2Jfc2hpbmZvKHNrYiktPmdzb19zaXplOwot CX0gZWxzZSBpZiAoc2tiX3NoaW5mbyhza2IpLT5nc29fdHlwZSAmIFNLQl9HU09fVENQVjYp IHsKLQkJZ3NvX3R5cGUgPSBYRU5fTkVUSUZfR1NPX1RZUEVfVENQVjY7Ci0JCWdzb19zaXpl ID0gc2tiX3NoaW5mbyhza2IpLT5nc29fc2l6ZTsKLQl9IGVsc2UgewotCQlnc29fdHlwZSA9 IFhFTl9ORVRJRl9HU09fVFlQRV9OT05FOwotCQlnc29fc2l6ZSA9IDA7CisJZ3NvX3R5cGUg PSBYRU5fTkVUSUZfR1NPX1RZUEVfTk9ORTsKKwlpZiAoc2tiX2lzX2dzbyhza2IpKSB7CisJ CWlmIChza2Jfc2hpbmZvKHNrYiktPmdzb190eXBlICYgU0tCX0dTT19UQ1BWNCkKKwkJCWdz b190eXBlID0gWEVOX05FVElGX0dTT19UWVBFX1RDUFY0OworCQllbHNlIGlmIChza2Jfc2hp bmZvKHNrYiktPmdzb190eXBlICYgU0tCX0dTT19UQ1BWNikKKwkJCWdzb190eXBlID0gWEVO X05FVElGX0dTT19UWVBFX1RDUFY2OwogCX0KIAogCS8qIFNldCB1cCBhIEdTTyBwcmVmaXgg ZGVzY3JpcHRvciwgaWYgbmVjZXNzYXJ5ICovCiAJaWYgKCgxIDw8IGdzb190eXBlKSAmIHZp Zi0+Z3NvX3ByZWZpeF9tYXNrKSB7CisgICAgICAgIAlpZigodmlmLT5yeC5yZXFfY29ucyAr IDEgPiB2aWYtPnJ4LnNyaW5nLT5yZXFfcHJvZCkgJiYgbmV0X3JhdGVsaW1pdCgpKXtuZXRk ZXZfd2Fybih2aWYtPmRldiwgIj8hPyAlcyBNZSBoZXJlIDEgYmVmb3JlIHJlcSBucG8tPm1l dGFfcHJvZDolZCB2aWYtPnJ4LnNyaW5nLT5yZXFfcHJvZDolZCB2aWYtPnJ4LnJlcV9jb25z OiVkIGdzb190eXBlOiVkIGdzb19zaXplOiVkIG5yX2ZyYWdzOiVkIiwgX19GVU5DVElPTl9f LG5wby0+bWV0YV9wcm9kICwgdmlmLT5yeC5zcmluZy0+cmVxX3Byb2QsIHZpZi0+cngucmVx X2NvbnMgKyAxLCBza2Jfc2hpbmZvKHNrYiktPmdzb190eXBlLCBza2Jfc2hpbmZvKHNrYikt Pmdzb19zaXplLCBucl9mcmFncyk7fQogCQlyZXEgPSBSSU5HX0dFVF9SRVFVRVNUKCZ2aWYt PnJ4LCB2aWYtPnJ4LnJlcV9jb25zKyspOworICAgICAgICAJaWYoKHZpZi0+cngucmVxX2Nv bnMgPiB2aWYtPnJ4LnNyaW5nLT5yZXFfcHJvZCkgJiYgbmV0X3JhdGVsaW1pdCgpKXtuZXRk ZXZfd2Fybih2aWYtPmRldiwgIj8hPyAlcyBNZSBoZXJlIDEgYWZ0ZXIgcmVxIG5wby0+bWV0 YV9wcm9kOiVkIHZpZi0+cnguc3JpbmctPnJlcV9wcm9kOiVkIHZpZi0+cngucmVxX2NvbnM6 JWQgZ3NvX3R5cGU6JWQgZ3NvX3NpemU6JWQgbnJfZnJhZ3M6JWQgcmVxLT5ncmVmOiVkIHJl cS0+aWQ6JWQiLCBfX0ZVTkNUSU9OX18sbnBvLT5tZXRhX3Byb2QgLCB2aWYtPnJ4LnNyaW5n LT5yZXFfcHJvZCwgdmlmLT5yeC5yZXFfY29ucyAsIHNrYl9zaGluZm8oc2tiKS0+Z3NvX3R5 cGUsIHNrYl9zaGluZm8oc2tiKS0+Z3NvX3NpemUsIG5yX2ZyYWdzLCByZXEtPmdyZWYsIHJl cS0+aWQpO30KIAkJbWV0YSA9IG5wby0+bWV0YSArIG5wby0+bWV0YV9wcm9kKys7CiAJCW1l dGEtPmdzb190eXBlID0gZ3NvX3R5cGU7Ci0JCW1ldGEtPmdzb19zaXplID0gZ3NvX3NpemU7 CisJCW1ldGEtPmdzb19zaXplID0gc2tiX3NoaW5mbyhza2IpLT5nc29fc2l6ZTsKIAkJbWV0 YS0+c2l6ZSA9IDA7CiAJCW1ldGEtPmlkID0gcmVxLT5pZDsKIAl9Ci0KKyAgICAgICAJaWYo KHZpZi0+cngucmVxX2NvbnMgKyAxID4gdmlmLT5yeC5zcmluZy0+cmVxX3Byb2QpICYmIG5l dF9yYXRlbGltaXQoKSl7bmV0ZGV2X3dhcm4odmlmLT5kZXYsICI/IT8gJXMgTWUgaGVyZSAy IGJlZm9yZSByZXEgbnBvLT5tZXRhX3Byb2Q6JWQgdmlmLT5yeC5zcmluZy0+cmVxX3Byb2Q6 JWQgdmlmLT5yeC5yZXFfY29uczolZCBnc29fdHlwZTolZCBnc29fc2l6ZTolZCBucl9mcmFn czolZCIsIF9fRlVOQ1RJT05fXyxucG8tPm1ldGFfcHJvZCAsIHZpZi0+cnguc3JpbmctPnJl cV9wcm9kLCB2aWYtPnJ4LnJlcV9jb25zICsgMSwgc2tiX3NoaW5mbyhza2IpLT5nc29fdHlw ZSwgc2tiX3NoaW5mbyhza2IpLT5nc29fc2l6ZSwgbnJfZnJhZ3MpO30KIAlyZXEgPSBSSU5H X0dFVF9SRVFVRVNUKCZ2aWYtPnJ4LCB2aWYtPnJ4LnJlcV9jb25zKyspOworICAgICAgIAlp ZigodmlmLT5yeC5yZXFfY29ucyA+IHZpZi0+cnguc3JpbmctPnJlcV9wcm9kKSAmJiBuZXRf cmF0ZWxpbWl0KCkpe25ldGRldl93YXJuKHZpZi0+ZGV2LCAiPyE/ICVzIE1lIGhlcmUgMiBh ZnRlciByZXEgbnBvLT5tZXRhX3Byb2Q6JWQgdmlmLT5yeC5zcmluZy0+cmVxX3Byb2Q6JWQg dmlmLT5yeC5yZXFfY29uczolZCBnc29fdHlwZTolZCBnc29fc2l6ZTolZCBucl9mcmFnczol ZCByZXEtPmdyZWY6JWQgcmVxLT5pZDolZCIsIF9fRlVOQ1RJT05fXyxucG8tPm1ldGFfcHJv ZCAsIHZpZi0+cnguc3JpbmctPnJlcV9wcm9kLCB2aWYtPnJ4LnJlcV9jb25zLCBza2Jfc2hp bmZvKHNrYiktPmdzb190eXBlLCBza2Jfc2hpbmZvKHNrYiktPmdzb19zaXplLCBucl9mcmFn cywgcmVxLT5ncmVmLCByZXEtPmlkKTt9CisKIAltZXRhID0gbnBvLT5tZXRhICsgbnBvLT5t ZXRhX3Byb2QrKzsKIAogCWlmICgoMSA8PCBnc29fdHlwZSkgJiB2aWYtPmdzb19tYXNrKSB7 CiAJCW1ldGEtPmdzb190eXBlID0gZ3NvX3R5cGU7Ci0JCW1ldGEtPmdzb19zaXplID0gZ3Nv X3NpemU7CisJCW1ldGEtPmdzb19zaXplID0gc2tiX3NoaW5mbyhza2IpLT5nc29fc2l6ZTsK IAl9IGVsc2UgewogCQltZXRhLT5nc29fdHlwZSA9IFhFTl9ORVRJRl9HU09fVFlQRV9OT05F OwogCQltZXRhLT5nc29fc2l6ZSA9IDA7CkBAIC0zODAsNiArMzg3LDcgQEAgc3RhdGljIGlu dCB4ZW52aWZfZ29wX3NrYihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCW5wby0+Y29weV9vZmYg PSAwOwogCW5wby0+Y29weV9ncmVmID0gcmVxLT5ncmVmOwogCisKIAlkYXRhID0gc2tiLT5k YXRhOwogCXdoaWxlIChkYXRhIDwgc2tiX3RhaWxfcG9pbnRlcihza2IpKSB7CiAJCXVuc2ln bmVkIGludCBvZmZzZXQgPSBvZmZzZXRfaW5fcGFnZShkYXRhKTsKQEAgLTQwMSw2ICs0MDks OCBAQCBzdGF0aWMgaW50IHhlbnZpZl9nb3Bfc2tiKHN0cnVjdCBza19idWZmICpza2IsCiAJ CQkJICAgICAmaGVhZCk7CiAJfQogCisgICAgICAgCWlmKCh2aWYtPnJ4LnJlcV9jb25zID4g dmlmLT5yeC5zcmluZy0+cmVxX3Byb2QpICYmIG5ldF9yYXRlbGltaXQoKSl7bmV0ZGV2X3dh cm4odmlmLT5kZXYsICI/IT8gJXMgTWUgaGVyZSAzIG5wby0+bWV0YV9wcm9kOiVkIG9sZF9t ZXRhX3Byb2Q6JWQgdmlmLT5yeC5zcmluZy0+cmVxX3Byb2Q6JWQgdmlmLT5yeC5yZXFfY29u czolZCBnc29fdHlwZTolZCBnc29fc2l6ZTolZCBucl9mcmFnczolZCByZXEtPmdyZWY6JWQg cmVxLT5pZDolZCIsIF9fRlVOQ1RJT05fXyxucG8tPm1ldGFfcHJvZCAsIG9sZF9tZXRhX3By b2QsdmlmLT5yeC5zcmluZy0+cmVxX3Byb2QsIHZpZi0+cngucmVxX2NvbnMsIHNrYl9zaGlu Zm8oc2tiKS0+Z3NvX3R5cGUsIHNrYl9zaGluZm8oc2tiKS0+Z3NvX3NpemUsIG5yX2ZyYWdz LCByZXEtPmdyZWYsIHJlcS0+aWQpO30KKwogCXJldHVybiBucG8tPm1ldGFfcHJvZCAtIG9s ZF9tZXRhX3Byb2Q7CiB9CiAKQEAgLTQyMCwxMSArNDMwLDE0IEBAIHN0YXRpYyBpbnQgeGVu dmlmX2NoZWNrX2dvcChzdHJ1Y3QgeGVudmlmICp2aWYsIGludCBucl9tZXRhX3Nsb3RzLAog CWZvciAoaSA9IDA7IGkgPCBucl9tZXRhX3Nsb3RzOyBpKyspIHsKIAkJY29weV9vcCA9IG5w by0+Y29weSArIG5wby0+Y29weV9jb25zKys7CiAJCWlmIChjb3B5X29wLT5zdGF0dXMgIT0g R05UU1Rfb2theSkgewotCQkJbmV0ZGV2X2RiZyh2aWYtPmRldiwKKyAgICAgICAgICAgICAg ICAgICAgaWYgKG5ldF9yYXRlbGltaXQoKSl7CisJCQluZXRkZXZfd2Fybih2aWYtPmRldiwK IAkJCQkgICAiQmFkIHN0YXR1cyAlZCBmcm9tIGNvcHkgdG8gRE9NJWQuXG4iLAogCQkJCSAg IGNvcHlfb3AtPnN0YXR1cywgdmlmLT5kb21pZCk7CiAJCQlzdGF0dXMgPSBYRU5fTkVUSUZf UlNQX0VSUk9SOwotCQl9CisgICAgICAgICAgICAgICAgICAgICAgICBuZXRkZXZfd2Fybih2 aWYtPmRldiwgIj8hPyAlcyBzdGF0dXMgZXJyPyBzdGF0dXM6JWQgaTolZCBucl9tZXRhX3Ns b3RzOiVkIGNvcHlfb3AtPnN0YXR1czolZCBucG8tPmNvcHlfY29uczolZCAgXG4iLCBfX0ZV TkNUSU9OX18sc3RhdHVzLCBpLCBucl9tZXRhX3Nsb3RzLCBjb3B5X29wLT5zdGF0dXMsIG5w by0+Y29weV9jb25zICk7CisJCSAgICB9CisgICAgICAgCQl9CiAJfQogCiAJcmV0dXJuIHN0 YXR1czsKQEAgLTQ1MSw4ICs0NjQsMTQgQEAgc3RhdGljIHZvaWQgeGVudmlmX2FkZF9mcmFn X3Jlc3BvbnNlcyhzdHJ1Y3QgeGVudmlmICp2aWYsIGludCBzdGF0dXMsCiAJCQlmbGFncyA9 IFhFTl9ORVRSWEZfbW9yZV9kYXRhOwogCiAJCW9mZnNldCA9IDA7CisKKyAgICAgICAgICAg ICAgICBpZihzdGF0dXMgPiAxMDAwMCB8fCBzdGF0dXMgPCAwKXsKKyAgICAgICAgICAgICAg ICAgICAgaWYgKG5ldF9yYXRlbGltaXQoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIG5l dGRldl93YXJuKHZpZi0+ZGV2LCAiPyE/ICVzIHN0YXR1cyBlcnI/IHN0YXR1czolZCBpOiVk IG5yX21ldGFfc2xvdHM6JWQgZmxhZ3M6JWQgc2l6ZTolZFxuIiwgX19GVU5DVElPTl9fLHN0 YXR1cywgaSwgbnJfbWV0YV9zbG90cywgZmxhZ3MsIG1ldGFbaV0uc2l6ZSk7CisgICAgICAg ICAgICAgICAgfQogCQltYWtlX3J4X3Jlc3BvbnNlKHZpZiwgbWV0YVtpXS5pZCwgc3RhdHVz LCBvZmZzZXQsCiAJCQkJIG1ldGFbaV0uc2l6ZSwgZmxhZ3MpOworCQogCX0KIH0KIApAQCAt NTAxLDEyICs1MjAsMTUgQEAgc3RhdGljIHZvaWQgeGVudmlmX3J4X2FjdGlvbihzdHJ1Y3Qg eGVudmlmICp2aWYpCiAJCQlzaXplID0gc2tiX2ZyYWdfc2l6ZSgmc2tiX3NoaW5mbyhza2Ip LT5mcmFnc1tpXSk7CiAJCQltYXhfc2xvdHNfbmVlZGVkICs9IERJVl9ST1VORF9VUChzaXpl LCBQQUdFX1NJWkUpOwogCQl9Ci0JCWlmIChza2Jfc2hpbmZvKHNrYiktPmdzb190eXBlICYg U0tCX0dTT19UQ1BWNCB8fAotCQkgICAgc2tiX3NoaW5mbyhza2IpLT5nc29fdHlwZSAmIFNL Ql9HU09fVENQVjYpCisJCWlmIChza2JfaXNfZ3NvKHNrYikgJiYKKwkJICAgKHNrYl9zaGlu Zm8oc2tiKS0+Z3NvX3R5cGUgJiBTS0JfR1NPX1RDUFY0IHx8CisJCSAgICBza2Jfc2hpbmZv KHNrYiktPmdzb190eXBlICYgU0tCX0dTT19UQ1BWNikpCiAJCQltYXhfc2xvdHNfbmVlZGVk Kys7CiAKIAkJLyogSWYgdGhlIHNrYiBtYXkgbm90IGZpdCB0aGVuIGJhaWwgb3V0IG5vdyAq LwogCQlpZiAoIXhlbnZpZl9yeF9yaW5nX3Nsb3RzX2F2YWlsYWJsZSh2aWYsIG1heF9zbG90 c19uZWVkZWQpKSB7CisKKwogCQkJc2tiX3F1ZXVlX2hlYWQoJnZpZi0+cnhfcXVldWUsIHNr Yik7CiAJCQluZWVkX3RvX25vdGlmeSA9IDE7CiAJCQlicmVhazsKQEAgLTUxNCw2ICs1MzYs OSBAQCBzdGF0aWMgdm9pZCB4ZW52aWZfcnhfYWN0aW9uKHN0cnVjdCB4ZW52aWYgKnZpZikK IAogCQlzY28gPSAoc3RydWN0IHNrYl9jYl9vdmVybGF5ICopc2tiLT5jYjsKIAkJc2NvLT5t ZXRhX3Nsb3RzX3VzZWQgPSB4ZW52aWZfZ29wX3NrYihza2IsICZucG8pOworCisKKwogCQlC VUdfT04oc2NvLT5tZXRhX3Nsb3RzX3VzZWQgPiBtYXhfc2xvdHNfbmVlZGVkKTsKIAogCQlf X3NrYl9xdWV1ZV90YWlsKCZyeHEsIHNrYik7CkBAIC01MjEsOCArNTQ2LDEwIEBAIHN0YXRp YyB2b2lkIHhlbnZpZl9yeF9hY3Rpb24oc3RydWN0IHhlbnZpZiAqdmlmKQogCiAJQlVHX09O KG5wby5tZXRhX3Byb2QgPiBBUlJBWV9TSVpFKHZpZi0+bWV0YSkpOwogCi0JaWYgKCFucG8u Y29weV9wcm9kKQorCWlmICghbnBvLmNvcHlfcHJvZCl7CisJICAgICAgICBpZigodmlmLT5y eC5yZXFfY29ucyA+IHZpZi0+cnguc3JpbmctPnJlcV9wcm9kKSAmJiBuZXRfcmF0ZWxpbWl0 KCkpe25ldGRldl93YXJuKHZpZi0+ZGV2LCAiPyE/ICVzIGdvIHRvIGRvbmUgLi4gIHZpZi0+ cnguc3JpbmctPnJlcV9wcm9kOiVkIHZpZi0+cngucmVxX2NvbnM6JWQiLCBfX0ZVTkNUSU9O X18sIHZpZi0+cnguc3JpbmctPnJlcV9wcm9kLCB2aWYtPnJ4LnJlcV9jb25zKTt9CiAJCWdv dG8gZG9uZTsKKwl9CiAKIAlCVUdfT04obnBvLmNvcHlfcHJvZCA+IE1BWF9HUkFOVF9DT1BZ X09QUyk7CiAJZ250dGFiX2JhdGNoX2NvcHkodmlmLT5ncmFudF9jb3B5X29wLCBucG8uY29w eV9wcm9kKTsKQEAgLTU1MSw2ICs1NzgsOCBAQCBzdGF0aWMgdm9pZCB4ZW52aWZfcnhfYWN0 aW9uKHN0cnVjdCB4ZW52aWYgKnZpZikKIAogCQlzdGF0dXMgPSB4ZW52aWZfY2hlY2tfZ29w KHZpZiwgc2NvLT5tZXRhX3Nsb3RzX3VzZWQsICZucG8pOwogCisKKwogCQlpZiAoc2NvLT5t ZXRhX3Nsb3RzX3VzZWQgPT0gMSkKIAkJCWZsYWdzID0gMDsKIAkJZWxzZQpAQCAtNTYzLDYg KzU5MiwxMiBAQCBzdGF0aWMgdm9pZCB4ZW52aWZfcnhfYWN0aW9uKHN0cnVjdCB4ZW52aWYg KnZpZikKIAkJCWZsYWdzIHw9IFhFTl9ORVRSWEZfZGF0YV92YWxpZGF0ZWQ7CiAKIAkJb2Zm c2V0ID0gMDsKKworICAgICAgICAgICAgICAgIGlmKHN0YXR1cyA+IDEwMDAwIHx8IHN0YXR1 cyA8IDApeworICAgICAgICAgICAgICAgICAgICBpZiAobmV0X3JhdGVsaW1pdCgpKQorICAg ICAgICAgICAgICAgICAgICAgICAgbmV0ZGV2X3dhcm4odmlmLT5kZXYsICI/IT8gJXMgc3Rh dHVzIGVycj8gc3RhdHVzOiVkIG1ldGFfc2xvdHNfdXNlZDolZCBmbGFnczolZCBzaXplOiVk IGlwX3N1bW1lZDolZCBpc19nc286JWQgc2tiX3NoaW5mbyhza2IpLT5nc29fdHlwZTolZCB2 aWYtPm1ldGFbbnBvLm1ldGFfY29uc10uZ3NvX3R5cGU6JWQgbnJfZnJhZ3M6JWQgbnBvLmNv cHlfcHJvZDolZCwgbnBvLm1ldGFfY29uczolZFxuIiwgX19GVU5DVElPTl9fLHN0YXR1cywg c2NvLT5tZXRhX3Nsb3RzX3VzZWQsIGZsYWdzLCBza2JfaXNfZ3NvKHNrYikgLCBza2Jfc2hp bmZvKHNrYiktPmdzb190eXBlLCB2aWYtPm1ldGFbbnBvLm1ldGFfY29uc10uZ3NvX3R5cGUs IHZpZi0+bWV0YVtucG8ubWV0YV9jb25zXS5zaXplLCBza2ItPmlwX3N1bW1lZCwgc2tiX3No aW5mbyhza2IpLT5ucl9mcmFncyAsIG5wby5jb3B5X3Byb2QsIG5wby5tZXRhX2NvbnMpOwor ICAgICAgICAgICAgICAgIH0KKwkJCiAJCXJlc3AgPSBtYWtlX3J4X3Jlc3BvbnNlKHZpZiwg dmlmLT5tZXRhW25wby5tZXRhX2NvbnNdLmlkLAogCQkJCQlzdGF0dXMsIG9mZnNldCwKIAkJ CQkJdmlmLT5tZXRhW25wby5tZXRhX2NvbnNdLnNpemUsCkBAIC02MDAsOCArNjM1LDEwIEBA IHN0YXRpYyB2b2lkIHhlbnZpZl9yeF9hY3Rpb24oc3RydWN0IHhlbnZpZiAqdmlmKQogCX0K IAogZG9uZToKLQlpZiAobmVlZF90b19ub3RpZnkpCisJaWYgKG5lZWRfdG9fbm90aWZ5KXsK KwkgICAgICAgIGlmKCh2aWYtPnJ4LnJlcV9jb25zID4gdmlmLT5yeC5zcmluZy0+cmVxX3By b2QpICYmIG5ldF9yYXRlbGltaXQoKSl7bmV0ZGV2X3dhcm4odmlmLT5kZXYsICI/IT8gJXMg bmVlZCB0byBub3RpZnkgLi4gIHZpZi0+cnguc3JpbmctPnJlcV9wcm9kOiVkIHZpZi0+cngu cmVxX2NvbnM6JWQiLCBfX0ZVTkNUSU9OX18sIHZpZi0+cnguc3JpbmctPnJlcV9wcm9kLCB2 aWYtPnJ4LnJlcV9jb25zKTt9CiAJCW5vdGlmeV9yZW1vdGVfdmlhX2lycSh2aWYtPnJ4X2ly cSk7CisJfQogfQogCiB2b2lkIHhlbnZpZl9jaGVja19yeF94ZW52aWYoc3RydWN0IHhlbnZp ZiAqdmlmKQpAQCAtNzA1LDcgKzc0Miw3IEBAIHN0YXRpYyBpbnQgeGVudmlmX2NvdW50X3Jl cXVlc3RzKHN0cnVjdCB4ZW52aWYgKnZpZiwKIAkJICovCiAJCWlmICghZHJvcF9lcnIgJiYg c2xvdHMgPj0gWEVOX05FVEJLX0xFR0FDWV9TTE9UU19NQVgpIHsKIAkJCWlmIChuZXRfcmF0 ZWxpbWl0KCkpCi0JCQkJbmV0ZGV2X2RiZyh2aWYtPmRldiwKKwkJCQluZXRkZXZfd2Fybih2 aWYtPmRldiwKIAkJCQkJICAgIlRvbyBtYW55IHNsb3RzICglZCkgZXhjZWVkaW5nIGxpbWl0 ICglZCksIGRyb3BwaW5nIHBhY2tldFxuIiwKIAkJCQkJICAgc2xvdHMsIFhFTl9ORVRCS19M RUdBQ1lfU0xPVFNfTUFYKTsKIAkJCWRyb3BfZXJyID0gLUUyQklHOwpAQCAtNzEzLDcgKzc1 MCw2IEBAIHN0YXRpYyBpbnQgeGVudmlmX2NvdW50X3JlcXVlc3RzKHN0cnVjdCB4ZW52aWYg KnZpZiwKIAogCQlpZiAoZHJvcF9lcnIpCiAJCQl0eHAgPSAmZHJvcHBlZF90eDsKLQogCQlt ZW1jcHkodHhwLCBSSU5HX0dFVF9SRVFVRVNUKCZ2aWYtPnR4LCBjb25zICsgc2xvdHMpLAog CQkgICAgICAgc2l6ZW9mKCp0eHApKTsKIApAQCAtNzI4LDcgKzc2NCw3IEBAIHN0YXRpYyBp bnQgeGVudmlmX2NvdW50X3JlcXVlc3RzKHN0cnVjdCB4ZW52aWYgKnZpZiwKIAkJICovCiAJ CWlmICghZHJvcF9lcnIgJiYgdHhwLT5zaXplID4gZmlyc3QtPnNpemUpIHsKIAkJCWlmIChu ZXRfcmF0ZWxpbWl0KCkpCi0JCQkJbmV0ZGV2X2RiZyh2aWYtPmRldiwKKwkJCQluZXRkZXZf d2Fybih2aWYtPmRldiwKIAkJCQkJICAgIkludmFsaWQgdHggcmVxdWVzdCwgc2xvdCBzaXpl ICV1ID4gcmVtYWluaW5nIHNpemUgJXVcbiIsCiAJCQkJCSAgIHR4cC0+c2l6ZSwgZmlyc3Qt PnNpemUpOwogCQkJZHJvcF9lcnIgPSAtRUlPOwpAQCAtODIzLDYgKzg1OSwxMiBAQCBzdGF0 aWMgc3RydWN0IGdudHRhYl9jb3B5ICp4ZW52aWZfZ2V0X3JlcXVlc3RzKHN0cnVjdCB4ZW52 aWYgKnZpZiwKIAkJCWdvcC0+ZGVzdC5vZmZzZXQgPSBkc3Rfb2Zmc2V0OwogCQkJZ29wLT5k ZXN0LnUuZ21mbiA9IHZpcnRfdG9fbWZuKHBhZ2VfYWRkcmVzcyhwYWdlKSk7CiAKKyAgICAg ICAgICAgICAgICAgICAgICAgIGlmKHR4cC0+Z3JlZiA+IDEwMDAwIHx8IHR4cC0+Z3JlZiA8 PTApeworCSAgICAgICAgICAgICAgICAgICAgIGlmIChuZXRfcmF0ZWxpbWl0KCkpCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRkZXZfd2Fybih2aWYtPmRldiwgIj8h PyAlcyByZWYgb3V0IG9mIGJvdW5kcz8gZ3JlZjolZCBzcmNkb21pZDolZCBkc3Rkb21pZDol ZCBzbG90OiVkIG5yX3Nsb3RzOiVkXG4iLF9fRlVOQ1RJT05fXywgdHhwLT5ncmVmLCB2aWYt PmRvbWlkLCBET01JRF9TRUxGLCBzbG90LCBucl9zbG90cyk7CisgICAgICAgICAgICAgICAg ICAgICAgICB9CisJCisKIAkJCWlmIChkc3Rfb2Zmc2V0ICsgdHhwLT5zaXplID4gUEFHRV9T SVpFKSB7CiAJCQkJLyogVGhpcyBwYWdlIGNhbiBvbmx5IG1lcmdlIGEgcG9ydGlvbgogCQkJ CSAqIG9mIHR4IHJlcXVlc3QuIERvIG5vdCBpbmNyZW1lbnQgYW55CkBAIC0xMDAwLDcgKzEw NDIsNiBAQCBzdGF0aWMgaW50IHhlbnZpZl9nZXRfZXh0cmFzKHN0cnVjdCB4ZW52aWYgKnZp ZiwKIAkJCXhlbnZpZl9mYXRhbF90eF9lcnIodmlmKTsKIAkJCXJldHVybiAtRUJBRFI7CiAJ CX0KLQogCQltZW1jcHkoJmV4dHJhLCBSSU5HX0dFVF9SRVFVRVNUKCZ2aWYtPnR4LCBjb25z KSwKIAkJICAgICAgIHNpemVvZihleHRyYSkpOwogCQlpZiAodW5saWtlbHkoIWV4dHJhLnR5 cGUgfHwKQEAgLTEzOTMsNiArMTQzNCw3IEBAIHN0YXRpYyB1bnNpZ25lZCB4ZW52aWZfdHhf YnVpbGRfZ29wcyhzdHJ1Y3QgeGVudmlmICp2aWYsIGludCBidWRnZXQpCiAJCQlicmVhazsK IAogCQlpZHggPSB2aWYtPnR4LnJlcV9jb25zOworCiAJCXJtYigpOyAvKiBFbnN1cmUgdGhh dCB3ZSBzZWUgdGhlIHJlcXVlc3QgYmVmb3JlIHdlIGNvcHkgaXQuICovCiAJCW1lbWNweSgm dHhyZXEsIFJJTkdfR0VUX1JFUVVFU1QoJnZpZi0+dHgsIGlkeCksIHNpemVvZih0eHJlcSkp OwogCkBAIC0xNDIyLDggKzE0NjQsOSBAQCBzdGF0aWMgdW5zaWduZWQgeGVudmlmX3R4X2J1 aWxkX2dvcHMoc3RydWN0IHhlbnZpZiAqdmlmLCBpbnQgYnVkZ2V0KQogCQlpZHggKz0gcmV0 OwogCiAJCWlmICh1bmxpa2VseSh0eHJlcS5zaXplIDwgRVRIX0hMRU4pKSB7Ci0JCQluZXRk ZXZfZGJnKHZpZi0+ZGV2LAotCQkJCSAgICJCYWQgcGFja2V0IHNpemU6ICVkXG4iLCB0eHJl cS5zaXplKTsKKwkJCWlmIChuZXRfcmF0ZWxpbWl0KCkpCisJCQkJbmV0ZGV2X3dhcm4odmlm LT5kZXYsCisJCQkJCSAgICJCYWQgcGFja2V0IHNpemU6ICVkXG4iLCB0eHJlcS5zaXplKTsK IAkJCXhlbnZpZl90eF9lcnIodmlmLCAmdHhyZXEsIGlkeCk7CiAJCQlicmVhazsKIAkJfQpA QCAtMTQ0OCw4ICsxNDkxLDkgQEAgc3RhdGljIHVuc2lnbmVkIHhlbnZpZl90eF9idWlsZF9n b3BzKHN0cnVjdCB4ZW52aWYgKnZpZiwgaW50IGJ1ZGdldCkKIAkJc2tiID0gYWxsb2Nfc2ti KGRhdGFfbGVuICsgTkVUX1NLQl9QQUQgKyBORVRfSVBfQUxJR04sCiAJCQkJR0ZQX0FUT01J QyB8IF9fR0ZQX05PV0FSTik7CiAJCWlmICh1bmxpa2VseShza2IgPT0gTlVMTCkpIHsKLQkJ CW5ldGRldl9kYmcodmlmLT5kZXYsCi0JCQkJICAgIkNhbid0IGFsbG9jYXRlIGEgc2tiIGlu IHN0YXJ0X3htaXQuXG4iKTsKKwkJCWlmIChuZXRfcmF0ZWxpbWl0KCkpCisJCQkJbmV0ZGV2 X3dhcm4odmlmLT5kZXYsCisJCQkJCSAgICJDYW4ndCBhbGxvY2F0ZSBhIHNrYiBpbiBzdGFy dF94bWl0LlxuIik7CiAJCQl4ZW52aWZfdHhfZXJyKHZpZiwgJnR4cmVxLCBpZHgpOwogCQkJ YnJlYWs7CiAJCX0KQEAgLTE1NDQsNyArMTU4OCw4IEBAIHN0YXRpYyBpbnQgeGVudmlmX3R4 X3N1Ym1pdChzdHJ1Y3QgeGVudmlmICp2aWYpCiAKIAkJLyogQ2hlY2sgdGhlIHJlbWFwIGVy cm9yIGNvZGUuICovCiAJCWlmICh1bmxpa2VseSh4ZW52aWZfdHhfY2hlY2tfZ29wKHZpZiwg c2tiLCAmZ29wKSkpIHsKLQkJCW5ldGRldl9kYmcodmlmLT5kZXYsICJuZXRiYWNrIGdyYW50 IGZhaWxlZC5cbiIpOworCQkJaWYgKG5ldF9yYXRlbGltaXQoKSkKKwkJCQluZXRkZXZfd2Fy bih2aWYtPmRldiwgIm5ldGJhY2sgZ3JhbnQgZmFpbGVkLlxuIik7CiAJCQlza2Jfc2hpbmZv KHNrYiktPm5yX2ZyYWdzID0gMDsKIAkJCWtmcmVlX3NrYihza2IpOwogCQkJY29udGludWU7 CkBAIC0xNTgxLDggKzE2MjYsOSBAQCBzdGF0aWMgaW50IHhlbnZpZl90eF9zdWJtaXQoc3Ry dWN0IHhlbnZpZiAqdmlmKQogCQlza2JfcmVzZXRfbmV0d29ya19oZWFkZXIoc2tiKTsKIAog CQlpZiAoY2hlY2tzdW1fc2V0dXAodmlmLCBza2IpKSB7Ci0JCQluZXRkZXZfZGJnKHZpZi0+ ZGV2LAotCQkJCSAgICJDYW4ndCBzZXR1cCBjaGVja3N1bSBpbiBuZXRfdHhfYWN0aW9uXG4i KTsKKwkJCWlmIChuZXRfcmF0ZWxpbWl0KCkpCisJCQkJbmV0ZGV2X3dhcm4odmlmLT5kZXYs CisJCQkJCSAgICJDYW4ndCBzZXR1cCBjaGVja3N1bSBpbiBuZXRfdHhfYWN0aW9uXG4iKTsK IAkJCWtmcmVlX3NrYihza2IpOwogCQkJY29udGludWU7CiAJCX0K ------------0B81250F128D565F9 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Xen-devel mailing list Xen-devel@lists.xen.org http://lists.xen.org/xen-devel ------------0B81250F128D565F9--