From owner-freebsd-net@FreeBSD.ORG Wed Nov 21 19:44:59 2012 Return-Path: Delivered-To: freebsd-net@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 8A2BF22A; Wed, 21 Nov 2012 19:44:59 +0000 (UTC) (envelope-from jfvogel@gmail.com) Received: from mail-vb0-f54.google.com (mail-vb0-f54.google.com [209.85.212.54]) by mx1.freebsd.org (Postfix) with ESMTP id 057498FC12; Wed, 21 Nov 2012 19:44:58 +0000 (UTC) Received: by mail-vb0-f54.google.com with SMTP id l1so10015476vba.13 for ; Wed, 21 Nov 2012 11:44:58 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=Z6wmVCN3t8zQqEuPS74wjLm6snhh0Dvu1b/hxqYvUb0=; b=QnuPmNx1nnYiMynILbZOFS4CilquakkBnYnp2ljBwPgwD3Q1Zdo2D+uf6x0QFK9Mn1 qtxLSWs1UvWTMshLhWsvjdMzGjbsFsuK+pOX8iUXGQS/CT81MLjfwmhSm7GjxA241uiS lHwKX4O1/EhEjNTgaPtlzqXCsGhF+s1dvgjO77lBWdXxGz1y3LhIBol1FOYoeh2UKvZ4 S6qK7HzOKvRm0jzyBUQK+c/wUBWiHqixjpqfwXtHrVqUzhcqtYa1Mq5PkxhKbUoWBagm uGr4H6WJKbV6WnUWDFkaERM+4xPtCjuwyzeooVaDIZkwTdqEYrC2XiGBWtZqWrpPcPg0 f7hQ== MIME-Version: 1.0 Received: by 10.58.15.227 with SMTP id a3mr28889362ved.38.1353527097931; Wed, 21 Nov 2012 11:44:57 -0800 (PST) Received: by 10.59.3.165 with HTTP; Wed, 21 Nov 2012 11:44:57 -0800 (PST) In-Reply-To: <20121121062631.GJ67660@glebius.int.ru> References: <50AA8F24.7080604@gmail.com> <20121120111833.GC67660@FreeBSD.org> <20121121062631.GJ67660@glebius.int.ru> Date: Wed, 21 Nov 2012 11:44:57 -0800 Message-ID: Subject: Re: igb diver crashes in head@241037 From: Jack Vogel To: Gleb Smirnoff Content-Type: multipart/mixed; boundary=047d7b5daf50ddb67504cf069572 X-Content-Filtered-By: Mailman/MimeDel 2.1.14 Cc: Karim Fodil-Lemelin , jfv@freebsd.org, freebsd-net@freebsd.org X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 21 Nov 2012 19:44:59 -0000 --047d7b5daf50ddb67504cf069572 Content-Type: text/plain; charset=ISO-8859-1 Gleb, Here is a patch based on my latest igb internal code, I had not yet committed this as I was not completely confident about the start/queueing changes, I would love to have a wider testing base, so anyone that wishes to test this... Its against HEAD. It does a few things: change mq_start to ALWAYS queue, hence mq_start_locked no longer takes an mbuf pointer arg. Second, it gets rid of OACTIVE as far as the queues go, its still used only in a device wide up/down sense. Last, there is a flow control display added, this follows what our linux driver does, it gives you the current flow control state when a link up event happens. I was asked to do this by my validation group, and it seemed kinda handy... Let me know what you think, Jack On Tue, Nov 20, 2012 at 10:26 PM, Gleb Smirnoff wrote: > Jack, > > On Tue, Nov 20, 2012 at 09:19:54AM -0800, Jack Vogel wrote: > J> > I'd suggest the following code: > J> > > J> > if (m) > J> > drbr_enqueue(ifp, txr->br, m); > J> > err = igb_mq_start_locked(ifp, txr, NULL); > J> > > J> > Which eventually leads us to all invocations of igb_mq_start_locked() > J> > called > J> > with third argument as NULL. This allows us to simplify this function. > J> > > J> > Patch for review attached. > J> > > J> > > J> Yes Gleb, I already have code in my internal tree which simply removes > an > J> mbuf > J> pointer form the start_locked call and ALWAYS does a dequeue, start > J> similarly > J> will always enqueue. I just have been busy with ixgbe for a bit and have > J> not gotten > J> it committed yet. > > Since ixgbe work is performance tuning and this patch closes a kernel > crash, > I'd ask to preempt the ixgbe job with this patch. :) > > Or you can approve my patch and I will check it in. > > -- > Totus tuus, Glebius. > --047d7b5daf50ddb67504cf069572 Content-Type: application/octet-stream; name="if_igb.patch" Content-Disposition: attachment; filename="if_igb.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_h9sv1y400 LS0tIGlmX2lnYi5jCTIwMTItMTAtMzAgMDk6NDY6NTIuNDc4MTQ3MjIxIC0wNzAwCisrKyBpZl9p Z2IubmV3LmMJMjAxMi0xMS0yMSAxMTozMjowMS4xNzU2MDU0NjEgLTA4MDAKQEAgLTEwMCw3ICsx MDAsNyBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKgogICogIERyaXZlciB2ZXJzaW9uOgogICoqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Ki8KLWNoYXIgaWdiX2RyaXZlcl92ZXJzaW9uW10gPSAidmVyc2lvbiAtIDIuMy41IjsKK2NoYXIg aWdiX2RyaXZlcl92ZXJzaW9uW10gPSAidmVyc2lvbiAtIDIuMy44IjsKIAogCiAvKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqCkBAIC0xODEsOCArMTgxLDcgQEAKIHN0YXRpYyBpbnQJaWdiX3Jlc3VtZShkZXZpY2VfdCk7 CiAjaWYgX19GcmVlQlNEX3ZlcnNpb24gPj0gODAwMDAwCiBzdGF0aWMgaW50CWlnYl9tcV9zdGFy dChzdHJ1Y3QgaWZuZXQgKiwgc3RydWN0IG1idWYgKik7Ci1zdGF0aWMgaW50CWlnYl9tcV9zdGFy dF9sb2NrZWQoc3RydWN0IGlmbmV0ICosCi0JCSAgICBzdHJ1Y3QgdHhfcmluZyAqLCBzdHJ1Y3Qg bWJ1ZiAqKTsKK3N0YXRpYyBpbnQJaWdiX21xX3N0YXJ0X2xvY2tlZChzdHJ1Y3QgaWZuZXQgKiwg c3RydWN0IHR4X3JpbmcgKik7CiBzdGF0aWMgdm9pZAlpZ2JfcWZsdXNoKHN0cnVjdCBpZm5ldCAq KTsKIHN0YXRpYyB2b2lkCWlnYl9kZWZlcnJlZF9tcV9zdGFydCh2b2lkICosIGludCk7CiAjZWxz ZQpAQCAtODQ1LDcgKzg0NCw3IEBACiAJCQkvKiBQcm9jZXNzIHRoZSBzdGFjayBxdWV1ZSBvbmx5 IGlmIG5vdCBkZXBsZXRlZCAqLwogCQkJaWYgKCgodHhyLT5xdWV1ZV9zdGF0dXMgJiBJR0JfUVVF VUVfREVQTEVURUQpID09IDApICYmCiAJCQkgICAgIWRyYnJfZW1wdHkoaWZwLCB0eHItPmJyKSkK LQkJCQlpZ2JfbXFfc3RhcnRfbG9ja2VkKGlmcCwgdHhyLCBOVUxMKTsKKwkJCQlpZ2JfbXFfc3Rh cnRfbG9ja2VkKGlmcCwgdHhyKTsKICNlbHNlCiAJCQlpZiAoIUlGUV9EUlZfSVNfRU1QVFkoJmlm cC0+aWZfc25kKSkKIAkJCQlpZ2Jfc3RhcnRfbG9ja2VkKHR4ciwgaWZwKTsKQEAgLTk1OSw2OCAr OTU4LDQ3IEBACiAKIAl0eHIgPSAmYWRhcHRlci0+dHhfcmluZ3NbaV07CiAJcXVlID0gJmFkYXB0 ZXItPnF1ZXVlc1tpXTsKLQlpZiAoKCh0eHItPnF1ZXVlX3N0YXR1cyAmIElHQl9RVUVVRV9ERVBM RVRFRCkgPT0gMCkgJiYKLQkgICAgSUdCX1RYX1RSWUxPQ0sodHhyKSkgewotCQlzdHJ1Y3QgbWJ1 ZiAqcG0gPSBOVUxMOwotCQkvKgotCQkqKiBUcnkgdG8gcXVldWUgZmlyc3QgdG8gYXZvaWQKLQkJ Kiogb3V0LW9mLW9yZGVyIGRlbGl2ZXJ5LCBidXQgCi0JCSoqIHNldHRsZSBmb3IgaXQgaWYgdGhh dCBmYWlscwotCQkqLwotCQlpZiAobSAmJiBkcmJyX2VucXVldWUoaWZwLCB0eHItPmJyLCBtKSkK LQkJCXBtID0gbTsKLQkJZXJyID0gaWdiX21xX3N0YXJ0X2xvY2tlZChpZnAsIHR4ciwgcG0pOwot CQlJR0JfVFhfVU5MT0NLKHR4cik7Ci0JfSBlbHNlIHsKLQkJZXJyID0gZHJicl9lbnF1ZXVlKGlm cCwgdHhyLT5iciwgbSk7Ci0JCXRhc2txdWV1ZV9lbnF1ZXVlKHF1ZS0+dHEsICZ0eHItPnR4cV90 YXNrKTsKLQl9CisJdGFza3F1ZXVlX2VucXVldWUocXVlLT50cSwgJnR4ci0+dHhxX3Rhc2spOwog CiAJcmV0dXJuIChlcnIpOwogfQogCiBzdGF0aWMgaW50Ci1pZ2JfbXFfc3RhcnRfbG9ja2VkKHN0 cnVjdCBpZm5ldCAqaWZwLCBzdHJ1Y3QgdHhfcmluZyAqdHhyLCBzdHJ1Y3QgbWJ1ZiAqbSkKK2ln Yl9tcV9zdGFydF9sb2NrZWQoc3RydWN0IGlmbmV0ICppZnAsIHN0cnVjdCB0eF9yaW5nICp0eHIp CiB7CiAJc3RydWN0IGFkYXB0ZXIgICphZGFwdGVyID0gdHhyLT5hZGFwdGVyOwotICAgICAgICBz dHJ1Y3QgbWJ1ZiAgICAgKm5leHQ7Ci0gICAgICAgIGludCAgICAgICAgICAgICBlcnIgPSAwLCBl bnE7CisgICAgICAgIHN0cnVjdCBtYnVmICAgICAqbTsKKyAgICAgICAgaW50ICAgICAgICAgICAg IGVyciA9IDAsIGVucSA9IDA7CiAKIAlJR0JfVFhfTE9DS19BU1NFUlQodHhyKTsKIAogCWlmICgo KGlmcC0+aWZfZHJ2X2ZsYWdzICYgSUZGX0RSVl9SVU5OSU5HKSA9PSAwKSB8fAotCSAgICAodHhy LT5xdWV1ZV9zdGF0dXMgJiBJR0JfUVVFVUVfREVQTEVURUQpIHx8Ci0JICAgIGFkYXB0ZXItPmxp bmtfYWN0aXZlID09IDApIHsKLQkJaWYgKG0gIT0gTlVMTCkKLQkJCWVyciA9IGRyYnJfZW5xdWV1 ZShpZnAsIHR4ci0+YnIsIG0pOwotCQlyZXR1cm4gKGVycik7Ci0JfQorCSAgICBhZGFwdGVyLT5s aW5rX2FjdGl2ZSA9PSAwKQorCQlyZXR1cm4gKEVORVRET1dOKTsKIAotCWVucSA9IDA7Ci0JaWYg KG0gPT0gTlVMTCkgewotCQluZXh0ID0gZHJicl9kZXF1ZXVlKGlmcCwgdHhyLT5icik7Ci0JfSBl bHNlIGlmIChkcmJyX25lZWRzX2VucXVldWUoaWZwLCB0eHItPmJyKSkgewotCQlpZiAoKGVyciA9 IGRyYnJfZW5xdWV1ZShpZnAsIHR4ci0+YnIsIG0pKSAhPSAwKQotCQkJcmV0dXJuIChlcnIpOwot CQluZXh0ID0gZHJicl9kZXF1ZXVlKGlmcCwgdHhyLT5icik7Ci0JfSBlbHNlCi0JCW5leHQgPSBt OworCWlmICh0eHItPnF1ZXVlX3N0YXR1cyAmIElHQl9RVUVVRV9ERVBMRVRFRCkKKwkJaWdiX3R4 ZW9mKHR4cik7CisJaWYgKHR4ci0+dHhfYXZhaWwgPj0gSUdCX01BWF9TQ0FUVEVSKQorICAgICAg ICAgICAgICAgIHR4ci0+cXVldWVfc3RhdHVzICY9IH5JR0JfUVVFVUVfREVQTEVURUQ7CisJZWxz ZQorCQlyZXR1cm4gKEVJTyk7CiAKIAkvKiBQcm9jZXNzIHRoZSBxdWV1ZSAqLwotCXdoaWxlIChu ZXh0ICE9IE5VTEwpIHsKLQkJaWYgKChlcnIgPSBpZ2JfeG1pdCh0eHIsICZuZXh0KSkgIT0gMCkg ewotCQkJaWYgKG5leHQgIT0gTlVMTCkKLQkJCQllcnIgPSBkcmJyX2VucXVldWUoaWZwLCB0eHIt PmJyLCBuZXh0KTsKKwltID0gZHJicl9kZXF1ZXVlKGlmcCwgdHhyLT5icik7CisJd2hpbGUgKG0g IT0gTlVMTCkgeworCQlpZiAoKGVyciA9IGlnYl94bWl0KHR4ciwgJm0pKSAhPSAwKSB7CisJCQlp ZiAobSAhPSBOVUxMKQorCQkJCWVyciA9IGRyYnJfZW5xdWV1ZShpZnAsIHR4ci0+YnIsIG0pOwog CQkJYnJlYWs7CiAJCX0KIAkJZW5xKys7Ci0JCWlmcC0+aWZfb2J5dGVzICs9IG5leHQtPm1fcGt0 aGRyLmxlbjsKLQkJaWYgKG5leHQtPm1fZmxhZ3MgJiBNX01DQVNUKQorCQlpZnAtPmlmX29ieXRl cyArPSBtLT5tX3BrdGhkci5sZW47CisJCWlmIChtLT5tX2ZsYWdzICYgTV9NQ0FTVCkKIAkJCWlm cC0+aWZfb21jYXN0cysrOwotCQlFVEhFUl9CUEZfTVRBUChpZnAsIG5leHQpOworCQlFVEhFUl9C UEZfTVRBUChpZnAsIG0pOwogCQlpZiAoKGlmcC0+aWZfZHJ2X2ZsYWdzICYgSUZGX0RSVl9SVU5O SU5HKSA9PSAwKQogCQkJYnJlYWs7Ci0JCW5leHQgPSBkcmJyX2RlcXVldWUoaWZwLCB0eHItPmJy KTsKKwkJbSA9IGRyYnJfZGVxdWV1ZShpZnAsIHR4ci0+YnIpOwogCX0KIAlpZiAoZW5xID4gMCkg ewogCQkvKiBTZXQgdGhlIHdhdGNoZG9nICovCkBAIC0xMDQ2LDcgKzEwMjQsNyBAQAogCiAJSUdC X1RYX0xPQ0sodHhyKTsKIAlpZiAoIWRyYnJfZW1wdHkoaWZwLCB0eHItPmJyKSkKLQkJaWdiX21x X3N0YXJ0X2xvY2tlZChpZnAsIHR4ciwgTlVMTCk7CisJCWlnYl9tcV9zdGFydF9sb2NrZWQoaWZw LCB0eHIpOwogCUlHQl9UWF9VTkxPQ0sodHhyKTsKIH0KIApAQCAtMTM5OCw3ICsxMzc2LDcgQEAK IAkJLyogUHJvY2VzcyB0aGUgc3RhY2sgcXVldWUgb25seSBpZiBub3QgZGVwbGV0ZWQgKi8KIAkJ aWYgKCgodHhyLT5xdWV1ZV9zdGF0dXMgJiBJR0JfUVVFVUVfREVQTEVURUQpID09IDApICYmCiAJ CSAgICAhZHJicl9lbXB0eShpZnAsIHR4ci0+YnIpKQotCQkJaWdiX21xX3N0YXJ0X2xvY2tlZChp ZnAsIHR4ciwgTlVMTCk7CisJCQlpZ2JfbXFfc3RhcnRfbG9ja2VkKGlmcCwgdHhyKTsKICNlbHNl CiAJCWlmICghSUZRX0RSVl9JU19FTVBUWSgmaWZwLT5pZl9zbmQpKQogCQkJaWdiX3N0YXJ0X2xv Y2tlZCh0eHIsIGlmcCk7CkBAIC0xNDQ5LDcgKzE0MjcsNyBAQAogCQkJLyogUHJvY2VzcyB0aGUg c3RhY2sgcXVldWUgb25seSBpZiBub3QgZGVwbGV0ZWQgKi8KIAkJCWlmICgoKHR4ci0+cXVldWVf c3RhdHVzICYgSUdCX1FVRVVFX0RFUExFVEVEKSA9PSAwKSAmJgogCQkJICAgICFkcmJyX2VtcHR5 KGlmcCwgdHhyLT5icikpCi0JCQkJaWdiX21xX3N0YXJ0X2xvY2tlZChpZnAsIHR4ciwgTlVMTCk7 CisJCQkJaWdiX21xX3N0YXJ0X2xvY2tlZChpZnAsIHR4cik7CiAjZWxzZQogCQkJaWYgKCFJRlFf RFJWX0lTX0VNUFRZKCZpZnAtPmlmX3NuZCkpCiAJCQkJaWdiX3N0YXJ0X2xvY2tlZCh0eHIsIGlm cCk7CkBAIC0xNTQ5LDcgKzE1MjcsNyBAQAogCQl9IHdoaWxlIChsb29wLS0gJiYgbW9yZSk7CiAj aWYgX19GcmVlQlNEX3ZlcnNpb24gPj0gODAwMDAwCiAJCWlmICghZHJicl9lbXB0eShpZnAsIHR4 ci0+YnIpKQotCQkJaWdiX21xX3N0YXJ0X2xvY2tlZChpZnAsIHR4ciwgTlVMTCk7CisJCQlpZ2Jf bXFfc3RhcnRfbG9ja2VkKGlmcCwgdHhyKTsKICNlbHNlCiAJCWlmICghSUZRX0RSVl9JU19FTVBU WSgmaWZwLT5pZl9zbmQpKQogCQkJaWdiX3N0YXJ0X2xvY2tlZCh0eHIsIGlmcCk7CkBAIC0xNTg2 LDcgKzE1NjQsNyBAQAogCS8qIFByb2Nlc3MgdGhlIHN0YWNrIHF1ZXVlIG9ubHkgaWYgbm90IGRl cGxldGVkICovCiAJaWYgKCgodHhyLT5xdWV1ZV9zdGF0dXMgJiBJR0JfUVVFVUVfREVQTEVURUQp ID09IDApICYmCiAJICAgICFkcmJyX2VtcHR5KGlmcCwgdHhyLT5icikpCi0JCWlnYl9tcV9zdGFy dF9sb2NrZWQoaWZwLCB0eHIsIE5VTEwpOworCQlpZ2JfbXFfc3RhcnRfbG9ja2VkKGlmcCwgdHhy KTsKICNlbHNlCiAJaWYgKCFJRlFfRFJWX0lTX0VNUFRZKCZpZnAtPmlmX3NuZCkpCiAJCWlnYl9z dGFydF9sb2NrZWQodHhyLCBpZnApOwpAQCAtMTY5NSw3ICsxNjczLDYgQEAKIGlnYl9tZWRpYV9z dGF0dXMoc3RydWN0IGlmbmV0ICppZnAsIHN0cnVjdCBpZm1lZGlhcmVxICppZm1yKQogewogCXN0 cnVjdCBhZGFwdGVyICphZGFwdGVyID0gaWZwLT5pZl9zb2Z0YzsKLQl1X2NoYXIgZmliZXJfdHlw ZSA9IElGTV8xMDAwX1NYOwogCiAJSU5JVF9ERUJVR09VVCgiaWdiX21lZGlhX3N0YXR1czogYmVn aW4iKTsKIApAQCAtMTcxMiwyNiArMTY4OSwzMSBAQAogCiAJaWZtci0+aWZtX3N0YXR1cyB8PSBJ Rk1fQUNUSVZFOwogCi0JaWYgKChhZGFwdGVyLT5ody5waHkubWVkaWFfdHlwZSA9PSBlMTAwMF9t ZWRpYV90eXBlX2ZpYmVyKSB8fAotCSAgICAoYWRhcHRlci0+aHcucGh5Lm1lZGlhX3R5cGUgPT0g ZTEwMDBfbWVkaWFfdHlwZV9pbnRlcm5hbF9zZXJkZXMpKQotCQlpZm1yLT5pZm1fYWN0aXZlIHw9 IGZpYmVyX3R5cGUgfCBJRk1fRkRYOwotCWVsc2UgewotCQlzd2l0Y2ggKGFkYXB0ZXItPmxpbmtf c3BlZWQpIHsKLQkJY2FzZSAxMDoKLQkJCWlmbXItPmlmbV9hY3RpdmUgfD0gSUZNXzEwX1Q7Ci0J CQlicmVhazsKLQkJY2FzZSAxMDA6Ci0JCQlpZm1yLT5pZm1fYWN0aXZlIHw9IElGTV8xMDBfVFg7 Ci0JCQlicmVhazsKLQkJY2FzZSAxMDAwOgotCQkJaWZtci0+aWZtX2FjdGl2ZSB8PSBJRk1fMTAw MF9UOwotCQkJYnJlYWs7Ci0JCX0KLQkJaWYgKGFkYXB0ZXItPmxpbmtfZHVwbGV4ID09IEZVTExf RFVQTEVYKQotCQkJaWZtci0+aWZtX2FjdGl2ZSB8PSBJRk1fRkRYOworCXN3aXRjaCAoYWRhcHRl ci0+bGlua19zcGVlZCkgeworCWNhc2UgMTA6CisJCWlmbXItPmlmbV9hY3RpdmUgfD0gSUZNXzEw X1Q7CisJCWJyZWFrOworCWNhc2UgMTAwOgorCQkvKgorCQkqKiBTdXBwb3J0IGZvciAxMDBNYiBT RlAgLSB0aGVzZSBhcmUgRmliZXIgCisJCSoqIGJ1dCB0aGUgbWVkaWEgdHlwZSBhcHBlYXJzIGFz IHNlcmRlcworCQkqLworCQlpZiAoYWRhcHRlci0+aHcucGh5Lm1lZGlhX3R5cGUgPT0KKwkJICAg IGUxMDAwX21lZGlhX3R5cGVfaW50ZXJuYWxfc2VyZGVzKQorCQkJaWZtci0+aWZtX2FjdGl2ZSB8 PSBJRk1fMTAwX0ZYOwogCQllbHNlCi0JCQlpZm1yLT5pZm1fYWN0aXZlIHw9IElGTV9IRFg7CisJ CQlpZm1yLT5pZm1fYWN0aXZlIHw9IElGTV8xMDBfVFg7CisJCWJyZWFrOworCWNhc2UgMTAwMDoK KwkJaWZtci0+aWZtX2FjdGl2ZSB8PSBJRk1fMTAwMF9UOworCQlicmVhazsKIAl9CisKKwlpZiAo YWRhcHRlci0+bGlua19kdXBsZXggPT0gRlVMTF9EVVBMRVgpCisJCWlmbXItPmlmbV9hY3RpdmUg fD0gSUZNX0ZEWDsKKwllbHNlCisJCWlmbXItPmlmbV9hY3RpdmUgfD0gSUZNX0hEWDsKKwogCUlH Ql9DT1JFX1VOTE9DSyhhZGFwdGVyKTsKIH0KIApAQCAtMjE4MCw3ICsyMTYyLDcgQEAKIAlzdHJ1 Y3QgaWZuZXQJCSppZnAgPSBhZGFwdGVyLT5pZnA7CiAJc3RydWN0IHR4X3JpbmcJCSp0eHIgPSBh ZGFwdGVyLT50eF9yaW5nczsKIAlzdHJ1Y3QgaWdiX3F1ZXVlCSpxdWUgPSBhZGFwdGVyLT5xdWV1 ZXM7Ci0JaW50CQkJaHVuZyA9IDAsIGJ1c3kgPSAwOworCWludAkJCWh1bmcgPSAwOwogCiAKIAlJ R0JfQ09SRV9MT0NLX0FTU0VSVChhZGFwdGVyKTsKQEAgLTIxOTAsMjYgKzIxNzIsMTYgQEAKIAog ICAgICAgICAvKgogICAgICAgICAqKiBDaGVjayB0aGUgVFggcXVldWVzIHN0YXR1cwotCSoqCS0g Y2VudHJhbCBsb2NrZWQgaGFuZGxpbmcgb2YgT0FDVElWRQotCSoqCS0gd2F0Y2hkb2cgb25seSBp ZiBhbGwgcXVldWVzIHNob3cgaHVuZwogICAgICAgICAqLwogCWZvciAoaW50IGkgPSAwOyBpIDwg YWRhcHRlci0+bnVtX3F1ZXVlczsgaSsrLCBxdWUrKywgdHhyKyspIHsKIAkJaWYgKCh0eHItPnF1 ZXVlX3N0YXR1cyAmIElHQl9RVUVVRV9IVU5HKSAmJgogCQkgICAgKGFkYXB0ZXItPnBhdXNlX2Zy YW1lcyA9PSAwKSkKIAkJCSsraHVuZzsKLQkJaWYgKHR4ci0+cXVldWVfc3RhdHVzICYgSUdCX1FV RVVFX0RFUExFVEVEKQotCQkJKytidXN5OwogCQlpZiAoKHR4ci0+cXVldWVfc3RhdHVzICYgSUdC X1FVRVVFX0lETEUpID09IDApCiAJCQl0YXNrcXVldWVfZW5xdWV1ZShxdWUtPnRxLCAmcXVlLT5x dWVfdGFzayk7CiAJfQogCWlmIChodW5nID09IGFkYXB0ZXItPm51bV9xdWV1ZXMpCiAJCWdvdG8g dGltZW91dDsKLQlpZiAoYnVzeSA9PSBhZGFwdGVyLT5udW1fcXVldWVzKQotCQlpZnAtPmlmX2Ry dl9mbGFncyB8PSBJRkZfRFJWX09BQ1RJVkU7Ci0JZWxzZSBpZiAoKGlmcC0+aWZfZHJ2X2ZsYWdz ICYgSUZGX0RSVl9PQUNUSVZFKSAmJgotCSAgICAoYnVzeSA8IGFkYXB0ZXItPm51bV9xdWV1ZXMp KQotCQlpZnAtPmlmX2Rydl9mbGFncyAmPSB+SUZGX0RSVl9PQUNUSVZFOwotCiAJYWRhcHRlci0+ cGF1c2VfZnJhbWVzID0gMDsKIAljYWxsb3V0X3Jlc2V0KCZhZGFwdGVyLT50aW1lciwgaHosIGln Yl9sb2NhbF90aW1lciwgYWRhcHRlcik7CiAjaWZuZGVmIERFVklDRV9QT0xMSU5HCkBAIC0yMjM0 LDExICsyMjA2LDEzIEBACiBzdGF0aWMgdm9pZAogaWdiX3VwZGF0ZV9saW5rX3N0YXR1cyhzdHJ1 Y3QgYWRhcHRlciAqYWRhcHRlcikKIHsKLQlzdHJ1Y3QgZTEwMDBfaHcgKmh3ID0gJmFkYXB0ZXIt Pmh3OwotCXN0cnVjdCBpZm5ldCAqaWZwID0gYWRhcHRlci0+aWZwOwotCWRldmljZV90IGRldiA9 IGFkYXB0ZXItPmRldjsKLQlzdHJ1Y3QgdHhfcmluZyAqdHhyID0gYWRhcHRlci0+dHhfcmluZ3M7 Ci0JdTMyIGxpbmtfY2hlY2ssIHRoc3RhdCwgY3RybDsKKwlzdHJ1Y3QgZTEwMDBfaHcJCSpodyA9 ICZhZGFwdGVyLT5odzsKKwlzdHJ1Y3QgZTEwMDBfZmNfaW5mbwkqZmMgPSAmaHctPmZjOworCXN0 cnVjdCBpZm5ldAkJKmlmcCA9IGFkYXB0ZXItPmlmcDsKKwlkZXZpY2VfdAkJZGV2ID0gYWRhcHRl ci0+ZGV2OworCXN0cnVjdCB0eF9yaW5nCQkqdHhyID0gYWRhcHRlci0+dHhfcmluZ3M7CisJdTMy CQkJbGlua19jaGVjaywgdGhzdGF0LCBjdHJsOworCWNoYXIJCQkqZmxvd2N0bCA9IE5VTEw7CiAK IAlsaW5rX2NoZWNrID0gdGhzdGF0ID0gY3RybCA9IDA7CiAKQEAgLTIyNzYsMTUgKzIyNTAsMzMg QEAKIAkJY3RybCA9IEUxMDAwX1JFQURfUkVHKGh3LCBFMTAwMF9DVFJMX0VYVCk7CiAJfQogCisJ LyogR2V0IHRoZSBmbG93IGNvbnRyb2wgZm9yIGRpc3BsYXkgKi8KKwlzd2l0Y2ggKGZjLT5jdXJy ZW50X21vZGUpIHsKKwljYXNlIGUxMDAwX2ZjX3J4X3BhdXNlOgorCQlmbG93Y3RsID0gIlJYIjsK KwkJYnJlYWs7CQorCWNhc2UgZTEwMDBfZmNfdHhfcGF1c2U6CisJCWZsb3djdGwgPSAiVFgiOwor CQlicmVhazsJCisJY2FzZSBlMTAwMF9mY19mdWxsOgorCQlmbG93Y3RsID0gIkZ1bGwiOworCQli cmVhazsJCisJY2FzZSBlMTAwMF9mY19ub25lOgorCWRlZmF1bHQ6CisJCWZsb3djdGwgPSAiTm9u ZSI7CisJCWJyZWFrOwkKKwl9CisKIAkvKiBOb3cgd2UgY2hlY2sgaWYgYSB0cmFuc2l0aW9uIGhh cyBoYXBwZW5lZCAqLwogCWlmIChsaW5rX2NoZWNrICYmIChhZGFwdGVyLT5saW5rX2FjdGl2ZSA9 PSAwKSkgewogCQllMTAwMF9nZXRfc3BlZWRfYW5kX2R1cGxleCgmYWRhcHRlci0+aHcsIAogCQkg ICAgJmFkYXB0ZXItPmxpbmtfc3BlZWQsICZhZGFwdGVyLT5saW5rX2R1cGxleCk7CiAJCWlmIChi b290dmVyYm9zZSkKLQkJCWRldmljZV9wcmludGYoZGV2LCAiTGluayBpcyB1cCAlZCBNYnBzICVz XG4iLAorCQkJZGV2aWNlX3ByaW50ZihkZXYsICJMaW5rIGlzIHVwICVkIE1icHMgJXMsIgorCQkJ ICAgICIgRmxvdyBDb250cm9sOiAlc1xuIiwKIAkJCSAgICBhZGFwdGVyLT5saW5rX3NwZWVkLAog CQkJICAgICgoYWRhcHRlci0+bGlua19kdXBsZXggPT0gRlVMTF9EVVBMRVgpID8KLQkJCSAgICAi RnVsbCBEdXBsZXgiIDogIkhhbGYgRHVwbGV4IikpOworCQkJICAgICJGdWxsIER1cGxleCIgOiAi SGFsZiBEdXBsZXgiKSwgZmxvd2N0bCk7CiAJCWFkYXB0ZXItPmxpbmtfYWN0aXZlID0gMTsKIAkJ aWZwLT5pZl9iYXVkcmF0ZSA9IGFkYXB0ZXItPmxpbmtfc3BlZWQgKiAxMDAwMDAwOwogCQlpZiAo KGN0cmwgJiBFMTAwMF9DVFJMX0VYVF9MSU5LX01PREVfR01JSSkgJiYK --047d7b5daf50ddb67504cf069572--