From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dario Faggioli Subject: [PATCH v3 11/11] xen: sched: implement vcpu hard affinity in Credit2 Date: Fri, 08 Apr 2016 03:24:46 +0200 Message-ID: <20160408012445.10762.40064.stgit@Solace.fritz.box> References: <20160408011204.10762.14241.stgit@Solace.fritz.box> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta5.messagelabs.com ([195.245.231.135]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1aoLAK-0008N9-J6 for xen-devel@lists.xenproject.org; Fri, 08 Apr 2016 01:24:52 +0000 Received: by mail-wm0-f67.google.com with SMTP id l6so747573wml.3 for ; Thu, 07 Apr 2016 18:24:48 -0700 (PDT) In-Reply-To: <20160408011204.10762.14241.stgit@Solace.fritz.box> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: Justin Weaver , George Dunlap List-Id: xen-devel@lists.xenproject.org RnJvbTogSnVzdGluIFdlYXZlciA8anR3ZWF2ZXJAaGF3YWlpLmVkdT4KCmFzIGl0IHdhcyBzdGls bCBtaXNzaW5nLgoKTm90ZSB0aGF0IHRoaXMgcGF0Y2ggIm9ubHkiIGltcGxlbWVudHMgaGFyZCBh ZmZpbml0eSwKaS5lLiwgdGhlIHBvc3NpYmlsaXR5IG9mIHNwZWNpZnlpbmcgb24gd2hhdCBwQ1BV cyBhCmNlcnRhaW4gdkNQVSBjYW4gcnVuLiBTb2Z0IGFmZmluaXR5ICh3aGljaCBleHByZXNzIGEK cHJlZmVyZW5jZSBmb3IgdkNQVXMgdG8gcnVuIG9uIGNlcnRhaW4gcENQVXMpIGlzIHN0aWxsCm5v dCBzdXBwb3J0ZWQgYnkgQ3JlZGl0MiwgZXZlbiBhZnRlciB0aGlzIHBhdGNoLgoKU2lnbmVkLW9m Zi1ieTogSnVzdGluIFdlYXZlciA8anR3ZWF2ZXJAaGF3YWlpLmVkdT4KU2lnbmVkLW9mZi1ieTog RGFyaW8gRmFnZ2lvbGkgPGRhcmlvLmZhZ2dpb2xpQGNpdHJpeC5jb20+CkFja2VkLWJ5OiBHZW9y Z2UgRHVubGFwIDxnZW9yZ2UuZHVubGFwQGNpdHJpeC5jb20+Ci0tLQogeGVuL2NvbW1vbi9zY2hl ZF9jcmVkaXQyLmMgfCAgMTMxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0t LS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMTAyIGluc2VydGlvbnMoKyksIDI5IGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL3hlbi9jb21tb24vc2NoZWRfY3JlZGl0Mi5jIGIveGVuL2NvbW1vbi9z Y2hlZF9jcmVkaXQyLmMKaW5kZXggODYxN2M5Yi4uNTllYjNkYiAxMDA2NDQKLS0tIGEveGVuL2Nv bW1vbi9zY2hlZF9jcmVkaXQyLmMKKysrIGIveGVuL2NvbW1vbi9zY2hlZF9jcmVkaXQyLmMKQEAg LTMxOCw2ICszMTgsMzYgQEAgc3RydWN0IGNzY2hlZDJfZG9tIHsKICAgICB1aW50MTZfdCBucl92 Y3B1czsKIH07CiAKKy8qCisgKiBXaGVuIGEgaGFyZCBhZmZpbml0eSBjaGFuZ2Ugb2NjdXJzLCB3 ZSBtYXkgbm90IGJlIGFibGUgdG8gY2hlY2sgc29tZQorICogKGFueSEpIG9mIHRoZSBvdGhlciBy dW5xdWV1ZXMsIHdoZW4gbG9va2luZyBmb3IgdGhlIGJlc3QgbmV3IHByb2Nlc3NvcgorICogZm9y IHN2YyAoYXMgdHJ5bG9jay1zIGluIGNob29zZV9jcHUoKSBjYW4gZmFpbCkuIElmIHRoYXQgaGFw cGVucywgd2UKKyAqIHBpY2ssIGluIG9yZGVyIG9mIGRlY3JlYXNpbmcgcHJlZmVyZW5jZToKKyAq ICAtIHN2YydzIGN1cnJlbnQgcGNwdTsKKyAqICAtIGFub3RoZXIgcGNwdSBmcm9tIHN2YydzIGN1 cnJlbnQgcnVucTsKKyAqICAtIGFueSBjcHUuCisgKi8KK3N0YXRpYyBpbnQgZ2V0X2ZhbGxiYWNr X2NwdShzdHJ1Y3QgY3NjaGVkMl92Y3B1ICpzdmMpCit7CisgICAgaW50IGNwdTsKKworICAgIGlm ICggbGlrZWx5KGNwdW1hc2tfdGVzdF9jcHUoc3ZjLT52Y3B1LT5wcm9jZXNzb3IsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzdmMtPnZjcHUtPmNwdV9oYXJkX2FmZmluaXR5KSkg KQorICAgICAgICByZXR1cm4gc3ZjLT52Y3B1LT5wcm9jZXNzb3I7CisKKyAgICBjcHVtYXNrX2Fu ZChjcHVtYXNrX3NjcmF0Y2gsIHN2Yy0+dmNwdS0+Y3B1X2hhcmRfYWZmaW5pdHksCisgICAgICAg ICAgICAgICAgJnN2Yy0+cnFkLT5hY3RpdmUpOworICAgIGNwdSA9IGNwdW1hc2tfZmlyc3QoY3B1 bWFza19zY3JhdGNoKTsKKyAgICBpZiAoIGxpa2VseShjcHUgPCBucl9jcHVfaWRzKSApCisgICAg ICAgIHJldHVybiBjcHU7CisKKyAgICBjcHVtYXNrX2FuZChjcHVtYXNrX3NjcmF0Y2gsIHN2Yy0+ dmNwdS0+Y3B1X2hhcmRfYWZmaW5pdHksCisgICAgICAgICAgICAgICAgY3B1cG9vbF9kb21haW5f Y3B1bWFzayhzdmMtPnZjcHUtPmRvbWFpbikpOworCisgICAgQVNTRVJUKCFjcHVtYXNrX2VtcHR5 KGNwdW1hc2tfc2NyYXRjaCkpOworCisgICAgcmV0dXJuIGNwdW1hc2tfZmlyc3QoY3B1bWFza19z Y3JhdGNoKTsKK30KIAogLyoKICAqIFRpbWUtdG8tY3JlZGl0LCBjcmVkaXQtdG8tdGltZS4KQEAg LTU1MSw4ICs1ODEsOSBAQCBydW5xX3RpY2tsZShjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMs IHVuc2lnbmVkIGludCBjcHUsIHN0cnVjdCBjc2NoZWQyX3ZjcHUgKgogICAgICAgICBnb3RvIHRp Y2tsZTsKICAgICB9CiAgICAgCi0gICAgLyogR2V0IGEgbWFzayBvZiBpZGxlLCBidXQgbm90IHRp Y2tsZWQgKi8KKyAgICAvKiBHZXQgYSBtYXNrIG9mIGlkbGUsIGJ1dCBub3QgdGlja2xlZCwgdGhh dCBuZXcgaXMgYWxsb3dlZCB0byBydW4gb24uICovCiAgICAgY3B1bWFza19hbmRub3QoJm1hc2ss ICZycWQtPmlkbGUsICZycWQtPnRpY2tsZWQpOworICAgIGNwdW1hc2tfYW5kKCZtYXNrLCAmbWFz aywgbmV3LT52Y3B1LT5jcHVfaGFyZF9hZmZpbml0eSk7CiAgICAgCiAgICAgLyogSWYgaXQncyBu b3QgZW1wdHksIGNob29zZSBvbmUgKi8KICAgICBpID0gY3B1bWFza19jeWNsZShjcHUsICZtYXNr KTsKQEAgLTU2Myw5ICs1OTQsMTEgQEAgcnVucV90aWNrbGUoY29uc3Qgc3RydWN0IHNjaGVkdWxl ciAqb3BzLCB1bnNpZ25lZCBpbnQgY3B1LCBzdHJ1Y3QgY3NjaGVkMl92Y3B1ICoKICAgICB9CiAK ICAgICAvKiBPdGhlcndpc2UsIGxvb2sgZm9yIHRoZSBub24taWRsZSBjcHUgd2l0aCB0aGUgbG93 ZXN0IGNyZWRpdCwKLSAgICAgKiBza2lwcGluZyBjcHVzIHdoaWNoIGhhdmUgYmVlbiB0aWNrbGVk IGJ1dCBub3Qgc2NoZWR1bGVkIHlldCAqLworICAgICAqIHNraXBwaW5nIGNwdXMgd2hpY2ggaGF2 ZSBiZWVuIHRpY2tsZWQgYnV0IG5vdCBzY2hlZHVsZWQgeWV0LAorICAgICAqIHRoYXQgbmV3IGlz IGFsbG93ZWQgdG8gcnVuIG9uLiAqLwogICAgIGNwdW1hc2tfYW5kbm90KCZtYXNrLCAmcnFkLT5h Y3RpdmUsICZycWQtPmlkbGUpOwogICAgIGNwdW1hc2tfYW5kbm90KCZtYXNrLCAmbWFzaywgJnJx ZC0+dGlja2xlZCk7CisgICAgY3B1bWFza19hbmQoJm1hc2ssICZtYXNrLCBuZXctPnZjcHUtPmNw dV9oYXJkX2FmZmluaXR5KTsKIAogICAgIGZvcl9lYWNoX2NwdShpLCAmbWFzaykKICAgICB7CkBA IC0xMTE1LDkgKzExNDgsOCBAQCBjaG9vc2VfY3B1KGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9w cywgc3RydWN0IHZjcHUgKnZjKQogICAgICAgICAgICAgZDJwcmludGsoIiVwdiAtXG4iLCBzdmMt PnZjcHUpOwogICAgICAgICAgICAgY2xlYXJfYml0KF9fQ1NGTEFHX3J1bnFfbWlncmF0ZV9yZXF1 ZXN0LCAmc3ZjLT5mbGFncyk7CiAgICAgICAgIH0KLSAgICAgICAgLyogTGVhdmUgaXQgd2hlcmUg aXQgaXMgZm9yIG5vdy4gIFdoZW4gd2UgYWN0dWFsbHkgcGF5IGF0dGVudGlvbgotICAgICAgICAg KiB0byBhZmZpbml0eSB3ZSdsbCBoYXZlIHRvIGZpZ3VyZSBzb21ldGhpbmcgb3V0Li4uICovCi0g ICAgICAgIHJldHVybiB2Yy0+cHJvY2Vzc29yOworCisgICAgICAgIHJldHVybiBnZXRfZmFsbGJh Y2tfY3B1KHN2Yyk7CiAgICAgfQogCiAgICAgLyogRmlyc3QgY2hlY2sgdG8gc2VlIGlmIHdlJ3Jl IGhlcmUgYmVjYXVzZSBzb21lb25lIGVsc2Ugc3VnZ2VzdGVkIGEgcGxhY2UKQEAgLTExMjgsNDUg KzExNjAsNTYgQEAgY2hvb3NlX2NwdShjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIHN0cnVj dCB2Y3B1ICp2YykKICAgICAgICAgewogICAgICAgICAgICAgcHJpbnRrKCIlczogUnVucXVldWUg bWlncmF0ZSBhYm9ydGVkIGJlY2F1c2UgdGFyZ2V0IHJ1bnF1ZXVlIGRpc2FwcGVhcmVkIVxuIiwK ICAgICAgICAgICAgICAgICAgICBfX2Z1bmNfXyk7Ci0gICAgICAgICAgICAvKiBGYWxsLXRocm91 Z2ggdG8gbm9ybWFsIGNwdSBwaWNrICovCiAgICAgICAgIH0KICAgICAgICAgZWxzZQogICAgICAg ICB7Ci0gICAgICAgICAgICBkMnByaW50aygiJXB2ICtcbiIsIHN2Yy0+dmNwdSk7Ci0gICAgICAg ICAgICBuZXdfY3B1ID0gY3B1bWFza19jeWNsZSh2Yy0+cHJvY2Vzc29yLCAmc3ZjLT5taWdyYXRl X3JxZC0+YWN0aXZlKTsKLSAgICAgICAgICAgIGdvdG8gb3V0X3VwOworICAgICAgICAgICAgY3B1 bWFza19hbmQoY3B1bWFza19zY3JhdGNoLCB2Yy0+Y3B1X2hhcmRfYWZmaW5pdHksCisgICAgICAg ICAgICAgICAgICAgICAgICAmc3ZjLT5taWdyYXRlX3JxZC0+YWN0aXZlKTsKKyAgICAgICAgICAg IG5ld19jcHUgPSBjcHVtYXNrX2FueShjcHVtYXNrX3NjcmF0Y2gpOworICAgICAgICAgICAgaWYg KCBuZXdfY3B1IDwgbnJfY3B1X2lkcyApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg ZDJwcmludGsoIiVwdiArXG4iLCBzdmMtPnZjcHUpOworICAgICAgICAgICAgICAgIGdvdG8gb3V0 X3VwOworICAgICAgICAgICAgfQogICAgICAgICB9CisgICAgICAgIC8qIEZhbGwtdGhyb3VnaCB0 byBub3JtYWwgY3B1IHBpY2sgKi8KICAgICB9CiAKLSAgICAvKiBGSVhNRTogUGF5IGF0dGVudGlv biB0byBjcHUgYWZmaW5pdHkgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotCiAgICAg bWluX2F2Z2xvYWQgPSBNQVhfTE9BRDsKIAogICAgIC8qIEZpbmQgdGhlIHJ1bnF1ZXVlIHdpdGgg dGhlIGxvd2VzdCBpbnN0YW50YW5lb3VzIGxvYWQgKi8KICAgICBmb3JfZWFjaF9jcHUoaSwgJnBy di0+YWN0aXZlX3F1ZXVlcykKICAgICB7CiAgICAgICAgIHN0cnVjdCBjc2NoZWQyX3J1bnF1ZXVl X2RhdGEgKnJxZDsKLSAgICAgICAgc190aW1lX3QgcnFkX2F2Z2xvYWQ7CisgICAgICAgIHNfdGlt ZV90IHJxZF9hdmdsb2FkID0gTUFYX0xPQUQ7CiAKICAgICAgICAgcnFkID0gcHJ2LT5ycWQgKyBp OwogCi0gICAgICAgIC8qIElmIGNoZWNraW5nIGEgZGlmZmVyZW50IHJ1bnF1ZXVlLCBncmFiIHRo ZSBsb2NrLAotICAgICAgICAgKiByZWFkIHRoZSBhdmcsIGFuZCB0aGVuIHJlbGVhc2UgdGhlIGxv Y2suCisgICAgICAgIC8qCisgICAgICAgICAqIElmIGNoZWNraW5nIGEgZGlmZmVyZW50IHJ1bnF1 ZXVlLCBncmFiIHRoZSBsb2NrLCBjaGVjayBoYXJkCisgICAgICAgICAqIGFmZmluaXR5LCByZWFk IHRoZSBhdmcsIGFuZCB0aGVuIHJlbGVhc2UgdGhlIGxvY2suCiAgICAgICAgICAqCiAgICAgICAg ICAqIElmIG9uIG91ciBvd24gcnVucXVldWUsIGRvbid0IGdyYWIgb3IgcmVsZWFzZSB0aGUgbG9j azsKICAgICAgICAgICogYnV0IHN1YnRyYWN0IG91ciBvd24gbG9hZCBmcm9tIHRoZSBydW5xdWV1 ZSBsb2FkIHRvIHNpbXVsYXRlCi0gICAgICAgICAqIGltcGFydGlhbGl0eSAqLworICAgICAgICAg KiBpbXBhcnRpYWxpdHkuCisgICAgICAgICAqCisgICAgICAgICAqIE5vdGUgdGhhdCwgaWYgc3Zj J3MgaGFyZCBhZmZpbml0eSBoYXMgY2hhbmdlZCwgdGhpcyBpcyB0aGUKKyAgICAgICAgICogZmly c3QgdGltZSB3aGVuIHdlIHNlZSBzdWNoIGNoYW5nZSwgc28gaXQgaXMgaW5kZWVkIHBvc3NpYmxl CisgICAgICAgICAqIHRoYXQgbm9uZSBvZiB0aGUgY3B1cyBpbiBzdmMncyBjdXJyZW50IHJ1bnF1 ZXVlIGlzIGluIG91cgorICAgICAgICAgKiAobmV3KSBoYXJkIGFmZmluaXR5IQorICAgICAgICAg Ki8KICAgICAgICAgaWYgKCBycWQgPT0gc3ZjLT5ycWQgKQogICAgICAgICB7Ci0gICAgICAgICAg ICBycWRfYXZnbG9hZCA9IHJxZC0+Yl9hdmdsb2FkIC0gc3ZjLT5hdmdsb2FkOworICAgICAgICAg ICAgaWYgKCBjcHVtYXNrX2ludGVyc2VjdHModmMtPmNwdV9oYXJkX2FmZmluaXR5LCAmcnFkLT5h Y3RpdmUpICkKKyAgICAgICAgICAgICAgICBycWRfYXZnbG9hZCA9IHJxZC0+Yl9hdmdsb2FkIC0g c3ZjLT5hdmdsb2FkOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgaWYgKCBzcGluX3RyeWxvY2so JnJxZC0+bG9jaykgKQogICAgICAgICB7Ci0gICAgICAgICAgICBycWRfYXZnbG9hZCA9IHJxZC0+ Yl9hdmdsb2FkOworICAgICAgICAgICAgaWYgKCBjcHVtYXNrX2ludGVyc2VjdHModmMtPmNwdV9o YXJkX2FmZmluaXR5LCAmcnFkLT5hY3RpdmUpICkKKyAgICAgICAgICAgICAgICBycWRfYXZnbG9h ZCA9IHJxZC0+Yl9hdmdsb2FkOworCiAgICAgICAgICAgICBzcGluX3VubG9jaygmcnFkLT5sb2Nr KTsKICAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgICAgICBjb250aW51ZTsKIAogICAg ICAgICBpZiAoIHJxZF9hdmdsb2FkIDwgbWluX2F2Z2xvYWQgKQogICAgICAgICB7CkBAIC0xMTc1 LDEyICsxMjE4LDE0IEBAIGNob29zZV9jcHUoY29uc3Qgc3RydWN0IHNjaGVkdWxlciAqb3BzLCBz dHJ1Y3QgdmNwdSAqdmMpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICAvKiBXZSBkaWRuJ3QgZmlu ZCBhbnlvbmUgKG1vc3QgbGlrZWx5IGJlY2F1c2Ugb2Ygc3BpbmxvY2sgY29udGVudGlvbik7IGxl YXZlIGl0IHdoZXJlIGl0IGlzICovCisgICAgLyogV2UgZGlkbid0IGZpbmQgYW55b25lIChtb3N0 IGxpa2VseSBiZWNhdXNlIG9mIHNwaW5sb2NrIGNvbnRlbnRpb24pLiAqLwogICAgIGlmICggbWlu X3JxaSA9PSAtMSApCi0gICAgICAgIG5ld19jcHUgPSB2Yy0+cHJvY2Vzc29yOworICAgICAgICBu ZXdfY3B1ID0gZ2V0X2ZhbGxiYWNrX2NwdShzdmMpOwogICAgIGVsc2UKICAgICB7Ci0gICAgICAg IG5ld19jcHUgPSBjcHVtYXNrX2N5Y2xlKHZjLT5wcm9jZXNzb3IsICZwcnYtPnJxZFttaW5fcnFp XS5hY3RpdmUpOworICAgICAgICBjcHVtYXNrX2FuZChjcHVtYXNrX3NjcmF0Y2gsIHZjLT5jcHVf aGFyZF9hZmZpbml0eSwKKyAgICAgICAgICAgICAgICAgICAgJnBydi0+cnFkW21pbl9ycWldLmFj dGl2ZSk7CisgICAgICAgIG5ld19jcHUgPSBjcHVtYXNrX2FueShjcHVtYXNrX3NjcmF0Y2gpOwog ICAgICAgICBCVUdfT04obmV3X2NwdSA+PSBucl9jcHVfaWRzKTsKICAgICB9CiAKQEAgLTEyNjAs NyArMTMwNSwxMiBAQCBzdGF0aWMgdm9pZCBtaWdyYXRlKGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIg Km9wcywKICAgICAgICAgICAgIG9uX3J1bnE9MTsKICAgICAgICAgfQogICAgICAgICBfX3J1bnFf ZGVhc3NpZ24oc3ZjKTsKLSAgICAgICAgc3ZjLT52Y3B1LT5wcm9jZXNzb3IgPSBjcHVtYXNrX2Fu eSgmdHJxZC0+YWN0aXZlKTsKKworICAgICAgICBjcHVtYXNrX2FuZChjcHVtYXNrX3NjcmF0Y2gs IHN2Yy0+dmNwdS0+Y3B1X2hhcmRfYWZmaW5pdHksCisgICAgICAgICAgICAgICAgICAgICZ0cnFk LT5hY3RpdmUpOworICAgICAgICBzdmMtPnZjcHUtPnByb2Nlc3NvciA9IGNwdW1hc2tfYW55KGNw dW1hc2tfc2NyYXRjaCk7CisgICAgICAgIEJVR19PTihzdmMtPnZjcHUtPnByb2Nlc3NvciA+PSBu cl9jcHVfaWRzKTsKKwogICAgICAgICBfX3J1bnFfYXNzaWduKHN2YywgdHJxZCk7CiAgICAgICAg IGlmICggb25fcnVucSApCiAgICAgICAgIHsKQEAgLTEyNzQsNiArMTMyNCwxNyBAQCBzdGF0aWMg dm9pZCBtaWdyYXRlKGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9wcywKICAgICB9CiB9CiAKKy8q CisgKiBJdCBtYWtlcyBzZW5zZSBjb25zaWRlcmluZyBtaWdyYXRpbmcgc3ZjIHRvIHJxZCwgaWY6 CisgKiAgLSBzdmMgaXMgbm90IGFscmVhZHkgZmxhZ2dlZCB0byBtaWdyYXRlLAorICogIC0gaWYg c3ZjIGlzIGFsbG93ZWQgdG8gcnVuIG9uIGF0IGxlYXN0IG9uZSBvZiB0aGUgcGNwdXMgb2YgcnFk LgorICovCitzdGF0aWMgYm9vbF90IHZjcHVfaXNfbWlncmF0ZWFibGUoc3RydWN0IGNzY2hlZDJf dmNwdSAqc3ZjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjc2No ZWQyX3J1bnF1ZXVlX2RhdGEgKnJxZCkKK3sKKyAgICByZXR1cm4gIShzdmMtPmZsYWdzICYgQ1NG TEFHX3J1bnFfbWlncmF0ZV9yZXF1ZXN0KSAmJgorICAgICAgICAgICBjcHVtYXNrX2ludGVyc2Vj dHMoc3ZjLT52Y3B1LT5jcHVfaGFyZF9hZmZpbml0eSwgJnJxZC0+YWN0aXZlKTsKK30KIAogc3Rh dGljIHZvaWQgYmFsYW5jZV9sb2FkKGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9wcywgaW50IGNw dSwgc190aW1lX3Qgbm93KQogewpAQCAtMTM4Miw4ICsxNDQzLDcgQEAgcmV0cnk6CiAKICAgICAg ICAgX191cGRhdGVfc3ZjX2xvYWQob3BzLCBwdXNoX3N2YywgMCwgbm93KTsKIAotICAgICAgICAv KiBTa2lwIHRoaXMgb25lIGlmIGl0J3MgYWxyZWFkeSBiZWVuIGZsYWdnZWQgdG8gbWlncmF0ZSAq LwotICAgICAgICBpZiAoIHB1c2hfc3ZjLT5mbGFncyAmIENTRkxBR19ydW5xX21pZ3JhdGVfcmVx dWVzdCApCisgICAgICAgIGlmICggIXZjcHVfaXNfbWlncmF0ZWFibGUocHVzaF9zdmMsIHN0Lm9y cWQpICkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGxpc3RfZm9yX2VhY2goIHB1 bGxfaXRlciwgJnN0Lm9ycWQtPnN2YyApCkBAIC0xMzk1LDggKzE0NTUsNyBAQCByZXRyeToKICAg ICAgICAgICAgICAgICBfX3VwZGF0ZV9zdmNfbG9hZChvcHMsIHB1bGxfc3ZjLCAwLCBub3cpOwog ICAgICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgICAgIC8qIFNraXAgdGhpcyBvbmUgaWYg aXQncyBhbHJlYWR5IGJlZW4gZmxhZ2dlZCB0byBtaWdyYXRlICovCi0gICAgICAgICAgICBpZiAo IHB1bGxfc3ZjLT5mbGFncyAmIENTRkxBR19ydW5xX21pZ3JhdGVfcmVxdWVzdCApCisgICAgICAg ICAgICBpZiAoICF2Y3B1X2lzX21pZ3JhdGVhYmxlKHB1bGxfc3ZjLCBzdC5scnFkKSApCiAgICAg ICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgICAgIGNvbnNpZGVyKCZzdCwgcHVzaF9z dmMsIHB1bGxfc3ZjKTsKQEAgLTE0MTIsOCArMTQ3MSw3IEBAIHJldHJ5OgogICAgIHsKICAgICAg ICAgc3RydWN0IGNzY2hlZDJfdmNwdSAqIHB1bGxfc3ZjID0gbGlzdF9lbnRyeShwdWxsX2l0ZXIs IHN0cnVjdCBjc2NoZWQyX3ZjcHUsIHJxZF9lbGVtKTsKICAgICAgICAgCi0gICAgICAgIC8qIFNr aXAgdGhpcyBvbmUgaWYgaXQncyBhbHJlYWR5IGJlZW4gZmxhZ2dlZCB0byBtaWdyYXRlICovCi0g ICAgICAgIGlmICggcHVsbF9zdmMtPmZsYWdzICYgQ1NGTEFHX3J1bnFfbWlncmF0ZV9yZXF1ZXN0 ICkKKyAgICAgICAgaWYgKCAhdmNwdV9pc19taWdyYXRlYWJsZShwdWxsX3N2Yywgc3QubHJxZCkg KQogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgLyogQ29uc2lkZXIgcHVsbCBvbmx5 ICovCkBAIC0xNDUyLDExICsxNTEwLDIyIEBAIGNzY2hlZDJfdmNwdV9taWdyYXRlKAogCiAgICAg LyogQ2hlY2sgaWYgbmV3X2NwdSBpcyB2YWxpZCAqLwogICAgIEJVR19PTighY3B1bWFza190ZXN0 X2NwdShuZXdfY3B1LCAmQ1NDSEVEMl9QUklWKG9wcyktPmluaXRpYWxpemVkKSk7CisgICAgQVNT RVJUKGNwdW1hc2tfdGVzdF9jcHUobmV3X2NwdSwgdmMtPmNwdV9oYXJkX2FmZmluaXR5KSk7CiAK ICAgICB0cnFkID0gUlFEKG9wcywgbmV3X2NwdSk7CiAKKyAgICAvKgorICAgICAqIERvIHRoZSBh Y3R1YWwgbW92ZW1lbnQgdG93YXJkIG5ld19jcHUsIGFuZCB1cGRhdGUgdmMtPnByb2Nlc3Nvci4K KyAgICAgKiBJZiB3ZSBhcmUgY2hhbmdpbmcgcnVucXVldWUsIG1pZ3JhdGUoKSB0YWtlcyBjYXJl IG9mIGV2ZXJ5dGhpbmcuCisgICAgICogSWYgd2UgYXJlIG5vdCBjaGFuZ2luZyBydW5xdWV1ZSwg d2UgbmVlZCB0byB1cGRhdGUgdmMtPnByb2Nlc3NvcgorICAgICAqIGhlcmUuIEluIGZhY3QsIGlm LCBmb3IgaW5zdGFuY2UsIHdlIGFyZSBoZXJlIGJlY2F1c2UgdGhlIHZjcHUncworICAgICAqIGhh cmQgYWZmaW5pdHkgY2hhbmdlZCwgd2UgZG9uJ3Qgd2FudCB0byByaXNrIGxlYXZpbmcgdmMtPnBy b2Nlc3NvcgorICAgICAqIHBvaW50aW5nIHRvIGEgcGNwdSB3aGVyZSB3ZSBjYW4ndCBydW4gYW55 IGxvbmdlci4KKyAgICAgKi8KICAgICBpZiAoIHRycWQgIT0gc3ZjLT5ycWQgKQogICAgICAgICBt aWdyYXRlKG9wcywgc3ZjLCB0cnFkLCBOT1coKSk7CisgICAgZWxzZQorICAgICAgICB2Yy0+cHJv Y2Vzc29yID0gbmV3X2NwdTsKIH0KIAogc3RhdGljIGludApAQCAtMTY3OSw2ICsxNzQ4LDEwIEBA IHJ1bnFfY2FuZGlkYXRlKHN0cnVjdCBjc2NoZWQyX3J1bnF1ZXVlX2RhdGEgKnJxZCwKICAgICB7 CiAgICAgICAgIHN0cnVjdCBjc2NoZWQyX3ZjcHUgKiBzdmMgPSBsaXN0X2VudHJ5KGl0ZXIsIHN0 cnVjdCBjc2NoZWQyX3ZjcHUsIHJ1bnFfZWxlbSk7CiAKKyAgICAgICAgLyogT25seSBjb25zaWRl ciB2Y3B1cyB0aGF0IGFyZSBhbGxvd2VkIHRvIHJ1biBvbiB0aGlzIHByb2Nlc3Nvci4gKi8KKyAg ICAgICAgaWYgKCAhY3B1bWFza190ZXN0X2NwdShjcHUsIHN2Yy0+dmNwdS0+Y3B1X2hhcmRfYWZm aW5pdHkpICkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCiAgICAgICAgIC8qIElmIHRoaXMgaXMg b24gYSBkaWZmZXJlbnQgcHJvY2Vzc29yLCBkb24ndCBwdWxsIGl0IHVubGVzcwogICAgICAgICAg KiBpdHMgY3JlZGl0IGlzIGF0IGxlYXN0IENTQ0hFRDJfTUlHUkFURV9SRVNJU1QgaGlnaGVyLiAq LwogICAgICAgICBpZiAoIHN2Yy0+dmNwdS0+cHJvY2Vzc29yICE9IGNwdQoKCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxp c3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cDovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVs Cg==