From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dario Faggioli Subject: [PATCH 16/24] xen: sched: factor affinity helpers out of sched_credit.c Date: Wed, 17 Aug 2016 19:19:25 +0200 Message-ID: <147145436577.25877.13915037049197823235.stgit@Solace.fritz.box> References: <147145358844.25877.7490417583264534196.stgit@Solace.fritz.box> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ba4Uz-0000iS-UB for xen-devel@lists.xenproject.org; Wed, 17 Aug 2016 17:19:30 +0000 Received: by mail-wm0-f68.google.com with SMTP id i138so26184099wmf.3 for ; Wed, 17 Aug 2016 10:19:28 -0700 (PDT) In-Reply-To: <147145358844.25877.7490417583264534196.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: Anshul Makkar , "Justin T. Weaver" , George Dunlap List-Id: xen-devel@lists.xenproject.org bWFrZSBpdCBwb3NzaWJsZSB0byB1c2UgdGhlIHZhcmlvdXMgaGVscGVycyBmcm9tIG90aGVyCnNj aGVkdWxlcnMsIGUuZy4sIGZvciBpbXBsZW1lbnRpbmcgc29mdCBhZmZpbml0eSB3aXRoaW4KdGhl bS4KClNpbmNlIHdlIGFyZSB0b3VjaGluZyB0aGUgY29kZSwgYWxzbyBtYWtlIGl0IHN0YXJ0IHVz aW5nCnZhcmlhYmxlcyBjYWxsZWQgdiBmb3Igc3RydWN0X3ZjcHUqLCBhcyBpdCBpcyBwcmVmZXJy YWJsZS4KCk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkLgoKU2lnbmVkLW9mZi1ieTogRGFy aW8gRmFnZ2lvbGkgPGRhcmlvLmZhZ2dpb2xpQGNpdHJpeC5jb20+ClNpZ25lZC1vZmYtYnk6IEp1 c3RpbiBULiBXZWF2ZXIgPGp0d2VhdmVyQGhhd2FpaS5lZHU+Ci0tLQpDYzogR2VvcmdlIER1bmxh cCA8Z2VvcmdlLmR1bmxhcEBjaXRyaXguY29tPgpDYzogQW5zaHVsIE1ha2thciA8YW5zaHVsLm1h a2thckBjaXRyaXguY29tPgotLS0KIHhlbi9jb21tb24vc2NoZWRfY3JlZGl0LmMgIHwgICA5OCAr KysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogeGVuL2luY2x1ZGUv eGVuL3NjaGVkLWlmLmggfCAgIDY1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiAyIGZp bGVzIGNoYW5nZWQsIDgwIGluc2VydGlvbnMoKyksIDgzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp dCBhL3hlbi9jb21tb24vc2NoZWRfY3JlZGl0LmMgYi94ZW4vY29tbW9uL3NjaGVkX2NyZWRpdC5j CmluZGV4IDE0YjIwN2QuLjVkNWJiYTkgMTAwNjQ0Ci0tLSBhL3hlbi9jb21tb24vc2NoZWRfY3Jl ZGl0LmMKKysrIGIveGVuL2NvbW1vbi9zY2hlZF9jcmVkaXQuYwpAQCAtMTM3LDI3ICsxMzcsNiBA QAogI2RlZmluZSBUUkNfQ1NDSEVEX1NDSEVEVUxFICAgICAgVFJDX1NDSEVEX0NMQVNTX0VWVChD U0NIRUQsIDkpCiAjZGVmaW5lIFRSQ19DU0NIRURfUkFURUxJTUlUICAgICBUUkNfU0NIRURfQ0xB U1NfRVZUKENTQ0hFRCwgMTApCiAKLQotLyoKLSAqIEhhcmQgYW5kIHNvZnQgYWZmaW5pdHkgbG9h ZCBiYWxhbmNpbmcuCi0gKgotICogSWRlYSBpcyBlYWNoIHZjcHUgaGFzIHNvbWUgcGNwdXMgdGhh dCBpdCBwcmVmZXJzLCBzb21lIHRoYXQgaXQgZG9lcyBub3QKLSAqIHByZWZlciBidXQgaXMgT0sg d2l0aCwgYW5kIHNvbWUgdGhhdCBpdCBjYW5ub3QgcnVuIG9uIGF0IGFsbC4gVGhlIGZpcnN0Ci0g KiBzZXQgb2YgcGNwdXMgYXJlIHRoZSBvbmVzIHRoYXQgYXJlIGJvdGggaW4gdGhlIHNvZnQgYWZm aW5pdHkgKmFuZCogaW4gdGhlCi0gKiBoYXJkIGFmZmluaXR5OyB0aGUgc2Vjb25kIHNldCBvZiBw Y3B1cyBhcmUgdGhlIG9uZXMgdGhhdCBhcmUgaW4gdGhlIGhhcmQKLSAqIGFmZmluaXR5IGJ1dCAq bm90KiBpbiB0aGUgc29mdCBhZmZpbml0eTsgdGhlIHRoaXJkIHNldCBvZiBwY3B1cyBhcmUgdGhl Ci0gKiBvbmVzIHRoYXQgYXJlIG5vdCBpbiB0aGUgaGFyZCBhZmZpbml0eS4KLSAqCi0gKiBXZSBp bXBsZW1lbnQgYSB0d28gc3RlcCBiYWxhbmNpbmcgbG9naWMuIEJhc2ljYWxseSwgZXZlcnkgdGlt ZSB0aGVyZSBpcwotICogdGhlIG5lZWQgdG8gZGVjaWRlIHdoZXJlIHRvIHJ1biBhIHZjcHUsIHdl IGZpcnN0IGNoZWNrIHRoZSBzb2Z0IGFmZmluaXR5Ci0gKiAod2VsbCwgYWN0dWFsbHksIHRoZSAm JiBiZXR3ZWVuIHNvZnQgYW5kIGhhcmQgYWZmaW5pdHkpLCB0byBzZWUgaWYgd2UgY2FuCi0gKiBz ZW5kIGl0IHdoZXJlIGl0IHByZWZlcnMgdG8gKGFuZCBjYW4pIHJ1biBvbi4gSG93ZXZlciwgaWYg dGhlIGZpcnN0IHN0ZXAKLSAqIGRvZXMgbm90IGZpbmQgYW55IHN1aXRhYmxlIGFuZCBmcmVlIHBj cHUsIHdlIGZhbGwgYmFjayBjaGVja2luZyB0aGUgaGFyZAotICogYWZmaW5pdHkuCi0gKi8KLSNk ZWZpbmUgQ1NDSEVEX0JBTEFOQ0VfU09GVF9BRkZJTklUWSAgICAwCi0jZGVmaW5lIENTQ0hFRF9C QUxBTkNFX0hBUkRfQUZGSU5JVFkgICAgMQotCiAvKgogICogQm9vdCBwYXJhbWV0ZXJzCiAgKi8K QEAgLTI4Nyw1MyArMjY2LDYgQEAgX19ydW5xX3JlbW92ZShzdHJ1Y3QgY3NjaGVkX3ZjcHUgKnN2 YykKICAgICBsaXN0X2RlbF9pbml0KCZzdmMtPnJ1bnFfZWxlbSk7CiB9CiAKLQotI2RlZmluZSBm b3JfZWFjaF9jc2NoZWRfYmFsYW5jZV9zdGVwKHN0ZXApIFwKLSAgICBmb3IgKCAoc3RlcCkgPSAw OyAoc3RlcCkgPD0gQ1NDSEVEX0JBTEFOQ0VfSEFSRF9BRkZJTklUWTsgKHN0ZXApKysgKQotCi0K LS8qCi0gKiBIYXJkIGFmZmluaXR5IGJhbGFuY2luZyBpcyBhbHdheXMgbmVjZXNzYXJ5IGFuZCBt dXN0IG5ldmVyIGJlIHNraXBwZWQuCi0gKiBCdXQgc29mdCBhZmZpbml0eSBuZWVkIG9ubHkgYmUg Y29uc2lkZXJlZCB3aGVuIGl0IGhhcyBhIGZ1bmN0aW9uYWxseQotICogZGlmZmVyZW50IGVmZmVj dCB0aGFuIG90aGVyIGNvbnN0cmFpbnRzIChzdWNoIGFzIGhhcmQgYWZmaW5pdHksIGNwdXMKLSAq IG9ubGluZSwgb3IgY3B1cG9vbHMpLgotICoKLSAqIFNvZnQgYWZmaW5pdHkgb25seSBuZWVkcyB0 byBiZSBjb25zaWRlcmVkIGlmOgotICogKiBUaGUgY3B1cyBpbiB0aGUgY3B1cG9vbCBhcmUgbm90 IGEgc3Vic2V0IG9mIHNvZnQgYWZmaW5pdHkKLSAqICogVGhlIGhhcmQgYWZmaW5pdHkgaXMgbm90 IGEgc3Vic2V0IG9mIHNvZnQgYWZmaW5pdHkKLSAqICogVGhlcmUgaXMgYW4gb3ZlcmxhcCBiZXR3 ZWVuIHRoZSBzb2Z0IGFmZmluaXR5IGFuZCB0aGUgbWFzayB3aGljaCBpcwotICogICBjdXJyZW50 bHkgYmVpbmcgY29uc2lkZXJlZC4KLSAqLwotc3RhdGljIGlubGluZSBpbnQgX192Y3B1X2hhc19z b2Z0X2FmZmluaXR5KGNvbnN0IHN0cnVjdCB2Y3B1ICp2YywKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjcHVtYXNrX3QgKm1hc2spCi17Ci0gICAgcmV0 dXJuICFjcHVtYXNrX3N1YnNldChjcHVwb29sX2RvbWFpbl9jcHVtYXNrKHZjLT5kb21haW4pLAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgdmMtPmNwdV9zb2Z0X2FmZmluaXR5KSAmJgotICAg ICAgICAgICAhY3B1bWFza19zdWJzZXQodmMtPmNwdV9oYXJkX2FmZmluaXR5LCB2Yy0+Y3B1X3Nv ZnRfYWZmaW5pdHkpICYmCi0gICAgICAgICAgIGNwdW1hc2tfaW50ZXJzZWN0cyh2Yy0+Y3B1X3Nv ZnRfYWZmaW5pdHksIG1hc2spOwotfQotCi0vKgotICogRWFjaCBjc2NoZWQtYmFsYW5jZSBzdGVw IHVzZXMgaXRzIG93biBjcHVtYXNrLiBUaGlzIGZ1bmN0aW9uIGRldGVybWluZXMKLSAqIHdoaWNo IG9uZSAoZ2l2ZW4gdGhlIHN0ZXApIGFuZCBjb3BpZXMgaXQgaW4gbWFzay4gRm9yIHRoZSBzb2Z0 IGFmZmluaXR5Ci0gKiBiYWxhbmNpbmcgc3RlcCwgdGhlIHBjcHVzIHRoYXQgYXJlIG5vdCBwYXJ0 IG9mIHZjJ3MgaGFyZCBhZmZpbml0eSBhcmUKLSAqIGZpbHRlcmVkIG91dCBmcm9tIHRoZSByZXN1 bHQsIHRvIGF2b2lkIHJ1bm5pbmcgYSB2Y3B1IHdoZXJlIGl0IHdvdWxkCi0gKiBsaWtlLCBidXQg aXMgbm90IGFsbG93ZWQgdG8hCi0gKi8KLXN0YXRpYyB2b2lkCi1jc2NoZWRfYmFsYW5jZV9jcHVt YXNrKGNvbnN0IHN0cnVjdCB2Y3B1ICp2YywgaW50IHN0ZXAsIGNwdW1hc2tfdCAqbWFzaykKLXsK LSAgICBpZiAoIHN0ZXAgPT0gQ1NDSEVEX0JBTEFOQ0VfU09GVF9BRkZJTklUWSApCi0gICAgewot ICAgICAgICBjcHVtYXNrX2FuZChtYXNrLCB2Yy0+Y3B1X3NvZnRfYWZmaW5pdHksIHZjLT5jcHVf aGFyZF9hZmZpbml0eSk7Ci0KLSAgICAgICAgaWYgKCB1bmxpa2VseShjcHVtYXNrX2VtcHR5KG1h c2spKSApCi0gICAgICAgICAgICBjcHVtYXNrX2NvcHkobWFzaywgdmMtPmNwdV9oYXJkX2FmZmlu aXR5KTsKLSAgICB9Ci0gICAgZWxzZSAvKiBzdGVwID09IENTQ0hFRF9CQUxBTkNFX0hBUkRfQUZG SU5JVFkgKi8KLSAgICAgICAgY3B1bWFza19jb3B5KG1hc2ssIHZjLT5jcHVfaGFyZF9hZmZpbml0 eSk7Ci19Ci0KIHN0YXRpYyB2b2lkIGJ1cm5fY3JlZGl0cyhzdHJ1Y3QgY3NjaGVkX3ZjcHUgKnN2 Yywgc190aW1lX3Qgbm93KQogewogICAgIHNfdGltZV90IGRlbHRhOwpAQCAtMzk4LDE4ICszMzAs MTggQEAgc3RhdGljIGlubGluZSB2b2lkIF9fcnVucV90aWNrbGUoc3RydWN0IGNzY2hlZF92Y3B1 ICpuZXcpCiAgICAgICAgICAqIFNvZnQgYW5kIGhhcmQgYWZmaW5pdHkgYmFsYW5jaW5nIGxvb3Au IEZvciB2Y3B1cyB3aXRob3V0CiAgICAgICAgICAqIGEgdXNlZnVsIHNvZnQgYWZmaW5pdHksIGNv bnNpZGVyIGhhcmQgYWZmaW5pdHkgb25seS4KICAgICAgICAgICovCi0gICAgICAgIGZvcl9lYWNo X2NzY2hlZF9iYWxhbmNlX3N0ZXAoIGJhbGFuY2Vfc3RlcCApCisgICAgICAgIGZvcl9lYWNoX2Fm ZmluaXR5X2JhbGFuY2Vfc3RlcCggYmFsYW5jZV9zdGVwICkKICAgICAgICAgewogICAgICAgICAg ICAgaW50IG5ld19pZGxlcnNfZW1wdHk7CiAKLSAgICAgICAgICAgIGlmICggYmFsYW5jZV9zdGVw ID09IENTQ0hFRF9CQUxBTkNFX1NPRlRfQUZGSU5JVFkKLSAgICAgICAgICAgICAgICAgJiYgIV9f dmNwdV9oYXNfc29mdF9hZmZpbml0eShuZXctPnZjcHUsCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgbmV3LT52Y3B1LT5jcHVfaGFyZF9hZmZpbml0eSkgKQor ICAgICAgICAgICAgaWYgKCBiYWxhbmNlX3N0ZXAgPT0gQkFMQU5DRV9TT0ZUX0FGRklOSVRZCisg ICAgICAgICAgICAgICAgICYmICFoYXNfc29mdF9hZmZpbml0eShuZXctPnZjcHUsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXctPnZjcHUtPmNwdV9oYXJkX2FmZmlu aXR5KSApCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgICAgIC8qIEFyZSB0 aGVyZSBpZGxlcnMgc3VpdGFibGUgZm9yIG5ldyAoZm9yIHRoaXMgYmFsYW5jZSBzdGVwKT8gKi8K LSAgICAgICAgICAgIGNzY2hlZF9iYWxhbmNlX2NwdW1hc2sobmV3LT52Y3B1LCBiYWxhbmNlX3N0 ZXAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNwdW1hc2tfc2NyYXRjaF9j cHUoY3B1KSk7CisgICAgICAgICAgICBhZmZpbml0eV9iYWxhbmNlX2NwdW1hc2sobmV3LT52Y3B1 LCBiYWxhbmNlX3N0ZXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcHVt YXNrX3NjcmF0Y2hfY3B1KGNwdSkpOwogICAgICAgICAgICAgY3B1bWFza19hbmQoY3B1bWFza19z Y3JhdGNoX2NwdShjcHUpLAogICAgICAgICAgICAgICAgICAgICAgICAgY3B1bWFza19zY3JhdGNo X2NwdShjcHUpLCAmaWRsZV9tYXNrKTsKICAgICAgICAgICAgIG5ld19pZGxlcnNfZW1wdHkgPSBj cHVtYXNrX2VtcHR5KGNwdW1hc2tfc2NyYXRjaF9jcHUoY3B1KSk7CkBAIC00MjAsNyArMzUyLDcg QEAgc3RhdGljIGlubGluZSB2b2lkIF9fcnVucV90aWNrbGUoc3RydWN0IGNzY2hlZF92Y3B1ICpu ZXcpCiAgICAgICAgICAgICAgKiBoYXJkIGFmZmluaXR5IGFzIHdlbGwsIGJlZm9yZSB0YWtpbmcg ZmluYWwgZGVjaXNpb25zLgogICAgICAgICAgICAgICovCiAgICAgICAgICAgICBpZiAoIG5ld19p ZGxlcnNfZW1wdHkKLSAgICAgICAgICAgICAgICAgJiYgYmFsYW5jZV9zdGVwID09IENTQ0hFRF9C QUxBTkNFX1NPRlRfQUZGSU5JVFkgKQorICAgICAgICAgICAgICAgICAmJiBiYWxhbmNlX3N0ZXAg PT0gQkFMQU5DRV9TT0ZUX0FGRklOSVRZICkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAog ICAgICAgICAgICAgLyoKQEAgLTcyMSw3ICs2NTMsNyBAQCBfY3NjaGVkX2NwdV9waWNrKGNvbnN0 IHN0cnVjdCBzY2hlZHVsZXIgKm9wcywgc3RydWN0IHZjcHUgKnZjLCBib29sX3QgY29tbWl0KQog ICAgIG9ubGluZSA9IGNwdXBvb2xfZG9tYWluX2NwdW1hc2sodmMtPmRvbWFpbik7CiAgICAgY3B1 bWFza19hbmQoJmNwdXMsIHZjLT5jcHVfaGFyZF9hZmZpbml0eSwgb25saW5lKTsKIAotICAgIGZv cl9lYWNoX2NzY2hlZF9iYWxhbmNlX3N0ZXAoIGJhbGFuY2Vfc3RlcCApCisgICAgZm9yX2VhY2hf YWZmaW5pdHlfYmFsYW5jZV9zdGVwKCBiYWxhbmNlX3N0ZXAgKQogICAgIHsKICAgICAgICAgLyoK ICAgICAgICAgICogV2Ugd2FudCB0byBwaWNrIHVwIGEgcGNwdSBhbW9uZyB0aGUgb25lcyB0aGF0 IGFyZSBvbmxpbmUgYW5kCkBAIC03NDEsMTIgKzY3MywxMiBAQCBfY3NjaGVkX2NwdV9waWNrKGNv bnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9wcywgc3RydWN0IHZjcHUgKnZjLCBib29sX3QgY29tbWl0 KQogICAgICAgICAgKiBjcHVzIGFuZCwgaWYgdGhlIHJlc3VsdCBpcyBlbXB0eSwgd2UganVzdCBz a2lwIHRoZSBzb2Z0IGFmZmluaXR5CiAgICAgICAgICAqIGJhbGFuY2luZyBzdGVwIGFsbCB0b2dl dGhlci4KICAgICAgICAgICovCi0gICAgICAgIGlmICggYmFsYW5jZV9zdGVwID09IENTQ0hFRF9C QUxBTkNFX1NPRlRfQUZGSU5JVFkKLSAgICAgICAgICAgICAmJiAhX192Y3B1X2hhc19zb2Z0X2Fm ZmluaXR5KHZjLCAmY3B1cykgKQorICAgICAgICBpZiAoIGJhbGFuY2Vfc3RlcCA9PSBCQUxBTkNF X1NPRlRfQUZGSU5JVFkKKyAgICAgICAgICAgICAmJiAhaGFzX3NvZnRfYWZmaW5pdHkodmMsICZj cHVzKSApCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAvKiBQaWNrIGFuIG9ubGlu ZSBDUFUgZnJvbSB0aGUgcHJvcGVyIGFmZmluaXR5IG1hc2sgKi8KLSAgICAgICAgY3NjaGVkX2Jh bGFuY2VfY3B1bWFzayh2YywgYmFsYW5jZV9zdGVwLCAmY3B1cyk7CisgICAgICAgIGFmZmluaXR5 X2JhbGFuY2VfY3B1bWFzayh2YywgYmFsYW5jZV9zdGVwLCAmY3B1cyk7CiAgICAgICAgIGNwdW1h c2tfYW5kKCZjcHVzLCAmY3B1cywgb25saW5lKTsKIAogICAgICAgICAvKiBJZiBwcmVzZW50LCBw cmVmZXIgdmMncyBjdXJyZW50IHByb2Nlc3NvciAqLwpAQCAtMTYwNSwxMSArMTUzNywxMSBAQCBj c2NoZWRfcnVucV9zdGVhbChpbnQgcGVlcl9jcHUsIGludCBjcHUsIGludCBwcmksIGludCBiYWxh bmNlX3N0ZXApCiAgICAgICAgICAgICAgKiB2Q1BVcyB3aXRoIHVzZWZ1bCBzb2Z0IGFmZmluaXRp ZXMgaW4gc29tZSBzb3J0IG9mIGJpdG1hcAogICAgICAgICAgICAgICogb3IgY291bnRlci4KICAg ICAgICAgICAgICAqLwotICAgICAgICAgICAgaWYgKCBiYWxhbmNlX3N0ZXAgPT0gQ1NDSEVEX0JB TEFOQ0VfU09GVF9BRkZJTklUWQotICAgICAgICAgICAgICAgICAmJiAhX192Y3B1X2hhc19zb2Z0 X2FmZmluaXR5KHZjLCB2Yy0+Y3B1X2hhcmRfYWZmaW5pdHkpICkKKyAgICAgICAgICAgIGlmICgg YmFsYW5jZV9zdGVwID09IEJBTEFOQ0VfU09GVF9BRkZJTklUWQorICAgICAgICAgICAgICAgICAm JiAhaGFzX3NvZnRfYWZmaW5pdHkodmMsIHZjLT5jcHVfaGFyZF9hZmZpbml0eSkgKQogICAgICAg ICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAgICBjc2NoZWRfYmFsYW5jZV9jcHVtYXNr KHZjLCBiYWxhbmNlX3N0ZXAsIGNwdW1hc2tfc2NyYXRjaF9jcHUoY3B1KSk7CisgICAgICAgICAg ICBhZmZpbml0eV9iYWxhbmNlX2NwdW1hc2sodmMsIGJhbGFuY2Vfc3RlcCwgY3B1bWFza19zY3Jh dGNoX2NwdShjcHUpKTsKICAgICAgICAgICAgIGlmICggX19jc2NoZWRfdmNwdV9pc19taWdyYXRl YWJsZSh2YywgY3B1LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNwdW1hc2tfc2NyYXRjaF9jcHUoY3B1KSkgKQogICAgICAgICAgICAgewpAQCAtMTY2NSw3 ICsxNTk3LDcgQEAgY3NjaGVkX2xvYWRfYmFsYW5jZShzdHJ1Y3QgY3NjaGVkX3ByaXZhdGUgKnBy diwgaW50IGNwdSwKICAgICAgKiAgMS4gYW55ICJzb2Z0LWFmZmluZSB3b3JrIiB0byBzdGVhbCBm aXJzdCwKICAgICAgKiAgMi4gaWYgbm90IGZpbmRpbmcgYW55dGhpbmcsIGFueSAiaGFyZC1hZmZp bmUgd29yayIgdG8gc3RlYWwuCiAgICAgICovCi0gICAgZm9yX2VhY2hfY3NjaGVkX2JhbGFuY2Vf c3RlcCggYnN0ZXAgKQorICAgIGZvcl9lYWNoX2FmZmluaXR5X2JhbGFuY2Vfc3RlcCggYnN0ZXAg KQogICAgIHsKICAgICAgICAgLyoKICAgICAgICAgICogV2UgcGVlayBhdCB0aGUgbm9uLWlkbGlu ZyBDUFVzIGluIGEgbm9kZS13aXNlIGZhc2hpb24uIEluIGZhY3QsCmRpZmYgLS1naXQgYS94ZW4v aW5jbHVkZS94ZW4vc2NoZWQtaWYuaCBiL3hlbi9pbmNsdWRlL3hlbi9zY2hlZC1pZi5oCmluZGV4 IGJjMGU3OTQuLjQ5NmVkODAgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL3hlbi9zY2hlZC1pZi5o CisrKyBiL3hlbi9pbmNsdWRlL3hlbi9zY2hlZC1pZi5oCkBAIC0yMDEsNCArMjAxLDY5IEBAIHN0 YXRpYyBpbmxpbmUgY3B1bWFza190KiBjcHVwb29sX2RvbWFpbl9jcHVtYXNrKHN0cnVjdCBkb21h aW4gKmQpCiAgICAgcmV0dXJuIGQtPmNwdXBvb2wtPmNwdV92YWxpZDsKIH0KIAorLyoKKyAqIEhh cmQgYW5kIHNvZnQgYWZmaW5pdHkgbG9hZCBiYWxhbmNpbmcuCisgKgorICogSWRlYSBpcyBlYWNo IHZjcHUgaGFzIHNvbWUgcGNwdXMgdGhhdCBpdCBwcmVmZXJzLCBzb21lIHRoYXQgaXQgZG9lcyBu b3QKKyAqIHByZWZlciBidXQgaXMgT0sgd2l0aCwgYW5kIHNvbWUgdGhhdCBpdCBjYW5ub3QgcnVu IG9uIGF0IGFsbC4gVGhlIGZpcnN0CisgKiBzZXQgb2YgcGNwdXMgYXJlIHRoZSBvbmVzIHRoYXQg YXJlIGJvdGggaW4gdGhlIHNvZnQgYWZmaW5pdHkgKmFuZCogaW4gdGhlCisgKiBoYXJkIGFmZmlu aXR5OyB0aGUgc2Vjb25kIHNldCBvZiBwY3B1cyBhcmUgdGhlIG9uZXMgdGhhdCBhcmUgaW4gdGhl IGhhcmQKKyAqIGFmZmluaXR5IGJ1dCAqbm90KiBpbiB0aGUgc29mdCBhZmZpbml0eTsgdGhlIHRo aXJkIHNldCBvZiBwY3B1cyBhcmUgdGhlCisgKiBvbmVzIHRoYXQgYXJlIG5vdCBpbiB0aGUgaGFy ZCBhZmZpbml0eS4KKyAqCisgKiBXZSBpbXBsZW1lbnQgYSB0d28gc3RlcCBiYWxhbmNpbmcgbG9n aWMuIEJhc2ljYWxseSwgZXZlcnkgdGltZSB0aGVyZSBpcworICogdGhlIG5lZWQgdG8gZGVjaWRl IHdoZXJlIHRvIHJ1biBhIHZjcHUsIHdlIGZpcnN0IGNoZWNrIHRoZSBzb2Z0IGFmZmluaXR5Cisg KiAod2VsbCwgYWN0dWFsbHksIHRoZSAmJiBiZXR3ZWVuIHNvZnQgYW5kIGhhcmQgYWZmaW5pdHkp LCB0byBzZWUgaWYgd2UgY2FuCisgKiBzZW5kIGl0IHdoZXJlIGl0IHByZWZlcnMgdG8gKGFuZCBj YW4pIHJ1biBvbi4gSG93ZXZlciwgaWYgdGhlIGZpcnN0IHN0ZXAKKyAqIGRvZXMgbm90IGZpbmQg YW55IHN1aXRhYmxlIGFuZCBmcmVlIHBjcHUsIHdlIGZhbGwgYmFjayBjaGVja2luZyB0aGUgaGFy ZAorICogYWZmaW5pdHkuCisgKi8KKyNkZWZpbmUgQkFMQU5DRV9TT0ZUX0FGRklOSVRZICAgIDAK KyNkZWZpbmUgQkFMQU5DRV9IQVJEX0FGRklOSVRZICAgIDEKKworI2RlZmluZSBmb3JfZWFjaF9h ZmZpbml0eV9iYWxhbmNlX3N0ZXAoc3RlcCkgXAorICAgIGZvciAoIChzdGVwKSA9IDA7IChzdGVw KSA8PSBCQUxBTkNFX0hBUkRfQUZGSU5JVFk7IChzdGVwKSsrICkKKworLyoKKyAqIEhhcmQgYWZm aW5pdHkgYmFsYW5jaW5nIGlzIGFsd2F5cyBuZWNlc3NhcnkgYW5kIG11c3QgbmV2ZXIgYmUgc2tp cHBlZC4KKyAqIEJ1dCBzb2Z0IGFmZmluaXR5IG5lZWQgb25seSBiZSBjb25zaWRlcmVkIHdoZW4g aXQgaGFzIGEgZnVuY3Rpb25hbGx5CisgKiBkaWZmZXJlbnQgZWZmZWN0IHRoYW4gb3RoZXIgY29u c3RyYWludHMgKHN1Y2ggYXMgaGFyZCBhZmZpbml0eSwgY3B1cworICogb25saW5lLCBvciBjcHVw b29scykuCisgKgorICogU29mdCBhZmZpbml0eSBvbmx5IG5lZWRzIHRvIGJlIGNvbnNpZGVyZWQg aWY6CisgKiAqIFRoZSBjcHVzIGluIHRoZSBjcHVwb29sIGFyZSBub3QgYSBzdWJzZXQgb2Ygc29m dCBhZmZpbml0eQorICogKiBUaGUgaGFyZCBhZmZpbml0eSBpcyBub3QgYSBzdWJzZXQgb2Ygc29m dCBhZmZpbml0eQorICogKiBUaGVyZSBpcyBhbiBvdmVybGFwIGJldHdlZW4gdGhlIHNvZnQgYWZm aW5pdHkgYW5kIHRoZSBtYXNrIHdoaWNoIGlzCisgKiAgIGN1cnJlbnRseSBiZWluZyBjb25zaWRl cmVkLgorICovCitzdGF0aWMgaW5saW5lIGludCBoYXNfc29mdF9hZmZpbml0eShjb25zdCBzdHJ1 Y3QgdmNwdSAqdiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNw dW1hc2tfdCAqbWFzaykKK3sKKyAgICByZXR1cm4gIWNwdW1hc2tfc3Vic2V0KGNwdXBvb2xfZG9t YWluX2NwdW1hc2sodi0+ZG9tYWluKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHYtPmNw dV9zb2Z0X2FmZmluaXR5KSAmJgorICAgICAgICAgICAhY3B1bWFza19zdWJzZXQodi0+Y3B1X2hh cmRfYWZmaW5pdHksIHYtPmNwdV9zb2Z0X2FmZmluaXR5KSAmJgorICAgICAgICAgICBjcHVtYXNr X2ludGVyc2VjdHModi0+Y3B1X3NvZnRfYWZmaW5pdHksIG1hc2spOworfQorCisvKgorICogVGhp cyBmdW5jdGlvbiBkZXRlcm1pbmVzIGNvcGllcyBpbiBtYXNrIHRoZSBjcHVtYXNrIHRoYXQgc2hv dWxkIGJlCisgKiB1c2VkIGZvciBhIHBhcnRpY3VsYXIgYWZmaW5pdHkgYmFsYW5jaW5nIHN0ZXAu IEZvciB0aGUgc29mdCBhZmZpbml0eQorICogb25lLCB0aGUgcGNwdXMgdGhhdCBhcmUgbm90IHBh cnQgb2YgdmMncyBoYXJkIGFmZmluaXR5IGFyZSBmaWx0ZXJlZAorICogb3V0IGZyb20gdGhlIHJl c3VsdCwgdG8gYXZvaWQgcnVubmluZyBhIHZjcHUgd2hlcmUgaXQgd291bGQgbGlrZSwKKyAqIGJ1 dCBpcyBub3QgYWxsb3dlZCB0byEKKyAqLworc3RhdGljIGlubGluZSB2b2lkCithZmZpbml0eV9i YWxhbmNlX2NwdW1hc2soY29uc3Qgc3RydWN0IHZjcHUgKnYsIGludCBzdGVwLCBjcHVtYXNrX3Qg Km1hc2spCit7CisgICAgaWYgKCBzdGVwID09IEJBTEFOQ0VfU09GVF9BRkZJTklUWSApCisgICAg eworICAgICAgICBjcHVtYXNrX2FuZChtYXNrLCB2LT5jcHVfc29mdF9hZmZpbml0eSwgdi0+Y3B1 X2hhcmRfYWZmaW5pdHkpOworCisgICAgICAgIGlmICggdW5saWtlbHkoY3B1bWFza19lbXB0eSht YXNrKSkgKQorICAgICAgICAgICAgY3B1bWFza19jb3B5KG1hc2ssIHYtPmNwdV9oYXJkX2FmZmlu aXR5KTsKKyAgICB9CisgICAgZWxzZSAvKiBzdGVwID09IEJBTEFOQ0VfSEFSRF9BRkZJTklUWSAq LworICAgICAgICBjcHVtYXNrX2NvcHkobWFzaywgdi0+Y3B1X2hhcmRfYWZmaW5pdHkpOworfQor CiAjZW5kaWYgLyogX19YRU5fU0NIRURfSUZfSF9fICovCgoKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2 ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==