From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Jan Beulich" Subject: [PATCH 3/5] x86/AMD: make C-state handling independent of Dom0 Date: Thu, 23 May 2019 06:18:11 -0600 Message-ID: <5CE68F830200007800231B3B@prv1-mh.provo.novell.com> References: <5CE68CD30200007800231B01@prv1-mh.provo.novell.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1hTmfo-0005jM-Br for xen-devel@lists.xenproject.org; Thu, 23 May 2019 12:18:16 +0000 In-Reply-To: <5CE68CD30200007800231B01@prv1-mh.provo.novell.com> Content-Disposition: inline List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: xen-devel Cc: Andrew Cooper , Brian Woods , Wei Liu , Roger Pau Monne List-Id: xen-devel@lists.xenproject.org QXQgbGVhc3QgZm9yIG1vcmUgcmVjZW50IENQVXMsIGZvbGxvd2luZyB3aGF0IEJLREcgLyBQUFIg c3VnZ2VzdCBmb3IgdGhlCkJJT1MgdG8gc3VyZmFjZSB2aWEgQUNQSSB3ZSBjYW4gbWFrZSBvdXJz ZWx2ZXMgaW5kZXBlbmRlbnQgb2YgRG9tMAp1cGxvYWRpbmcgcmVzcGVjdGl2ZSBkYXRhLgoKU2ln bmVkLW9mZi1ieTogSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgotLS0KVEJEOiBDYW4g d2Ugc2V0IGxvY2FsX2FwaWNfdGltZXJfYzJfb2sgdG8gdHJ1ZT8gSSBjYW4ndCBzZWVtIHRvIGZp bmQgYW55CiAgICAgc3RhdGVtZW50IGluIHRoZSBCS0RHIC8gUFBSIGFzIHRvIHdoZXRoZXIgdGhl IExBUElDIHRpbWVyIGNvbnRpbnVlcwogICAgIHJ1bm5pbmcgaW4gQ0M2LgpUQkQ6IFdlIG1heSB3 YW50IHRvIHZlcmlmeSB0aGF0IEhMVCBpbmRlZWQgaXMgY29uZmlndXJlZCB0byBlbnRlciBDQzYu ClRCRDogQnJpYW4ncyBzZXJpZXMgc3BlY2lmaWVzIC50YXJnZXRfcmVzaWRlbmN5IGFzIDEwMDAg Zm9yIENDNjsgbWF5CiAgICAgd2FudCB0byBkbyBzbyBoZXJlIGFzIHdlbGwuIFF1ZXN0aW9uIHRo ZW4gaXMgd2hldGhlciB0aGlzIHZhbHVlIGlzCiAgICAgYWxzbyBzdWl0YWJsZSBmb3IgdGhlIG9s ZGVyIGZhbWlsaWVzLgpUQkQ6IEkgZ3Vlc3Mgd2UgY291bGQgZXh0ZW5kIHRoaXMgdG8gZmFtaWxp ZXMgb2xkZXIgdGhlbiBGYW0xNSBhcyB3ZWxsLgoKLS0tIGEveGVuL2FyY2gveDg2L2FjcGkvY3B1 X2lkbGUuYworKysgYi94ZW4vYXJjaC94ODYvYWNwaS9jcHVfaWRsZS5jCkBAIC0xMTAsNiArMTEw LDggQEAgYm9vbGVhbl9wYXJhbSgibGFwaWNfdGltZXJfYzJfb2siLCBsb2NhbAogCiBzdHJ1Y3Qg YWNwaV9wcm9jZXNzb3JfcG93ZXIgKl9fcmVhZF9tb3N0bHkgcHJvY2Vzc29yX3Bvd2Vyc1tOUl9D UFVTXTsKIAorc3RhdGljIGludDhfdCBfX3JlYWRfbW9zdGx5IHZlbmRvcl9vdmVycmlkZTsKKwog c3RydWN0IGh3X3Jlc2lkZW5jaWVzCiB7CiAgICAgdWludDY0X3QgbWMwOwpAQCAtMTIxMSw2ICsx MjEzLDkgQEAgbG9uZyBzZXRfY3hfcG1pbmZvKHVpbnQzMl90IGFjcGlfaWQsIHN0cgogICAgIGlm ICggcG1faWRsZV9zYXZlICYmIHBtX2lkbGUgIT0gYWNwaV9wcm9jZXNzb3JfaWRsZSApCiAgICAg ICAgIHJldHVybiAwOwogCisgICAgaWYgKCB2ZW5kb3Jfb3ZlcnJpZGUgPiAwICkKKyAgICAgICAg cmV0dXJuIDA7CisKICAgICBwcmludF9jeF9wbWluZm8oYWNwaV9pZCwgcG93ZXIpOwogCiAgICAg Y3B1X2lkID0gZ2V0X2NwdV9pZChhY3BpX2lkKTsKQEAgLTEyODMsNiArMTI4OCw5OCBAQCBsb25n IHNldF9jeF9wbWluZm8odWludDMyX3QgYWNwaV9pZCwgc3RyCiAgICAgcmV0dXJuIDA7CiB9CiAK K3N0YXRpYyB2b2lkIGFtZF9jcHVpZGxlX2luaXQoc3RydWN0IGFjcGlfcHJvY2Vzc29yX3Bvd2Vy ICpwb3dlcikKK3sKKyAgICB1bnNpZ25lZCBpbnQgaSwgbnIgPSAwOworICAgIGNvbnN0IHN0cnVj dCBjcHVpbmZvX3g4NiAqYyA9ICZjdXJyZW50X2NwdV9kYXRhOworICAgIGNvbnN0IHVuc2lnbmVk IGludCBlY3hfcmVxID0gQ1BVSUQ1X0VDWF9FWFRFTlNJT05TX1NVUFBPUlRFRCB8CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBDUFVJRDVfRUNYX0lOVEVSUlVQVF9CUkVBSzsKKyAg ICBjb25zdCBzdHJ1Y3QgYWNwaV9wcm9jZXNzb3JfY3ggKmN4ID0gTlVMTDsKKyAgICBzdGF0aWMg Y29uc3Qgc3RydWN0IGFjcGlfcHJvY2Vzc29yX2N4IGZhbTE3W10gPSB7CisgICAgICAgIHsKKyAg ICAgICAgICAgIC50eXBlID0gQUNQSV9TVEFURV9DMSwKKyAgICAgICAgICAgIC5lbnRyeV9tZXRo b2QgPSBBQ1BJX0NTVEFURV9FTV9GRkgsCisgICAgICAgICAgICAuYWRkcmVzcyA9IDAsCisgICAg ICAgICAgICAubGF0ZW5jeSA9IDEsCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAg IC50eXBlID0gQUNQSV9TVEFURV9DMiwKKyAgICAgICAgICAgIC5lbnRyeV9tZXRob2QgPSBBQ1BJ X0NTVEFURV9FTV9IQUxULAorICAgICAgICAgICAgLmxhdGVuY3kgPSA0MDAsCisgICAgICAgIH0s CisgICAgfTsKKworICAgIGlmICggcG1faWRsZV9zYXZlICYmIHBtX2lkbGUgIT0gYWNwaV9wcm9j ZXNzb3JfaWRsZSApCisgICAgICAgIHJldHVybjsKKworICAgIGlmICggdmVuZG9yX292ZXJyaWRl IDwgMCApCisgICAgICAgIHJldHVybjsKKworICAgIHN3aXRjaCAoIGMtPng4NiApCisgICAgewor ICAgIGNhc2UgMHgxNzoKKyAgICAgICAgaWYgKCBjcHVfaGFzX21vbml0b3IgJiYgYy0+Y3B1aWRf bGV2ZWwgPj0gQ1BVSURfTVdBSVRfTEVBRiAmJgorICAgICAgICAgICAgIChjcHVpZF9lY3goQ1BV SURfTVdBSVRfTEVBRikgJiBlY3hfcmVxKSA9PSBlY3hfcmVxICkKKyAgICAgICAgeworICAgICAg ICAgICAgY3ggPSBmYW0xNzsKKyAgICAgICAgICAgIG5yID0gQVJSQVlfU0laRShmYW0xNyk7Cisg ICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICAvKiBmYWxsIHRocm91Z2ggKi8K KyAgICBjYXNlIDB4MTU6CisgICAgY2FzZSAweDE2OgorICAgICAgICBjeCA9ICZmYW0xN1sxXTsK KyAgICAgICAgbnIgPSBBUlJBWV9TSVpFKGZhbTE3KSAtIDE7CisgICAgICAgIGJyZWFrOworCisg ICAgZGVmYXVsdDoKKyAgICAgICAgdmVuZG9yX292ZXJyaWRlID0gLTE7CisgICAgICAgIHJldHVy bjsKKyAgICB9CisKKyAgICBwb3dlci0+ZmxhZ3MuaGFzX2NzdCA9IHRydWU7CisKKyAgICBmb3Ig KCBpID0gMDsgaSA8IG5yOyArK2kgKQorICAgIHsKKyAgICAgICAgaWYgKCBjeFtpXS50eXBlID4g bWF4X2NzdGF0ZSApCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgcG93ZXItPnN0YXRlc1tp ICsgMV0gPSBjeFtpXTsKKyAgICAgICAgcG93ZXItPnN0YXRlc1tpICsgMV0uaWR4ID0gaSArIDE7 CisgICAgICAgIHBvd2VyLT5zdGF0ZXNbaSArIDFdLnRhcmdldF9yZXNpZGVuY3kgPSBjeFtpXS5s YXRlbmN5ICogbGF0ZW5jeV9mYWN0b3I7CisgICAgfQorCisgICAgaWYgKCBpICkKKyAgICB7Cisg ICAgICAgIHBvd2VyLT5jb3VudCA9IGkgKyAxOworICAgICAgICBwb3dlci0+c2FmZV9zdGF0ZSA9 ICZwb3dlci0+c3RhdGVzW2ldOworCisgICAgICAgIGlmICggIXZlbmRvcl9vdmVycmlkZSApCisg ICAgICAgIHsKKyAgICAgICAgICAgIGlmICggIWJvb3RfY3B1X2hhcyhYODZfRkVBVFVSRV9BUkFU KSApCisgICAgICAgICAgICAgICAgaHBldF9icm9hZGNhc3RfaW5pdCgpOworCisgICAgICAgICAg ICBpZiAoICFsYXBpY190aW1lcl9pbml0KCkgKQorICAgICAgICAgICAgeworICAgICAgICAgICAg ICAgIHZlbmRvcl9vdmVycmlkZSA9IC0xOworICAgICAgICAgICAgICAgIGNwdWlkbGVfaW5pdF9j cHUocG93ZXItPmNwdSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQor CisgICAgICAgICAgICBpZiAoICFwbV9pZGxlX3NhdmUgKQorICAgICAgICAgICAgeworICAgICAg ICAgICAgICAgIHBtX2lkbGVfc2F2ZSA9IHBtX2lkbGU7CisgICAgICAgICAgICAgICAgcG1faWRs ZSA9IGFjcGlfcHJvY2Vzc29yX2lkbGU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGRl YWRfaWRsZSA9IGFjcGlfZGVhZF9pZGxlOworCisgICAgICAgICAgICB2ZW5kb3Jfb3ZlcnJpZGUg PSAxOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UKKyAgICAgICAgdmVuZG9yX292ZXJyaWRl ID0gLTE7Cit9CisKIHVpbnQzMl90IHBtc3RhdF9nZXRfY3hfbnIodWludDMyX3QgY3B1aWQpCiB7 CiAgICAgcmV0dXJuIHByb2Nlc3Nvcl9wb3dlcnNbY3B1aWRdID8gcHJvY2Vzc29yX3Bvd2Vyc1tj cHVpZF0tPmNvdW50IDogMDsKQEAgLTE0MjksOCArMTUyNiw4IEBAIHN0YXRpYyBpbnQgY3B1X2Nh bGxiYWNrKAogICAgIGludCByYyA9IDA7CiAKICAgICAvKgotICAgICAqIE9ubHkgaG9vayBvbiBD UFVfVVBfUFJFUEFSRSBiZWNhdXNlIGEgZGVhZCBjcHUgbWF5IHV0aWxpemUgdGhlIGluZm8KLSAg ICAgKiB0byBlbnRlciBkZWVwIEMtc3RhdGUuCisgICAgICogT25seSBob29rIG9uIENQVV9VUF9Q UkVQQVJFIC8gQ1BVX09OTElORSBiZWNhdXNlIGEgZGVhZCBjcHUgbWF5IHV0aWxpemUKKyAgICAg KiB0aGUgaW5mbyB0byBlbnRlciBkZWVwIEMtc3RhdGUuCiAgICAgICovCiAgICAgc3dpdGNoICgg YWN0aW9uICkKICAgICB7CkBAIC0xNDM5LDYgKzE1MzYsMTIgQEAgc3RhdGljIGludCBjcHVfY2Fs bGJhY2soCiAgICAgICAgIGlmICggIXJjICYmIGNwdWlkbGVfY3VycmVudF9nb3Zlcm5vci0+ZW5h YmxlICkKICAgICAgICAgICAgIHJjID0gY3B1aWRsZV9jdXJyZW50X2dvdmVybm9yLT5lbmFibGUo cHJvY2Vzc29yX3Bvd2Vyc1tjcHVdKTsKICAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIENQVV9P TkxJTkU6CisgICAgICAgIGlmICggYm9vdF9jcHVfZGF0YS54ODZfdmVuZG9yID09IFg4Nl9WRU5E T1JfQU1EICYmCisgICAgICAgICAgICAgcHJvY2Vzc29yX3Bvd2Vyc1tjcHVdICkKKyAgICAgICAg ICAgIGFtZF9jcHVpZGxlX2luaXQocHJvY2Vzc29yX3Bvd2Vyc1tjcHVdKTsKKyAgICAgICAgYnJl YWs7CiAgICAgfQogCiAgICAgcmV0dXJuICFyYyA/IE5PVElGWV9ET05FIDogbm90aWZpZXJfZnJv bV9lcnJubyhyYyk7CgoKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0 Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8veGVuLWRl dmVs From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-4.0 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 889C7C282DD for ; Thu, 23 May 2019 12:18:27 +0000 (UTC) Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 611DC20879 for ; Thu, 23 May 2019 12:18:27 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 611DC20879 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=suse.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1hTmfp-0005jY-1V; Thu, 23 May 2019 12:18:17 +0000 Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1hTmfo-0005jM-Br for xen-devel@lists.xenproject.org; Thu, 23 May 2019 12:18:16 +0000 X-Inumbo-ID: d5e9c036-7d54-11e9-8e7a-371054b43e97 Received: from prv1-mh.provo.novell.com (unknown [137.65.248.33]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS id d5e9c036-7d54-11e9-8e7a-371054b43e97; Thu, 23 May 2019 12:18:13 +0000 (UTC) Received: from INET-PRV1-MTA by prv1-mh.provo.novell.com with Novell_GroupWise; Thu, 23 May 2019 06:18:12 -0600 Message-Id: <5CE68F830200007800231B3B@prv1-mh.provo.novell.com> X-Mailer: Novell GroupWise Internet Agent 18.1.0 Date: Thu, 23 May 2019 06:18:11 -0600 From: "Jan Beulich" To: "xen-devel" References: <5CE68CD30200007800231B01@prv1-mh.provo.novell.com> In-Reply-To: <5CE68CD30200007800231B01@prv1-mh.provo.novell.com> Mime-Version: 1.0 Content-Disposition: inline Subject: [Xen-devel] [PATCH 3/5] x86/AMD: make C-state handling independent of Dom0 X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: Andrew Cooper , Brian Woods , Wei Liu , Roger Pau Monne Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" Message-ID: <20190523121811.M2EsRaDEELiMFGH4nanCGsPUCB39OQ7TraxxsHWjsVg@z> QXQgbGVhc3QgZm9yIG1vcmUgcmVjZW50IENQVXMsIGZvbGxvd2luZyB3aGF0IEJLREcgLyBQUFIg c3VnZ2VzdCBmb3IgdGhlCkJJT1MgdG8gc3VyZmFjZSB2aWEgQUNQSSB3ZSBjYW4gbWFrZSBvdXJz ZWx2ZXMgaW5kZXBlbmRlbnQgb2YgRG9tMAp1cGxvYWRpbmcgcmVzcGVjdGl2ZSBkYXRhLgoKU2ln bmVkLW9mZi1ieTogSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgotLS0KVEJEOiBDYW4g d2Ugc2V0IGxvY2FsX2FwaWNfdGltZXJfYzJfb2sgdG8gdHJ1ZT8gSSBjYW4ndCBzZWVtIHRvIGZp bmQgYW55CiAgICAgc3RhdGVtZW50IGluIHRoZSBCS0RHIC8gUFBSIGFzIHRvIHdoZXRoZXIgdGhl IExBUElDIHRpbWVyIGNvbnRpbnVlcwogICAgIHJ1bm5pbmcgaW4gQ0M2LgpUQkQ6IFdlIG1heSB3 YW50IHRvIHZlcmlmeSB0aGF0IEhMVCBpbmRlZWQgaXMgY29uZmlndXJlZCB0byBlbnRlciBDQzYu ClRCRDogQnJpYW4ncyBzZXJpZXMgc3BlY2lmaWVzIC50YXJnZXRfcmVzaWRlbmN5IGFzIDEwMDAg Zm9yIENDNjsgbWF5CiAgICAgd2FudCB0byBkbyBzbyBoZXJlIGFzIHdlbGwuIFF1ZXN0aW9uIHRo ZW4gaXMgd2hldGhlciB0aGlzIHZhbHVlIGlzCiAgICAgYWxzbyBzdWl0YWJsZSBmb3IgdGhlIG9s ZGVyIGZhbWlsaWVzLgpUQkQ6IEkgZ3Vlc3Mgd2UgY291bGQgZXh0ZW5kIHRoaXMgdG8gZmFtaWxp ZXMgb2xkZXIgdGhlbiBGYW0xNSBhcyB3ZWxsLgoKLS0tIGEveGVuL2FyY2gveDg2L2FjcGkvY3B1 X2lkbGUuYworKysgYi94ZW4vYXJjaC94ODYvYWNwaS9jcHVfaWRsZS5jCkBAIC0xMTAsNiArMTEw LDggQEAgYm9vbGVhbl9wYXJhbSgibGFwaWNfdGltZXJfYzJfb2siLCBsb2NhbAogCiBzdHJ1Y3Qg YWNwaV9wcm9jZXNzb3JfcG93ZXIgKl9fcmVhZF9tb3N0bHkgcHJvY2Vzc29yX3Bvd2Vyc1tOUl9D UFVTXTsKIAorc3RhdGljIGludDhfdCBfX3JlYWRfbW9zdGx5IHZlbmRvcl9vdmVycmlkZTsKKwog c3RydWN0IGh3X3Jlc2lkZW5jaWVzCiB7CiAgICAgdWludDY0X3QgbWMwOwpAQCAtMTIxMSw2ICsx MjEzLDkgQEAgbG9uZyBzZXRfY3hfcG1pbmZvKHVpbnQzMl90IGFjcGlfaWQsIHN0cgogICAgIGlm ICggcG1faWRsZV9zYXZlICYmIHBtX2lkbGUgIT0gYWNwaV9wcm9jZXNzb3JfaWRsZSApCiAgICAg ICAgIHJldHVybiAwOwogCisgICAgaWYgKCB2ZW5kb3Jfb3ZlcnJpZGUgPiAwICkKKyAgICAgICAg cmV0dXJuIDA7CisKICAgICBwcmludF9jeF9wbWluZm8oYWNwaV9pZCwgcG93ZXIpOwogCiAgICAg Y3B1X2lkID0gZ2V0X2NwdV9pZChhY3BpX2lkKTsKQEAgLTEyODMsNiArMTI4OCw5OCBAQCBsb25n IHNldF9jeF9wbWluZm8odWludDMyX3QgYWNwaV9pZCwgc3RyCiAgICAgcmV0dXJuIDA7CiB9CiAK K3N0YXRpYyB2b2lkIGFtZF9jcHVpZGxlX2luaXQoc3RydWN0IGFjcGlfcHJvY2Vzc29yX3Bvd2Vy ICpwb3dlcikKK3sKKyAgICB1bnNpZ25lZCBpbnQgaSwgbnIgPSAwOworICAgIGNvbnN0IHN0cnVj dCBjcHVpbmZvX3g4NiAqYyA9ICZjdXJyZW50X2NwdV9kYXRhOworICAgIGNvbnN0IHVuc2lnbmVk IGludCBlY3hfcmVxID0gQ1BVSUQ1X0VDWF9FWFRFTlNJT05TX1NVUFBPUlRFRCB8CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBDUFVJRDVfRUNYX0lOVEVSUlVQVF9CUkVBSzsKKyAg ICBjb25zdCBzdHJ1Y3QgYWNwaV9wcm9jZXNzb3JfY3ggKmN4ID0gTlVMTDsKKyAgICBzdGF0aWMg Y29uc3Qgc3RydWN0IGFjcGlfcHJvY2Vzc29yX2N4IGZhbTE3W10gPSB7CisgICAgICAgIHsKKyAg ICAgICAgICAgIC50eXBlID0gQUNQSV9TVEFURV9DMSwKKyAgICAgICAgICAgIC5lbnRyeV9tZXRo b2QgPSBBQ1BJX0NTVEFURV9FTV9GRkgsCisgICAgICAgICAgICAuYWRkcmVzcyA9IDAsCisgICAg ICAgICAgICAubGF0ZW5jeSA9IDEsCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAg IC50eXBlID0gQUNQSV9TVEFURV9DMiwKKyAgICAgICAgICAgIC5lbnRyeV9tZXRob2QgPSBBQ1BJ X0NTVEFURV9FTV9IQUxULAorICAgICAgICAgICAgLmxhdGVuY3kgPSA0MDAsCisgICAgICAgIH0s CisgICAgfTsKKworICAgIGlmICggcG1faWRsZV9zYXZlICYmIHBtX2lkbGUgIT0gYWNwaV9wcm9j ZXNzb3JfaWRsZSApCisgICAgICAgIHJldHVybjsKKworICAgIGlmICggdmVuZG9yX292ZXJyaWRl IDwgMCApCisgICAgICAgIHJldHVybjsKKworICAgIHN3aXRjaCAoIGMtPng4NiApCisgICAgewor ICAgIGNhc2UgMHgxNzoKKyAgICAgICAgaWYgKCBjcHVfaGFzX21vbml0b3IgJiYgYy0+Y3B1aWRf bGV2ZWwgPj0gQ1BVSURfTVdBSVRfTEVBRiAmJgorICAgICAgICAgICAgIChjcHVpZF9lY3goQ1BV SURfTVdBSVRfTEVBRikgJiBlY3hfcmVxKSA9PSBlY3hfcmVxICkKKyAgICAgICAgeworICAgICAg ICAgICAgY3ggPSBmYW0xNzsKKyAgICAgICAgICAgIG5yID0gQVJSQVlfU0laRShmYW0xNyk7Cisg ICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICAvKiBmYWxsIHRocm91Z2ggKi8K KyAgICBjYXNlIDB4MTU6CisgICAgY2FzZSAweDE2OgorICAgICAgICBjeCA9ICZmYW0xN1sxXTsK KyAgICAgICAgbnIgPSBBUlJBWV9TSVpFKGZhbTE3KSAtIDE7CisgICAgICAgIGJyZWFrOworCisg ICAgZGVmYXVsdDoKKyAgICAgICAgdmVuZG9yX292ZXJyaWRlID0gLTE7CisgICAgICAgIHJldHVy bjsKKyAgICB9CisKKyAgICBwb3dlci0+ZmxhZ3MuaGFzX2NzdCA9IHRydWU7CisKKyAgICBmb3Ig KCBpID0gMDsgaSA8IG5yOyArK2kgKQorICAgIHsKKyAgICAgICAgaWYgKCBjeFtpXS50eXBlID4g bWF4X2NzdGF0ZSApCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgcG93ZXItPnN0YXRlc1tp ICsgMV0gPSBjeFtpXTsKKyAgICAgICAgcG93ZXItPnN0YXRlc1tpICsgMV0uaWR4ID0gaSArIDE7 CisgICAgICAgIHBvd2VyLT5zdGF0ZXNbaSArIDFdLnRhcmdldF9yZXNpZGVuY3kgPSBjeFtpXS5s YXRlbmN5ICogbGF0ZW5jeV9mYWN0b3I7CisgICAgfQorCisgICAgaWYgKCBpICkKKyAgICB7Cisg ICAgICAgIHBvd2VyLT5jb3VudCA9IGkgKyAxOworICAgICAgICBwb3dlci0+c2FmZV9zdGF0ZSA9 ICZwb3dlci0+c3RhdGVzW2ldOworCisgICAgICAgIGlmICggIXZlbmRvcl9vdmVycmlkZSApCisg ICAgICAgIHsKKyAgICAgICAgICAgIGlmICggIWJvb3RfY3B1X2hhcyhYODZfRkVBVFVSRV9BUkFU KSApCisgICAgICAgICAgICAgICAgaHBldF9icm9hZGNhc3RfaW5pdCgpOworCisgICAgICAgICAg ICBpZiAoICFsYXBpY190aW1lcl9pbml0KCkgKQorICAgICAgICAgICAgeworICAgICAgICAgICAg ICAgIHZlbmRvcl9vdmVycmlkZSA9IC0xOworICAgICAgICAgICAgICAgIGNwdWlkbGVfaW5pdF9j cHUocG93ZXItPmNwdSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQor CisgICAgICAgICAgICBpZiAoICFwbV9pZGxlX3NhdmUgKQorICAgICAgICAgICAgeworICAgICAg ICAgICAgICAgIHBtX2lkbGVfc2F2ZSA9IHBtX2lkbGU7CisgICAgICAgICAgICAgICAgcG1faWRs ZSA9IGFjcGlfcHJvY2Vzc29yX2lkbGU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGRl YWRfaWRsZSA9IGFjcGlfZGVhZF9pZGxlOworCisgICAgICAgICAgICB2ZW5kb3Jfb3ZlcnJpZGUg PSAxOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UKKyAgICAgICAgdmVuZG9yX292ZXJyaWRl ID0gLTE7Cit9CisKIHVpbnQzMl90IHBtc3RhdF9nZXRfY3hfbnIodWludDMyX3QgY3B1aWQpCiB7 CiAgICAgcmV0dXJuIHByb2Nlc3Nvcl9wb3dlcnNbY3B1aWRdID8gcHJvY2Vzc29yX3Bvd2Vyc1tj cHVpZF0tPmNvdW50IDogMDsKQEAgLTE0MjksOCArMTUyNiw4IEBAIHN0YXRpYyBpbnQgY3B1X2Nh bGxiYWNrKAogICAgIGludCByYyA9IDA7CiAKICAgICAvKgotICAgICAqIE9ubHkgaG9vayBvbiBD UFVfVVBfUFJFUEFSRSBiZWNhdXNlIGEgZGVhZCBjcHUgbWF5IHV0aWxpemUgdGhlIGluZm8KLSAg ICAgKiB0byBlbnRlciBkZWVwIEMtc3RhdGUuCisgICAgICogT25seSBob29rIG9uIENQVV9VUF9Q UkVQQVJFIC8gQ1BVX09OTElORSBiZWNhdXNlIGEgZGVhZCBjcHUgbWF5IHV0aWxpemUKKyAgICAg KiB0aGUgaW5mbyB0byBlbnRlciBkZWVwIEMtc3RhdGUuCiAgICAgICovCiAgICAgc3dpdGNoICgg YWN0aW9uICkKICAgICB7CkBAIC0xNDM5LDYgKzE1MzYsMTIgQEAgc3RhdGljIGludCBjcHVfY2Fs bGJhY2soCiAgICAgICAgIGlmICggIXJjICYmIGNwdWlkbGVfY3VycmVudF9nb3Zlcm5vci0+ZW5h YmxlICkKICAgICAgICAgICAgIHJjID0gY3B1aWRsZV9jdXJyZW50X2dvdmVybm9yLT5lbmFibGUo cHJvY2Vzc29yX3Bvd2Vyc1tjcHVdKTsKICAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIENQVV9P TkxJTkU6CisgICAgICAgIGlmICggYm9vdF9jcHVfZGF0YS54ODZfdmVuZG9yID09IFg4Nl9WRU5E T1JfQU1EICYmCisgICAgICAgICAgICAgcHJvY2Vzc29yX3Bvd2Vyc1tjcHVdICkKKyAgICAgICAg ICAgIGFtZF9jcHVpZGxlX2luaXQocHJvY2Vzc29yX3Bvd2Vyc1tjcHVdKTsKKyAgICAgICAgYnJl YWs7CiAgICAgfQogCiAgICAgcmV0dXJuICFyYyA/IE5PVElGWV9ET05FIDogbm90aWZpZXJfZnJv bV9lcnJubyhyYyk7CgoKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0 Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8veGVuLWRl dmVs