From owner-freebsd-net@FreeBSD.ORG Sun Sep 29 21:43:43 2013 Return-Path: Delivered-To: freebsd-net@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 158E852D for ; Sun, 29 Sep 2013 21:43:43 +0000 (UTC) (envelope-from syuu@dokukino.com) Received: from mail-pd0-x232.google.com (mail-pd0-x232.google.com [IPv6:2607:f8b0:400e:c02::232]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id DA1042A61 for ; Sun, 29 Sep 2013 21:43:42 +0000 (UTC) Received: by mail-pd0-f178.google.com with SMTP id w10so4808594pde.37 for ; Sun, 29 Sep 2013 14:43:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=dokukino.com; s=google; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc:content-type; bh=HChoIj1Eoa+jl84jUqFJX/sNTuMWrLoXaQYfafmwI64=; b=aW3NQZbFHQQ9hoXiuG6Nmw/20QP1/M/LUFCjdOi6MoeotMC+BBRemT0UYEGsSEVeW/ /hHtfeBWheFUPvKdRN4Wr+gpQetCxEqXd2xrIEErKk19vmqkHJoSR2R7KvOkRdPX7W2+ 9dmxbH/fpK+Wih3NJgcm9FYl8e1MZHKuq+CBk= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc:content-type; bh=HChoIj1Eoa+jl84jUqFJX/sNTuMWrLoXaQYfafmwI64=; b=MpBSV68HhMyS1OilXTOPXIGeIigsMce7SV8ejj2aimi8Fdok91tRRegvGmBzxdXssX zW/SivOk22JshgDMpJ2uUA2y0dyagTHhaRdUny32GJOEylQKjPalaZ0k0Z9a8kS6IOIJ kcptYai6xMk1Ry+1InmkpwNl6O6GOxuKPYGiWtlphizNZN1FsgqFWjMd7u9ZCfxJ/CZH 1Az9bIxjsCrfwCNSGHMv9D7RDDgSaBp2icqTytwKq68hfalW9BsOmVps5yfgPO7Y/7jE URto1qXkNAne9r9vLne4HsccfDRMw0LoCA1HP3uZfF+hW94XSNrSzW+GehJoTXZD7HsE OYmQ== X-Gm-Message-State: ALoCoQl2ZsRgtye2Qt2SE1RRQFOR6j2yn+tkQha0PQMtXM404esp05lAY4lRm1WVMYElqjrOs/8D X-Received: by 10.68.172.36 with SMTP id az4mr20496454pbc.48.1380491022363; Sun, 29 Sep 2013 14:43:42 -0700 (PDT) MIME-Version: 1.0 Received: by 10.68.220.138 with HTTP; Sun, 29 Sep 2013 14:43:02 -0700 (PDT) In-Reply-To: References: From: Takuya ASADA Date: Mon, 30 Sep 2013 06:43:02 +0900 Message-ID: Subject: Re: Adding Flow Director sysctls to ixgbe(4) (was: netmap: traffic distribution) To: hiren panchasara Content-Type: multipart/mixed; boundary=047d7b10c96501056a04e78c9de7 X-Content-Filtered-By: Mailman/MimeDel 2.1.14 Cc: "freebsd-net@freebsd.org" , Adrian Chadd 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: Sun, 29 Sep 2013 21:43:43 -0000 --047d7b10c96501056a04e78c9de7 Content-Type: text/plain; charset=UTF-8 Hi, I just implemented device specific ioctl with device specific configuration tool. It still doesn't support some important features such as: - FDIR enable / disable via sysctl or tunable params - ATR enable / disable via sysctl or tunable params - IPv6 support on signature filter - signature filter list - support perfect filter But, at least it can configure signature filter manually. Usage is as follows: Usage: ixgbetool [operation] add_sig_filter del_sig_filter 2013/9/28 hiren panchasara > > > > On Fri, Sep 27, 2013 at 1:58 AM, Takuya ASADA wrote: > >> 2013/9/27 Adrian Chadd >> >>> On 27 September 2013 00:43, hiren panchasara >> > wrote: >>> >>> >>>> Takuya, >>>> >>>> I see a lot of responses/comments on proposed changes. Was anything >>>> decided >>>> at the end of it? As far as I can tell, its still not committed to the >>>> tree. >>>> >>> >>> I'd rather see an ioctl API for that chipset and then have a separate >>> tool program it for now. >>> >> >> Ah, like cxgbetool and cxgbe? (it has device specific tool and ioctls) >> http://svnweb.freebsd.org/base/head/tools/tools/cxgbetool/ >> > > Something like this for ixgbe would be nice to start with, imo. > > Cheers, > Hiren > >> http://svnweb.freebsd.org/base/head/sys/dev/cxgb/ >> >> >>> So, how bout we hack that up? :) >>> >> >> Sound's interesting ;-) >> Could you tell me more detail about your idea? >> >> > --047d7b10c96501056a04e78c9de7 Content-Type: application/octet-stream; name="ixgbetool-v001.diff" Content-Disposition: attachment; filename="ixgbetool-v001.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_hm6s7nuw0 ZGlmZiAtLWdpdCBhL3N5cy9kZXYvaXhnYmUvaXhnYmUuYyBiL3N5cy9kZXYvaXhnYmUvaXhnYmUu YwppbmRleCBiNjVkZjcyLi5iZWIzMzY2IDEwMDY0NAotLS0gYS9zeXMvZGV2L2l4Z2JlL2l4Z2Jl LmMKKysrIGIvc3lzL2Rldi9peGdiZS9peGdiZS5jCkBAIC0zNSw3ICszNSw5IEBACiAKICNpbmNs dWRlICJvcHRfaW5ldC5oIgogI2luY2x1ZGUgIm9wdF9pbmV0Ni5oIgorIAogI2luY2x1ZGUgIml4 Z2JlLmgiCisjaW5jbHVkZSAiaXhnYmVfaW9jdGwuaCIKIAogLyoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICogIFNl dCB0aGlzIHRvIG9uZSB0byBkaXNwbGF5IGRlYnVnIHN0YXRpc3RpY3MKQEAgLTIwMCw3ICsyMDIs OSBAQCBzdGF0aWMgdm9pZAlpeGdiZV9oYW5kbGVfbXNmKHZvaWQgKiwgaW50KTsKIHN0YXRpYyB2 b2lkCWl4Z2JlX2hhbmRsZV9tb2Qodm9pZCAqLCBpbnQpOwogCiAjaWZkZWYgSVhHQkVfRkRJUgor I2lmZGVmIElYR0JFX0ZESVJfQVRSCiBzdGF0aWMgdm9pZAlpeGdiZV9hdHIoc3RydWN0IHR4X3Jp bmcgKiwgc3RydWN0IG1idWYgKik7CisjZW5kaWYKIHN0YXRpYyB2b2lkCWl4Z2JlX3JlaW5pdF9m ZGlyKHZvaWQgKiwgaW50KTsKICNlbmRpZgogCkBAIC0yMjQsNiArMjI4LDE5IEBAIHN0YXRpYyBk cml2ZXJfdCBpeGdiZV9kcml2ZXIgPSB7CiAJIml4IiwgaXhnYmVfbWV0aG9kcywgc2l6ZW9mKHN0 cnVjdCBhZGFwdGVyKSwKIH07CiAKK3N0YXRpYyBkX2lvY3RsX3QgaXhnYmVfZXh0ZW5zaW9uX2lv Y3RsOworc3RhdGljIGRfb3Blbl90IGl4Z2JlX2V4dGVuc2lvbl9vcGVuOworc3RhdGljIGRfY2xv c2VfdCBpeGdiZV9leHRlbnNpb25fY2xvc2U7CisKK3N0YXRpYyBzdHJ1Y3QgY2RldnN3IGl4Z2Jl X2NkZXZzdyA9IHsKKyAgICAgICAuZF92ZXJzaW9uID0gICAgRF9WRVJTSU9OLAorICAgICAgIC5k X2ZsYWdzID0gICAgICAwLAorICAgICAgIC5kX29wZW4gPSAgICAgICBpeGdiZV9leHRlbnNpb25f b3BlbiwKKyAgICAgICAuZF9jbG9zZSA9ICAgICAgaXhnYmVfZXh0ZW5zaW9uX2Nsb3NlLAorICAg ICAgIC5kX2lvY3RsID0gICAgICBpeGdiZV9leHRlbnNpb25faW9jdGwsCisgICAgICAgLmRfbmFt ZSA9ICAgICAgICJpeGdiZSIsCit9OworCiBkZXZjbGFzc190IGl4Z2JlX2RldmNsYXNzOwogRFJJ VkVSX01PRFVMRShpeGdiZSwgcGNpLCBpeGdiZV9kcml2ZXIsIGl4Z2JlX2RldmNsYXNzLCAwLCAw KTsKIApAQCAtMzE3LDYgKzMzNCw3IEBAIHN0YXRpYyBib29sIGl4Z2JlX3JzY19lbmFibGUgPSBG QUxTRTsKIHN0YXRpYyBpbnQgaXhnYmVfdG90YWxfcG9ydHM7CiAKICNpZmRlZiBJWEdCRV9GRElS CisjaWZkZWYgSVhHQkVfRkRJUl9BVFIKIC8qCiAqKiBGb3IgRmxvdyBEaXJlY3RvcjogdGhpcyBp cyB0aGUKICoqIG51bWJlciBvZiBUWCBwYWNrZXRzIHdlIHNhbXBsZQpAQCAtMzI3LDYgKzM0NSw3 IEBAIHN0YXRpYyBpbnQgaXhnYmVfdG90YWxfcG9ydHM7CiAqKiBzZXR0aW5nIHRoaXMgdG8gMC4K ICovCiBzdGF0aWMgaW50IGF0cl9zYW1wbGVfcmF0ZSA9IDIwOworI2VuZGlmCiAvKiAKICoqIEZs b3cgRGlyZWN0b3IgYWN0dWFsbHkgJ3N0ZWFscycKICoqIHBhcnQgb2YgdGhlIHBhY2tldCBidWZm ZXIgYXMgaXRzCkBAIC00MDEsNiArNDIwLDIwIEBAIGl4Z2JlX3Byb2JlKGRldmljZV90IGRldikK IAlyZXR1cm4gKEVOWElPKTsKIH0KIAorc3RhdGljIGludAoraXhnYmVfbWFrZWRldihzdHJ1Y3Qg YWRhcHRlciAqYWRhcHRlcikKK3sKKwlhZGFwdGVyLT5jZGV2ID0gbWFrZV9kZXYoJml4Z2JlX2Nk ZXZzdywgYWRhcHRlci0+aWZwLT5pZl9kdW5pdCwKKwkgICAgVUlEX1JPT1QsIEdJRF9XSEVFTCwg MDYwMCwgIiVzIiwgaWZfbmFtZShhZGFwdGVyLT5pZnApKTsKKwkKKwlpZiAoYWRhcHRlci0+Y2Rl diA9PSBOVUxMKQorCQlyZXR1cm4gKEVOT01FTSk7CisKKwlhZGFwdGVyLT5jZGV2LT5zaV9kcnYx ID0gKHZvaWQgKilhZGFwdGVyOworCQorCXJldHVybiAoMCk7Cit9CisKIC8qKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioK ICAqICBEZXZpY2UgaW5pdGlhbGl6YXRpb24gcm91dGluZQogICoKQEAgLTYwNCw2ICs2MzcsMTEg QEAgaXhnYmVfYXR0YWNoKGRldmljZV90IGRldikKICNpZmRlZiBERVZfTkVUTUFQCiAJaXhnYmVf bmV0bWFwX2F0dGFjaChhZGFwdGVyKTsKICNlbmRpZiAvKiBERVZfTkVUTUFQICovCisKKwllcnJv ciA9IGl4Z2JlX21ha2VkZXYoYWRhcHRlcik7CisJaWYgKGVycm9yKQorCQlnb3RvIGVycl9sYXRl OworCiAJSU5JVF9ERUJVR09VVCgiaXhnYmVfYXR0YWNoOiBlbmQiKTsKIAlyZXR1cm4gKDApOwog ZXJyX2xhdGU6CkBAIC0xODEyLDcgKzE4NTAsNyBAQCByZXRyeToKIAkJcmV0dXJuIChlcnJvcik7 CiAJfQogCi0jaWZkZWYgSVhHQkVfRkRJUgorI2lmZGVmIElYR0JFX0ZESVJfQVRSCiAJLyogRG8g dGhlIGZsb3cgZGlyZWN0b3IgbWFnaWMgKi8KIAlpZiAoKHR4ci0+YXRyX3NhbXBsZSkgJiYgKCFh ZGFwdGVyLT5mZGlyX3JlaW5pdCkpIHsKIAkJKyt0eHItPmF0cl9jb3VudDsKQEAgLTMwNTksNyAr MzA5Nyw3IEBAIGl4Z2JlX3NldHVwX3RyYW5zbWl0X3Jpbmcoc3RydWN0IHR4X3JpbmcgKnR4cikK IAkJdHhidWYtPmVvcCA9IE5VTEw7CiAgICAgICAgIH0KIAotI2lmZGVmIElYR0JFX0ZESVIKKyNp ZmRlZiBJWEdCRV9GRElSX0FUUgogCS8qIFNldCB0aGUgcmF0ZSBhdCB3aGljaCB3ZSBzYW1wbGUg cGFja2V0cyAqLwogCWlmIChhZGFwdGVyLT5ody5tYWMudHlwZSAhPSBpeGdiZV9tYWNfODI1OThF QikKIAkJdHhyLT5hdHJfc2FtcGxlID0gYXRyX3NhbXBsZV9yYXRlOwpAQCAtMzQ3OSw3ICszNTE3 LDcgQEAgaXhnYmVfdHNvX3NldHVwKHN0cnVjdCB0eF9yaW5nICp0eHIsIHN0cnVjdCBtYnVmICpt cCwKIAlyZXR1cm4gKDApOwogfQogCi0jaWZkZWYgSVhHQkVfRkRJUgorI2lmZGVmIElYR0JFX0ZE SVJfQVRSCiAvKgogKiogVGhpcyByb3V0aW5lIHBhcnNlcyBwYWNrZXQgaGVhZGVycyBzbyB0aGF0 IEZsb3cKICoqIERpcmVjdG9yIGNhbiBtYWtlIGEgaGFzaGVkIGZpbHRlciB0YWJsZSBlbnRyeSAK QEAgLTUyNzAsMTMgKzUzMDgsMzMgQEAgaXhnYmVfdXBkYXRlX3N0YXRzX2NvdW50ZXJzKHN0cnVj dCBhZGFwdGVyICphZGFwdGVyKQogCWFkYXB0ZXItPnN0YXRzLnhlYyArPSBJWEdCRV9SRUFEX1JF RyhodywgSVhHQkVfWEVDKTsKIAlhZGFwdGVyLT5zdGF0cy5mY2NyYyArPSBJWEdCRV9SRUFEX1JF RyhodywgSVhHQkVfRkNDUkMpOwogCWFkYXB0ZXItPnN0YXRzLmZjbGFzdCArPSBJWEdCRV9SRUFE X1JFRyhodywgSVhHQkVfRkNMQVNUKTsKLQkvKiBPbmx5IHJlYWQgRkNPRSBvbiA4MjU5OSAqLwor CS8qIE9ubHkgcmVhZCBGQ09FL0ZESVIgb24gODI1OTkgKi8KIAlpZiAoaHctPm1hYy50eXBlICE9 IGl4Z2JlX21hY184MjU5OEVCKSB7CiAJCWFkYXB0ZXItPnN0YXRzLmZjb2VycGRjICs9IElYR0JF X1JFQURfUkVHKGh3LCBJWEdCRV9GQ09FUlBEQyk7CiAJCWFkYXB0ZXItPnN0YXRzLmZjb2VwcmMg Kz0gSVhHQkVfUkVBRF9SRUcoaHcsIElYR0JFX0ZDT0VQUkMpOwogCQlhZGFwdGVyLT5zdGF0cy5m Y29lcHRjICs9IElYR0JFX1JFQURfUkVHKGh3LCBJWEdCRV9GQ09FUFRDKTsKIAkJYWRhcHRlci0+ c3RhdHMuZmNvZWR3cmMgKz0gSVhHQkVfUkVBRF9SRUcoaHcsIElYR0JFX0ZDT0VEV1JDKTsKIAkJ YWRhcHRlci0+c3RhdHMuZmNvZWR3dGMgKz0gSVhHQkVfUkVBRF9SRUcoaHcsIElYR0JFX0ZDT0VE V1RDKTsKKwkJYWRhcHRlci0+c3RhdHMuZmRpcmZyZWVfZnJlZSA9CisJCQkoSVhHQkVfUkVBRF9S RUcoaHcsIElYR0JFX0ZESVJGUkVFKSAmIElYR0JFX0ZESVJGUkVFX0ZSRUVfTUFTSykKKwkJCT4+ IElYR0JFX0ZESVJGUkVFX0ZSRUVfU0hJRlQ7CisJCWFkYXB0ZXItPnN0YXRzLmZkaXJmcmVlX2Nv bGwgPQorCQkJKElYR0JFX1JFQURfUkVHKGh3LCBJWEdCRV9GRElSRlJFRSkgJiBJWEdCRV9GRElS RlJFRV9DT0xMX01BU0spCisJCQk+PiBJWEdCRV9GRElSRlJFRV9DT0xMX1NISUZUOworCQlhZGFw dGVyLT5zdGF0cy5mZGlydXN0YXRfYWRkICs9CisJCQkoSVhHQkVfUkVBRF9SRUcoaHcsIElYR0JF X0ZESVJVU1RBVCkgJiBJWEdCRV9GRElSVVNUQVRfQUREX01BU0spCisJCQk+PiBJWEdCRV9GRElS VVNUQVRfQUREX1NISUZUOworCQlhZGFwdGVyLT5zdGF0cy5mZGlydXN0YXRfcmVtb3ZlICs9CisJ CQkoSVhHQkVfUkVBRF9SRUcoaHcsIElYR0JFX0ZESVJVU1RBVCkgJiBJWEdCRV9GRElSVVNUQVRf UkVNT1ZFX01BU0spCisJCQk+PiBJWEdCRV9GRElSVVNUQVRfUkVNT1ZFX1NISUZUOworCQlhZGFw dGVyLT5zdGF0cy5mZGlyZnN0YXRfZmFkZCArPQorCQkJKElYR0JFX1JFQURfUkVHKGh3LCBJWEdC RV9GRElSRlNUQVQpICYgSVhHQkVfRkRJUkZTVEFUX0ZBRERfTUFTSykKKwkJCT4+IElYR0JFX0ZE SVJGU1RBVF9GQUREX1NISUZUOworCQlhZGFwdGVyLT5zdGF0cy5mZGlyZnN0YXRfZnJlbW92ZSAr PQorCQkJKElYR0JFX1JFQURfUkVHKGh3LCBJWEdCRV9GRElSRlNUQVQpICYgSVhHQkVfRkRJUkZT VEFUX0ZSRU1PVkVfTUFTSykKKwkJCT4+IElYR0JFX0ZESVJGU1RBVF9GUkVNT1ZFX1NISUZUOwor CQlhZGFwdGVyLT5zdGF0cy5mZGlybWF0Y2ggKz0gSVhHQkVfUkVBRF9SRUcoaHcsIElYR0JFX0ZE SVJNQVRDSCk7CisJCWFkYXB0ZXItPnN0YXRzLmZkaXJtaXNzICs9IElYR0JFX1JFQURfUkVHKGh3 LCBJWEdCRV9GRElSTUlTUyk7CiAJfQogCiAJLyogRmlsbCBvdXQgdGhlIE9TIHN0YXRpc3RpY3Mg c3RydWN0dXJlICovCkBAIC01NjQyLDYgKzU3MDAsMzIgQEAgaXhnYmVfYWRkX2h3X3N0YXRzKHN0 cnVjdCBhZGFwdGVyICphZGFwdGVyKQogCVNZU0NUTF9BRERfVVFVQUQoY3R4LCBzdGF0X2xpc3Qs IE9JRF9BVVRPLCAidHhfZnJhbWVzXzEwMjRfMTUyMiIsCiAJCQlDVExGTEFHX1JELCAmc3RhdHMt PnB0YzE1MjIsCiAJCQkiMTAyNC0xNTIyIGJ5dGUgZnJhbWVzIHRyYW5zbWl0dGVkIik7CisKKwkv KiBmZGlyIHN0YXRzICovCisJU1lTQ1RMX0FERF9VUVVBRChjdHgsIHN0YXRfbGlzdCwgT0lEX0FV VE8sICJmZGlyZnJlZV9mcmVlIiwKKwkJQ1RMRkxBR19SRCwgJnN0YXRzLT5mZGlyZnJlZV9mcmVl LAorCQkiIik7CisJU1lTQ1RMX0FERF9VUVVBRChjdHgsIHN0YXRfbGlzdCwgT0lEX0FVVE8sICJm ZGlyZnJlZV9jb2xsIiwKKwkJQ1RMRkxBR19SRCwgJnN0YXRzLT5mZGlyZnJlZV9jb2xsLAorCQki Iik7CisJU1lTQ1RMX0FERF9VUVVBRChjdHgsIHN0YXRfbGlzdCwgT0lEX0FVVE8sICJmZGlydXN0 YXRfYWRkIiwKKwkJQ1RMRkxBR19SRCwgJnN0YXRzLT5mZGlydXN0YXRfYWRkLAorCQkiIik7CisJ U1lTQ1RMX0FERF9VUVVBRChjdHgsIHN0YXRfbGlzdCwgT0lEX0FVVE8sICJmZGlydXN0YXRfcmVt b3ZlIiwKKwkJQ1RMRkxBR19SRCwgJnN0YXRzLT5mZGlydXN0YXRfcmVtb3ZlLAorCQkiIik7CisJ U1lTQ1RMX0FERF9VUVVBRChjdHgsIHN0YXRfbGlzdCwgT0lEX0FVVE8sICJmZGlyZnN0YXRfZmFk ZCIsCisJCUNUTEZMQUdfUkQsICZzdGF0cy0+ZmRpcmZzdGF0X2ZhZGQsCisJCSIiKTsKKwlTWVND VExfQUREX1VRVUFEKGN0eCwgc3RhdF9saXN0LCBPSURfQVVUTywgImZkaXJmc3RhdF9mcmVtb3Zl IiwKKwkJQ1RMRkxBR19SRCwgJnN0YXRzLT5mZGlyZnN0YXRfZnJlbW92ZSwKKwkJIiIpOworCVNZ U0NUTF9BRERfVVFVQUQoY3R4LCBzdGF0X2xpc3QsIE9JRF9BVVRPLCAiZmRpcm1hdGNoIiwKKwkJ Q1RMRkxBR19SRCwgJnN0YXRzLT5mZGlybWF0Y2gsCisJCSIiKTsKKwlTWVNDVExfQUREX1VRVUFE KGN0eCwgc3RhdF9saXN0LCBPSURfQVVUTywgImZkaXJtaXNzIiwKKwkJQ1RMRkxBR19SRCwgJnN0 YXRzLT5mZGlybWlzcywKKwkJIiIpOwogfQogCiAvKgpAQCAtNTgwMywzICs1ODg3LDgzIEBAIGl4 Z2JlX2Rpc2FibGVfcnhfZHJvcChzdHJ1Y3QgYWRhcHRlciAqYWRhcHRlcikKICAgICAgICAgCUlY R0JFX1dSSVRFX1JFRyhodywgSVhHQkVfU1JSQ1RMKGkpLCBzcnJjdGwpOwogCX0KIH0KKworc3Rh dGljIGludAoraXhnYmVfZXh0ZW5zaW9uX29wZW4oc3RydWN0IGNkZXYgKmRldiwgaW50IGZsYWdz LCBpbnQgZm1wLCBzdHJ1Y3QgdGhyZWFkICp0ZCkKK3sKKyAgICAgICByZXR1cm4gKDApOworfQor CitzdGF0aWMgaW50CitpeGdiZV9leHRlbnNpb25fY2xvc2Uoc3RydWN0IGNkZXYgKmRldiwgaW50 IGZsYWdzLCBpbnQgZm10LCBzdHJ1Y3QgdGhyZWFkICp0ZCkKK3sKKyAgICAgICByZXR1cm4gKDAp OworfQorCitzdGF0aWMgaW50CitpeGdiZV9leHRlbnNpb25faW9jdGwoc3RydWN0IGNkZXYgKmRl diwgdW5zaWduZWQgbG9uZyBjbWQsIGNhZGRyX3QgZGF0YSwKKyAgICBpbnQgZmZsYWcsIHN0cnVj dCB0aHJlYWQgKnRkKQoreworCXN0cnVjdCBhZGFwdGVyICphZGFwdGVyID0gKHN0cnVjdCBhZGFw dGVyICopZGV2LT5zaV9kcnYxOworCisJaWYgKHByaXZfY2hlY2sodGQsIFBSSVZfRFJJVkVSKSkg eworCQlyZXR1cm4gKEVQRVJNKTsKKwl9CisJCisJc3dpdGNoIChjbWQpIHsKKwljYXNlIElYR0JF X0FERF9TSUdGSUxURVI6IHsKKwkJc3RydWN0IGl4X2ZpbHRlciAqZmlsdGVyID0gKHN0cnVjdCBp eF9maWx0ZXIgKilkYXRhOworCQl1bmlvbiBpeGdiZV9hdHJfaGFzaF9kd29yZCBpbnB1dCA9IHsu ZHdvcmQgPSAwfTsKKwkJdW5pb24gaXhnYmVfYXRyX2hhc2hfZHdvcmQgY29tbW9uID0gey5kd29y ZCA9IDB9OworCisJCXN3aXRjaCAoZmlsdGVyLT5wcm90bykgeworCQljYXNlIElYR0JFX0ZJTFRF Ul9QUk9UT19UQ1BWNDoKKwkJCWlucHV0LmZvcm1hdHRlZC5mbG93X3R5cGUgXj0gSVhHQkVfQVRS X0ZMT1dfVFlQRV9UQ1BWNDsKKwkJCWJyZWFrOworCQljYXNlIElYR0JFX0ZJTFRFUl9QUk9UT19V RFBWNDoKKwkJCWlucHV0LmZvcm1hdHRlZC5mbG93X3R5cGUgXj0gSVhHQkVfQVRSX0ZMT1dfVFlQ RV9VRFBWNDsKKwkJCWJyZWFrOworCQlkZWZhdWx0OgorCQkJcmV0dXJuIChFSU5WQUwpOworCQl9 CisJCWNvbW1vbi5wb3J0LnNyYyBePSBodG9ucyhmaWx0ZXItPnNyY19wb3J0KTsKKwkJY29tbW9u LnBvcnQuZHN0IF49IGh0b25zKGZpbHRlci0+ZHN0X3BvcnQpOworCQljb21tb24uZmxleF9ieXRl cyBePSBodG9ucyhFVEhFUlRZUEVfSVApOworCQljb21tb24uaXAgXj0gZmlsdGVyLT5zcmNfaXAu c19hZGRyIF4gZmlsdGVyLT5kc3RfaXAuc19hZGRyOworCisJCWl4Z2JlX2ZkaXJfYWRkX3NpZ25h dHVyZV9maWx0ZXJfODI1OTkoJmFkYXB0ZXItPmh3LAorCQkJaW5wdXQsIGNvbW1vbiwgZmlsdGVy LT5xdWVfaW5kZXgpOworCQlicmVhazsKKwl9CisJY2FzZSBJWEdCRV9DTFJfU0lHRklMVEVSOiB7 CisJCXN0cnVjdCBpeF9maWx0ZXIgKmZpbHRlciA9IChzdHJ1Y3QgaXhfZmlsdGVyICopZGF0YTsK KwkJdW5pb24gaXhnYmVfYXRyX2hhc2hfZHdvcmQgaW5wdXQgPSB7LmR3b3JkID0gMH07CisJCXVu aW9uIGl4Z2JlX2F0cl9oYXNoX2R3b3JkIGNvbW1vbiA9IHsuZHdvcmQgPSAwfTsKKworCQlzd2l0 Y2ggKGZpbHRlci0+cHJvdG8pIHsKKwkJY2FzZSBJWEdCRV9GSUxURVJfUFJPVE9fVENQVjQ6CisJ CQlpbnB1dC5mb3JtYXR0ZWQuZmxvd190eXBlIF49IElYR0JFX0FUUl9GTE9XX1RZUEVfVENQVjQ7 CisJCQlicmVhazsKKwkJY2FzZSBJWEdCRV9GSUxURVJfUFJPVE9fVURQVjQ6CisJCQlpbnB1dC5m b3JtYXR0ZWQuZmxvd190eXBlIF49IElYR0JFX0FUUl9GTE9XX1RZUEVfVURQVjQ7CisJCQlicmVh azsKKwkJZGVmYXVsdDoKKwkJCXJldHVybiAoRUlOVkFMKTsKKwkJfQorCQljb21tb24ucG9ydC5z cmMgXj0gaHRvbnMoZmlsdGVyLT5zcmNfcG9ydCk7CisJCWNvbW1vbi5wb3J0LmRzdCBePSBodG9u cyhmaWx0ZXItPmRzdF9wb3J0KTsKKwkJY29tbW9uLmZsZXhfYnl0ZXMgXj0gaHRvbnMoRVRIRVJU WVBFX0lQKTsKKwkJY29tbW9uLmlwIF49IGZpbHRlci0+c3JjX2lwLnNfYWRkciBeIGZpbHRlci0+ ZHN0X2lwLnNfYWRkcjsKKworCQlpeGdiZV9mZGlyX2VyYXNlX3NpZ25hdHVyZV9maWx0ZXJfODI1 OTkoJmFkYXB0ZXItPmh3LAorCQkJaW5wdXQsIGNvbW1vbik7CisJCWJyZWFrOworCX0KKwlkZWZh dWx0OgorCQlyZXR1cm4gKEVPUE5PVFNVUFApOworCQlicmVhazsKKwl9CisKKwlyZXR1cm4gKDAp OworfQorCmRpZmYgLS1naXQgYS9zeXMvZGV2L2l4Z2JlL2l4Z2JlLmggYi9zeXMvZGV2L2l4Z2Jl L2l4Z2JlLmgKaW5kZXggNzdiNzJlZC4uNDljNDFmMiAxMDA2NDQKLS0tIGEvc3lzL2Rldi9peGdi ZS9peGdiZS5oCisrKyBiL3N5cy9kZXYvaXhnYmUvaXhnYmUuaApAQCAtODgsNiArODgsOCBAQAog I2luY2x1ZGUgPHN5cy9wY3B1Lmg+CiAjaW5jbHVkZSA8c3lzL3NtcC5oPgogI2luY2x1ZGUgPG1h Y2hpbmUvc21wLmg+CisjaW5jbHVkZSA8c3lzL2NvbmYuaD4KKyNpbmNsdWRlIDxzeXMvcHJpdi5o PgogCiAjaW5jbHVkZSAiaXhnYmVfYXBpLmgiCiAKQEAgLTQ2OCw2ICs0NzAsOCBAQCBzdHJ1Y3Qg YWRhcHRlciB7CiAJdW5zaWduZWQgbG9uZwkJbGlua19pcnE7CiAKIAlzdHJ1Y3QgaXhnYmVfaHdf c3RhdHMgCXN0YXRzOworCisJc3RydWN0IGNkZXYJCSpjZGV2OwogfTsKIAogCmRpZmYgLS1naXQg YS9zeXMvZGV2L2l4Z2JlL2l4Z2JlXzgyNTk5LmMgYi9zeXMvZGV2L2l4Z2JlL2l4Z2JlXzgyNTk5 LmMKaW5kZXggM2NjOGNkNy4uNzJlYTVlYSAxMDA2NDQKLS0tIGEvc3lzL2Rldi9peGdiZS9peGdi ZV84MjU5OS5jCisrKyBiL3N5cy9kZXYvaXhnYmUvaXhnYmVfODI1OTkuYwpAQCAtMTQ4Miw3ICsx NDgyLDggQEAgczMyIGl4Z2JlX2luaXRfZmRpcl9zaWduYXR1cmVfODI1OTkoc3RydWN0IGl4Z2Jl X2h3ICpodywgdTMyIGZkaXJjdHJsKQogCSAqICBTZXQgdGhlIG1heGltdW0gbGVuZ3RoIHBlciBo YXNoIGJ1Y2tldCB0byAweEEgZmlsdGVycwogCSAqICBTZW5kIGludGVycnVwdCB3aGVuIDY0IGZp bHRlcnMgYXJlIGxlZnQKIAkgKi8KLQlmZGlyY3RybCB8PSAoMHg2IDw8IElYR0JFX0ZESVJDVFJM X0ZMRVhfU0hJRlQpIHwKKwlmZGlyY3RybCB8PSBJWEdCRV9GRElSQ1RSTF9SRVBPUlRfU1RBVFVT IHwKKyAJCSAgICAoMHg2IDw8IElYR0JFX0ZESVJDVFJMX0ZMRVhfU0hJRlQpIHwKIAkJICAgICgw eEEgPDwgSVhHQkVfRkRJUkNUUkxfTUFYX0xFTkdUSF9TSElGVCkgfAogCQkgICAgKDQgPDwgSVhH QkVfRkRJUkNUUkxfRlVMTF9USFJFU0hfU0hJRlQpOwogCkBAIC0xNjY3LDYgKzE2NjgsNTYgQEAg czMyIGl4Z2JlX2ZkaXJfYWRkX3NpZ25hdHVyZV9maWx0ZXJfODI1OTkoc3RydWN0IGl4Z2JlX2h3 ICpodywKIAlyZXR1cm4gSVhHQkVfU1VDQ0VTUzsKIH0KIAorLyoqCisgKiAgaXhnYmVfZmRpcl9l cmFzZV9zaWduYXR1cmVfZmlsdGVyXzgyNTk5IC0gQWRkcyBhIHNpZ25hdHVyZSBoYXNoIGZpbHRl cgorICogIEBodzogcG9pbnRlciB0byBoYXJkd2FyZSBzdHJ1Y3R1cmUKKyAqICBAc3RyZWFtOiBp bnB1dCBiaXRzdHJlYW0KKyAqICBAcXVldWU6IHF1ZXVlIGluZGV4IHRvIGRpcmVjdCB0cmFmZmlj IHRvCisgKiovCitzMzIgaXhnYmVfZmRpcl9lcmFzZV9zaWduYXR1cmVfZmlsdGVyXzgyNTk5KHN0 cnVjdCBpeGdiZV9odyAqaHcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB1bmlvbiBpeGdiZV9hdHJfaGFzaF9kd29yZCBpbnB1dCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHVuaW9uIGl4Z2JlX2F0cl9oYXNoX2R3b3JkIGNvbW1v bikKK3sKKwl1NjQgIGZkaXJoYXNoY21kOworCXUzMiAgZmRpcmNtZDsKKworCURFQlVHRlVOQygi aXhnYmVfZmRpcl9jbGVhcl9zaWduYXR1cmVfZmlsdGVyXzgyNTk5Iik7CisKKwkvKgorCSAqIEdl dCB0aGUgZmxvd190eXBlIGluIG9yZGVyIHRvIHByb2dyYW0gRkRJUkNNRCBwcm9wZXJseQorCSAq IGxvd2VzdCAyIGJpdHMgYXJlIEZESVJDTUQuTDRUWVBFLCB0aGlyZCBsb3dlc3QgYml0IGlzIEZE SVJDTUQuSVBWNgorCSAqLworCXN3aXRjaCAoaW5wdXQuZm9ybWF0dGVkLmZsb3dfdHlwZSkgewor CWNhc2UgSVhHQkVfQVRSX0ZMT1dfVFlQRV9UQ1BWNDoKKwljYXNlIElYR0JFX0FUUl9GTE9XX1RZ UEVfVURQVjQ6CisJY2FzZSBJWEdCRV9BVFJfRkxPV19UWVBFX1NDVFBWNDoKKwljYXNlIElYR0JF X0FUUl9GTE9XX1RZUEVfVENQVjY6CisJY2FzZSBJWEdCRV9BVFJfRkxPV19UWVBFX1VEUFY2Ogor CWNhc2UgSVhHQkVfQVRSX0ZMT1dfVFlQRV9TQ1RQVjY6CisJCWJyZWFrOworCWRlZmF1bHQ6CisJ CURFQlVHT1VUKCIgRXJyb3Igb24gZmxvdyB0eXBlIGlucHV0XG4iKTsKKwkJcmV0dXJuIElYR0JF X0VSUl9DT05GSUc7CisJfQorCisJLyogY29uZmlndXJlIEZESVJDTUQgcmVnaXN0ZXIgKi8KKwlm ZGlyY21kID0gSVhHQkVfRkRJUkNNRF9DTURfUkVNT1ZFX0ZMT1cgfCAKKwkgICAgICAgICAgSVhH QkVfRkRJUkNNRF9MQVNUIHwgSVhHQkVfRkRJUkNNRF9RVUVVRV9FTjsKKwlmZGlyY21kIHw9IGlu cHV0LmZvcm1hdHRlZC5mbG93X3R5cGUgPDwgSVhHQkVfRkRJUkNNRF9GTE9XX1RZUEVfU0hJRlQ7 CisKKwkvKgorCSAqIFRoZSBsb3dlciAzMi1iaXRzIG9mIGZkaXJoYXNoY21kIGlzIGZvciBGRElS SEFTSCwgdGhlIHVwcGVyIDMyLWJpdHMKKwkgKiBpcyBmb3IgRkRJUkNNRC4gIFRoZW4gZG8gYSA2 NC1iaXQgcmVnaXN0ZXIgd3JpdGUgZnJvbSBGRElSSEFTSC4KKwkgKi8KKwlmZGlyaGFzaGNtZCA9 ICh1NjQpZmRpcmNtZCA8PCAzMjsKKwlmZGlyaGFzaGNtZCB8PSBpeGdiZV9hdHJfY29tcHV0ZV9z aWdfaGFzaF84MjU5OShpbnB1dCwgY29tbW9uKTsKKwlJWEdCRV9XUklURV9SRUc2NChodywgSVhH QkVfRkRJUkhBU0gsIGZkaXJoYXNoY21kKTsKKworCURFQlVHT1VUMSgiVHggaGFzaD0leFxuIiwg KHUzMilmZGlyaGFzaGNtZCk7CisKKwlyZXR1cm4gSVhHQkVfU1VDQ0VTUzsKK30KKwogI2RlZmlu ZSBJWEdCRV9DT01QVVRFX0JLVF9IQVNIX0lURVJBVElPTihfbikgXAogZG8geyBcCiAJdTMyIG4g PSAoX24pOyBcCmRpZmYgLS1naXQgYS9zeXMvZGV2L2l4Z2JlL2l4Z2JlX2FwaS5oIGIvc3lzL2Rl di9peGdiZS9peGdiZV9hcGkuaAppbmRleCA5MTAyM2FlLi43N2M2NDI3IDEwMDY0NAotLS0gYS9z eXMvZGV2L2l4Z2JlL2l4Z2JlX2FwaS5oCisrKyBiL3N5cy9kZXYvaXhnYmUvaXhnYmVfYXBpLmgK QEAgLTE0NCw2ICsxNDQsOSBAQCBzMzIgaXhnYmVfZmRpcl9hZGRfc2lnbmF0dXJlX2ZpbHRlcl84 MjU5OShzdHJ1Y3QgaXhnYmVfaHcgKmh3LAogCQkJCQkgIHVuaW9uIGl4Z2JlX2F0cl9oYXNoX2R3 b3JkIGlucHV0LAogCQkJCQkgIHVuaW9uIGl4Z2JlX2F0cl9oYXNoX2R3b3JkIGNvbW1vbiwKIAkJ CQkJICB1OCBxdWV1ZSk7CitzMzIgaXhnYmVfZmRpcl9lcmFzZV9zaWduYXR1cmVfZmlsdGVyXzgy NTk5KHN0cnVjdCBpeGdiZV9odyAqaHcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB1bmlvbiBpeGdiZV9hdHJfaGFzaF9kd29yZCBpbnB1dCwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaW9uIGl4Z2JlX2F0cl9oYXNoX2R3b3Jk IGNvbW1vbik7CiBzMzIgaXhnYmVfZmRpcl9zZXRfaW5wdXRfbWFza184MjU5OShzdHJ1Y3QgaXhn YmVfaHcgKmh3LAogCQkJCSAgICB1bmlvbiBpeGdiZV9hdHJfaW5wdXQgKmlucHV0X21hc2spOwog czMyIGl4Z2JlX2ZkaXJfd3JpdGVfcGVyZmVjdF9maWx0ZXJfODI1OTkoc3RydWN0IGl4Z2JlX2h3 ICpodywKZGlmZiAtLWdpdCBhL3N5cy9kZXYvaXhnYmUvaXhnYmVfaW9jdGwuaCBiL3N5cy9kZXYv aXhnYmUvaXhnYmVfaW9jdGwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5m NzExM2QzCi0tLSAvZGV2L251bGwKKysrIGIvc3lzL2Rldi9peGdiZS9peGdiZV9pb2N0bC5oCkBA IC0wLDAgKzEsNTggQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCitDb3B5cmlnaHQgKGMpIDIwMTMg VGFrdXlhIEFTQURBCitBbGwgcmlnaHRzIHJlc2VydmVkLgorCitSZWRpc3RyaWJ1dGlvbiBhbmQg dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKK21vZGlmaWNh dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u cyBhcmUgbWV0OgorCisgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0 YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLAorICAgIHRoaXMgbGlzdCBvZiBjb25kaXRp b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisKKyAyLiBOZWl0aGVyIHRoZSBuYW1l IG9mIHRoZSBDaGVsc2lvIENvcnBvcmF0aW9uIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgICAgY29u dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp dmVkIGZyb20KKyAgICB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl biBwZXJtaXNzaW9uLgorCitUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIKK0FORCBBTlkgRVhQUkVTUyBPUiBJ TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKK0lN UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFCitBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP UFlSSUdIVCBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUKK0xJQUJMRSBGT1IgQU5ZIERJUkVDVCwg SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKK0NPTlNFUVVFTlRJ QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G CitTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP RklUUzsgT1IgQlVTSU5FU1MKK0lOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCitDT05UUkFDVCwgU1RSSUNUIExJQUJJ TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorQVJJU0lO RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW SVNFRCBPRiBUSEUKK1BPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCiskRnJlZUJTRCQKKwor KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqLworCisjaWZuZGVmIF9fSVhHQkVJT0NUTF9IX18KKyNkZWZpbmUg X19JWEdCRUlPQ1RMX0hfXworCitlbnVtIHsKKwlJWF9BRERfU0lHRklMVEVSID0gMHgwLAorCUlY X0NMUl9TSUdGSUxURVIKK307CisKK2VudW0geworCUlYR0JFX0ZJTFRFUl9QUk9UT19UQ1BWNCwK KwlJWEdCRV9GSUxURVJfUFJPVE9fVURQVjQKK307CisKK3N0cnVjdCBpeF9maWx0ZXIgeworCWlu dCBwcm90bzsKKwlzdHJ1Y3QgaW5fYWRkciBzcmNfaXA7CisJaW50IHNyY19wb3J0OworCXN0cnVj dCBpbl9hZGRyIGRzdF9pcDsKKwlpbnQgZHN0X3BvcnQ7CisJaW50IHF1ZV9pbmRleDsKK307CisK KyNkZWZpbmUgSVhHQkVfQUREX1NJR0ZJTFRFUglfSU9XKCdpJywgSVhfQUREX1NJR0ZJTFRFUiwg c3RydWN0IGl4X2ZpbHRlcikKKyNkZWZpbmUgSVhHQkVfQ0xSX1NJR0ZJTFRFUglfSU9XKCdpJywg SVhfQ0xSX1NJR0ZJTFRFUiwgc3RydWN0IGl4X2ZpbHRlcikKKworI2VuZGlmCisKZGlmZiAtLWdp dCBhL3N5cy9kZXYvaXhnYmUvaXhnYmVfdHlwZS5oIGIvc3lzL2Rldi9peGdiZS9peGdiZV90eXBl LmgKaW5kZXggNDlmNWJjMC4uYzVmMjliYiAxMDA2NDQKLS0tIGEvc3lzL2Rldi9peGdiZS9peGdi ZV90eXBlLmgKKysrIGIvc3lzL2Rldi9peGdiZS9peGdiZV90eXBlLmgKQEAgLTI5OTcsNiArMjk5 Nyw4IEBAIHN0cnVjdCBpeGdiZV9od19zdGF0cyB7CiAJdTY0IHFidGNbMTZdOwogCXU2NCBxcHJk Y1sxNl07CiAJdTY0IHB4b24yb2ZmY1s4XTsKKwl1NjQgZmRpcmZyZWVfZnJlZTsKKwl1NjQgZmRp cmZyZWVfY29sbDsKIAl1NjQgZmRpcnVzdGF0X2FkZDsKIAl1NjQgZmRpcnVzdGF0X3JlbW92ZTsK IAl1NjQgZmRpcmZzdGF0X2ZhZGQ7CmRpZmYgLS1naXQgYS90b29scy90b29scy9peGdiZXRvb2wv TWFrZWZpbGUgYi90b29scy90b29scy9peGdiZXRvb2wvTWFrZWZpbGUKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMC4uMDY5NWU5MwotLS0gL2Rldi9udWxsCisrKyBiL3Rvb2xzL3Rv b2xzL2l4Z2JldG9vbC9NYWtlZmlsZQpAQCAtMCwwICsxLDkgQEAKKyMgJEZyZWVCU0QkCisKK1BS T0c9CWl4Z2JldG9vbAorU1JDUz0JaXhnYmV0b29sLmMKK05PX01BTj0KK0NGTEFHUys9IC1JJHsu Q1VSRElSfS8uLi8uLi8uLi9zeXMvZGV2L2l4Z2JlIC1JLgorQklORElSPz0gL3Vzci9zYmluCisK Ky5pbmNsdWRlIDxic2QucHJvZy5taz4KZGlmZiAtLWdpdCBhL3Rvb2xzL3Rvb2xzL2l4Z2JldG9v bC9peGdiZXRvb2wuYyBiL3Rvb2xzL3Rvb2xzL2l4Z2JldG9vbC9peGdiZXRvb2wuYwpuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMTkxMWE1Ci0tLSAvZGV2L251bGwKKysrIGIv dG9vbHMvdG9vbHMvaXhnYmV0b29sL2l4Z2JldG9vbC5jCkBAIC0wLDAgKzEsMTc0IEBACisvKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioKKworQ29weXJpZ2h0IChjKSAyMDEzLCBUYWt1eWEgQVNBREEuCitBbGwg cmlnaHRzIHJlc2VydmVkLgorCitSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKK21vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgorCisgMS4g UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5 cmlnaHQgbm90aWNlLAorICAgIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93 aW5nIGRpc2NsYWltZXIuCisKKyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAgICBkb2N1 bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp YnV0aW9uLgorCisgMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgQ2hlbHNpbyBDb3Jwb3JhdGlv biBub3IgdGhlIG5hbWVzIG9mIGl0cworICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgICAgdGhpcyBzb2Z0d2Fy ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKworVEhJUyBTT0ZU V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S UyAiQVMgSVMiCitBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCitJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorQVJFIERJU0NM QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1IgQ09OVFJJQlVU T1JTIEJFCitMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD SUFMLCBFWEVNUExBUlksIE9SCitDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCitJTlRFUlJV UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF VEhFUiBJTgorQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKK0FSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFCitQT1NTSUJJTElUWSBP RiBTVUNIIERBTUFHRS4KKworCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisjaW5jbHVkZSA8c3lzL2Nk ZWZzLmg+CitfX0ZCU0RJRCgiJEZyZWVCU0QkIik7CisKKyNpbmNsdWRlIDxzdGRpby5oPgorI2lu Y2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPGZjbnRsLmg+CisjaW5jbHVkZSA8ZXJybm8uaD4K KyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxsaW1pdHMuaD4KKyNpbmNsdWRlIDx1bmlz dGQuaD4KKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+Cisj aW5jbHVkZSA8bmV0aW5ldC9pbi5oPgorI2luY2x1ZGUgPGFycGEvaW5ldC5oPgorI2luY2x1ZGUg PHN5cy9pb2N0bC5oPgorI2luY2x1ZGUgPGl4Z2JlX2lvY3RsLmg+CisKK3N0YXRpYyB2b2lkCit1 c2FnZSh2b2lkKQoreworCWZwcmludGYoc3RkZXJyLCAiVXNhZ2U6IGl4Z2JldG9vbCA8aWZuYW1l PiBbb3BlcmF0aW9uXVxuIik7CisJZnByaW50ZihzdGRlcnIsICJcdGFkZF9zaWdfZmlsdGVyIDxw cm90bz4gPHNyY19pcD4gPHNyY19wb3J0PiA8ZHN0X2lwPiA8ZHN0X3BvcnQ+IDxxdWVfaW5kZXg+ XG4iKTsKKwlmcHJpbnRmKHN0ZGVyciwgIlx0ZGVsX3NpZ19maWx0ZXIgPHByb3RvPiA8c3JjX2lw PiA8c3JjX3BvcnQ+IDxkc3RfaXA+IDxkc3RfcG9ydD5cbiIpOworfQorCitzdGF0aWMgaW50Citk b2l0KGNvbnN0IGNoYXIgKmlmZl9uYW1lLCB1bnNpZ25lZCBsb25nIGNtZCwgdm9pZCAqZGF0YSkK K3sKKwlpbnQgZmQgPSAwOworCWludCBlcnI7CisJY2hhciBidWZbNjRdOworCisJc25wcmludGYo YnVmLCA2NCwgIi9kZXYvJXMiLCBpZmZfbmFtZSk7CisJaWYgKChmZCA9IG9wZW4oYnVmLCBPX1JE V1IpKSA8IDApCisJCXJldHVybiAtMTsKKwkKKwllcnIgPSBpb2N0bChmZCwgY21kLCBkYXRhKSA8 IDAgPyAtMSA6IDA7CisJY2xvc2UoZmQpOworCXJldHVybiBlcnI7Cit9CisKK3N0YXRpYyBpbnQg CithZGRfc2lnX2ZpbHRlcihpbnQgYXJnYywgY2hhciAqYXJndltdLCBjaGFyICppZm5hbWUpCit7 CisJc3RydWN0IGl4X2ZpbHRlciBmaWx0ZXI7CisJaW50IGVycm9yOworCisJaWYgKGFyZ2MgIT0g OSkgCisJCXJldHVybiAtMTsKKworCWlmICghc3RyY21wKGFyZ3ZbM10sICJ0Y3B2NCIpKQorCQlm aWx0ZXIucHJvdG8gPSBJWEdCRV9GSUxURVJfUFJPVE9fVENQVjQ7CisJZWxzZSBpZiAoIXN0cmNt cChhcmd2WzNdLCAidWRwdjQiKSkKKwkJZmlsdGVyLnByb3RvID0gSVhHQkVfRklMVEVSX1BST1RP X1VEUFY0OworCWVsc2UKKwkJcmV0dXJuIC0xOworCWVycm9yID0gaW5ldF9hdG9uKGFyZ3ZbNF0s ICZmaWx0ZXIuc3JjX2lwKTsKKwlpZiAoZXJyb3IgIT0gMSkKKwkJcmV0dXJuIGVycm9yOworCWVy cm5vID0gMDsKKwlmaWx0ZXIuc3JjX3BvcnQgPSBzdHJ0b2woYXJndls1XSwgTlVMTCwgMCk7CisJ aWYgKGVycm5vKQorCQlyZXR1cm4gZXJybm87CisJZXJyb3IgPSBpbmV0X2F0b24oYXJndls2XSwg JmZpbHRlci5kc3RfaXApOworCWlmIChlcnJvciAhPSAxKQorCQlyZXR1cm4gZXJyb3I7CisJZXJy bm8gPSAwOworCWZpbHRlci5kc3RfcG9ydCA9IHN0cnRvbChhcmd2WzddLCBOVUxMLCAwKTsKKwlp ZiAoZXJybm8pCisJCXJldHVybiBlcnJubzsKKwllcnJubyA9IDA7CisJZmlsdGVyLnF1ZV9pbmRl eCA9IHN0cnRvbChhcmd2WzhdLCBOVUxMLCAwKTsKKwlpZiAoZXJybm8pCisJCXJldHVybiBlcnJu bzsKKworCWVycm9yID0gZG9pdChpZm5hbWUsIElYR0JFX0FERF9TSUdGSUxURVIsICh2b2lkICop JmZpbHRlcik7CisJaWYgKGVycm9yKQorCQlwZXJyb3IoImlvY3RsIik7CisJcmV0dXJuIDA7Cit9 CisKK3N0YXRpYyBpbnQgCitkZWxfc2lnX2ZpbHRlcihpbnQgYXJnYywgY2hhciAqYXJndltdLCBj aGFyICppZm5hbWUpCit7CisJc3RydWN0IGl4X2ZpbHRlciBmaWx0ZXI7CisJaW50IGVycm9yOwor CisJaWYgKGFyZ2MgIT0gOCkgCisJCXJldHVybiAtMTsKKworCWlmICghc3RyY21wKGFyZ3ZbM10s ICJ0Y3B2NCIpKQorCQlmaWx0ZXIucHJvdG8gPSBJWEdCRV9GSUxURVJfUFJPVE9fVENQVjQ7CisJ ZWxzZSBpZiAoIXN0cmNtcChhcmd2WzNdLCAidWRwdjQiKSkKKwkJZmlsdGVyLnByb3RvID0gSVhH QkVfRklMVEVSX1BST1RPX1VEUFY0OworCWVsc2UKKwkJcmV0dXJuIC0xOworCWVycm9yID0gaW5l dF9hdG9uKGFyZ3ZbNF0sICZmaWx0ZXIuc3JjX2lwKTsKKwlpZiAoZXJyb3IgIT0gMSkKKwkJcmV0 dXJuIGVycm9yOworCWVycm5vID0gMDsKKwlmaWx0ZXIuc3JjX3BvcnQgPSBzdHJ0b2woYXJndls1 XSwgTlVMTCwgMCk7CisJaWYgKGVycm5vKQorCQlyZXR1cm4gZXJybm87CisJZXJyb3IgPSBpbmV0 X2F0b24oYXJndls2XSwgJmZpbHRlci5kc3RfaXApOworCWlmIChlcnJvciAhPSAxKQorCQlyZXR1 cm4gZXJyb3I7CisJZXJybm8gPSAwOworCWZpbHRlci5kc3RfcG9ydCA9IHN0cnRvbChhcmd2Wzdd LCBOVUxMLCAwKTsKKwlpZiAoZXJybm8pCisJCXJldHVybiBlcnJubzsKKworCWVycm9yID0gZG9p dChpZm5hbWUsIElYR0JFX0NMUl9TSUdGSUxURVIsICh2b2lkICopJmZpbHRlcik7CisJaWYgKGVy cm9yKQorCQlwZXJyb3IoImlvY3RsIik7CisJcmV0dXJuIDA7Cit9CisKK2ludCAKK21haW4oaW50 IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKK3sKKwlpbnQgcmV0OworCWNoYXIgKmlmbmFtZTsKKworCWlm IChhcmdjIDwgMykgeworCQl1c2FnZSgpOworCQlleGl0KDEpOworCX0KKwlpZm5hbWUgPSBhcmd2 WzFdOworCWlmICghc3RyY21wKGFyZ3ZbMl0sICJhZGRfc2lnX2ZpbHRlciIpKQorCQlyZXQgPSBh ZGRfc2lnX2ZpbHRlcihhcmdjLCBhcmd2LCBpZm5hbWUpOworCWVsc2UgaWYgKCFzdHJjbXAoYXJn dlsyXSwgImRlbF9zaWdfZmlsdGVyIikpCisJCXJldCA9IGRlbF9zaWdfZmlsdGVyKGFyZ2MsIGFy Z3YsIGlmbmFtZSk7CisJZWxzZSAKKwkJcmV0ID0gLTE7CisKKwlpZiAocmV0KQorCQl1c2FnZSgp OworCisJcmV0dXJuIChyZXQpOworfQorCg== --047d7b10c96501056a04e78c9de7--