From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 73CCEA0544 for ; Tue, 11 Oct 2022 07:19:04 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 6FF9040F19; Tue, 11 Oct 2022 07:19:04 +0200 (CEST) Received: from mail-oi1-f227.google.com (mail-oi1-f227.google.com [209.85.167.227]) by mails.dpdk.org (Postfix) with ESMTP id A6E1240146 for ; Tue, 11 Oct 2022 07:19:02 +0200 (CEST) Received: by mail-oi1-f227.google.com with SMTP id g130so14761206oia.13 for ; Mon, 10 Oct 2022 22:19:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=iol.unh.edu; s=unh-iol; h=date:message-id:cc:to:from:subject:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=8qiS1zzbrGy2aCACQbSwzFKqoKR7lBS6qBvbJpW6NeU=; b=Ri5sz/h1lXjMOCw4VI6cL7ByUjB0aurYofRgccbfnwPyGnIxvGZXBv5UxA1Ys20OsV jRBWtD8vfEuSfg09GWczHOn5+U3+jBSimvbiLcYqEyU5uKgoTrrC2Ccu1n6C3yjMAeh4 BLV88Tv5DHxHQb+zDCeH3ndvi/D5RdCMOhn7s= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=date:message-id:cc:to:from:subject:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=8qiS1zzbrGy2aCACQbSwzFKqoKR7lBS6qBvbJpW6NeU=; b=IToJ74fbA9sqilOBfzoTHCt3SpY5WdSl6tQN71juBNKgdfTNlxoZ2Xgymd/BXXyLcx eKcm+2IQGu6K+E7hFZ1vBzbPZm/lCbe2DTRMK0RjH3VhlK/rby7l8WUwXBIdYfvvAAT5 gEqkcFSv6Z+6lW61whxhHzUT8oKbwxUu3blK17oA/hb0p+xwO/VJmJ1FbEpjw236FHk5 ZAblTaTG620RVcWqeq6Sp9sEk8/QsIU95at78KPNJTcF/0rHeiXMjU+SODamd4XLmaXx DcneKoZc4Q/3bwzeL843cbM3czVXbPeF8kZHYqnKrFXmezStRpoxkcICGUeRhZk0TaLU KPkQ== X-Gm-Message-State: ACrzQf3lMjFZ7wD06HXCcdanaid5Umh4OZy3GwXNIdvwG0rfWgPiIS3P ItWHew7owKuBANk3EV2iS978nwDWUyh7m0fO5FJYvb86dA9foGAllfMT8HnScc39WA== X-Google-Smtp-Source: AMsMyM72d5AcCX5/FyOBcXFm7m84m6eUw58eZ1W3nCrDRvCDy/ZutpuNsVVJuetM7Nsox4wThK5GdRIWQ6IZ X-Received: by 2002:a05:6808:140d:b0:350:d77c:4e1f with SMTP id w13-20020a056808140d00b00350d77c4e1fmr10538788oiv.230.1665465541965; Mon, 10 Oct 2022 22:19:01 -0700 (PDT) Received: from postal.iol.unh.edu (postal.iol.unh.edu. [2606:4100:3880:1234::84]) by smtp-relay.gmail.com with ESMTPS id i25-20020a9d6519000000b006588b9db5adsm1031579otl.1.2022.10.10.22.19.01 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 10 Oct 2022 22:19:01 -0700 (PDT) X-Relaying-Domain: iol.unh.edu Received: from noxus.dpdklab.iol.unh.edu (unknown [IPv6:2606:4100:3880:1722::4]) by postal.iol.unh.edu (Postfix) with ESMTP id 75749605251C; Tue, 11 Oct 2022 01:19:01 -0400 (EDT) Received: from noxus.dpdklab.iol.unh.edu (localhost [IPv6:::1]) by noxus.dpdklab.iol.unh.edu (Postfix) with ESMTP id 71BD66D509; Tue, 11 Oct 2022 01:19:01 -0400 (EDT) Content-Type: multipart/mixed; boundary="===============4998122083933659587==" MIME-Version: 1.0 Subject: |WARNING| pw117847 [PATCH] [v1, 19/35] net/ionic: overhaul receive side for performance From: dpdklab@iol.unh.edu To: test-report@dpdk.org Cc: dpdk-test-reports@iol.unh.edu Message-Id: <20221011051901.71BD66D509@noxus.dpdklab.iol.unh.edu> Date: Tue, 11 Oct 2022 01:19:01 -0400 (EDT) X-BeenThere: test-report@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: automatic DPDK test reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: test-report-bounces@dpdk.org --===============4998122083933659587== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 VGVzdC1MYWJlbDogaW9sLXRlc3RpbmcKVGVzdC1TdGF0dXM6IFdBUk5JTkcKaHR0cDovL2RwZGsu b3JnL3BhdGNoLzExNzg0NwoKX2FwcGx5IHBhdGNoIGZhaWx1cmVfCgpTdWJtaXR0ZXI6IEFuZHJl dyBCb3llciA8QW5kcmV3LkJveWVyQGFtZC5jb20+CkRhdGU6IFR1ZXNkYXksIE9jdG9iZXIgMTEg MjAyMiAwMDo1MDoxNiAKQXBwbGllZCBvbjogQ29tbWl0SUQ6ZjEzNjA0ZmFkMTJhODEzODNkYTdi MDQ4MjFhNGJlZmIzZDAxZTJlZApBcHBseSBwYXRjaCBzZXQgMTE3ODQ3IGZhaWxlZDoKCkNoZWNr aW5nIHBhdGNoIGRvYy9ndWlkZXMvcmVsX25vdGVzL3JlbGVhc2VfMjJfMTEucnN0Li4uCmVycm9y OiB3aGlsZSBzZWFyY2hpbmcgZm9yOgogIFVwZGF0ZWQgdGhlIGlvbmljIFBNRCB3aXRoIG5ldyBm ZWF0dXJlcyBhbmQgaW1wcm92ZW1lbnRzLCBpbmNsdWRpbmc6CgogICogVXBkYXRlZCB0byByZWZs ZWN0IHRoYXQgUGVuc2FuZG8gaGFzIGJlZW4gYWNxdWlyZWQgYnkgQU1ELgoKKiAqKkFkZGVkIHN1 cHBvcnQgZm9yIE1BQ3NlYyBpbiBydGVfc2VjdXJpdHkuKioKCgplcnJvcjogcGF0Y2ggZmFpbGVk OiBkb2MvZ3VpZGVzL3JlbF9ub3Rlcy9yZWxlYXNlXzIyXzExLnJzdDoxNjQKQ2hlY2tpbmcgcGF0 Y2ggZHJpdmVycy9uZXQvaW9uaWMvaW9uaWNfZGV2LmguLi4KSHVuayAjMSBzdWNjZWVkZWQgYXQg MTMxIChvZmZzZXQgLTEgbGluZXMpLgpDaGVja2luZyBwYXRjaCBkcml2ZXJzL25ldC9pb25pYy9p b25pY19saWYuYy4uLgplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKCQlzdHJ1Y3QgaW9uaWNf cnhfc3RhdHMgKnJ4X3N0YXRzID0gJmxpZi0+cnhxY3FzW2ldLT5zdGF0czsKCQlzdGF0cy0+aWVy cm9ycyArPQoJCQlyeF9zdGF0cy0+YmFkX2NxX3N0YXR1cyArCgkJCXJ4X3N0YXRzLT5ub19yb29t ICsKCQkJcnhfc3RhdHMtPmJhZF9sZW47Cgl9CgoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVy cy9uZXQvaW9uaWMvaW9uaWNfbGlmLmM6MTE2CmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgoJ CXN0YXRzLT5xX2lieXRlc1tpXSA9IHJ4X3N0YXRzLT5ieXRlczsKCQlzdGF0cy0+cV9lcnJvcnNb aV0gPQoJCQlyeF9zdGF0cy0+YmFkX2NxX3N0YXR1cyArCgkJCXJ4X3N0YXRzLT5ub19yb29tICsK CQkJcnhfc3RhdHMtPmJhZF9sZW47Cgl9CgoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVycy9u ZXQvaW9uaWMvaW9uaWNfbGlmLmM6MTM2Ckh1bmsgIzMgc3VjY2VlZGVkIGF0IDYzNCAob2Zmc2V0 IDI4IGxpbmVzKS4KZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6CglydGVfZnJlZShxY3EpOwp9 CgppbnQKaW9uaWNfcnhfcWNxX2FsbG9jKHN0cnVjdCBpb25pY19saWYgKmxpZiwgdWludDMyX3Qg c29ja2V0X2lkLCB1aW50MzJfdCBpbmRleCwKCQl1aW50MTZfdCBucnhxX2Rlc2NzLCBzdHJ1Y3Qg cnRlX21lbXBvb2wgKm1iX3Bvb2wsCgplcnJvcjogcGF0Y2ggZmFpbGVkOiBkcml2ZXJzL25ldC9p b25pYy9pb25pY19saWYuYzo2OTgKZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6CgoJLyoKCSAq IENhbGN1bGF0ZSBob3cgbWFueSBmcmFnbWVudCBwb2ludGVycyBtaWdodCBiZSBzdG9yZWQgaW4g cXVldWUuCgkgKi8KCW1heF9zZWdzID0gMSArIChtYXhfbXR1ICsgUlRFX1BLVE1CVUZfSEVBRFJP T00gLSAxKSAvIHNlZ19zaXplOwoKCUlPTklDX1BSSU5UKERFQlVHLCAicnhxICV1IGZyYW1lX3Np emUgJXUgc2VnX3NpemUgJXUgbWF4X3NlZ3MgJXUiLAoJCWluZGV4LCBsaWYtPmZyYW1lX3NpemUs IHNlZ19zaXplLCBtYXhfc2Vncyk7CglpZiAobWF4X3NlZ3MgPiBtYXhfc2Vnc19mdykgewoJCUlP TklDX1BSSU5UKEVSUiwgIlJ4IG1idWYgc2l6ZSBpbnN1ZmZpY2llbnQgKCVkID4gJWQgYXZhaWwp IiwKCQkJbWF4X3NlZ3MsIG1heF9zZWdzX2Z3KTsKCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZl cnMvbmV0L2lvbmljL2lvbmljX2xpZi5jOjcyMQplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoK CXJ4cS0+ZmxhZ3MgPSBmbGFnczsKCXJ4cS0+c2VnX3NpemUgPSBzZWdfc2l6ZTsKCXJ4cS0+aGRy X3NlZ19zaXplID0gaGRyX3NlZ19zaXplOwoKCWxpZi0+cnhxY3FzW2luZGV4XSA9IHJ4cTsKCSpy eHFfb3V0ID0gcnhxOwoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVycy9uZXQvaW9uaWMvaW9u aWNfbGlmLmM6NzUxCkNoZWNraW5nIHBhdGNoIGRyaXZlcnMvbmV0L2lvbmljL2lvbmljX2xpZi5o Li4uCmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgoJdWludDY0X3QgcGFja2V0czsKCXVpbnQ2 NF90IGJ5dGVzOwoJdWludDY0X3QgYmFkX2NxX3N0YXR1czsKCXVpbnQ2NF90IG5vX3Jvb207Cgl1 aW50NjRfdCBiYWRfbGVuOwoJdWludDY0X3QgbXRvZHM7Cn07CgplcnJvcjogcGF0Y2ggZmFpbGVk OiBkcml2ZXJzL25ldC9pb25pYy9pb25pY19saWYuaDo0MAplcnJvcjogd2hpbGUgc2VhcmNoaW5n IGZvcjoKCgkvKiBjYWNoZWxpbmUyICovCglzdHJ1Y3QgcnRlX21lbXBvb2wgKm1iX3Bvb2w7Cgl1 aW50MTZfdCBmcmFtZV9zaXplOwkvKiBCYXNlZCBvbiBjb25maWd1cmVkIE1UVSAqLwoJdWludDE2 X3QgaGRyX3NlZ19zaXplOwkvKiBMZW5ndGggb2YgZmlyc3Qgc2VnbWVudCBvZiBSWCBjaGFpbiAq LwoJdWludDE2X3Qgc2VnX3NpemU7CS8qIExlbmd0aCBvZiBhbGwgc3Vic2VxdWVudCBzZWdtZW50 cyAqLwoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVycy9uZXQvaW9uaWMvaW9uaWNfbGlmLmg6 ODAKQ2hlY2tpbmcgcGF0Y2ggZHJpdmVycy9uZXQvaW9uaWMvaW9uaWNfcnh0eC5jLi4uCmVycm9y OiB3aGlsZSBzZWFyY2hpbmcgZm9yOgp7CglzdHJ1Y3QgaW9uaWNfcXVldWUgKnEgPSAmcnhxLT5x Y3EucTsKCglpb25pY19lbXB0eV9hcnJheShxLT5pbmZvLCBxLT5udW1fZGVzY3MsIDApOwp9Cgov KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqCgplcnJvcjogcGF0Y2ggZmFpbGVkOiBkcml2ZXJzL25ldC9pb25pYy9pb25p Y19yeHR4LmM6NzIKSHVuayAjMiBzdWNjZWVkZWQgYXQgNjI4IChvZmZzZXQgLTM0IGxpbmVzKS4K ZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6CglyZXR1cm4gMDsKfQoKc3RhdGljIF9fcnRlX2Fs d2F5c19pbmxpbmUgdm9pZAppb25pY19yeF9jbGVhbihzdHJ1Y3QgaW9uaWNfcnhfcWNxICpyeHEs CgkJdWludDMyX3QgcV9kZXNjX2luZGV4LCB1aW50MzJfdCBjcV9kZXNjX2luZGV4LAoJCXN0cnVj dCBpb25pY19yeF9zZXJ2aWNlICpyeF9zdmMpCnsKCXN0cnVjdCBpb25pY19xdWV1ZSAqcSA9ICZy eHEtPnFjcS5xOwoJc3RydWN0IGlvbmljX2NxICpjcSA9ICZyeHEtPnFjcS5jcTsKCXN0cnVjdCBp b25pY19yeHFfY29tcCAqY3FfZGVzY19iYXNlID0gY3EtPmJhc2U7CglzdHJ1Y3QgaW9uaWNfcnhx X2NvbXAgKmNxX2Rlc2MgPSAmY3FfZGVzY19iYXNlW2NxX2Rlc2NfaW5kZXhdOwoJc3RydWN0IHJ0 ZV9tYnVmICpyeG0sICpyeG1fc2VnOwoJdWludDY0X3QgcGt0X2ZsYWdzID0gMDsKCXVpbnQzMl90 IHBrdF90eXBlOwoJc3RydWN0IGlvbmljX3J4X3N0YXRzICpzdGF0cyA9ICZyeHEtPnN0YXRzOwoJ dWludDMyX3QgbGVmdDsKCXZvaWQgKippbmZvOwoKCWFzc2VydChxX2Rlc2NfaW5kZXggPT0gY3Ff ZGVzYy0+Y29tcF9pbmRleCk7CgoJaW5mbyA9IElPTklDX0lORk9fUFRSKHEsIGNxX2Rlc2MtPmNv bXBfaW5kZXgpOwoKCXJ4bSA9IGluZm9bMF07CgoJaWYgKGNxX2Rlc2MtPnN0YXR1cykgewoJCXN0 YXRzLT5iYWRfY3Ffc3RhdHVzKys7CgkJaW9uaWNfcnhfcmVjeWNsZShxLCBxX2Rlc2NfaW5kZXgs IHJ4bSk7CgkJcmV0dXJuOwoJfQoKCWlmIChyeF9zdmMtPm5iX3J4ID49IHJ4X3N2Yy0+bmJfcGt0 cykgewoJCXN0YXRzLT5ub19yb29tKys7CgkJaW9uaWNfcnhfcmVjeWNsZShxLCBxX2Rlc2NfaW5k ZXgsIHJ4bSk7CgkJcmV0dXJuOwoJfQoKCWlmIChjcV9kZXNjLT5sZW4gPiByeHEtPmZyYW1lX3Np emUgfHwgY3FfZGVzYy0+bGVuID09IDApIHsKCQlzdGF0cy0+YmFkX2xlbisrOwoJCWlvbmljX3J4 X3JlY3ljbGUocSwgcV9kZXNjX2luZGV4LCByeG0pOwoJCXJldHVybjsKCX0KCglyeG0tPmRhdGFf b2ZmID0gUlRFX1BLVE1CVUZfSEVBRFJPT007CglydGVfcHJlZmV0Y2gxKChjaGFyICopcnhtLT5i dWZfYWRkciArIHJ4bS0+ZGF0YV9vZmYpOwoJcnhtLT5uYl9zZWdzID0gMTsgLyogY3FfZGVzYy0+ bnVtX3NnX2VsZW1zICovCglyeG0tPnBrdF9sZW4gPSBjcV9kZXNjLT5sZW47CglyeG0tPnBvcnQg PSByeHEtPnFjcS5saWYtPnBvcnRfaWQ7CgoJcnhtLT5kYXRhX2xlbiA9IFJURV9NSU4ocnhxLT5o ZHJfc2VnX3NpemUsIGNxX2Rlc2MtPmxlbik7CglsZWZ0ID0gY3FfZGVzYy0+bGVuIC0gcnhtLT5k YXRhX2xlbjsKCglyeG1fc2VnID0gcnhtLT5uZXh0OwoJd2hpbGUgKHJ4bV9zZWcgJiYgbGVmdCkg ewoJCXJ4bV9zZWctPmRhdGFfbGVuID0gUlRFX01JTihyeHEtPnNlZ19zaXplLCBsZWZ0KTsKCQls ZWZ0IC09IHJ4bV9zZWctPmRhdGFfbGVuOwoKCQlyeG1fc2VnID0gcnhtX3NlZy0+bmV4dDsKCQly eG0tPm5iX3NlZ3MrKzsKCX0KCgkvKiBSU1MgKi8KCXBrdF9mbGFncyB8PSBSVEVfTUJVRl9GX1JY X1JTU19IQVNIOwoJcnhtLT5oYXNoLnJzcyA9IHJ0ZV9sZV90b19jcHVfMzIoY3FfZGVzYy0+cnNz X2hhc2gpOwoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVycy9uZXQvaW9uaWMvaW9uaWNfcnh0 eC5jOjc2MwplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKCXN0YXRzLT5ieXRlcyArPSByeG0t PnBrdF9sZW47Cn0KCnN0YXRpYyB2b2lkCmlvbmljX3J4X3JlY3ljbGUoc3RydWN0IGlvbmljX3F1 ZXVlICpxLCB1aW50MzJfdCBxX2Rlc2NfaW5kZXgsCgkJIHN0cnVjdCBydGVfbWJ1ZiAqbWJ1ZikK ewoJc3RydWN0IGlvbmljX3J4cV9kZXNjICpkZXNjX2Jhc2UgPSBxLT5iYXNlOwoJc3RydWN0IGlv bmljX3J4cV9kZXNjICpvbGQgPSAmZGVzY19iYXNlW3FfZGVzY19pbmRleF07CglzdHJ1Y3QgaW9u aWNfcnhxX2Rlc2MgKm5ldyA9ICZkZXNjX2Jhc2VbcS0+aGVhZF9pZHhdOwoKCW5ldy0+YWRkciA9 IG9sZC0+YWRkcjsKCW5ldy0+bGVuID0gb2xkLT5sZW47CgoJcS0+aW5mb1txLT5oZWFkX2lkeF0g PSBtYnVmOwoKCXEtPmhlYWRfaWR4ID0gUV9ORVhUX1RPX1BPU1QocSwgMSk7CgoJaW9uaWNfcV9m bHVzaChxKTsKfQoKc3RhdGljIF9fcnRlX2Fsd2F5c19pbmxpbmUgaW50CmlvbmljX3J4X2ZpbGwo c3RydWN0IGlvbmljX3J4X3FjcSAqcnhxKQp7CglzdHJ1Y3QgaW9uaWNfcXVldWUgKnEgPSAmcnhx LT5xY3EucTsKCXN0cnVjdCBpb25pY19yeHFfZGVzYyAqZGVzYywgKmRlc2NfYmFzZSA9IHEtPmJh c2U7CglzdHJ1Y3QgaW9uaWNfcnhxX3NnX2Rlc2MgKnNnX2Rlc2MsICpzZ19kZXNjX2Jhc2UgPSBx LT5zZ19iYXNlOwoJc3RydWN0IGlvbmljX3J4cV9zZ19lbGVtICplbGVtOwoJdm9pZCAqKmluZm87 CglydGVfaW92YV90IGRtYV9hZGRyOwoJdWludDMyX3QgaSwgajsKCgkvKiBJbml0aWFsaXplIHNv ZnR3YXJlIHJpbmcgZW50cmllcyAqLwoJZm9yIChpID0gaW9uaWNfcV9zcGFjZV9hdmFpbChxKTsg aTsgaS0tKSB7CgkJc3RydWN0IHJ0ZV9tYnVmICpyeG0gPSBydGVfbWJ1Zl9yYXdfYWxsb2Mocnhx LT5tYl9wb29sKTsKCQlzdHJ1Y3QgcnRlX21idWYgKnByZXZfcnhtX3NlZzsKCgkJaWYgKHJ4bSA9 PSBOVUxMKSB7CgkJCUlPTklDX1BSSU5UKEVSUiwgIlJYIG1idWYgYWxsb2MgZmFpbGVkIik7CgkJ CXJldHVybiAtRU5PTUVNOwoJCX0KCgkJaW5mbyA9IElPTklDX0lORk9fUFRSKHEsIHEtPmhlYWRf aWR4KTsKCgkJZGVzYyA9ICZkZXNjX2Jhc2VbcS0+aGVhZF9pZHhdOwoJCWRtYV9hZGRyID0gcnRl X2NwdV90b19sZV82NChydGVfbWJ1Zl9kYXRhX2lvdmFfZGVmYXVsdChyeG0pKTsKCQlkZXNjLT5h ZGRyID0gZG1hX2FkZHI7CgkJcnhtLT5uZXh0ID0gTlVMTDsKCgkJcHJldl9yeG1fc2VnID0gcnht OwoJCXNnX2Rlc2MgPSAmc2dfZGVzY19iYXNlW3EtPmhlYWRfaWR4XTsKCQllbGVtID0gc2dfZGVz Yy0+ZWxlbXM7CgkJZm9yIChqID0gMDsgaiA8IHEtPm51bV9zZWdzIC0gMXU7IGorKykgewoJCQlz dHJ1Y3QgcnRlX21idWYgKnJ4bV9zZWc7CgkJCXJ0ZV9pb3ZhX3QgZGF0YV9pb3ZhOwoKCQkJcnht X3NlZyA9IHJ0ZV9tYnVmX3Jhd19hbGxvYyhyeHEtPm1iX3Bvb2wpOwoJCQlpZiAocnhtX3NlZyA9 PSBOVUxMKSB7CgkJCQlJT05JQ19QUklOVChFUlIsICJSWCBtYnVmIGFsbG9jIGZhaWxlZCIpOwoJ CQkJcmV0dXJuIC1FTk9NRU07CgkJCX0KCgkJCXJ4bV9zZWctPmRhdGFfb2ZmID0gMDsKCQkJZGF0 YV9pb3ZhID0gcnRlX21idWZfZGF0YV9pb3ZhKHJ4bV9zZWcpOwoJCQlkbWFfYWRkciA9IHJ0ZV9j cHVfdG9fbGVfNjQoZGF0YV9pb3ZhKTsKCQkJZWxlbS0+YWRkciA9IGRtYV9hZGRyOwoJCQllbGVt Kys7CgoJCQlyeG1fc2VnLT5uZXh0ID0gTlVMTDsKCQkJcHJldl9yeG1fc2VnLT5uZXh0ID0gcnht X3NlZzsKCQkJcHJldl9yeG1fc2VnID0gcnhtX3NlZzsKCQl9CgoJCWluZm9bMF0gPSByeG07CgoJ CXEtPmhlYWRfaWR4ID0gUV9ORVhUX1RPX1BPU1QocSwgMSk7Cgl9CgplcnJvcjogcGF0Y2ggZmFp bGVkOiBkcml2ZXJzL25ldC9pb25pYy9pb25pY19yeHR4LmM6ODk3CmVycm9yOiB3aGlsZSBzZWFy Y2hpbmcgZm9yOgoJcmV0dXJuIDA7Cn0KCnN0YXRpYyBfX3J0ZV9hbHdheXNfaW5saW5lIHZvaWQK aW9uaWNfcnhxX3NlcnZpY2Uoc3RydWN0IGlvbmljX3J4X3FjcSAqcnhxLCB1aW50MzJfdCB3b3Jr X3RvX2RvLAoJCXN0cnVjdCBpb25pY19yeF9zZXJ2aWNlICpyeF9zdmMpCnsKCXN0cnVjdCBpb25p Y19jcSAqY3EgPSAmcnhxLT5xY3EuY3E7CglzdHJ1Y3QgaW9uaWNfcXVldWUgKnEgPSAmcnhxLT5x Y3EucTsKCXN0cnVjdCBpb25pY19yeHFfY29tcCAqY3FfZGVzYywgKmNxX2Rlc2NfYmFzZSA9IGNx LT5iYXNlOwoJYm9vbCBtb3JlOwoJdWludDMyX3QgY3Vycl9xX3RhaWxfaWR4LCBjdXJyX2NxX3Rh aWxfaWR4OwoJdWludDMyX3Qgd29ya19kb25lID0gMDsKCglpZiAod29ya190b19kbyA9PSAwKQoJ CXJldHVybjsKCgljcV9kZXNjID0gJmNxX2Rlc2NfYmFzZVtjcS0+dGFpbF9pZHhdOwoJd2hpbGUg KGNvbG9yX21hdGNoKGNxX2Rlc2MtPnBrdF90eXBlX2NvbG9yLCBjcS0+ZG9uZV9jb2xvcikpIHsK CQljdXJyX2NxX3RhaWxfaWR4ID0gY3EtPnRhaWxfaWR4OwoJCWNxLT50YWlsX2lkeCA9IFFfTkVY VF9UT19TUlZDKGNxLCAxKTsKCgkJaWYgKGNxLT50YWlsX2lkeCA9PSAwKQoJCQljcS0+ZG9uZV9j b2xvciA9ICFjcS0+ZG9uZV9jb2xvcjsKCgkJLyogUHJlZmV0Y2ggdGhlIG5leHQgNCBkZXNjcmlw dG9ycyAqLwoJCWlmICgoY3EtPnRhaWxfaWR4ICYgMHgzKSA9PSAwKQoJCQlydGVfcHJlZmV0Y2gw KCZjcV9kZXNjX2Jhc2VbY3EtPnRhaWxfaWR4XSk7CgoJCWRvIHsKCQkJbW9yZSA9IChxLT50YWls X2lkeCAhPSBjcV9kZXNjLT5jb21wX2luZGV4KTsKCgkJCWN1cnJfcV90YWlsX2lkeCA9IHEtPnRh aWxfaWR4OwoJCQlxLT50YWlsX2lkeCA9IFFfTkVYVF9UT19TUlZDKHEsIDEpOwoKCQkJLyogUHJl ZmV0Y2ggdGhlIG5leHQgNCBkZXNjcmlwdG9ycyAqLwoJCQlpZiAoKHEtPnRhaWxfaWR4ICYgMHgz KSA9PSAwKQoJCQkJLyogcSBkZXNjIGluZm8gKi8KCQkJCXJ0ZV9wcmVmZXRjaDAoJnEtPmluZm9b cS0+dGFpbF9pZHhdKTsKCgkJCWlvbmljX3J4X2NsZWFuKHJ4cSwgY3Vycl9xX3RhaWxfaWR4LCBj dXJyX2NxX3RhaWxfaWR4LAoJCQkJcnhfc3ZjKTsKCgkJfSB3aGlsZSAobW9yZSk7CgoJCWlmICgr K3dvcmtfZG9uZSA9PSB3b3JrX3RvX2RvKQoJCQlicmVhazsKCgkJY3FfZGVzYyA9ICZjcV9kZXNj X2Jhc2VbY3EtPnRhaWxfaWR4XTsKCX0KfQoKLyoKCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZl cnMvbmV0L2lvbmljL2lvbmljX3J4dHguYzoxMDU2CmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9y OgoJc3RydWN0IGlvbmljX3J4X3NlcnZpY2Ugcnhfc3ZjOwoKCXJ4X3N2Yy5yeF9wa3RzID0gcnhf cGt0czsKCXJ4X3N2Yy5uYl9wa3RzID0gbmJfcGt0czsKCXJ4X3N2Yy5uYl9yeCA9IDA7CgoJaW9u aWNfcnhxX3NlcnZpY2UocnhxLCBuYl9wa3RzLCAmcnhfc3ZjKTsKCglpb25pY19yeF9maWxsKHJ4 cSk7CgoJcmV0dXJuIHJ4X3N2Yy5uYl9yeDsKfQoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVy cy9uZXQvaW9uaWMvaW9uaWNfcnh0eC5jOjExNDEKQ2hlY2tpbmcgcGF0Y2ggZHJpdmVycy9uZXQv aW9uaWMvaW9uaWNfcnh0eC5oLi4uCkFwcGx5aW5nIHBhdGNoIGRvYy9ndWlkZXMvcmVsX25vdGVz L3JlbGVhc2VfMjJfMTEucnN0IHdpdGggMSByZWplY3QuLi4KUmVqZWN0ZWQgaHVuayAjMS4KQXBw bGllZCBwYXRjaCBkcml2ZXJzL25ldC9pb25pYy9pb25pY19kZXYuaCBjbGVhbmx5LgpBcHBseWlu ZyBwYXRjaCBkcml2ZXJzL25ldC9pb25pYy9pb25pY19saWYuYyB3aXRoIDUgcmVqZWN0cy4uLgpS ZWplY3RlZCBodW5rICMxLgpSZWplY3RlZCBodW5rICMyLgpIdW5rICMzIGFwcGxpZWQgY2xlYW5s eS4KUmVqZWN0ZWQgaHVuayAjNC4KUmVqZWN0ZWQgaHVuayAjNS4KUmVqZWN0ZWQgaHVuayAjNi4K QXBwbHlpbmcgcGF0Y2ggZHJpdmVycy9uZXQvaW9uaWMvaW9uaWNfbGlmLmggd2l0aCAyIHJlamVj dHMuLi4KUmVqZWN0ZWQgaHVuayAjMS4KUmVqZWN0ZWQgaHVuayAjMi4KQXBwbHlpbmcgcGF0Y2gg ZHJpdmVycy9uZXQvaW9uaWMvaW9uaWNfcnh0eC5jIHdpdGggNSByZWplY3RzLi4uClJlamVjdGVk IGh1bmsgIzEuCkh1bmsgIzIgYXBwbGllZCBjbGVhbmx5LgpSZWplY3RlZCBodW5rICMzLgpSZWpl Y3RlZCBodW5rICM0LgpSZWplY3RlZCBodW5rICM1LgpSZWplY3RlZCBodW5rICM2LgpBcHBsaWVk IHBhdGNoIGRyaXZlcnMvbmV0L2lvbmljL2lvbmljX3J4dHguaCBjbGVhbmx5LgpkaWZmIGEvZG9j L2d1aWRlcy9yZWxfbm90ZXMvcmVsZWFzZV8yMl8xMS5yc3QgYi9kb2MvZ3VpZGVzL3JlbF9ub3Rl cy9yZWxlYXNlXzIyXzExLnJzdAkocmVqZWN0ZWQgaHVua3MpCkBAIC0xNjQsNiArMTY0LDcgQEAg TmV3IEZlYXR1cmVzCiAgIFVwZGF0ZWQgdGhlIGlvbmljIFBNRCB3aXRoIG5ldyBmZWF0dXJlcyBh bmQgaW1wcm92ZW1lbnRzLCBpbmNsdWRpbmc6CiAKICAgKiBVcGRhdGVkIHRvIHJlZmxlY3QgdGhh dCBQZW5zYW5kbyBoYXMgYmVlbiBhY3F1aXJlZCBieSBBTUQuCisgICogRW5oYW5jZWQgZGF0YSBw YXRoIHRvIHByb3ZpZGUgc3Vic3RhbnRpYWwgcGVyZm9ybWFuY2UgaW1wcm92ZW1lbnRzLgogCiAq ICoqQWRkZWQgc3VwcG9ydCBmb3IgTUFDc2VjIGluIHJ0ZV9zZWN1cml0eS4qKgogCmRpZmYgYS9k cml2ZXJzL25ldC9pb25pYy9pb25pY19saWYuYyBiL2RyaXZlcnMvbmV0L2lvbmljL2lvbmljX2xp Zi5jCShyZWplY3RlZCBodW5rcykKQEAgLTExNiw3ICsxMTYsNiBAQCBpb25pY19saWZfZ2V0X2Fi c19zdGF0cyhjb25zdCBzdHJ1Y3QgaW9uaWNfbGlmICpsaWYsIHN0cnVjdCBydGVfZXRoX3N0YXRz ICpzdGF0cwogCQlzdHJ1Y3QgaW9uaWNfcnhfc3RhdHMgKnJ4X3N0YXRzID0gJmxpZi0+cnhxY3Fz W2ldLT5zdGF0czsKIAkJc3RhdHMtPmllcnJvcnMgKz0KIAkJCXJ4X3N0YXRzLT5iYWRfY3Ffc3Rh dHVzICsKLQkJCXJ4X3N0YXRzLT5ub19yb29tICsKIAkJCXJ4X3N0YXRzLT5iYWRfbGVuOwogCX0K IApAQCAtMTM2LDcgKzEzNSw2IEBAIGlvbmljX2xpZl9nZXRfYWJzX3N0YXRzKGNvbnN0IHN0cnVj dCBpb25pY19saWYgKmxpZiwgc3RydWN0IHJ0ZV9ldGhfc3RhdHMgKnN0YXRzCiAJCXN0YXRzLT5x X2lieXRlc1tpXSA9IHJ4X3N0YXRzLT5ieXRlczsKIAkJc3RhdHMtPnFfZXJyb3JzW2ldID0KIAkJ CXJ4X3N0YXRzLT5iYWRfY3Ffc3RhdHVzICsKLQkJCXJ4X3N0YXRzLT5ub19yb29tICsKIAkJCXJ4 X3N0YXRzLT5iYWRfbGVuOwogCX0KIApAQCAtNjk4LDYgKzY5Nyw0MiBAQCBpb25pY19xY3FfZnJl ZShzdHJ1Y3QgaW9uaWNfcWNxICpxY3EpCiAJcnRlX2ZyZWUocWNxKTsKIH0KIAorc3RhdGljIHVp bnQ2NF90Citpb25pY19yeF9yZWFybV9kYXRhKHN0cnVjdCBpb25pY19saWYgKmxpZikKK3sKKwlz dHJ1Y3QgcnRlX21idWYgcnhtOworCisJbWVtc2V0KCZyeG0sIDAsIHNpemVvZihyeG0pKTsKKwor CXJ0ZV9tYnVmX3JlZmNudF9zZXQoJnJ4bSwgMSk7CisJcnhtLmRhdGFfb2ZmID0gUlRFX1BLVE1C VUZfSEVBRFJPT007CisJcnhtLm5iX3NlZ3MgPSAxOworCXJ4bS5wb3J0ID0gbGlmLT5wb3J0X2lk OworCisJcnRlX2NvbXBpbGVyX2JhcnJpZXIoKTsKKworCVJURV9CVUlMRF9CVUdfT04oc2l6ZW9m KHJ4bS5yZWFybV9kYXRhWzBdKSAhPSBzaXplb2YodWludDY0X3QpKTsKKwlyZXR1cm4gcnhtLnJl YXJtX2RhdGFbMF07Cit9CisKK3N0YXRpYyB1aW50NjRfdAoraW9uaWNfcnhfc2VnX3JlYXJtX2Rh dGEoc3RydWN0IGlvbmljX2xpZiAqbGlmKQoreworCXN0cnVjdCBydGVfbWJ1ZiByeG07CisKKwlt ZW1zZXQoJnJ4bSwgMCwgc2l6ZW9mKHJ4bSkpOworCisJcnRlX21idWZfcmVmY250X3NldCgmcnht LCAxKTsKKwlyeG0uZGF0YV9vZmYgPSAwOyAgLyogbm8gaGVhZHJvb20gKi8KKwlyeG0ubmJfc2Vn cyA9IDE7CisJcnhtLnBvcnQgPSBsaWYtPnBvcnRfaWQ7CisKKwlydGVfY29tcGlsZXJfYmFycmll cigpOworCisJUlRFX0JVSUxEX0JVR19PTihzaXplb2YocnhtLnJlYXJtX2RhdGFbMF0pICE9IHNp emVvZih1aW50NjRfdCkpOworCXJldHVybiByeG0ucmVhcm1fZGF0YVswXTsKK30KKwogaW50CiBp b25pY19yeF9xY3FfYWxsb2Moc3RydWN0IGlvbmljX2xpZiAqbGlmLCB1aW50MzJfdCBzb2NrZXRf aWQsIHVpbnQzMl90IGluZGV4LAogCQl1aW50MTZfdCBucnhxX2Rlc2NzLCBzdHJ1Y3QgcnRlX21l bXBvb2wgKm1iX3Bvb2wsCkBAIC03MjEsMTEgKzc1NiwxMyBAQCBpb25pY19yeF9xY3FfYWxsb2Mo c3RydWN0IGlvbmljX2xpZiAqbGlmLCB1aW50MzJfdCBzb2NrZXRfaWQsIHVpbnQzMl90IGluZGV4 LAogCiAJLyoKIAkgKiBDYWxjdWxhdGUgaG93IG1hbnkgZnJhZ21lbnQgcG9pbnRlcnMgbWlnaHQg YmUgc3RvcmVkIGluIHF1ZXVlLgorCSAqIFRoaXMgaXMgdGhlIHdvcnN0LWNhc2UgbnVtYmVyLCBz byB0aGF0IHRoZXJlJ3MgZW5vdWdoIHJvb20gaW4KKwkgKiB0aGUgaW5mbyBhcnJheS4KIAkgKi8K IAltYXhfc2VncyA9IDEgKyAobWF4X210dSArIFJURV9QS1RNQlVGX0hFQURST09NIC0gMSkgLyBz ZWdfc2l6ZTsKIAotCUlPTklDX1BSSU5UKERFQlVHLCAicnhxICV1IGZyYW1lX3NpemUgJXUgc2Vn X3NpemUgJXUgbWF4X3NlZ3MgJXUiLAotCQlpbmRleCwgbGlmLT5mcmFtZV9zaXplLCBzZWdfc2l6 ZSwgbWF4X3NlZ3MpOworCUlPTklDX1BSSU5UKERFQlVHLCAicnhxICV1IG1heF9tdHUgJXUgc2Vn X3NpemUgJXUgbWF4X3NlZ3MgJXUiLAorCQlpbmRleCwgbWF4X210dSwgc2VnX3NpemUsIG1heF9z ZWdzKTsKIAlpZiAobWF4X3NlZ3MgPiBtYXhfc2Vnc19mdykgewogCQlJT05JQ19QUklOVChFUlIs ICJSeCBtYnVmIHNpemUgaW5zdWZmaWNpZW50ICglZCA+ICVkIGF2YWlsKSIsCiAJCQltYXhfc2Vn cywgbWF4X3NlZ3NfZncpOwpAQCAtNzUxLDYgKzc4OCw4IEBAIGlvbmljX3J4X3FjcV9hbGxvYyhz dHJ1Y3QgaW9uaWNfbGlmICpsaWYsIHVpbnQzMl90IHNvY2tldF9pZCwgdWludDMyX3QgaW5kZXgs CiAJcnhxLT5mbGFncyA9IGZsYWdzOwogCXJ4cS0+c2VnX3NpemUgPSBzZWdfc2l6ZTsKIAlyeHEt Pmhkcl9zZWdfc2l6ZSA9IGhkcl9zZWdfc2l6ZTsKKwlyeHEtPnJlYXJtX2RhdGEgPSBpb25pY19y eF9yZWFybV9kYXRhKGxpZik7CisJcnhxLT5yZWFybV9zZWdfZGF0YSA9IGlvbmljX3J4X3NlZ19y ZWFybV9kYXRhKGxpZik7CiAKIAlsaWYtPnJ4cWNxc1tpbmRleF0gPSByeHE7CiAJKnJ4cV9vdXQg PSByeHE7CmRpZmYgYS9kcml2ZXJzL25ldC9pb25pYy9pb25pY19saWYuaCBiL2RyaXZlcnMvbmV0 L2lvbmljL2lvbmljX2xpZi5oCShyZWplY3RlZCBodW5rcykKQEAgLTQwLDcgKzQwLDYgQEAgc3Ry dWN0IGlvbmljX3J4X3N0YXRzIHsKIAl1aW50NjRfdCBwYWNrZXRzOwogCXVpbnQ2NF90IGJ5dGVz OwogCXVpbnQ2NF90IGJhZF9jcV9zdGF0dXM7Ci0JdWludDY0X3Qgbm9fcm9vbTsKIAl1aW50NjRf dCBiYWRfbGVuOwogCXVpbnQ2NF90IG10b2RzOwogfTsKQEAgLTgwLDYgKzc5LDggQEAgc3RydWN0 IGlvbmljX3J4X3FjcSB7CiAKIAkvKiBjYWNoZWxpbmUyICovCiAJc3RydWN0IHJ0ZV9tZW1wb29s ICptYl9wb29sOworCXVpbnQ2NF90IHJlYXJtX2RhdGE7CisJdWludDY0X3QgcmVhcm1fc2VnX2Rh dGE7CiAJdWludDE2X3QgZnJhbWVfc2l6ZTsJLyogQmFzZWQgb24gY29uZmlndXJlZCBNVFUgKi8K IAl1aW50MTZfdCBoZHJfc2VnX3NpemU7CS8qIExlbmd0aCBvZiBmaXJzdCBzZWdtZW50IG9mIFJY IGNoYWluICovCiAJdWludDE2X3Qgc2VnX3NpemU7CS8qIExlbmd0aCBvZiBhbGwgc3Vic2VxdWVu dCBzZWdtZW50cyAqLwpkaWZmIGEvZHJpdmVycy9uZXQvaW9uaWMvaW9uaWNfcnh0eC5jIGIvZHJp dmVycy9uZXQvaW9uaWMvaW9uaWNfcnh0eC5jCShyZWplY3RlZCBodW5rcykKQEAgLTcyLDcgKzcy LDExIEBAIGlvbmljX3J4X2VtcHR5KHN0cnVjdCBpb25pY19yeF9xY3EgKnJ4cSkKIHsKIAlzdHJ1 Y3QgaW9uaWNfcXVldWUgKnEgPSAmcnhxLT5xY3EucTsKIAotCWlvbmljX2VtcHR5X2FycmF5KHEt PmluZm8sIHEtPm51bV9kZXNjcywgMCk7CisJLyoKKwkgKiBXYWxrIHRoZSBmdWxsIGluZm8gYXJy YXkgc28gdGhhdCB0aGUgY2xlYW4gdXAgaW5jbHVkZXMgYW55CisJICogZnJhZ21lbnRzIHRoYXQg d2VyZSBsZWZ0IGRhbmdsaW5nIGZvciBsYXRlciByZXVzZQorCSAqLworCWlvbmljX2VtcHR5X2Fy cmF5KHEtPmluZm8sIHEtPm51bV9kZXNjcyAqIHEtPm51bV9zZWdzLCAwKTsKIH0KIAogLyoqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKgpAQCAtNzYzLDY0ICs3NjQsNjcgQEAgaW9uaWNfZGV2X3J4X3F1ZXVlX3NldHVwKHN0 cnVjdCBydGVfZXRoX2RldiAqZXRoX2RldiwKIAlyZXR1cm4gMDsKIH0KIAorLyoKKyAqIENsZWFu cyBvbmUgZGVzY3JpcHRvci4gQ29ubmVjdHMgdGhlIGZpbGxlZCBtYnVmcyBpbnRvIGEgY2hhaW4u CisgKiBEb2VzIG5vdCBhZHZhbmNlIHRoZSB0YWlsIGluZGV4LgorICovCiBzdGF0aWMgX19ydGVf YWx3YXlzX2lubGluZSB2b2lkCi1pb25pY19yeF9jbGVhbihzdHJ1Y3QgaW9uaWNfcnhfcWNxICpy eHEsCi0JCXVpbnQzMl90IHFfZGVzY19pbmRleCwgdWludDMyX3QgY3FfZGVzY19pbmRleCwKK2lv bmljX3J4X2NsZWFuX29uZShzdHJ1Y3QgaW9uaWNfcnhfcWNxICpyeHEsCisJCXN0cnVjdCBpb25p Y19yeHFfY29tcCAqY3FfZGVzYywKIAkJc3RydWN0IGlvbmljX3J4X3NlcnZpY2UgKnJ4X3N2YykK IHsKIAlzdHJ1Y3QgaW9uaWNfcXVldWUgKnEgPSAmcnhxLT5xY3EucTsKLQlzdHJ1Y3QgaW9uaWNf Y3EgKmNxID0gJnJ4cS0+cWNxLmNxOwotCXN0cnVjdCBpb25pY19yeHFfY29tcCAqY3FfZGVzY19i YXNlID0gY3EtPmJhc2U7Ci0Jc3RydWN0IGlvbmljX3J4cV9jb21wICpjcV9kZXNjID0gJmNxX2Rl c2NfYmFzZVtjcV9kZXNjX2luZGV4XTsKLQlzdHJ1Y3QgcnRlX21idWYgKnJ4bSwgKnJ4bV9zZWc7 CisJc3RydWN0IHJ0ZV9tYnVmICpyeG0sICpyeG1fc2VnLCAqcHJldl9yeG07CisJc3RydWN0IGlv bmljX3J4X3N0YXRzICpzdGF0cyA9ICZyeHEtPnN0YXRzOwogCXVpbnQ2NF90IHBrdF9mbGFncyA9 IDA7CiAJdWludDMyX3QgcGt0X3R5cGU7Ci0Jc3RydWN0IGlvbmljX3J4X3N0YXRzICpzdGF0cyA9 ICZyeHEtPnN0YXRzOwotCXVpbnQzMl90IGxlZnQ7CisJdWludDMyX3QgbGVmdCwgaTsKKwl1aW50 MTZfdCBjcV9kZXNjX2xlbjsKIAl2b2lkICoqaW5mbzsKIAotCWFzc2VydChxX2Rlc2NfaW5kZXgg PT0gY3FfZGVzYy0+Y29tcF9pbmRleCk7CisJY3FfZGVzY19sZW4gPSBydGVfbGVfdG9fY3B1XzE2 KGNxX2Rlc2MtPmxlbik7CiAKLQlpbmZvID0gSU9OSUNfSU5GT19QVFIocSwgY3FfZGVzYy0+Y29t cF9pbmRleCk7CisJaW5mbyA9IElPTklDX0lORk9fUFRSKHEsIHEtPnRhaWxfaWR4KTsKIAogCXJ4 bSA9IGluZm9bMF07CiAKIAlpZiAoY3FfZGVzYy0+c3RhdHVzKSB7CiAJCXN0YXRzLT5iYWRfY3Ff c3RhdHVzKys7Ci0JCWlvbmljX3J4X3JlY3ljbGUocSwgcV9kZXNjX2luZGV4LCByeG0pOwotCQly ZXR1cm47Ci0JfQotCi0JaWYgKHJ4X3N2Yy0+bmJfcnggPj0gcnhfc3ZjLT5uYl9wa3RzKSB7Ci0J CXN0YXRzLT5ub19yb29tKys7Ci0JCWlvbmljX3J4X3JlY3ljbGUocSwgcV9kZXNjX2luZGV4LCBy eG0pOwogCQlyZXR1cm47CiAJfQogCi0JaWYgKGNxX2Rlc2MtPmxlbiA+IHJ4cS0+ZnJhbWVfc2l6 ZSB8fCBjcV9kZXNjLT5sZW4gPT0gMCkgeworCWlmIChjcV9kZXNjX2xlbiA+IHJ4cS0+ZnJhbWVf c2l6ZSB8fCBjcV9kZXNjX2xlbiA9PSAwKSB7CiAJCXN0YXRzLT5iYWRfbGVuKys7Ci0JCWlvbmlj X3J4X3JlY3ljbGUocSwgcV9kZXNjX2luZGV4LCByeG0pOwogCQlyZXR1cm47CiAJfQogCi0Jcnht LT5kYXRhX29mZiA9IFJURV9QS1RNQlVGX0hFQURST09NOwotCXJ0ZV9wcmVmZXRjaDEoKGNoYXIg KilyeG0tPmJ1Zl9hZGRyICsgcnhtLT5kYXRhX29mZik7Ci0JcnhtLT5uYl9zZWdzID0gMTsgLyog Y3FfZGVzYy0+bnVtX3NnX2VsZW1zICovCi0JcnhtLT5wa3RfbGVuID0gY3FfZGVzYy0+bGVuOwot CXJ4bS0+cG9ydCA9IHJ4cS0+cWNxLmxpZi0+cG9ydF9pZDsKKwlpbmZvWzBdID0gTlVMTDsKIAot CXJ4bS0+ZGF0YV9sZW4gPSBSVEVfTUlOKHJ4cS0+aGRyX3NlZ19zaXplLCBjcV9kZXNjLT5sZW4p OwotCWxlZnQgPSBjcV9kZXNjLT5sZW4gLSByeG0tPmRhdGFfbGVuOworCS8qIFNldCB0aGUgbWJ1 ZiBtZXRhZGF0YSBiYXNlZCBvbiB0aGUgY3EgZW50cnkgKi8KKwlyeG0tPnJlYXJtX2RhdGFbMF0g PSByeHEtPnJlYXJtX2RhdGE7CisJcnhtLT5wa3RfbGVuID0gY3FfZGVzY19sZW47CisJcnhtLT5k YXRhX2xlbiA9IFJURV9NSU4ocnhxLT5oZHJfc2VnX3NpemUsIGNxX2Rlc2NfbGVuKTsKKwlsZWZ0 ID0gY3FfZGVzY19sZW4gLSByeG0tPmRhdGFfbGVuOworCXJ4bS0+bmJfc2VncyA9IGNxX2Rlc2Mt Pm51bV9zZ19lbGVtcyArIDE7CisJcHJldl9yeG0gPSByeG07CiAKLQlyeG1fc2VnID0gcnhtLT5u ZXh0OwotCXdoaWxlIChyeG1fc2VnICYmIGxlZnQpIHsKKwlmb3IgKGkgPSAxOyBpIDwgcnhtLT5u Yl9zZWdzICYmIGxlZnQ7IGkrKykgeworCQlyeG1fc2VnID0gaW5mb1tpXTsKKwkJaW5mb1tpXSA9 IE5VTEw7CisKKwkJLyogU2V0IHRoZSBjaGFpbmVkIG1idWYgbWV0YWRhdGEgKi8KKwkJcnhtX3Nl Zy0+cmVhcm1fZGF0YVswXSA9IHJ4cS0+cmVhcm1fc2VnX2RhdGE7CiAJCXJ4bV9zZWctPmRhdGFf bGVuID0gUlRFX01JTihyeHEtPnNlZ19zaXplLCBsZWZ0KTsKIAkJbGVmdCAtPSByeG1fc2VnLT5k YXRhX2xlbjsKIAotCQlyeG1fc2VnID0gcnhtX3NlZy0+bmV4dDsKLQkJcnhtLT5uYl9zZWdzKys7 CisJCS8qIExpbmsgdGhlIG1idWYgKi8KKwkJcHJldl9yeG0tPm5leHQgPSByeG1fc2VnOworCQlw cmV2X3J4bSA9IHJ4bV9zZWc7CiAJfQogCisJLyogVGVybWluYXRlIHRoZSBtYnVmIGNoYWluICov CisJcHJldl9yeG0tPm5leHQgPSBOVUxMOworCiAJLyogUlNTICovCiAJcGt0X2ZsYWdzIHw9IFJU RV9NQlVGX0ZfUlhfUlNTX0hBU0g7CiAJcnhtLT5oYXNoLnJzcyA9IHJ0ZV9sZV90b19jcHVfMzIo Y3FfZGVzYy0+cnNzX2hhc2gpOwpAQCAtODk3LDc3ICs5MDEsNzQgQEAgaW9uaWNfcnhfY2xlYW4o c3RydWN0IGlvbmljX3J4X3FjcSAqcnhxLAogCXN0YXRzLT5ieXRlcyArPSByeG0tPnBrdF9sZW47 CiB9CiAKLXN0YXRpYyB2b2lkCi1pb25pY19yeF9yZWN5Y2xlKHN0cnVjdCBpb25pY19xdWV1ZSAq cSwgdWludDMyX3QgcV9kZXNjX2luZGV4LAotCQkgc3RydWN0IHJ0ZV9tYnVmICptYnVmKQotewot CXN0cnVjdCBpb25pY19yeHFfZGVzYyAqZGVzY19iYXNlID0gcS0+YmFzZTsKLQlzdHJ1Y3QgaW9u aWNfcnhxX2Rlc2MgKm9sZCA9ICZkZXNjX2Jhc2VbcV9kZXNjX2luZGV4XTsKLQlzdHJ1Y3QgaW9u aWNfcnhxX2Rlc2MgKm5ldyA9ICZkZXNjX2Jhc2VbcS0+aGVhZF9pZHhdOwotCi0JbmV3LT5hZGRy ID0gb2xkLT5hZGRyOwotCW5ldy0+bGVuID0gb2xkLT5sZW47Ci0KLQlxLT5pbmZvW3EtPmhlYWRf aWR4XSA9IG1idWY7Ci0KLQlxLT5oZWFkX2lkeCA9IFFfTkVYVF9UT19QT1NUKHEsIDEpOwotCi0J aW9uaWNfcV9mbHVzaChxKTsKLX0KLQorLyoKKyAqIEZpbGxzIG9uZSBkZXNjcmlwdG9yIHdpdGgg bWJ1ZnMuIERvZXMgbm90IGFkdmFuY2UgdGhlIGhlYWQgaW5kZXguCisgKi8KIHN0YXRpYyBfX3J0 ZV9hbHdheXNfaW5saW5lIGludAotaW9uaWNfcnhfZmlsbChzdHJ1Y3QgaW9uaWNfcnhfcWNxICpy eHEpCitpb25pY19yeF9maWxsX29uZShzdHJ1Y3QgaW9uaWNfcnhfcWNxICpyeHEpCiB7CiAJc3Ry dWN0IGlvbmljX3F1ZXVlICpxID0gJnJ4cS0+cWNxLnE7CisJc3RydWN0IHJ0ZV9tYnVmICpyeG0s ICpyeG1fc2VnOwogCXN0cnVjdCBpb25pY19yeHFfZGVzYyAqZGVzYywgKmRlc2NfYmFzZSA9IHEt PmJhc2U7CiAJc3RydWN0IGlvbmljX3J4cV9zZ19kZXNjICpzZ19kZXNjLCAqc2dfZGVzY19iYXNl ID0gcS0+c2dfYmFzZTsKLQlzdHJ1Y3QgaW9uaWNfcnhxX3NnX2VsZW0gKmVsZW07CisJcnRlX2lv dmFfdCBkYXRhX2lvdmE7CisJdWludDMyX3QgaTsKIAl2b2lkICoqaW5mbzsKLQlydGVfaW92YV90 IGRtYV9hZGRyOwotCXVpbnQzMl90IGksIGo7CiAKLQkvKiBJbml0aWFsaXplIHNvZnR3YXJlIHJp bmcgZW50cmllcyAqLwotCWZvciAoaSA9IGlvbmljX3Ffc3BhY2VfYXZhaWwocSk7IGk7IGktLSkg ewotCQlzdHJ1Y3QgcnRlX21idWYgKnJ4bSA9IHJ0ZV9tYnVmX3Jhd19hbGxvYyhyeHEtPm1iX3Bv b2wpOwotCQlzdHJ1Y3QgcnRlX21idWYgKnByZXZfcnhtX3NlZzsKKwlpbmZvID0gSU9OSUNfSU5G T19QVFIocSwgcS0+aGVhZF9pZHgpOworCWRlc2MgPSAmZGVzY19iYXNlW3EtPmhlYWRfaWR4XTsK KwlzZ19kZXNjID0gJnNnX2Rlc2NfYmFzZVtxLT5oZWFkX2lkeF07CisKKwkvKiBtYnVmIGlzIHVu dXNlZCA9PiB3aG9sZSBjaGFpbiBpcyB1bnVzZWQgKi8KKwlpZiAodW5saWtlbHkoaW5mb1swXSkp CisJCXJldHVybiAwOworCisJcnhtID0gcnRlX21idWZfcmF3X2FsbG9jKHJ4cS0+bWJfcG9vbCk7 CisJaWYgKHVubGlrZWx5KHJ4bSA9PSBOVUxMKSkgeworCQlhc3NlcnQoMCk7CisJCXJldHVybiAt RU5PTUVNOworCX0KKworCWluZm9bMF0gPSByeG07CisKKwlkYXRhX2lvdmEgPSBydGVfbWJ1Zl9k YXRhX2lvdmFfZGVmYXVsdChyeG0pOworCWRlc2MtPmFkZHIgPSBydGVfY3B1X3RvX2xlXzY0KGRh dGFfaW92YSk7CiAKLQkJaWYgKHJ4bSA9PSBOVUxMKSB7Ci0JCQlJT05JQ19QUklOVChFUlIsICJS WCBtYnVmIGFsbG9jIGZhaWxlZCIpOworCWZvciAoaSA9IDE7IGkgPCBxLT5udW1fc2VnczsgaSsr KSB7CisJCS8qIG1idWYgaXMgdW51c2VkID0+IHJlc3Qgb2YgdGhlIGNoYWluIGlzIHVudXNlZCAq LworCQlpZiAoaW5mb1tpXSkKKwkJCXJldHVybiAwOworCisJCXJ4bV9zZWcgPSBydGVfbWJ1Zl9y YXdfYWxsb2MocnhxLT5tYl9wb29sKTsKKwkJaWYgKHJ4bV9zZWcgPT0gTlVMTCkgeworCQkJYXNz ZXJ0KDApOwogCQkJcmV0dXJuIC1FTk9NRU07CiAJCX0KIAotCQlpbmZvID0gSU9OSUNfSU5GT19Q VFIocSwgcS0+aGVhZF9pZHgpOworCQlpbmZvW2ldID0gcnhtX3NlZzsKIAotCQlkZXNjID0gJmRl c2NfYmFzZVtxLT5oZWFkX2lkeF07Ci0JCWRtYV9hZGRyID0gcnRlX2NwdV90b19sZV82NChydGVf bWJ1Zl9kYXRhX2lvdmFfZGVmYXVsdChyeG0pKTsKLQkJZGVzYy0+YWRkciA9IGRtYV9hZGRyOwot CQlyeG0tPm5leHQgPSBOVUxMOwotCi0JCXByZXZfcnhtX3NlZyA9IHJ4bTsKLQkJc2dfZGVzYyA9 ICZzZ19kZXNjX2Jhc2VbcS0+aGVhZF9pZHhdOwotCQllbGVtID0gc2dfZGVzYy0+ZWxlbXM7Ci0J CWZvciAoaiA9IDA7IGogPCBxLT5udW1fc2VncyAtIDF1OyBqKyspIHsKLQkJCXN0cnVjdCBydGVf bWJ1ZiAqcnhtX3NlZzsKLQkJCXJ0ZV9pb3ZhX3QgZGF0YV9pb3ZhOwotCi0JCQlyeG1fc2VnID0g cnRlX21idWZfcmF3X2FsbG9jKHJ4cS0+bWJfcG9vbCk7Ci0JCQlpZiAocnhtX3NlZyA9PSBOVUxM KSB7Ci0JCQkJSU9OSUNfUFJJTlQoRVJSLCAiUlggbWJ1ZiBhbGxvYyBmYWlsZWQiKTsKLQkJCQly ZXR1cm4gLUVOT01FTTsKLQkJCX0KKwkJLyogVGhlIGRhdGFfb2ZmIGRvZXMgbm90IGdldCBzZXQg dG8gMCB1bnRpbCBsYXRlciAqLworCQlkYXRhX2lvdmEgPSByeG1fc2VnLT5idWZfaW92YTsKKwkJ c2dfZGVzYy0+ZWxlbXNbaSAtIDFdLmFkZHIgPSBydGVfY3B1X3RvX2xlXzY0KGRhdGFfaW92YSk7 CisJfQogCi0JCQlyeG1fc2VnLT5kYXRhX29mZiA9IDA7Ci0JCQlkYXRhX2lvdmEgPSBydGVfbWJ1 Zl9kYXRhX2lvdmEocnhtX3NlZyk7Ci0JCQlkbWFfYWRkciA9IHJ0ZV9jcHVfdG9fbGVfNjQoZGF0 YV9pb3ZhKTsKLQkJCWVsZW0tPmFkZHIgPSBkbWFfYWRkcjsKLQkJCWVsZW0rKzsKKwlyZXR1cm4g MDsKK30KIAotCQkJcnhtX3NlZy0+bmV4dCA9IE5VTEw7Ci0JCQlwcmV2X3J4bV9zZWctPm5leHQg PSByeG1fc2VnOwotCQkJcHJldl9yeG1fc2VnID0gcnhtX3NlZzsKLQkJfQorLyoKKyAqIEZpbGxz IGFsbCBkZXNjcmlwdG9ycyB3aXRoIG1idWZzLgorICovCitzdGF0aWMgaW50IF9fcnRlX2NvbGQK K2lvbmljX3J4X2ZpbGwoc3RydWN0IGlvbmljX3J4X3FjcSAqcnhxKQoreworCXN0cnVjdCBpb25p Y19xdWV1ZSAqcSA9ICZyeHEtPnFjcS5xOworCXVpbnQzMl90IGk7CisJaW50IGVycjsKIAotCQlp bmZvWzBdID0gcnhtOworCWZvciAoaSA9IDE7IGkgPCBxLT5udW1fZGVzY3M7IGkrKykgeworCQll cnIgPSBpb25pY19yeF9maWxsX29uZShyeHEpOworCQlpZiAoZXJyKQorCQkJcmV0dXJuIGVycjsK IAogCQlxLT5oZWFkX2lkeCA9IFFfTkVYVF9UT19QT1NUKHEsIDEpOwogCX0KQEAgLTEwNTYsNTMg KzEwNTcsNTIgQEAgaW9uaWNfZGV2X3J4X3F1ZXVlX3N0YXJ0KHN0cnVjdCBydGVfZXRoX2RldiAq ZXRoX2RldiwgdWludDE2X3QgcnhfcXVldWVfaWQpCiAJcmV0dXJuIDA7CiB9CiAKKy8qCisgKiBX YWxrIHRoZSBDUSB0byBmaW5kIGNvbXBsZXRlZCByZWNlaXZlIGRlc2NyaXB0b3JzLgorICogQW55 IGNvbXBsZXRlZCBkZXNjcmlwdG9yIGZvdW5kIGlzIHJlZmlsbGVkLgorICovCiBzdGF0aWMgX19y dGVfYWx3YXlzX2lubGluZSB2b2lkCiBpb25pY19yeHFfc2VydmljZShzdHJ1Y3QgaW9uaWNfcnhf cWNxICpyeHEsIHVpbnQzMl90IHdvcmtfdG9fZG8sCiAJCXN0cnVjdCBpb25pY19yeF9zZXJ2aWNl ICpyeF9zdmMpCiB7CiAJc3RydWN0IGlvbmljX2NxICpjcSA9ICZyeHEtPnFjcS5jcTsKIAlzdHJ1 Y3QgaW9uaWNfcXVldWUgKnEgPSAmcnhxLT5xY3EucTsKKwlzdHJ1Y3QgaW9uaWNfcnhxX2Rlc2Mg KnFfZGVzY19iYXNlID0gcS0+YmFzZTsKIAlzdHJ1Y3QgaW9uaWNfcnhxX2NvbXAgKmNxX2Rlc2Ms ICpjcV9kZXNjX2Jhc2UgPSBjcS0+YmFzZTsKLQlib29sIG1vcmU7Ci0JdWludDMyX3QgY3Vycl9x X3RhaWxfaWR4LCBjdXJyX2NxX3RhaWxfaWR4OwogCXVpbnQzMl90IHdvcmtfZG9uZSA9IDA7CiAK LQlpZiAod29ya190b19kbyA9PSAwKQotCQlyZXR1cm47Ci0KIAljcV9kZXNjID0gJmNxX2Rlc2Nf YmFzZVtjcS0+dGFpbF9pZHhdOworCiAJd2hpbGUgKGNvbG9yX21hdGNoKGNxX2Rlc2MtPnBrdF90 eXBlX2NvbG9yLCBjcS0+ZG9uZV9jb2xvcikpIHsKLQkJY3Vycl9jcV90YWlsX2lkeCA9IGNxLT50 YWlsX2lkeDsKIAkJY3EtPnRhaWxfaWR4ID0gUV9ORVhUX1RPX1NSVkMoY3EsIDEpOwogCiAJCWlm IChjcS0+dGFpbF9pZHggPT0gMCkKIAkJCWNxLT5kb25lX2NvbG9yID0gIWNxLT5kb25lX2NvbG9y OwogCi0JCS8qIFByZWZldGNoIHRoZSBuZXh0IDQgZGVzY3JpcHRvcnMgKi8KLQkJaWYgKChjcS0+ dGFpbF9pZHggJiAweDMpID09IDApCi0JCQlydGVfcHJlZmV0Y2gwKCZjcV9kZXNjX2Jhc2VbY3Et PnRhaWxfaWR4XSk7Ci0KLQkJZG8gewotCQkJbW9yZSA9IChxLT50YWlsX2lkeCAhPSBjcV9kZXNj LT5jb21wX2luZGV4KTsKKwkJLyogUHJlZmV0Y2ggOCB4IDhCIGJ1ZmluZm8gKi8KKwkJcnRlX3By ZWZldGNoMChJT05JQ19JTkZPX1BUUihxLCBRX05FWFRfVE9fU1JWQyhxLCA4KSkpOworCQkvKiBQ cmVmZXRjaCA0IHggMTZCIGNvbXAgKi8KKwkJcnRlX3ByZWZldGNoMCgmY3FfZGVzY19iYXNlW1Ff TkVYVF9UT19TUlZDKGNxLCA0KV0pOworCQkvKiBQcmVmZXRjaCA0IHggMTZCIGRlc2NyaXB0b3Jz ICovCisJCXJ0ZV9wcmVmZXRjaDAoJnFfZGVzY19iYXNlW1FfTkVYVF9UT19QT1NUKHEsIDQpXSk7 CiAKLQkJCWN1cnJfcV90YWlsX2lkeCA9IHEtPnRhaWxfaWR4OwotCQkJcS0+dGFpbF9pZHggPSBR X05FWFRfVE9fU1JWQyhxLCAxKTsKKwkJaW9uaWNfcnhfY2xlYW5fb25lKHJ4cSwgY3FfZGVzYywg cnhfc3ZjKTsKIAotCQkJLyogUHJlZmV0Y2ggdGhlIG5leHQgNCBkZXNjcmlwdG9ycyAqLwotCQkJ aWYgKChxLT50YWlsX2lkeCAmIDB4MykgPT0gMCkKLQkJCQkvKiBxIGRlc2MgaW5mbyAqLwotCQkJ CXJ0ZV9wcmVmZXRjaDAoJnEtPmluZm9bcS0+dGFpbF9pZHhdKTsKKwkJcS0+dGFpbF9pZHggPSBR X05FWFRfVE9fU1JWQyhxLCAxKTsKIAotCQkJaW9uaWNfcnhfY2xlYW4ocnhxLCBjdXJyX3FfdGFp bF9pZHgsIGN1cnJfY3FfdGFpbF9pZHgsCi0JCQkJcnhfc3ZjKTsKKwkJKHZvaWQpaW9uaWNfcnhf ZmlsbF9vbmUocnhxKTsKIAotCQl9IHdoaWxlIChtb3JlKTsKKwkJcS0+aGVhZF9pZHggPSBRX05F WFRfVE9fUE9TVChxLCAxKTsKIAogCQlpZiAoKyt3b3JrX2RvbmUgPT0gd29ya190b19kbykKIAkJ CWJyZWFrOwogCiAJCWNxX2Rlc2MgPSAmY3FfZGVzY19iYXNlW2NxLT50YWlsX2lkeF07CiAJfQor CisJLyogVXBkYXRlIHRoZSBxdWV1ZSBpbmRpY2VzIGFuZCByaW5nIHRoZSBkb29yYmVsbCAqLwor CWlmICh3b3JrX2RvbmUpCisJCWlvbmljX3FfZmx1c2gocSk7CiB9CiAKIC8qCkBAIC0xMTQxLDEy ICsxMTQxLDkgQEAgaW9uaWNfcmVjdl9wa3RzKHZvaWQgKnJ4X3F1ZXVlLCBzdHJ1Y3QgcnRlX21i dWYgKipyeF9wa3RzLAogCXN0cnVjdCBpb25pY19yeF9zZXJ2aWNlIHJ4X3N2YzsKIAogCXJ4X3N2 Yy5yeF9wa3RzID0gcnhfcGt0czsKLQlyeF9zdmMubmJfcGt0cyA9IG5iX3BrdHM7CiAJcnhfc3Zj Lm5iX3J4ID0gMDsKIAogCWlvbmljX3J4cV9zZXJ2aWNlKHJ4cSwgbmJfcGt0cywgJnJ4X3N2Yyk7 CiAKLQlpb25pY19yeF9maWxsKHJ4cSk7Ci0KIAlyZXR1cm4gcnhfc3ZjLm5iX3J4OwogfQoKaHR0 cHM6Ly9sYWIuZHBkay5vcmcvcmVzdWx0cy9kYXNoYm9hcmQvcGF0Y2hzZXRzLzIzODg4LwoKVU5I LUlPTCBEUERLIENvbW11bml0eSBMYWIK --===============4998122083933659587==--