From owner-freebsd-net@FreeBSD.ORG Mon Sep 30 12:08:32 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 EADC41F7 for ; Mon, 30 Sep 2013 12:08:32 +0000 (UTC) (envelope-from syuu@dokukino.com) Received: from mail-pd0-x22b.google.com (mail-pd0-x22b.google.com [IPv6:2607:f8b0:400e:c02::22b]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id B9D7220E8 for ; Mon, 30 Sep 2013 12:08:32 +0000 (UTC) Received: by mail-pd0-f171.google.com with SMTP id g10so5537560pdj.30 for ; Mon, 30 Sep 2013 05:08:30 -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=HnDU+ab8IO0yG8QvHD8pZOsnZiSU7jgueyTCyrGkLPU=; b=Pz3732vCoHPTwjGpWNKwOFHTk7ASv/SHwyYIfLv8VzPp5ihy8PRFI490epI7VSHy8S 5vEv4r632xflsqwnp1JTPIH20oB1/b+NvqStlWI9PL3AOQXhqVwhPwq8taObt17jZfel FRdDt1fa69FKONMjCXSat1Z5B1h79XWkzx9Cw= 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=HnDU+ab8IO0yG8QvHD8pZOsnZiSU7jgueyTCyrGkLPU=; b=AM2A3rRlcW2E9nISpyc4Jd8QMQGIGV4g73BAlqcz7HLJlHEA9QyzWtPvd4yTuaRZ9E rl4YSLN2V0TCuGpMGB86SsAv8nJPOckHDCNMHVn5KwSopLTF+/XF8qHejm25bDU9TbY5 IEkgWixdQtUt/wHHYpOcFH43vJ5wpAqdcgyT9VPIvtN6R7F3L6qPQV/S+PWEtmjJfl6K ecGFN92AjVWdnu5Axtp5TcEhELps8K2IH0qVvXh3ON0jY/RhCMjR4v9Em0U9fb7QpK2I k4i/ifTtmB9l82HMv5jOGf83k6ryUjE8wtICsyE7k67WTub/kCsGy/mUwjgUafyv8rJS wnNg== X-Gm-Message-State: ALoCoQnCWRc2MnLpWQj0hZMTEwTg6yi44ATZubLRhUawmzqE72rnXNGosq9cAUv9XuF09fJ5qRiK X-Received: by 10.68.33.100 with SMTP id q4mr23032154pbi.119.1380542910331; Mon, 30 Sep 2013 05:08:30 -0700 (PDT) MIME-Version: 1.0 Received: by 10.68.220.138 with HTTP; Mon, 30 Sep 2013 05:07:49 -0700 (PDT) In-Reply-To: References: From: Takuya ASADA Date: Mon, 30 Sep 2013 21:07:49 +0900 Message-ID: Subject: Re: Adding Flow Director sysctls to ixgbe(4) (was: netmap: traffic distribution) To: hiren panchasara Content-Type: multipart/mixed; boundary=bcaec520efabc496d604e798b12f 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: Mon, 30 Sep 2013 12:08:33 -0000 --bcaec520efabc496d604e798b12f Content-Type: text/plain; charset=UTF-8 Hi, This is updated version of the patch. Signature filter list feature is added. Here're usage of ixgbetool: - add a filter ixgbetool ix0 add_sig_filter tcpv4 10.1.0.1 34763 10.1.0.2 22 3 - show filters ixgbetool ix0 show_sig_filter - del a filter ixgbetool ix0 del_sig_filter 1 2013/9/30 Takuya ASADA > 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 < >>>> hiren.panchasara@gmail.com> 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? >>> >>> >> > --bcaec520efabc496d604e798b12f Content-Type: application/octet-stream; name="ixgbetool-v002.diff" Content-Disposition: attachment; filename="ixgbetool-v002.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_hm7nikph1 ZGlmZiAtLWdpdCBhL3N5cy9kZXYvaXhnYmUvaXhnYmUuYyBiL3N5cy9kZXYvaXhnYmUvaXhnYmUu YwppbmRleCBiNjVkZjcyLi5hZGVmYjE0IDEwMDY0NAotLS0gYS9zeXMvZGV2L2l4Z2JlL2l4Z2Jl LmMKKysrIGIvc3lzL2Rldi9peGdiZS9peGdiZS5jCkBAIC0zNSw2ICszNSw3IEBACiAKICNpbmNs dWRlICJvcHRfaW5ldC5oIgogI2luY2x1ZGUgIm9wdF9pbmV0Ni5oIgorIAogI2luY2x1ZGUgIml4 Z2JlLmgiCiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioKQEAgLTIwMCw3ICsyMDEsOSBAQCBzdGF0aWMgdm9pZAlp eGdiZV9oYW5kbGVfbXNmKHZvaWQgKiwgaW50KTsKIHN0YXRpYyB2b2lkCWl4Z2JlX2hhbmRsZV9t b2Qodm9pZCAqLCBpbnQpOwogCiAjaWZkZWYgSVhHQkVfRkRJUgorI2lmZGVmIElYR0JFX0ZESVJf QVRSCiBzdGF0aWMgdm9pZAlpeGdiZV9hdHIoc3RydWN0IHR4X3JpbmcgKiwgc3RydWN0IG1idWYg Kik7CisjZW5kaWYKIHN0YXRpYyB2b2lkCWl4Z2JlX3JlaW5pdF9mZGlyKHZvaWQgKiwgaW50KTsK ICNlbmRpZgogCkBAIC0yMjQsNiArMjI3LDE5IEBAIHN0YXRpYyBkcml2ZXJfdCBpeGdiZV9kcml2 ZXIgPSB7CiAJIml4IiwgaXhnYmVfbWV0aG9kcywgc2l6ZW9mKHN0cnVjdCBhZGFwdGVyKSwKIH07 CiAKK3N0YXRpYyBkX2lvY3RsX3QgaXhnYmVfZXh0ZW5zaW9uX2lvY3RsOworc3RhdGljIGRfb3Bl bl90IGl4Z2JlX2V4dGVuc2lvbl9vcGVuOworc3RhdGljIGRfY2xvc2VfdCBpeGdiZV9leHRlbnNp b25fY2xvc2U7CisKK3N0YXRpYyBzdHJ1Y3QgY2RldnN3IGl4Z2JlX2NkZXZzdyA9IHsKKyAgICAg ICAuZF92ZXJzaW9uID0gICAgRF9WRVJTSU9OLAorICAgICAgIC5kX2ZsYWdzID0gICAgICAwLAor ICAgICAgIC5kX29wZW4gPSAgICAgICBpeGdiZV9leHRlbnNpb25fb3BlbiwKKyAgICAgICAuZF9j bG9zZSA9ICAgICAgaXhnYmVfZXh0ZW5zaW9uX2Nsb3NlLAorICAgICAgIC5kX2lvY3RsID0gICAg ICBpeGdiZV9leHRlbnNpb25faW9jdGwsCisgICAgICAgLmRfbmFtZSA9ICAgICAgICJpeGdiZSIs Cit9OworCiBkZXZjbGFzc190IGl4Z2JlX2RldmNsYXNzOwogRFJJVkVSX01PRFVMRShpeGdiZSwg cGNpLCBpeGdiZV9kcml2ZXIsIGl4Z2JlX2RldmNsYXNzLCAwLCAwKTsKIApAQCAtMzE3LDYgKzMz Myw3IEBAIHN0YXRpYyBib29sIGl4Z2JlX3JzY19lbmFibGUgPSBGQUxTRTsKIHN0YXRpYyBpbnQg aXhnYmVfdG90YWxfcG9ydHM7CiAKICNpZmRlZiBJWEdCRV9GRElSCisjaWZkZWYgSVhHQkVfRkRJ Ul9BVFIKIC8qCiAqKiBGb3IgRmxvdyBEaXJlY3RvcjogdGhpcyBpcyB0aGUKICoqIG51bWJlciBv ZiBUWCBwYWNrZXRzIHdlIHNhbXBsZQpAQCAtMzI3LDYgKzM0NCw3IEBAIHN0YXRpYyBpbnQgaXhn YmVfdG90YWxfcG9ydHM7CiAqKiBzZXR0aW5nIHRoaXMgdG8gMC4KICovCiBzdGF0aWMgaW50IGF0 cl9zYW1wbGVfcmF0ZSA9IDIwOworI2VuZGlmCiAvKiAKICoqIEZsb3cgRGlyZWN0b3IgYWN0dWFs bHkgJ3N0ZWFscycKICoqIHBhcnQgb2YgdGhlIHBhY2tldCBidWZmZXIgYXMgaXRzCkBAIC00MDEs NiArNDE5LDIwIEBAIGl4Z2JlX3Byb2JlKGRldmljZV90IGRldikKIAlyZXR1cm4gKEVOWElPKTsK IH0KIAorc3RhdGljIGludAoraXhnYmVfbWFrZWRldihzdHJ1Y3QgYWRhcHRlciAqYWRhcHRlcikK K3sKKwlhZGFwdGVyLT5jZGV2ID0gbWFrZV9kZXYoJml4Z2JlX2NkZXZzdywgYWRhcHRlci0+aWZw LT5pZl9kdW5pdCwKKwkgICAgVUlEX1JPT1QsIEdJRF9XSEVFTCwgMDYwMCwgIiVzIiwgaWZfbmFt ZShhZGFwdGVyLT5pZnApKTsKKwkKKwlpZiAoYWRhcHRlci0+Y2RldiA9PSBOVUxMKQorCQlyZXR1 cm4gKEVOT01FTSk7CisKKwlhZGFwdGVyLT5jZGV2LT5zaV9kcnYxID0gKHZvaWQgKilhZGFwdGVy OworCQorCXJldHVybiAoMCk7Cit9CisKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqICBEZXZpY2UgaW5pdGlh bGl6YXRpb24gcm91dGluZQogICoKQEAgLTYwNCw2ICs2MzYsMTQgQEAgaXhnYmVfYXR0YWNoKGRl dmljZV90IGRldikKICNpZmRlZiBERVZfTkVUTUFQCiAJaXhnYmVfbmV0bWFwX2F0dGFjaChhZGFw dGVyKTsKICNlbmRpZiAvKiBERVZfTkVUTUFQICovCisKKwllcnJvciA9IGl4Z2JlX21ha2VkZXYo YWRhcHRlcik7CisJaWYgKGVycm9yKQorCQlnb3RvIGVycl9sYXRlOworCQorCW10eF9pbml0KCZh ZGFwdGVyLT5maWx0ZXJfbXR4LCAiZmlsdGVyX210eCIsIE5VTEwsIE1UWF9ERUYpOworCVRBSUxR X0lOSVQoJmFkYXB0ZXItPmZpbHRlcl9saXN0KTsKKwogCUlOSVRfREVCVUdPVVQoIml4Z2JlX2F0 dGFjaDogZW5kIik7CiAJcmV0dXJuICgwKTsKIGVycl9sYXRlOgpAQCAtMTgxMiw3ICsxODUyLDcg QEAgcmV0cnk6CiAJCXJldHVybiAoZXJyb3IpOwogCX0KIAotI2lmZGVmIElYR0JFX0ZESVIKKyNp ZmRlZiBJWEdCRV9GRElSX0FUUgogCS8qIERvIHRoZSBmbG93IGRpcmVjdG9yIG1hZ2ljICovCiAJ aWYgKCh0eHItPmF0cl9zYW1wbGUpICYmICghYWRhcHRlci0+ZmRpcl9yZWluaXQpKSB7CiAJCSsr dHhyLT5hdHJfY291bnQ7CkBAIC0zMDU5LDcgKzMwOTksNyBAQCBpeGdiZV9zZXR1cF90cmFuc21p dF9yaW5nKHN0cnVjdCB0eF9yaW5nICp0eHIpCiAJCXR4YnVmLT5lb3AgPSBOVUxMOwogICAgICAg ICB9CiAKLSNpZmRlZiBJWEdCRV9GRElSCisjaWZkZWYgSVhHQkVfRkRJUl9BVFIKIAkvKiBTZXQg dGhlIHJhdGUgYXQgd2hpY2ggd2Ugc2FtcGxlIHBhY2tldHMgKi8KIAlpZiAoYWRhcHRlci0+aHcu bWFjLnR5cGUgIT0gaXhnYmVfbWFjXzgyNTk4RUIpCiAJCXR4ci0+YXRyX3NhbXBsZSA9IGF0cl9z YW1wbGVfcmF0ZTsKQEAgLTM0NzksNyArMzUxOSw3IEBAIGl4Z2JlX3Rzb19zZXR1cChzdHJ1Y3Qg dHhfcmluZyAqdHhyLCBzdHJ1Y3QgbWJ1ZiAqbXAsCiAJcmV0dXJuICgwKTsKIH0KIAotI2lmZGVm IElYR0JFX0ZESVIKKyNpZmRlZiBJWEdCRV9GRElSX0FUUgogLyoKICoqIFRoaXMgcm91dGluZSBw YXJzZXMgcGFja2V0IGhlYWRlcnMgc28gdGhhdCBGbG93CiAqKiBEaXJlY3RvciBjYW4gbWFrZSBh IGhhc2hlZCBmaWx0ZXIgdGFibGUgZW50cnkgCkBAIC01MjcwLDEzICs1MzEwLDMzIEBAIGl4Z2Jl X3VwZGF0ZV9zdGF0c19jb3VudGVycyhzdHJ1Y3QgYWRhcHRlciAqYWRhcHRlcikKIAlhZGFwdGVy LT5zdGF0cy54ZWMgKz0gSVhHQkVfUkVBRF9SRUcoaHcsIElYR0JFX1hFQyk7CiAJYWRhcHRlci0+ c3RhdHMuZmNjcmMgKz0gSVhHQkVfUkVBRF9SRUcoaHcsIElYR0JFX0ZDQ1JDKTsKIAlhZGFwdGVy LT5zdGF0cy5mY2xhc3QgKz0gSVhHQkVfUkVBRF9SRUcoaHcsIElYR0JFX0ZDTEFTVCk7Ci0JLyog T25seSByZWFkIEZDT0Ugb24gODI1OTkgKi8KKwkvKiBPbmx5IHJlYWQgRkNPRS9GRElSIG9uIDgy NTk5ICovCiAJaWYgKGh3LT5tYWMudHlwZSAhPSBpeGdiZV9tYWNfODI1OThFQikgewogCQlhZGFw dGVyLT5zdGF0cy5mY29lcnBkYyArPSBJWEdCRV9SRUFEX1JFRyhodywgSVhHQkVfRkNPRVJQREMp OwogCQlhZGFwdGVyLT5zdGF0cy5mY29lcHJjICs9IElYR0JFX1JFQURfUkVHKGh3LCBJWEdCRV9G Q09FUFJDKTsKIAkJYWRhcHRlci0+c3RhdHMuZmNvZXB0YyArPSBJWEdCRV9SRUFEX1JFRyhodywg SVhHQkVfRkNPRVBUQyk7CiAJCWFkYXB0ZXItPnN0YXRzLmZjb2Vkd3JjICs9IElYR0JFX1JFQURf UkVHKGh3LCBJWEdCRV9GQ09FRFdSQyk7CiAJCWFkYXB0ZXItPnN0YXRzLmZjb2Vkd3RjICs9IElY R0JFX1JFQURfUkVHKGh3LCBJWEdCRV9GQ09FRFdUQyk7CisJCWFkYXB0ZXItPnN0YXRzLmZkaXJm cmVlX2ZyZWUgPQorCQkJKElYR0JFX1JFQURfUkVHKGh3LCBJWEdCRV9GRElSRlJFRSkgJiBJWEdC RV9GRElSRlJFRV9GUkVFX01BU0spCisJCQk+PiBJWEdCRV9GRElSRlJFRV9GUkVFX1NISUZUOwor CQlhZGFwdGVyLT5zdGF0cy5mZGlyZnJlZV9jb2xsID0KKwkJCShJWEdCRV9SRUFEX1JFRyhodywg SVhHQkVfRkRJUkZSRUUpICYgSVhHQkVfRkRJUkZSRUVfQ09MTF9NQVNLKQorCQkJPj4gSVhHQkVf RkRJUkZSRUVfQ09MTF9TSElGVDsKKwkJYWRhcHRlci0+c3RhdHMuZmRpcnVzdGF0X2FkZCArPQor CQkJKElYR0JFX1JFQURfUkVHKGh3LCBJWEdCRV9GRElSVVNUQVQpICYgSVhHQkVfRkRJUlVTVEFU X0FERF9NQVNLKQorCQkJPj4gSVhHQkVfRkRJUlVTVEFUX0FERF9TSElGVDsKKwkJYWRhcHRlci0+ c3RhdHMuZmRpcnVzdGF0X3JlbW92ZSArPQorCQkJKElYR0JFX1JFQURfUkVHKGh3LCBJWEdCRV9G RElSVVNUQVQpICYgSVhHQkVfRkRJUlVTVEFUX1JFTU9WRV9NQVNLKQorCQkJPj4gSVhHQkVfRkRJ UlVTVEFUX1JFTU9WRV9TSElGVDsKKwkJYWRhcHRlci0+c3RhdHMuZmRpcmZzdGF0X2ZhZGQgKz0K KwkJCShJWEdCRV9SRUFEX1JFRyhodywgSVhHQkVfRkRJUkZTVEFUKSAmIElYR0JFX0ZESVJGU1RB VF9GQUREX01BU0spCisJCQk+PiBJWEdCRV9GRElSRlNUQVRfRkFERF9TSElGVDsKKwkJYWRhcHRl ci0+c3RhdHMuZmRpcmZzdGF0X2ZyZW1vdmUgKz0KKwkJCShJWEdCRV9SRUFEX1JFRyhodywgSVhH QkVfRkRJUkZTVEFUKSAmIElYR0JFX0ZESVJGU1RBVF9GUkVNT1ZFX01BU0spCisJCQk+PiBJWEdC RV9GRElSRlNUQVRfRlJFTU9WRV9TSElGVDsKKwkJYWRhcHRlci0+c3RhdHMuZmRpcm1hdGNoICs9 IElYR0JFX1JFQURfUkVHKGh3LCBJWEdCRV9GRElSTUFUQ0gpOworCQlhZGFwdGVyLT5zdGF0cy5m ZGlybWlzcyArPSBJWEdCRV9SRUFEX1JFRyhodywgSVhHQkVfRkRJUk1JU1MpOwogCX0KIAogCS8q IEZpbGwgb3V0IHRoZSBPUyBzdGF0aXN0aWNzIHN0cnVjdHVyZSAqLwpAQCAtNTY0Miw2ICs1NzAy LDMyIEBAIGl4Z2JlX2FkZF9od19zdGF0cyhzdHJ1Y3QgYWRhcHRlciAqYWRhcHRlcikKIAlTWVND VExfQUREX1VRVUFEKGN0eCwgc3RhdF9saXN0LCBPSURfQVVUTywgInR4X2ZyYW1lc18xMDI0XzE1 MjIiLAogCQkJQ1RMRkxBR19SRCwgJnN0YXRzLT5wdGMxNTIyLAogCQkJIjEwMjQtMTUyMiBieXRl IGZyYW1lcyB0cmFuc21pdHRlZCIpOworCisJLyogZmRpciBzdGF0cyAqLworCVNZU0NUTF9BRERf VVFVQUQoY3R4LCBzdGF0X2xpc3QsIE9JRF9BVVRPLCAiZmRpcmZyZWVfZnJlZSIsCisJCUNUTEZM QUdfUkQsICZzdGF0cy0+ZmRpcmZyZWVfZnJlZSwKKwkJIiIpOworCVNZU0NUTF9BRERfVVFVQUQo Y3R4LCBzdGF0X2xpc3QsIE9JRF9BVVRPLCAiZmRpcmZyZWVfY29sbCIsCisJCUNUTEZMQUdfUkQs ICZzdGF0cy0+ZmRpcmZyZWVfY29sbCwKKwkJIiIpOworCVNZU0NUTF9BRERfVVFVQUQoY3R4LCBz dGF0X2xpc3QsIE9JRF9BVVRPLCAiZmRpcnVzdGF0X2FkZCIsCisJCUNUTEZMQUdfUkQsICZzdGF0 cy0+ZmRpcnVzdGF0X2FkZCwKKwkJIiIpOworCVNZU0NUTF9BRERfVVFVQUQoY3R4LCBzdGF0X2xp c3QsIE9JRF9BVVRPLCAiZmRpcnVzdGF0X3JlbW92ZSIsCisJCUNUTEZMQUdfUkQsICZzdGF0cy0+ ZmRpcnVzdGF0X3JlbW92ZSwKKwkJIiIpOworCVNZU0NUTF9BRERfVVFVQUQoY3R4LCBzdGF0X2xp c3QsIE9JRF9BVVRPLCAiZmRpcmZzdGF0X2ZhZGQiLAorCQlDVExGTEFHX1JELCAmc3RhdHMtPmZk aXJmc3RhdF9mYWRkLAorCQkiIik7CisJU1lTQ1RMX0FERF9VUVVBRChjdHgsIHN0YXRfbGlzdCwg T0lEX0FVVE8sICJmZGlyZnN0YXRfZnJlbW92ZSIsCisJCUNUTEZMQUdfUkQsICZzdGF0cy0+ZmRp cmZzdGF0X2ZyZW1vdmUsCisJCSIiKTsKKwlTWVNDVExfQUREX1VRVUFEKGN0eCwgc3RhdF9saXN0 LCBPSURfQVVUTywgImZkaXJtYXRjaCIsCisJCUNUTEZMQUdfUkQsICZzdGF0cy0+ZmRpcm1hdGNo LAorCQkiIik7CisJU1lTQ1RMX0FERF9VUVVBRChjdHgsIHN0YXRfbGlzdCwgT0lEX0FVVE8sICJm ZGlybWlzcyIsCisJCUNUTEZMQUdfUkQsICZzdGF0cy0+ZmRpcm1pc3MsCisJCSIiKTsKIH0KIAog LyoKQEAgLTU4MDMsMyArNTg4OSwxMzcgQEAgaXhnYmVfZGlzYWJsZV9yeF9kcm9wKHN0cnVjdCBh ZGFwdGVyICphZGFwdGVyKQogICAgICAgICAJSVhHQkVfV1JJVEVfUkVHKGh3LCBJWEdCRV9TUlJD VEwoaSksIHNycmN0bCk7CiAJfQogfQorCitzdGF0aWMgaW50CitpeGdiZV9leHRlbnNpb25fb3Bl bihzdHJ1Y3QgY2RldiAqZGV2LCBpbnQgZmxhZ3MsIGludCBmbXAsIHN0cnVjdCB0aHJlYWQgKnRk KQoreworICAgICAgIHJldHVybiAoMCk7Cit9CisKK3N0YXRpYyBpbnQKK2l4Z2JlX2V4dGVuc2lv bl9jbG9zZShzdHJ1Y3QgY2RldiAqZGV2LCBpbnQgZmxhZ3MsIGludCBmbXQsIHN0cnVjdCB0aHJl YWQgKnRkKQoreworICAgICAgIHJldHVybiAoMCk7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgaXhfZmls dGVyX2VudHJ5ICoKK2l4Z2JlX2ZpbmRfZmlsdGVyKHN0cnVjdCBhZGFwdGVyICphZGFwdGVyLCB1 bnNpZ25lZCBpZCkKK3sKKwlzdHJ1Y3QgaXhfZmlsdGVyX2VudHJ5ICplbnRyeTsKKworCVRBSUxR X0ZPUkVBQ0goZW50cnksICZhZGFwdGVyLT5maWx0ZXJfbGlzdCwgbGluaykKKwkJaWYgKGVudHJ5 LT5maWx0ZXIuaWQgPT0gaWQpCisJCQlyZXR1cm4gZW50cnk7CisJcmV0dXJuIE5VTEw7Cit9CisK K3N0YXRpYyBpbnQKK2l4Z2JlX2V4dGVuc2lvbl9pb2N0bChzdHJ1Y3QgY2RldiAqZGV2LCB1bnNp Z25lZCBsb25nIGNtZCwgY2FkZHJfdCBkYXRhLAorICAgIGludCBmZmxhZywgc3RydWN0IHRocmVh ZCAqdGQpCit7CisJc3RydWN0IGFkYXB0ZXIgKmFkYXB0ZXIgPSAoc3RydWN0IGFkYXB0ZXIgKilk ZXYtPnNpX2RydjE7CisJaW50IGVycm9yID0gMDsKKworCWlmIChwcml2X2NoZWNrKHRkLCBQUklW X0RSSVZFUikpIHsKKwkJcmV0dXJuIChFUEVSTSk7CisJfQorCQorCW10eF9sb2NrKCZhZGFwdGVy LT5maWx0ZXJfbXR4KTsKKwlzd2l0Y2ggKGNtZCkgeworCWNhc2UgSVhHQkVfQUREX1NJR0ZJTFRF UjogeworCQlzdHJ1Y3QgaXhfZmlsdGVyICpmaWx0ZXIgPSAoc3RydWN0IGl4X2ZpbHRlciAqKWRh dGE7CisJCXN0cnVjdCBpeF9maWx0ZXJfZW50cnkgKmVudHJ5OworCQl1bmlvbiBpeGdiZV9hdHJf aGFzaF9kd29yZCBpbnB1dCA9IHsuZHdvcmQgPSAwfTsKKwkJdW5pb24gaXhnYmVfYXRyX2hhc2hf ZHdvcmQgY29tbW9uID0gey5kd29yZCA9IDB9OworCisJCXN3aXRjaCAoZmlsdGVyLT5wcm90bykg eworCQljYXNlIElYR0JFX0ZJTFRFUl9QUk9UT19UQ1BWNDoKKwkJCWlucHV0LmZvcm1hdHRlZC5m bG93X3R5cGUgXj0gSVhHQkVfQVRSX0ZMT1dfVFlQRV9UQ1BWNDsKKwkJCWJyZWFrOworCQljYXNl IElYR0JFX0ZJTFRFUl9QUk9UT19VRFBWNDoKKwkJCWlucHV0LmZvcm1hdHRlZC5mbG93X3R5cGUg Xj0gSVhHQkVfQVRSX0ZMT1dfVFlQRV9VRFBWNDsKKwkJCWJyZWFrOworCQlkZWZhdWx0OgorCQkJ ZXJyb3IgPSBFSU5WQUw7CisJCQlnb3RvIG91dDsKKwkJfQorCQljb21tb24ucG9ydC5zcmMgXj0g aHRvbnMoZmlsdGVyLT5zcmNfcG9ydCk7CisJCWNvbW1vbi5wb3J0LmRzdCBePSBodG9ucyhmaWx0 ZXItPmRzdF9wb3J0KTsKKwkJY29tbW9uLmZsZXhfYnl0ZXMgXj0gaHRvbnMoRVRIRVJUWVBFX0lQ KTsKKwkJY29tbW9uLmlwIF49IGZpbHRlci0+c3JjX2lwLnNfYWRkciBeIGZpbHRlci0+ZHN0X2lw LnNfYWRkcjsKKworCQllbnRyeSA9IG1hbGxvYyhzaXplb2YoKmVudHJ5KSwgTV9ERVZCVUYsIE1f Tk9XQUlUIHwgTV9aRVJPKTsKKwkJaWYgKCFlbnRyeSkgeworCQkJZXJyb3IgPSBFTk9NRU07CisJ CQlnb3RvIG91dDsKKwkJfQorCQltZW1jcHkoJmVudHJ5LT5maWx0ZXIsIGZpbHRlciwgc2l6ZW9m KGVudHJ5LT5maWx0ZXIpKTsKKwkJZW50cnktPmZpbHRlci5pZCA9IGFkYXB0ZXItPm5leHRfZmls dGVyX2lkKys7CisJCVRBSUxRX0lOU0VSVF9UQUlMKCZhZGFwdGVyLT5maWx0ZXJfbGlzdCwgZW50 cnksIGxpbmspOworCisJCWl4Z2JlX2ZkaXJfYWRkX3NpZ25hdHVyZV9maWx0ZXJfODI1OTkoJmFk YXB0ZXItPmh3LAorCQkJaW5wdXQsIGNvbW1vbiwgZmlsdGVyLT5xdWVfaW5kZXgpOworCQlicmVh azsKKwl9CisJY2FzZSBJWEdCRV9HRVRfU0lHRklMVEVSOiB7CisJCXN0cnVjdCBpeF9maWx0ZXIg KmZpbHRlciA9IChzdHJ1Y3QgaXhfZmlsdGVyICopZGF0YTsKKwkJc3RydWN0IGl4X2ZpbHRlcl9l bnRyeSAqZW50cnk7CisKKwkJZW50cnkgPSBpeGdiZV9maW5kX2ZpbHRlcihhZGFwdGVyLCBmaWx0 ZXItPmlkKTsKKwkJaWYgKGVudHJ5KQorCQkJbWVtY3B5KGZpbHRlciwgJmVudHJ5LT5maWx0ZXIs IHNpemVvZigqZmlsdGVyKSk7CisJCWVsc2UKKwkJCWVycm9yID0gRU5PRU5UOworCQlicmVhazsK Kwl9OworCWNhc2UgSVhHQkVfQ0xSX1NJR0ZJTFRFUjogeworCQl1bnNpZ25lZCAqaWQgPSAodW5z aWduZWQgKilkYXRhOworCQlzdHJ1Y3QgaXhfZmlsdGVyX2VudHJ5ICplbnRyeTsKKwkJdW5pb24g aXhnYmVfYXRyX2hhc2hfZHdvcmQgaW5wdXQgPSB7LmR3b3JkID0gMH07CisJCXVuaW9uIGl4Z2Jl X2F0cl9oYXNoX2R3b3JkIGNvbW1vbiA9IHsuZHdvcmQgPSAwfTsKKworCQllbnRyeSA9IGl4Z2Jl X2ZpbmRfZmlsdGVyKGFkYXB0ZXIsICppZCk7CisJCWlmICghZW50cnkpIHsKKwkJCWVycm9yID0g RU5PRU5UOworCQkJZ290byBvdXQ7CisJCX0KKworCQlzd2l0Y2ggKGVudHJ5LT5maWx0ZXIucHJv dG8pIHsKKwkJY2FzZSBJWEdCRV9GSUxURVJfUFJPVE9fVENQVjQ6CisJCQlpbnB1dC5mb3JtYXR0 ZWQuZmxvd190eXBlIF49IElYR0JFX0FUUl9GTE9XX1RZUEVfVENQVjQ7CisJCQlicmVhazsKKwkJ Y2FzZSBJWEdCRV9GSUxURVJfUFJPVE9fVURQVjQ6CisJCQlpbnB1dC5mb3JtYXR0ZWQuZmxvd190 eXBlIF49IElYR0JFX0FUUl9GTE9XX1RZUEVfVURQVjQ7CisJCQlicmVhazsKKwkJZGVmYXVsdDoK KwkJCWVycm9yID0gRUlOVkFMOworCQkJZ290byBvdXQ7CisJCX0KKwkJY29tbW9uLnBvcnQuc3Jj IF49IGh0b25zKGVudHJ5LT5maWx0ZXIuc3JjX3BvcnQpOworCQljb21tb24ucG9ydC5kc3QgXj0g aHRvbnMoZW50cnktPmZpbHRlci5kc3RfcG9ydCk7CisJCWNvbW1vbi5mbGV4X2J5dGVzIF49IGh0 b25zKEVUSEVSVFlQRV9JUCk7CisJCWNvbW1vbi5pcCBePSBlbnRyeS0+ZmlsdGVyLnNyY19pcC5z X2FkZHIKKwkJCV4gZW50cnktPmZpbHRlci5kc3RfaXAuc19hZGRyOworCisJCWl4Z2JlX2ZkaXJf ZXJhc2Vfc2lnbmF0dXJlX2ZpbHRlcl84MjU5OSgmYWRhcHRlci0+aHcsCisJCQlpbnB1dCwgY29t bW9uKTsKKworCQlUQUlMUV9SRU1PVkUoJmFkYXB0ZXItPmZpbHRlcl9saXN0LCBlbnRyeSwgbGlu ayk7CisJCWJyZWFrOworCX0KKwljYXNlIElYR0JFX0dFVF9TSUdGSUxURVJfTEVOOiB7CisJCXVu c2lnbmVkICppZCA9ICh1bnNpZ25lZCAqKWRhdGE7CisJCQorCQkqaWQgPSBhZGFwdGVyLT5uZXh0 X2ZpbHRlcl9pZDsKKwkJYnJlYWs7CisJfQorCWRlZmF1bHQ6CisJCWVycm9yID0gRU9QTk9UU1VQ UDsKKwkJYnJlYWs7CisJfQorCitvdXQ6CisJbXR4X3VubG9jaygmYWRhcHRlci0+ZmlsdGVyX210 eCk7CisJcmV0dXJuIChlcnJvcik7Cit9CisKZGlmZiAtLWdpdCBhL3N5cy9kZXYvaXhnYmUvaXhn YmUuaCBiL3N5cy9kZXYvaXhnYmUvaXhnYmUuaAppbmRleCA3N2I3MmVkLi4wNjRiNTEwIDEwMDY0 NAotLS0gYS9zeXMvZGV2L2l4Z2JlL2l4Z2JlLmgKKysrIGIvc3lzL2Rldi9peGdiZS9peGdiZS5o CkBAIC04OCw4ICs4OCwxMSBAQAogI2luY2x1ZGUgPHN5cy9wY3B1Lmg+CiAjaW5jbHVkZSA8c3lz L3NtcC5oPgogI2luY2x1ZGUgPG1hY2hpbmUvc21wLmg+CisjaW5jbHVkZSA8c3lzL2NvbmYuaD4K KyNpbmNsdWRlIDxzeXMvcHJpdi5oPgogCiAjaW5jbHVkZSAiaXhnYmVfYXBpLmgiCisjaW5jbHVk ZSAiaXhnYmVfaW9jdGwuaCIKIAogLyogVHVuYWJsZXMgKi8KIApAQCAtNDY4LDggKzQ3MSwxNyBA QCBzdHJ1Y3QgYWRhcHRlciB7CiAJdW5zaWduZWQgbG9uZwkJbGlua19pcnE7CiAKIAlzdHJ1Y3Qg aXhnYmVfaHdfc3RhdHMgCXN0YXRzOworCisJc3RydWN0IGNkZXYJCSpjZGV2OworCVRBSUxRX0hF QUQoLCBpeF9maWx0ZXJfZW50cnkpIGZpbHRlcl9saXN0OworCXN0cnVjdCBtdHgJCWZpbHRlcl9t dHg7CisJdW5zaWduZWQJCW5leHRfZmlsdGVyX2lkOwogfTsKIAorc3RydWN0IGl4X2ZpbHRlcl9l bnRyeSB7CisJVEFJTFFfRU5UUlkoaXhfZmlsdGVyX2VudHJ5KSBsaW5rOworCXN0cnVjdCBpeF9m aWx0ZXIgZmlsdGVyOworfTsKIAogLyogUHJlY2lzaW9uIFRpbWUgU3luYyAoSUVFRSAxNTg4KSBk ZWZpbmVzICovCiAjZGVmaW5lIEVUSEVSVFlQRV9JRUVFMTU4OCAgICAgIDB4ODhGNwpkaWZmIC0t Z2l0IGEvc3lzL2Rldi9peGdiZS9peGdiZV84MjU5OS5jIGIvc3lzL2Rldi9peGdiZS9peGdiZV84 MjU5OS5jCmluZGV4IDNjYzhjZDcuLjcyZWE1ZWEgMTAwNjQ0Ci0tLSBhL3N5cy9kZXYvaXhnYmUv aXhnYmVfODI1OTkuYworKysgYi9zeXMvZGV2L2l4Z2JlL2l4Z2JlXzgyNTk5LmMKQEAgLTE0ODIs NyArMTQ4Miw4IEBAIHMzMiBpeGdiZV9pbml0X2ZkaXJfc2lnbmF0dXJlXzgyNTk5KHN0cnVjdCBp eGdiZV9odyAqaHcsIHUzMiBmZGlyY3RybCkKIAkgKiAgU2V0IHRoZSBtYXhpbXVtIGxlbmd0aCBw ZXIgaGFzaCBidWNrZXQgdG8gMHhBIGZpbHRlcnMKIAkgKiAgU2VuZCBpbnRlcnJ1cHQgd2hlbiA2 NCBmaWx0ZXJzIGFyZSBsZWZ0CiAJICovCi0JZmRpcmN0cmwgfD0gKDB4NiA8PCBJWEdCRV9GRElS Q1RSTF9GTEVYX1NISUZUKSB8CisJZmRpcmN0cmwgfD0gSVhHQkVfRkRJUkNUUkxfUkVQT1JUX1NU QVRVUyB8CisgCQkgICAgKDB4NiA8PCBJWEdCRV9GRElSQ1RSTF9GTEVYX1NISUZUKSB8CiAJCSAg ICAoMHhBIDw8IElYR0JFX0ZESVJDVFJMX01BWF9MRU5HVEhfU0hJRlQpIHwKIAkJICAgICg0IDw8 IElYR0JFX0ZESVJDVFJMX0ZVTExfVEhSRVNIX1NISUZUKTsKIApAQCAtMTY2Nyw2ICsxNjY4LDU2 IEBAIHMzMiBpeGdiZV9mZGlyX2FkZF9zaWduYXR1cmVfZmlsdGVyXzgyNTk5KHN0cnVjdCBpeGdi ZV9odyAqaHcsCiAJcmV0dXJuIElYR0JFX1NVQ0NFU1M7CiB9CiAKKy8qKgorICogIGl4Z2JlX2Zk aXJfZXJhc2Vfc2lnbmF0dXJlX2ZpbHRlcl84MjU5OSAtIEFkZHMgYSBzaWduYXR1cmUgaGFzaCBm aWx0ZXIKKyAqICBAaHc6IHBvaW50ZXIgdG8gaGFyZHdhcmUgc3RydWN0dXJlCisgKiAgQHN0cmVh bTogaW5wdXQgYml0c3RyZWFtCisgKiAgQHF1ZXVlOiBxdWV1ZSBpbmRleCB0byBkaXJlY3QgdHJh ZmZpYyB0bworICoqLworczMyIGl4Z2JlX2ZkaXJfZXJhc2Vfc2lnbmF0dXJlX2ZpbHRlcl84MjU5 OShzdHJ1Y3QgaXhnYmVfaHcgKmh3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdW5pb24gaXhnYmVfYXRyX2hhc2hfZHdvcmQgaW5wdXQsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmlvbiBpeGdiZV9hdHJfaGFzaF9kd29yZCBj b21tb24pCit7CisJdTY0ICBmZGlyaGFzaGNtZDsKKwl1MzIgIGZkaXJjbWQ7CisKKwlERUJVR0ZV TkMoIml4Z2JlX2ZkaXJfY2xlYXJfc2lnbmF0dXJlX2ZpbHRlcl84MjU5OSIpOworCisJLyoKKwkg KiBHZXQgdGhlIGZsb3dfdHlwZSBpbiBvcmRlciB0byBwcm9ncmFtIEZESVJDTUQgcHJvcGVybHkK KwkgKiBsb3dlc3QgMiBiaXRzIGFyZSBGRElSQ01ELkw0VFlQRSwgdGhpcmQgbG93ZXN0IGJpdCBp cyBGRElSQ01ELklQVjYKKwkgKi8KKwlzd2l0Y2ggKGlucHV0LmZvcm1hdHRlZC5mbG93X3R5cGUp IHsKKwljYXNlIElYR0JFX0FUUl9GTE9XX1RZUEVfVENQVjQ6CisJY2FzZSBJWEdCRV9BVFJfRkxP V19UWVBFX1VEUFY0OgorCWNhc2UgSVhHQkVfQVRSX0ZMT1dfVFlQRV9TQ1RQVjQ6CisJY2FzZSBJ WEdCRV9BVFJfRkxPV19UWVBFX1RDUFY2OgorCWNhc2UgSVhHQkVfQVRSX0ZMT1dfVFlQRV9VRFBW NjoKKwljYXNlIElYR0JFX0FUUl9GTE9XX1RZUEVfU0NUUFY2OgorCQlicmVhazsKKwlkZWZhdWx0 OgorCQlERUJVR09VVCgiIEVycm9yIG9uIGZsb3cgdHlwZSBpbnB1dFxuIik7CisJCXJldHVybiBJ WEdCRV9FUlJfQ09ORklHOworCX0KKworCS8qIGNvbmZpZ3VyZSBGRElSQ01EIHJlZ2lzdGVyICov CisJZmRpcmNtZCA9IElYR0JFX0ZESVJDTURfQ01EX1JFTU9WRV9GTE9XIHwgCisJICAgICAgICAg IElYR0JFX0ZESVJDTURfTEFTVCB8IElYR0JFX0ZESVJDTURfUVVFVUVfRU47CisJZmRpcmNtZCB8 PSBpbnB1dC5mb3JtYXR0ZWQuZmxvd190eXBlIDw8IElYR0JFX0ZESVJDTURfRkxPV19UWVBFX1NI SUZUOworCisJLyoKKwkgKiBUaGUgbG93ZXIgMzItYml0cyBvZiBmZGlyaGFzaGNtZCBpcyBmb3Ig RkRJUkhBU0gsIHRoZSB1cHBlciAzMi1iaXRzCisJICogaXMgZm9yIEZESVJDTUQuICBUaGVuIGRv IGEgNjQtYml0IHJlZ2lzdGVyIHdyaXRlIGZyb20gRkRJUkhBU0guCisJICovCisJZmRpcmhhc2hj bWQgPSAodTY0KWZkaXJjbWQgPDwgMzI7CisJZmRpcmhhc2hjbWQgfD0gaXhnYmVfYXRyX2NvbXB1 dGVfc2lnX2hhc2hfODI1OTkoaW5wdXQsIGNvbW1vbik7CisJSVhHQkVfV1JJVEVfUkVHNjQoaHcs IElYR0JFX0ZESVJIQVNILCBmZGlyaGFzaGNtZCk7CisKKwlERUJVR09VVDEoIlR4IGhhc2g9JXhc biIsICh1MzIpZmRpcmhhc2hjbWQpOworCisJcmV0dXJuIElYR0JFX1NVQ0NFU1M7Cit9CisKICNk ZWZpbmUgSVhHQkVfQ09NUFVURV9CS1RfSEFTSF9JVEVSQVRJT04oX24pIFwKIGRvIHsgXAogCXUz MiBuID0gKF9uKTsgXApkaWZmIC0tZ2l0IGEvc3lzL2Rldi9peGdiZS9peGdiZV9hcGkuaCBiL3N5 cy9kZXYvaXhnYmUvaXhnYmVfYXBpLmgKaW5kZXggOTEwMjNhZS4uNzdjNjQyNyAxMDA2NDQKLS0t IGEvc3lzL2Rldi9peGdiZS9peGdiZV9hcGkuaAorKysgYi9zeXMvZGV2L2l4Z2JlL2l4Z2JlX2Fw aS5oCkBAIC0xNDQsNiArMTQ0LDkgQEAgczMyIGl4Z2JlX2ZkaXJfYWRkX3NpZ25hdHVyZV9maWx0 ZXJfODI1OTkoc3RydWN0IGl4Z2JlX2h3ICpodywKIAkJCQkJICB1bmlvbiBpeGdiZV9hdHJfaGFz aF9kd29yZCBpbnB1dCwKIAkJCQkJICB1bmlvbiBpeGdiZV9hdHJfaGFzaF9kd29yZCBjb21tb24s CiAJCQkJCSAgdTggcXVldWUpOworczMyIGl4Z2JlX2ZkaXJfZXJhc2Vfc2lnbmF0dXJlX2ZpbHRl cl84MjU5OShzdHJ1Y3QgaXhnYmVfaHcgKmh3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdW5pb24gaXhnYmVfYXRyX2hhc2hfZHdvcmQgaW5wdXQsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmlvbiBpeGdiZV9hdHJfaGFzaF9k d29yZCBjb21tb24pOwogczMyIGl4Z2JlX2ZkaXJfc2V0X2lucHV0X21hc2tfODI1OTkoc3RydWN0 IGl4Z2JlX2h3ICpodywKIAkJCQkgICAgdW5pb24gaXhnYmVfYXRyX2lucHV0ICppbnB1dF9tYXNr KTsKIHMzMiBpeGdiZV9mZGlyX3dyaXRlX3BlcmZlY3RfZmlsdGVyXzgyNTk5KHN0cnVjdCBpeGdi ZV9odyAqaHcsCmRpZmYgLS1naXQgYS9zeXMvZGV2L2l4Z2JlL2l4Z2JlX2lvY3RsLmggYi9zeXMv ZGV2L2l4Z2JlL2l4Z2JlX2lvY3RsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MC4uMTJmMTUyMgotLS0gL2Rldi9udWxsCisrKyBiL3N5cy9kZXYvaXhnYmUvaXhnYmVfaW9jdGwu aApAQCAtMCwwICsxLDYzIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworQ29weXJpZ2h0IChjKSAy MDEzIFRha3V5YSBBU0FEQQorQWxsIHJpZ2h0cyByZXNlcnZlZC4KKworUmVkaXN0cmlidXRpb24g YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cittb2Rp ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp dGlvbnMgYXJlIG1ldDoKKworIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0 IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwKKyAgICB0aGlzIGxpc3Qgb2YgY29u ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorCisgMi4gTmVpdGhlciB0aGUg bmFtZSBvZiB0aGUgQ2hlbHNpbyBDb3Jwb3JhdGlvbiBub3IgdGhlIG5hbWVzIG9mIGl0cworICAg IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg ZGVyaXZlZCBmcm9tCisgICAgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy aXR0ZW4gcGVybWlzc2lvbi4KKworVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiCitBTkQgQU5ZIEVYUFJFU1Mg T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF CitJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB IFBBUlRJQ1VMQVIgUFVSUE9TRQorQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI RSBDT1BZUklHSFQgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFCitMSUFCTEUgRk9SIEFOWSBESVJF Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCitDT05TRVFV RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO VCBPRgorU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S IFBST0ZJVFM7IE9SIEJVU0lORVNTCitJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorQ09OVFJBQ1QsIFNUUklDVCBM SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKK0FS SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG IEFEVklTRUQgT0YgVEhFCitQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworJEZyZWVCU0Qk CisKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKi8KKworI2lmbmRlZiBfX0lYR0JFSU9DVExfSF9fCisjZGVm aW5lIF9fSVhHQkVJT0NUTF9IX18KKworZW51bSB7CisJSVhfQUREX1NJR0ZJTFRFUiA9IDB4MCwK KwlJWF9HRVRfU0lHRklMVEVSLAorCUlYX0NMUl9TSUdGSUxURVIsCisJSVhfR0VUX1NJR0ZJTFRF Ul9MRU4KK307CisKK2VudW0geworCUlYR0JFX0ZJTFRFUl9QUk9UT19UQ1BWNCwKKwlJWEdCRV9G SUxURVJfUFJPVE9fVURQVjQKK307CisKK3N0cnVjdCBpeF9maWx0ZXIgeworCXVuc2lnbmVkIGlk OworCWludCBwcm90bzsKKwlzdHJ1Y3QgaW5fYWRkciBzcmNfaXA7CisJaW50IHNyY19wb3J0Owor CXN0cnVjdCBpbl9hZGRyIGRzdF9pcDsKKwlpbnQgZHN0X3BvcnQ7CisJaW50IHF1ZV9pbmRleDsK K307CisKKyNkZWZpbmUgSVhHQkVfQUREX1NJR0ZJTFRFUglfSU9XKCdpJywgSVhfQUREX1NJR0ZJ TFRFUiwgc3RydWN0IGl4X2ZpbHRlcikKKyNkZWZpbmUgSVhHQkVfR0VUX1NJR0ZJTFRFUglfSU9X UignaScsIElYX0dFVF9TSUdGSUxURVIsIHN0cnVjdCBpeF9maWx0ZXIpCisjZGVmaW5lIElYR0JF X0NMUl9TSUdGSUxURVIJX0lPVygnaScsIElYX0NMUl9TSUdGSUxURVIsIHVuc2lnbmVkKQorI2Rl ZmluZSBJWEdCRV9HRVRfU0lHRklMVEVSX0xFTiBfSU9SKCdpJywgSVhfR0VUX1NJR0ZJTFRFUl9M RU4sIHVuc2lnbmVkKQorCisjZW5kaWYKKwpkaWZmIC0tZ2l0IGEvc3lzL2Rldi9peGdiZS9peGdi ZV90eXBlLmggYi9zeXMvZGV2L2l4Z2JlL2l4Z2JlX3R5cGUuaAppbmRleCA0OWY1YmMwLi5jNWYy OWJiIDEwMDY0NAotLS0gYS9zeXMvZGV2L2l4Z2JlL2l4Z2JlX3R5cGUuaAorKysgYi9zeXMvZGV2 L2l4Z2JlL2l4Z2JlX3R5cGUuaApAQCAtMjk5Nyw2ICsyOTk3LDggQEAgc3RydWN0IGl4Z2JlX2h3 X3N0YXRzIHsKIAl1NjQgcWJ0Y1sxNl07CiAJdTY0IHFwcmRjWzE2XTsKIAl1NjQgcHhvbjJvZmZj WzhdOworCXU2NCBmZGlyZnJlZV9mcmVlOworCXU2NCBmZGlyZnJlZV9jb2xsOwogCXU2NCBmZGly dXN0YXRfYWRkOwogCXU2NCBmZGlydXN0YXRfcmVtb3ZlOwogCXU2NCBmZGlyZnN0YXRfZmFkZDsK ZGlmZiAtLWdpdCBhL3Rvb2xzL3Rvb2xzL2l4Z2JldG9vbC9NYWtlZmlsZSBiL3Rvb2xzL3Rvb2xz L2l4Z2JldG9vbC9NYWtlZmlsZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4w Njk1ZTkzCi0tLSAvZGV2L251bGwKKysrIGIvdG9vbHMvdG9vbHMvaXhnYmV0b29sL01ha2VmaWxl CkBAIC0wLDAgKzEsOSBAQAorIyAkRnJlZUJTRCQKKworUFJPRz0JaXhnYmV0b29sCitTUkNTPQlp eGdiZXRvb2wuYworTk9fTUFOPQorQ0ZMQUdTKz0gLUkkey5DVVJESVJ9Ly4uLy4uLy4uL3N5cy9k ZXYvaXhnYmUgLUkuCitCSU5ESVI/PSAvdXNyL3NiaW4KKworLmluY2x1ZGUgPGJzZC5wcm9nLm1r PgpkaWZmIC0tZ2l0IGEvdG9vbHMvdG9vbHMvaXhnYmV0b29sL2l4Z2JldG9vbC5jIGIvdG9vbHMv dG9vbHMvaXhnYmV0b29sL2l4Z2JldG9vbC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAuLjExY2IyYmUKLS0tIC9kZXYvbnVsbAorKysgYi90b29scy90b29scy9peGdiZXRvb2wv aXhnYmV0b29sLmMKQEAgLTAsMCArMSwyMTEgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCitDb3B5 cmlnaHQgKGMpIDIwMTMsIFRha3V5YSBBU0FEQS4KK0FsbCByaWdodHMgcmVzZXJ2ZWQuCisKK1Jl ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig d2l0aG91dAorbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv bGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CisKKyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291 cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsCisgICAgdGhp cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKworIDIu IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg Y29weXJpZ2h0CisgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisKKyAzLiBOZWl0aGVy IHRoZSBuYW1lIG9mIHRoZSBDaGVsc2lvIENvcnBvcmF0aW9uIG5vciB0aGUgbmFtZXMgb2YgaXRz CisgICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k dWN0cyBkZXJpdmVkIGZyb20KKyAgICB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorCitUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIKK0FORCBBTlkgRVhQ UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP LCBUSEUKK0lNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCitBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB TEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUKK0xJQUJMRSBGT1IgQU5Z IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKK0NP TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV UkVNRU5UIE9GCitTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKK0lOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCitDT05UUkFDVCwgU1RS SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF KQorQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW RU4gSUYgQURWSVNFRCBPRiBUSEUKK1BPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisKKyoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKi8KKyNpbmNsdWRlIDxzeXMvY2RlZnMuaD4KK19fRkJTRElEKCIkRnJl ZUJTRCQiKTsKKworI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5j bHVkZSA8ZmNudGwuaD4KKyNpbmNsdWRlIDxlcnJuby5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgor I2luY2x1ZGUgPGxpbWl0cy5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPHN5cy90 eXBlcy5oPgorI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKyNpbmNsdWRlIDxuZXRpbmV0L2luLmg+ CisjaW5jbHVkZSA8YXJwYS9pbmV0Lmg+CisjaW5jbHVkZSA8c3lzL2lvY3RsLmg+CisjaW5jbHVk ZSA8aXhnYmVfaW9jdGwuaD4KKworc3RhdGljIHZvaWQKK3VzYWdlKHZvaWQpCit7CisJZnByaW50 ZihzdGRlcnIsICJVc2FnZTogaXhnYmV0b29sIDxpZm5hbWU+IFtvcGVyYXRpb25dXG4iKTsKKwlm cHJpbnRmKHN0ZGVyciwgIlx0YWRkX3NpZ19maWx0ZXIgPHByb3RvPiA8c3JjX2lwPiA8c3JjX3Bv cnQ+IDxkc3RfaXA+IDxkc3RfcG9ydD4gPHF1ZV9pbmRleD5cbiIpOworCWZwcmludGYoc3RkZXJy LCAiXHRzaG93X3NpZ19maWx0ZXJcbiIpOworCWZwcmludGYoc3RkZXJyLCAiXHRkZWxfc2lnX2Zp bHRlciA8aWQ+XG4iKTsKK30KKworc3RhdGljIGludAorZG9pdChjb25zdCBjaGFyICppZmZfbmFt ZSwgdW5zaWduZWQgbG9uZyBjbWQsIHZvaWQgKmRhdGEpCit7CisJaW50IGZkID0gMDsKKwlpbnQg ZXJyOworCWNoYXIgYnVmWzY0XTsKKworCXNucHJpbnRmKGJ1ZiwgNjQsICIvZGV2LyVzIiwgaWZm X25hbWUpOworCWlmICgoZmQgPSBvcGVuKGJ1ZiwgT19SRFdSKSkgPCAwKQorCQlyZXR1cm4gLTE7 CisJCisJZXJyID0gaW9jdGwoZmQsIGNtZCwgZGF0YSkgPCAwID8gLTEgOiAwOworCWNsb3NlKGZk KTsKKwlyZXR1cm4gZXJyOworfQorCitzdGF0aWMgaW50IAorYWRkX3NpZ19maWx0ZXIoaW50IGFy Z2MsIGNoYXIgKmFyZ3ZbXSwgY2hhciAqaWZuYW1lKQoreworCXN0cnVjdCBpeF9maWx0ZXIgZmls dGVyOworCWludCBlcnJvcjsKKworCWlmIChhcmdjICE9IDkpIAorCQlyZXR1cm4gLTE7CisKKwlp ZiAoIXN0cmNtcChhcmd2WzNdLCAidGNwdjQiKSkKKwkJZmlsdGVyLnByb3RvID0gSVhHQkVfRklM VEVSX1BST1RPX1RDUFY0OworCWVsc2UgaWYgKCFzdHJjbXAoYXJndlszXSwgInVkcHY0IikpCisJ CWZpbHRlci5wcm90byA9IElYR0JFX0ZJTFRFUl9QUk9UT19VRFBWNDsKKwllbHNlCisJCXJldHVy biAtMTsKKwllcnJvciA9IGluZXRfYXRvbihhcmd2WzRdLCAmZmlsdGVyLnNyY19pcCk7CisJaWYg KGVycm9yICE9IDEpCisJCXJldHVybiBlcnJvcjsKKwllcnJubyA9IDA7CisJZmlsdGVyLnNyY19w b3J0ID0gc3RydG9sKGFyZ3ZbNV0sIE5VTEwsIDApOworCWlmIChlcnJubykKKwkJcmV0dXJuIGVy cm5vOworCWVycm9yID0gaW5ldF9hdG9uKGFyZ3ZbNl0sICZmaWx0ZXIuZHN0X2lwKTsKKwlpZiAo ZXJyb3IgIT0gMSkKKwkJcmV0dXJuIGVycm9yOworCWVycm5vID0gMDsKKwlmaWx0ZXIuZHN0X3Bv cnQgPSBzdHJ0b2woYXJndls3XSwgTlVMTCwgMCk7CisJaWYgKGVycm5vKQorCQlyZXR1cm4gZXJy bm87CisJZXJybm8gPSAwOworCWZpbHRlci5xdWVfaW5kZXggPSBzdHJ0b2woYXJndls4XSwgTlVM TCwgMCk7CisJaWYgKGVycm5vKQorCQlyZXR1cm4gZXJybm87CisKKwllcnJvciA9IGRvaXQoaWZu YW1lLCBJWEdCRV9BRERfU0lHRklMVEVSLCAodm9pZCAqKSZmaWx0ZXIpOworCWlmIChlcnJvcikK KwkJcGVycm9yKCJpb2N0bCIpOworCXJldHVybiAwOworfQorCitzdGF0aWMgaW5saW5lIGNvbnN0 IGNoYXIgKgorZmlsdGVyX3Byb3RvX3N0cihpbnQgcHJvdG8pCit7CisJY29uc3QgY2hhciAqc3Ry OworCisJc3dpdGNoIChwcm90bykgeworCWNhc2UgSVhHQkVfRklMVEVSX1BST1RPX1RDUFY0Ogor CQlzdHIgPSAidGNwdjQiOworCQlicmVhazsKKwljYXNlIElYR0JFX0ZJTFRFUl9QUk9UT19VRFBW NDoKKwkJc3RyID0gInVkcHY0IjsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJc3RyID0gIihpbnZh bCkiOworCX0KKwlyZXR1cm4gc3RyOworfQorCitzdGF0aWMgaW50IAorc2hvd19zaWdfZmlsdGVy KGludCBhcmdjLCBjaGFyICphcmd2W10sIGNoYXIgKmlmbmFtZSkKK3sKKwl1bnNpZ25lZCBpOwor CXVuc2lnbmVkIGxlbjsKKwlpbnQgZXJyb3I7CisKKwlpZiAoYXJnYyAhPSAzKSAKKwkJcmV0dXJu IC0xOworCisJZXJyb3IgPSBkb2l0KGlmbmFtZSwgSVhHQkVfR0VUX1NJR0ZJTFRFUl9MRU4sICh2 b2lkICopJmxlbik7CisJaWYgKGVycm9yKQorCQlwZXJyb3IoImlvY3RsIik7CisKKwlmb3IgKGkg PSAwOyBpIDwgbGVuOyBpKyspIHsKKwkJc3RydWN0IGl4X2ZpbHRlciBmaWx0ZXI7CisJCWZpbHRl ci5pZCA9IGk7CisJCWVycm9yID0gZG9pdChpZm5hbWUsIElYR0JFX0dFVF9TSUdGSUxURVIsICh2 b2lkICopJmZpbHRlcik7CisJCWlmIChlcnJvcikKKwkJCWNvbnRpbnVlOworCQlwcmludGYoImlk OiAldVxuIiwgZmlsdGVyLmlkKTsKKwkJcHJpbnRmKCJwcm90bzogJXNcbiIsIGZpbHRlcl9wcm90 b19zdHIoZmlsdGVyLnByb3RvKSk7CisJCXByaW50Zigic3JjX2lwOiAlc1xuIiwgaW5ldF9udG9h KGZpbHRlci5zcmNfaXApKTsKKwkJcHJpbnRmKCJzcmNfcG9ydDogJWRcbiIsIGZpbHRlci5zcmNf cG9ydCk7CisJCXByaW50ZigiZHN0X2lwOiAlc1xuIiwgaW5ldF9udG9hKGZpbHRlci5kc3RfaXAp KTsKKwkJcHJpbnRmKCJkc3RfcG9ydDogJWRcbiIsIGZpbHRlci5kc3RfcG9ydCk7CisJCXByaW50 ZigicXVlX2luZGV4OiAlZFxuIiwgZmlsdGVyLnF1ZV9pbmRleCk7CisJCXByaW50ZigiXG4iKTsK Kwl9CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgCitkZWxfc2lnX2ZpbHRlcihpbnQgYXJn YywgY2hhciAqYXJndltdLCBjaGFyICppZm5hbWUpCit7CisJdW5zaWduZWQgaWQ7CisJaW50IGVy cm9yOworCisJaWYgKGFyZ2MgIT0gNCkgCisJCXJldHVybiAtMTsKKworCWVycm5vID0gMDsKKwlp ZCA9IHN0cnRvdWwoYXJndlszXSwgTlVMTCwgMCk7CisJaWYgKGVycm5vKQorCQlyZXR1cm4gZXJy bm87CisKKwllcnJvciA9IGRvaXQoaWZuYW1lLCBJWEdCRV9DTFJfU0lHRklMVEVSLCAodm9pZCAq KSZpZCk7CisJaWYgKGVycm9yKQorCQlwZXJyb3IoImlvY3RsIik7CisJcmV0dXJuIDA7Cit9CisK K2ludCAKK21haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKK3sKKwlpbnQgcmV0OworCWNoYXIg KmlmbmFtZTsKKworCWlmIChhcmdjIDwgMykgeworCQl1c2FnZSgpOworCQlleGl0KDEpOworCX0K KwlpZm5hbWUgPSBhcmd2WzFdOworCWlmICghc3RyY21wKGFyZ3ZbMl0sICJhZGRfc2lnX2ZpbHRl ciIpKQorCQlyZXQgPSBhZGRfc2lnX2ZpbHRlcihhcmdjLCBhcmd2LCBpZm5hbWUpOworCWVsc2Ug aWYgKCFzdHJjbXAoYXJndlsyXSwgInNob3dfc2lnX2ZpbHRlciIpKQorCQlyZXQgPSBzaG93X3Np Z19maWx0ZXIoYXJnYywgYXJndiwgaWZuYW1lKTsKKwllbHNlIGlmICghc3RyY21wKGFyZ3ZbMl0s ICJkZWxfc2lnX2ZpbHRlciIpKQorCQlyZXQgPSBkZWxfc2lnX2ZpbHRlcihhcmdjLCBhcmd2LCBp Zm5hbWUpOworCWVsc2UgCisJCXJldCA9IC0xOworCisJaWYgKHJldCkKKwkJdXNhZ2UoKTsKKwor CXJldHVybiAocmV0KTsKK30KKwo= --bcaec520efabc496d604e798b12f--