From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.10]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D920A85947; Mon, 13 Jan 2025 02:03:10 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=198.175.65.10 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1736733793; cv=none; b=HMtOoWkHPzTwQ1t5+/pZqQuBgyIpbiqDRsqAMVcoAljNSODFcvJKpbxVMoIRk6L9q5dA/V7L5ZWneo99eyK8/0TbP6fDE9NNBiW2jRcgdxVevPGG6aM+oJ+RdgMWHKn8faN0Lqvf8+uezIzLNhhgM7z3qByEGFDO33bp4phDqok= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1736733793; c=relaxed/simple; bh=sfdBtqi6lW1iH1mBJQIYGkSw01kBDN/4/lkRXmrvHmA=; h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From: In-Reply-To:Content-Type; b=PVbxjDPOOEK9URrztsCUfk5PWhzmjd5Cv/cP3YRGiKKWUHjYEtwkUdpoJuHboOMegcdMl76KmP66VelnBy/wuJRa3eZ+yAeSAHebU7wFeWeRp+VVasMXaskQA0cnShZ5Xd580zYVxQDKLYvqzv+nknoP2mtTWPaIYE0jXWPIEh8= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com; spf=none smtp.mailfrom=linux.intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=TLNatuf+; arc=none smtp.client-ip=198.175.65.10 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="TLNatuf+" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1736733791; x=1768269791; h=message-id:date:mime-version:subject:to:cc:references: from:in-reply-to:content-transfer-encoding; bh=sfdBtqi6lW1iH1mBJQIYGkSw01kBDN/4/lkRXmrvHmA=; b=TLNatuf+ZhgtR7aZyuJ2SqOeU+uagBpDL9Yom/TgksPlxNf/eU2qJywM SVqxX4yC8BWW/ZnOkojqNgk8ZFlSVz2cOLgoPg4y9rRAZ1KbVLa9VUSx2 /J/4YkpNby4xC5OdSzQg3WgUTpRirCtd5MvL4RluG4d3aXQ0W630KidZW 1CRKz9K8/EGdhqFoW0UcgPH1WW91MenWF+kiF5m2R8MIWVWV1nnL2vz/s wx1ixaKbAQET5/08JOGKgxlHDPP42ZbayT+nQBu9A9OpJdL7vPWH1f6CP gZLTI5ruDuytYyd0B7f+oX+DSvEc1709KE9k3h7wkiMqB42TBnzjMIoHL g==; X-CSE-ConnectionGUID: FdhQIpvbTOWXz/HaSa1Stw== X-CSE-MsgGUID: 33YiZ72DSMqWJ27XE8m5vQ== X-IronPort-AV: E=McAfee;i="6700,10204,11313"; a="54391729" X-IronPort-AV: E=Sophos;i="6.12,310,1728975600"; d="scan'208";a="54391729" Received: from fmviesa007.fm.intel.com ([10.60.135.147]) by orvoesa102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 Jan 2025 18:03:10 -0800 X-CSE-ConnectionGUID: tor/JwdrTRy7aj7CM+8CFw== X-CSE-MsgGUID: /fEgISF7RYOs+l5WqseWcg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.12,310,1728975600"; d="scan'208";a="104279066" Received: from unknown (HELO [10.238.1.62]) ([10.238.1.62]) by fmviesa007-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 Jan 2025 18:03:06 -0800 Message-ID: <8a9b761b-3ffc-4e67-8254-cf4150a997ae@linux.intel.com> Date: Mon, 13 Jan 2025 10:03:04 +0800 Precedence: bulk X-Mailing-List: kvm@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH 12/16] KVM: TDX: Inhibit APICv for TDX guest To: pbonzini@redhat.com, seanjc@google.com, kvm@vger.kernel.org Cc: rick.p.edgecombe@intel.com, kai.huang@intel.com, adrian.hunter@intel.com, reinette.chatre@intel.com, xiaoyao.li@intel.com, tony.lindgren@linux.intel.com, isaku.yamahata@intel.com, yan.y.zhao@intel.com, chao.gao@intel.com, linux-kernel@vger.kernel.org References: <20241209010734.3543481-1-binbin.wu@linux.intel.com> <20241209010734.3543481-13-binbin.wu@linux.intel.com> Content-Language: en-US From: Binbin Wu In-Reply-To: <20241209010734.3543481-13-binbin.wu@linux.intel.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: base64 DQpPbiAxMi85LzIwMjQgOTowNyBBTSwgQmluYmluIFd1IHdyb3RlOg0KPiBGcm9tOiBJc2Fr dSBZYW1haGF0YSA8aXNha3UueWFtYWhhdGFAaW50ZWwuY29tPg0KPg0KPiBJbmhpYml0IEFQ SUN2IGZvciBURFggZ3Vlc3QgaW4gS1ZNIHNpbmNlIFREWCBkb2Vzbid0IHN1cHBvcnQgQVBJ Q3YgYWNjZXNzZXMNCj4gZnJvbSBob3N0IFZNTS4NCj4NCj4gRm9sbG93IGhvdyBTRVYgaW5o aWJpdHMgQVBJQ3YuICBJLmUsIGRlZmluZSBhIG5ldyBpbmhpYml0IHJlYXNvbiBmb3IgVERY LCBzZXQNCj4gaXQgb24gVEQgaW5pdGlhbGl6YXRpb24sIGFuZCBhZGQgdGhlIGZsYWcgdG8g a3ZtX3g4Nl9vcHMucmVxdWlyZWRfYXBpY3ZfaW5oaWJpdHMuDQpGb3IgVERYIGd1ZXN0cywg QVBJQ3YgaXMgYWx3YXlzIGVuYWJsZWQgYnkgVERYIG1vZHVsZS4gQnV0IGluIGN1cnJlbnQg VERYIGJhc2ljIHN1cHBvcnQgcGF0Y2ggc2VyaWVzLCBURFggY29kZSBpbmhpYml0cyBBUElD diBmb3IgVERYIGd1ZXN0cyBmcm9tIHRoZSB2aWV3IG9mIEtWTS4gU3luY2VkIHdpdGggSXNh a3UsIHRoZSByZWFzb24gd2FzIHRvIHByZXZlbnQgdGhlIEFQSUN2IGFjdGl2ZSBzdGF0ZSBm cm9tIHRvZ2dsaW5nIGR1cmluZyBydW50aW1lLiBTZWFuIHJhaXNlZCB0aGUgY29uY2VybiBp biBhIFBVQ0sgc2Vzc2lvbiB0aGF0IGl0IGlzIG5vdCBjb25jZXB0IHJpZ2h0IHRvICJsaWUi IHRvIEtWTSB0aGF0IEFQSUN2IGlzIGRpc2FibGVkIHdoaWxlIGl0IGlzIGFjdHVhbGx5IGVu YWJsZWQuIEluc3RlYWQsIGl0J3MgYmV0dGVyIHRvIG1ha2UgQVBJQ3YgZW5hYmxlZCBhbmQg cHJldmVudCBpdCBmcm9tIGJlaW5nIGRpc2FibGVkIGZyb20gdGhlIHZpZXcgb2YgS1ZNLiBG b2xsb3dpbmcgaXMgdGhlIGFuYWx5c2lzIGFib3V0IHRoZSBBUElDdiBhY3RpdmUgc3RhdGUg Zm9yIFREWCB0byBraWNrIG9mZiBmdXJ0aGVyIGRpc2N1c3Npb25zLiBBUElDdiBhY3RpdmUg c3RhdGUgPT09PT09PT09PT09PT09PT09IEZyb20gdGhlIHZpZXcgb2YgS1ZNLCB3aGV0aGVy IEFQSUN2IHN0YXRlIGlzIGFjdGl2ZSBvciBub3QgaXMgZGVjaWRlZCBieTogMS4gQVBJQyBp cyBodyBlbmFibGVkIDIuIFZNIGFuZCB2Q1BVIGhhdmUgbm8gaW5oaWJpdCByZWFzb25zIHNl dC4gQVBJQyBodyBlbmFibGVkIC0tLS0tLS0tLS0tLS0tLSBBZnRlciBURFggdkNQVSBpbml0 LCBBUElDIGlzIHNldCB0byB4MkFQSUMgbW9kZS4gSG93ZXZlciwgdXNlcnNwYWNlIGNvdWxk IGRpc2FibGUgQVBJQyB2aWEgS1ZNX1NFVF9MQVBJQyBvciBLVk1fU0VUX3tTUkVHUywgU1JF R1MyfS4gLSBLVk1fU0VUX0xBUElDIEN1cnJlbnRseSwgS1ZNIGFsbG93cyB1c2Vyc3BhY2Ug dG8gDQpyZXF1ZXN0IEtWTV9TRVRfTEFQSUMgdG8gc2V0IHRoZSBzdGF0ZSBvZiBMQVBJQyBm b3IgVERYIGd1ZXN0cy4gVGhlcmUgYXJlIHR3byBvcHRpb25zOiAtIEZvcmNlIHgyQVBJQyBt b2RlIGFuZCBkZWZhdWx0IGJhc2UgYWRkcmVzcyB3aGVuIHVzZXJzcGFjZSByZXF1ZXN0IEtW TV9TRVRfTEFQSUMuIC0gU2ltcGx5IHJlamVjdCBLVk1fU0VUX0xBUElDIGZvciBURFggZ3Vl c3QgKGFwaWMtPmd1ZXN0X2FwaWNfcHJvdGVjdGVkIGlzIHRydWUpLCBzaW5jZSBtaWdyYXRp b24gaXMgbm90IHN1cHBvcnRlZCB5ZXQuIENob29zZSBvcHRpb24gMiBmb3Igc2ltcGxpY2l0 eSBmb3Igbm93LiAtIEtWTV9TRVRfe1NSRUdTLCBTUkVHUzJ9IEtWTSByZWplY3RzIHVzZXJz cGFjZSB0byBzZXQgQVBJQyBiYXNlIHdoZW4gdmNwdS0+a3ZtLT5hcmNoLmhhc19wcm90ZWN0 ZWRfc3RhdGUgYW5kIHZjcHUtPmFyY2guZ3Vlc3Rfc3RhdGVfcHJvdGVjdGVkIGFyZSBib3Ro IHNldC4gQ3VycmVudGx5IGZvciBURFgsIGt2bS0+YXJjaC5oYXNfcHJvdGVjdGVkX3N0YXRl IGlzIG5vdCBzZXQsIHNvIHVzZXJzcGFjZSBpcyBhbGxvd2VkIHRvIG1vZGlmeSBBUElDIGJh c2UuIFRoZXJlIGFyZSB0aHJlZSBvcHRpb25zOiAtIFJlamVjdCBLVk1fU0VUX3tTUkVHUywg U1JFR1MyfSB3aGVuIGVpdGhlciB2Y3B1LT5hcmNoLmd1ZXN0X3N0YXRlX3Byb3RlY3RlZCBv ciB2Y3B1LT5rdm0tPmFyY2guaGFzX3Byb3RlY3RlZF9zdGF0ZSBpcyBzZXQuIC0gQ2hlY2sg dmNwdS0+YXJjaC5ndWVzdF9zdGF0ZV9wcm90ZWN0ZWQgYmVmb3JlIGt2bV9hcGljX3NldF9i YXNlKCkgaW4gX19zZXRfc3JlZ3NfY29tbW9uKCkuIC0gU2V0IGhhc19wcm90ZWN0ZWRfc3Rh dGUgZm9yIFREWCBndWVzdHMuIENob29zZSBvcHRpb24gMywgaS5lLiB0byBzZXQgaGFzX3By b3RlY3RlZF9zdGF0ZSBmb3IgVERYIGd1ZXN0cywgYWxpZ25pbmcgd2l0aCBTRVYvU05QLiBB UElDdiBpbmhpYml0IHJlYXNvbnMgDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0gQVBJQ3YgY291 bGQgYmUgZGlzYWJsZWQgZHVlIHRvIGEgZmV3IGluaGliaXQgcmVhc29ucy4gLSBBUElDVl9J TkhJQklUX1JFQVNPTl9ESVNBQkxFRCBGb3IgVERYLCB0aGlzIGNvdWxkIGJlIHRyaWdnZXJl ZCB3aGVuIHRoZSBtb2R1bGUgcGFyYW1ldGVyIGVuYWJsZV9hcGljdiBpcyBzZXQgdG8gZmFs c2UuIGVuYWJsZV9hcGljdiBjb3VsZCBiZSBjaGVja2VkIGluIHRkeF9icmluZ3VwKCkuIERp c2FibGUgVERYIHN1cHBvcnQgaWYgIWVuYWJsZV9hcGljdi4gU28gdGhhdCBBUElDVl9JTkhJ QklUX1JFQVNPTl9ESVNBQkxFRCB3aWxsIG5vdCBiZSBzZXQgZHVyaW5nIHJ1bnRpbWUgYW5k IGFwaWMtPmFwaWN2X2FjdGl2ZSBpcyBpbml0aWFsaXplZCB0byB0cnVlLiAtIEFQSUNWX0lO SElCSVRfUkVBU09OX1BIWVNJQ0FMX0lEX0FMSUFTRUQgS1ZNIHdpbGwgcmVqZWN0IHVzZXJz cGFjZSB0byBtb2RpZnkgQVBJQyBiYXNlLCBpLmUuLCBBUElDIG1vZGUgd2lsbCBhbHdheXMg YmUgeDJBUElDIG1vZGUsIHRoZSBvbmx5IHJlYXNvbiB0aGlzIGNvdWxkIGJlIHNldCBpcyBp dCBmYWlscyB0byBhbGxvY2F0ZSBtZW1vcnkgZm9yIEtWTSBhcGljIG1hcC4gLSBBUElDVl9J TkhJQklUX1JFQVNPTl9QSVRfUkVJTkogQmFzZWQgb24gY3VycmVudCBjb2RlLCB0aGlzIGlz IHJlbGV2YW50IG9ubHkgdG8gQU1EJ3MgQVZJQywgc28gdGhpcyByZWFzb24gd2lsbCBub3Qg YmUgc2V0IGZvciBURFggZ3Vlc3RzLiBIb3dldmVyLCBLVk0gaXMgYWxzbyBub3QgYmUgYWJs ZSB0byBpbnRlcmNlcHQgRU9JIGZvciBURFggZ3Vlc3RzLiBGb3IgVERYLCBpZiBpbi1rZXJu ZWwgUElUIGlzIGVuYWJsZWQgYW5kIGluIHJlLWluamVjdCBtb2RlLCB0aGUgdXNlIG9mIFBJ VCBpbiBndWVzdCBtYXkgaGF2ZSBwcm9ibGVtLiBGb3J0dW5hdGVseSwgbW9kZXJuIE9TZXMg ZG9uJ3QgdXNlIFBJVC4gT3B0aW9uczogLSBFbmZvcmNlIGlycWNoaXAgDQpzcGxpdCBmb3Ig VERYIGd1ZXN0cywgaS5lLiBpbi1rZXJuZWwgUElUIGlzIG5vdCBzdXBwb3J0ZWQuIC0gTGVh dmUgaXQgYXMgaXQgaXMgYW5kIGV4cGVjdCBQSVQgd2lsbCBub3QgYmUgdXNlZC4gLSBSZWFz b25zIHdpbGwgbm90IGJlIHNldCBmb3IgVERYIC0gQVBJQ1ZfSU5ISUJJVF9SRUFTT05fSFlQ RVJWIFREWCBkb2Vzbid0IHN1cHBvcnQgSHlwZXJWIGd1ZXN0IHlldC4gLSBBUElDVl9JTkhJ QklUX1JFQVNPTl9BQlNFTlQgSW4ta2VybmVsIExBUElDIGlzIGNoZWNrZWQgaW4gdGR4X3Zj cHVfY3JlYXRlKCkuIC0gQVBJQ1ZfSU5ISUJJVF9SRUFTT05fQkxPQ0tJUlEgVERYIGRvZXNu J3Qgc3VwcG9ydCBLVk1fU0VUX0dVRVNUX0RFQlVHLiAtIEFQSUNWX0lOSElCSVRfUkVBU09O X0FQSUNfSURfTU9ESUZJRUQgS1ZNIHdpbGwgcmVqZWN0IHVzZXJzcGFjZSB0byBtb2RpZnkg QVBJQyBiYXNlLCBpLmUuLCBBUElDIG1vZGUgd2lsbCBhbHdheXMgYmUgeDJBUElDIG1vZGUu IC0gQVBJQ1ZfSU5ISUJJVF9SRUFTT05fQVBJQ19CQVNFX01PRElGSUVEIEtWTSB3aWxsIHJl amVjdCB1c2Vyc3BhY2UgdG8gc2V0IEFQSUMgYmFzZS4gLSBSZWFzb25zIHJlbGV2YW50IG9u bHkgdG8gQU1EJ3MgQVZJQyAtIEFQSUNWX0lOSElCSVRfUkVBU09OX05FU1RFRCwgLSBBUElD Vl9JTkhJQklUX1JFQVNPTl9JUlFXSU4sIC0gQVBJQ1ZfSU5ISUJJVF9SRUFTT05fU0VWLCAt IEFQSUNWX0lOSElCSVRfUkVBU09OX0xPR0lDQUxfSURfQUxJQVNFRC4gU3VtbWFyeSBhYm91 dCBBUElDdiBpbmhpYml0IHJlYXNvbnM6IEFQSUN2IGNvdWxkIHN0aWxsIGJlIGRpc2FibGVk IHJ1bnRpbWUgaW4gc29tZSBjb3JuZXIgY2FzZSwgZS5nLCBBUElDVl9JTkhJQklUX1JFQVNP Tl9QSFlTSUNBTF9JRF9BTElBU0VEIGR1ZSB0byBtZW1vcnkgYWxsb2NhdGlvbiBmYWlsdXJl LiBBZnRlciBjaGVja2luZyBlbmFibGVfYXBpY3YgaW4gdGR4X2JyaW5ndXAoKSwgDQphcGlj LT5hcGljdl9hY3RpdmUgaXMgaW5pdGlhbGl6ZWQgYXMgdHJ1ZSBpbiBrdm1fY3JlYXRlX2xh cGljKCkuIElmIEFQSUN2IGlzIGluaGliaXRlZCBkdWUgdG8gYW55IHJlYXNvbiBydW50aW1l LCB0aGUgcmVmcmVzaF9hcGljdl9leGVjX2N0cmwoKSBjYWxsYmFjayBjb3VsZCBiZSB1c2Vk IHRvIGNoZWNrIGlmIEFQSUN2IGlzIGRpc2FibGVkIGZvciBURFgsIGlmIEFQSUN2IGlzIGRp c2FibGVkLCBidWcgdGhlIFZNLiBDaGFuZ2VzIG9mIEFQSUN2IGFjdGl2ZSBmcm9tIGZhbHNl IHRvIHRydWUgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IExh enkgY2hlY2sgZm9yIHBlbmRpbmcgQVBJQyBFT0kgd2hlbiBJbi1rZXJuZWwgSU9BUElDIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIElu LWtlcm5lbCBJT0FQSUMgZG9lcyBub3QgcmVjZWl2ZSBFT0kgd2l0aCBBTUQgU1ZNIEFWSUMg c2luY2UgdGhlIHByb2Nlc3NvciBhY2NlbGVyYXRlcyB3cml0ZSB0byBBUElDIEVPSSByZWdp c3RlciBhbmQgZG9lcyBub3QgdHJhcCBpZiB0aGUgaW50ZXJydXB0IGlzIGVkZ2UtdHJpZ2dl cmVkLiBTbyB0aGVyZSBpcyBhIHdvcmthcm91bmQgYnkgbGF6eSBjaGVjayBmb3IgcGVuZGlu ZyBBUElDIEVPSSBhdCB0aGUgdGltZSB3aGVuIHNldHRpbmcgbmV3IElPQVBJQyBpcnEsIGFu ZCB1cGRhdGUgSU9BUElDIEVPSSBpZiBubyBwZW5kaW5nIEFQSUMgRU9JLiBLVk0gaXMgYWxz byBub3QgYmUgYWJsZSB0byBpbnRlcmNlcHQgRU9JIGZvciBURFggZ3Vlc3RzLiAtIFdoZW4g QVBJQ3YgaXMgZW5hYmxlZCBUaGUgY29kZSBvZiBsYXp5IGNoZWNrIGZvciBwZW5kaW5nIEFQ SUMgRU9JIGRvZXNuJ3Qgd29yayBmb3IgVERYIGJlY2F1c2UgS1ZNIGNhbid0IGdldCB0aGUg c3RhdHVzIG9mIHJlYWwgSVJSIGFuZCBJU1IsIGFuZCB0aGUgdmFsdWVzIGFyZSAwcyBpbiB2 SVJSIGFuZCB2SVNSIA0KaW4gYXBpYy0+cmVnc1tdLCBrdm1fYXBpY19wZW5kaW5nX2VvaSgp IHdpbGwgYWx3YXlzIHJldHVybiBmYWxzZS4gU28gdGhlIFJUQyBwZW5kaW5nIEVPSSB3aWxs IGFsd2F5cyBiZSBjbGVhcmVkIHdoZW4gaW9hcGljX3NldF9pcnEoKSBpcyBjYWxsZWQgZm9y IFJUQy4gVGhlbiB1c2Vyc3BhY2UgbWF5IG1pc3MgdGhlIGNvYWxlc2NlZCBSVEMgaW50ZXJy dXB0cy4gLSBXaGVuIFdoZW4gQVBJQ3YgaXMgZGlzYWJsZWQgaW9hcGljX2xhenlfdXBkYXRl X2VvaSgpIHdpbGwgbm90IGJlIGNhbGxlZO+8jHRoZW4gcGVuZGluZyBFT0kgc3RhdHVzIGZv ciBSVEMgd2lsbCBub3QgYmUgY2xlYXJlZCBhZnRlciBzZXR0aW5nIGFuZCB0aGlzIHdpbGwg bWlzbGVhZCB1c2Vyc3BhY2UgdG8gc2VlIGNvYWxlc2NlZCBSVEMgaW50ZXJydXB0cy4gT3B0 aW9uczogLSBGb3JjZSBpcnFjaGlwIHNwbGl0IGZvciBURFggZ3Vlc3RzIHRvIGVsaW1pbmF0 ZSB0aGUgdXNlIG9mIGluLWtlcm5lbCBJT0FQSUMuIC0gTGVhdmUgaXQgYXMgaXQgaXMsIGJ1 dCB0aGUgdXNlIG9mIFJUQyBtYXkgbm90IGJlIGFjY3VyYXRlLiBrdm1fY2FuX3Bvc3RfdGlt ZXJfaW50ZXJydXB0KCkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFdoZXRoZXIg aG91c2VrZWVwaW5nIENQVSBjYW4gZGVsaXZlciB0aW1lciBpbnRlcnJ1cHQgdG8gdGFyZ2V0 IHZDUFUgdmlhIHBvc3RlZCBpbnRlcnJ1cHQgd2hlbiBub2h6X2Z1bGwgb3B0aW9uIHNldC4g LSBXaGVuIEFQSUN2IGFjdGl2ZSBpcyBmYWxzZSwgaXQgYWx3YXlzIHJldHVybiBmYWxzZS4g LSBXaGVuIEFQSUN2IGFjdGl2ZSBpcyB0cnVlLCBpdCBhbHNvIGRlcGVuZHMgb24gd2hldGhl ciBtd2FpdCBvciBobHQgaW4gZ3Vlc3QgaXMgc2V0LiBGb3IgVERYIGd1ZXN0cywgaGx0IHdp bGwgdHJpZ2dlciAjVkUgdW5jb25kaXRpb25hbGx5IGFuZCBURFggZ3Vlc3RzIHJlcXVlc3Qg SExUIHZpYSBURFZNQ0FMTC4gV2hldGhlciBtd2FpdCBpcyANCmFsbG93ZWQgZGVwZW5kcyBv biB0aGUgY3B1aWQgY29uZmlndXJhdGlvbiBpbiBURF9QQVJBTVMuIFNvIGN1cnJlbnQgaW1w bGVtZW50YXRpb24gb2Yga3ZtX213YWl0X2luX2d1ZXN0KCkgYW5kIGt2bV9obHRfaW5fZ3Vl c3QoKSBkb2Vzbid0IHJlZmxlY3QgdGhlIHJlYWwgc3RhdHVzIGZvciBURFggZ3Vlc3RzLiBI b3dldmVyLCBTZWFuIG1lbnRpb25lZCAiY29uc3VsdGluZyBrdm1fY2FuX3Bvc3RfdGltZXJf aW50ZXJydXB0KCkgaW4gdGhlIGV4cGlyYXRpb24gcGF0aCBpcyBzaWxseSIuIFRoZXJlIGNv dWxkIGJlIGNsZWFudXBzIGZvciB0aGlzIHBhcnQuIGh0dHBzOi8vbG9yZS5rZXJuZWwub3Jn L2t2bS9aMzJaakdINzJXUEtCTWFtQGdvb2dsZS5jb20vIFNvLCBkb24ndCBkbyBhbnkgVERY LXNwZWNpZmljIGxvZ2ljIGZvciBpdC4gYXBpY190aW1lcl9leHBpcmVkKCkgLS0tLS0tLS0t LS0tLS0tLS0tLS0gQWJvdXQga3ZtX2Nhbl9wb3N0X3RpbWVyX2ludGVycnVwdCgpIGluIHRo ZSBleHBpcmF0aW9uIHBhdGgsIHNlZSB0aGUgZGVzY3JpcHRpb24gYWJvdmUuIEZvciB0aGUg cmVzdCBwYXJ0LCB3aGVuIHRoZSBmdW5jdGlvbiBpcyBub3QgY2FsbGVkIGZyb20gdGltZXIg ZnVuY3Rpb24gLSBJZiBhcGljdl9hY3RpdmUsIHRoZSB0aW1lciBpbnRlcnJ1cHQgd2lsbCBi ZSBpbmplY3RlZCB2aWEga3ZtX2FwaWNfaW5qZWN0X3BlbmRpbmdfdGltZXJfaXJxcygpLiAt IElmICFhcGljdl9hY3RpdmUsIHRoZSB0aW1lciBpbnRlcnJ1cHQgd2lsbCBiZSBoYW5kbGVk IHZpYSBsYXBpY190aW1lci5wZW5kaW5nIGFwcHJvYWNoLCBhbmQgZmluYWxseSwgdGhlIHRp bWVyIGludGVycnVwdCBpcyBhbHNvIGJlIGluamVjdGVkIHZpYSBrdm1fYXBpY19pbmplY3Rf cGVuZGluZ190aW1lcl9pcnFzKCkuIEJhc2ljYWxseSwgdGhleSBhcmUgZnVuY3Rpb25hbGx5 IGVxdWl2YWxlbnQgd2l0aCBzdWJ0bGUgZGlmZmVyZW5jZXMuIEUuZy4sIGlmIGFuIA0KaHJ0 aW1lciBmaXJlcyB3aGlsZSBLVk0gaXMgaGFuZGxpbmcgYSB3cml0ZSB0byBUTUlDVCwgS1ZN IHdpbGwgZGVsaXZlciB0aGUgaW50ZXJydXB0IGlmIGNvbmZpZ3VyZWQgdG8gcG9zdCB0aW1l ciwgYnV0IG5vdCBpZiBBUElDdiBpcyBkaXNhYmxlZCwgYmVjYXVzZSB0aGUgbGF0dGVyIHdp bGwgaW5jcmVtZW50ICJwZW5kaW5nIiwgYW5kICJwZW5kaW5nIiB3aWxsIGJlIGNsZWFyZWQg YmVmb3JlIGhhbmRsaW5nIHRoZSBuZXcgVE1JQ1QuIERpdHRvIGZvciBzd2l0Y2ggQVBJQyB0 aW1lciBtb2Rlcy4gU2VhbiBtZW50aW9uZWQgdGhlIGVudGlyZSBsYXBpY190aW1lci5wZW5k aW5nIGFwcHJvYWNoIG1heSBuZWVkIHRvIGJlIGRpdGNoZWQsIGFuZCB0aGUgdGltZXIgaW50 ZXJydXB0IGNvdWxkIGJlIGRpcmVjdGx5IGRlbGl2ZXJlZCBubyBtYXR0ZXIgYXBpY3YgaXMg YWN0aXZlIG9yIG5vdC4gaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcva3ZtL1ozMlpqR0g3MldQ S0JNYW1AZ29vZ2xlLmNvbS8gVGhpcyBpcyBub3QgVERYIHNwZWNpZmljLCBsZWF2ZSBpdCBm b3Igbm93LiBPcHRpb25zOiAtIEZpeCBrdm1fbXdhaXRfaW5fZ3Vlc3QoKS9rdm1faGx0X2lu X2d1ZXN0KCkgZm9yIFREWCBndWVzdHMuIC0gVk1YIHByZWVtcHRpb24gdGltZXIgY2FuJ3Qg YmUgdXNlZCBieSBURFggZ3Vlc3RzIGFueXdheSwgbGVhdmUga3ZtX213YWl0X2luX2d1ZXN0 KCkva3ZtX2hsdF9pbl9ndWVzdCgpIGFzIHRoZW0gYXJlLCBwb3N0ZWQgdGltZXIgaW50ZXJy dXB0IGNvdWxkIGJlIHVzZWQgd2hlbiB1c2Vyc3BhY2UgcmVxdWVzdGVkIHRvIGRpc2FibGUg ZXhpdCBmb3IgbXdhaXQvaGx0LiAtIFZNWCBwcmVlbXB0aW9uIHRpbWVyIGNhbid0IGJlIHVz ZWQgYnkgVERYIGd1ZXN0cyBhbnl3YXksIHNraXAgY2hlY2tpbmcga3ZtX213YWl0X2luX2d1 ZXN0KCkva3ZtX2hsdF9pbl9ndWVzdCgpLiBrdm1fYXJjaF9keV9oYXNfcGVuZGluZ19pbnRl cnJ1cHQoKSANCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEJlZm9yZSBl bmFibGluZyBvZmYtVEQgZGVidWcsIHRoZXJlIGlzIG5vIGZ1bmN0aW9uYWwgY2hhbmdlIGJl Y2F1c2UgdGhlcmUgaXMgbm8gUEFVU0UgRXhpdCBmb3IgVERYIGd1ZXN0cy4gQWZ0ZXIgZW5h Ymxpbmcgb2ZmLVREIGRlYnVnLCB0aGUga3ZtX3ZjcHVfYXBpY3ZfYWN0aXZlKHZjcHUpIHNo b3VsZCBiZSB0cnVlIHRvIGdldCB0aGUgcGVuZGluZyBpbnRlcnJ1cHQgZnJvbSBQSUQuIFNl dCBBUElDdiB0byBhY3RpdmUgZm9yIFREWCBpcyB0aGUgcmlnaHQgdGhpbmcgdG8gZG8uIHVw ZGF0ZV9jcjhfaW50ZXJjZXB0KCkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBGdW5jdGlvbmFs bHkgdW5jaGFuZ2VkIGJlY2F1c2UgdGhlIGNhbGxiYWNrIHVwZGF0ZV9jcjhfaW50ZXJjZXB0 KCkgZm9yIFREWCBpcyBpZ25vcmVkLiBTZXQgQVBJQ3YgdG8gYWN0aXZlIGZvciBURFggY2Fu IHJldHVybiBlYXJsaWVyIHRvIHNraXAgdW5uZWNlc3NhcnkgY29kZS4ga3ZtX2xhcGljX3Jl c2V0KCkga3ZtX2FwaWNfc2V0X3N0YXRlKCkgLS0tLS0tLS0tLS0tLS0tLS0tLS0gVGhlIGNh bGxiYWNrcyBhcGljdl9wb3N0X3N0YXRlX3Jlc3RvcmUoKSwgaHdhcGljX2lycl91cGRhdGUo KSwgYW5kIGh3YXBpY19pc3JfdXBkYXRlKCkgd2lsbCBiZSBjYWxsZWQgZm9yIFREWCBndWVz dHMgd2hlbiBhcGljdiBpcyBhY3RpdmUsIHRoZXNlIGNhbGxiYWNrcyBoYXZlIGJlZW4gaWdu b3JlZCBieSBURFggY29kZSBhbHJlYWR5LCBubyBmdW5jdGlvbmFsIGNoYW5nZXMuIElzc3Vl cyA9PT09PT0gUElDIGludGVycnVwdHMgLS0tLS0tLS0tLS0tLS0gS1ZNIGluamVjdCBQSUMg aW50ZXJydXB0IHZpYSBldmVudCBpbmplY3Rpb24gcGF0aC4gQ3VycmVudGx5LCBURFggY29k ZSBkb2Vzbid0IGhhbmRsZSB0aGlzLCB0aHVzIFBJQyBpbnRlcnJ1cHRzIHdpbGwgYmUgbG9z dC4gRm9ydHVuYXRlbHksIG1vZGVybiBPU2VzIA0KZG9uJ3QgdXNlIFBJQy4gV2UgY291bGQg dXNlIHBvc3RlZC1pbnRlcnJ1cHQgaW4gdG8gZGVsaXZlciBQSUMgaW50ZXJydXB0IGlmIG5l ZWRlZC4gT3IgY2FuIHdlIGFzc3VtZSBQSUMgd2lsbCBub3QgYmUgdXNlZCBieSBURFggZ3Vl c3RzPyBJbi1rZXJuZWwgUElUIGluIHJlLWluamVjdCBtb2RlIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0gU2VlIHRoZSBkZXNjcmlwdGlvbiBmb3IgIkFQSUNWX0lOSElCSVRf UkVBU09OX1BJVF9SRUlOSiIgYWJvdmUuIExhenkgY2hlY2sgZm9yIHBlbmRpbmcgQVBJQyBF T0kgb2YgSW4ta2VybmVsIElPQVBJQyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0gU2VlIHRoZSBkZXNjcmlwdGlvbiBmb3IgdGhlIHNhbWUg aXRlbSBpbiAiQ2hhbmdlcyBvZiBBUElDdiBhY3RpdmUgZnJvbSBmYWxzZSB0byB0cnVlIi4g T3BlbjogRm9yIHRoZSBpc3N1ZXMgcmVsYXRlZCB0byBpbi1rZXJuZWwgUElUIGFuZCBpbi1r ZXJuZWwgSU9BUElDLCBzaG91bGQgS1ZNIGZvcmNlIGlycWNoaXAgc3BsaXQgZm9yIFREWCBn dWVzdHMgdG8gZWxpbWluYXRlIHRoZSB1c2Ugb2YgaW4ta2VybmVsIFBJVCBhbmQgaW4ta2Vy bmVsIElPQVBJQz8gUHJvcG9zZWQgY29kZSBjaGFuZ2UgPT09PT09PT09PT09PT09PT09PT0g QmVsb3cgaXMgdGhlIHByb3Bvc2VkIGNvZGUgY2hhbmdlIHRvIGNoYW5nZSBBUElDdiBhY3Rp dmUgZnJvbSBmYWxzZSB0byB0cnVlIGZvciBURFggZ3Vlc3RzLiBGb3JjZSBpcnFjaGlwIHNw bGl0IGZvciBURVggZ3Vlc3RzIGlzIG5vdCBpbmNsdWRlZC4gTm90ZSwgYnkgcmVqZWN0aW5n IEtWTV9HRVRfTEFQSUMvS1ZNX1NFVF9MQVBJQyBmb3IgVERYIGd1ZXN0cyAoaS5lLiwgd2hl biBndWVzdF9hcGljX3Byb3RlY3RlZCksIGl0IHJldHVybnMgYW4gZXJyb3IgY29kZSBpbnN0 ZWFkIG9mIHJldHVybmluZyAwLiBJdCByZXF1aXJlcyBtb2RpZmljYXRpb25zIGluIA0KUUVN VSBURFggc3VwcG9ydCBjb2RlIHRvIGF2b2lkIHJlcXVlc3RpbmcgS1ZNX0dFVF9MQVBJQy9L Vk1fU0VUX0xBUElDLiA4PC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gZGlmZiAtLWdpdCBhL2Fy Y2gveDg2L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmggYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9r dm1faG9zdC5oIGluZGV4IDA3ODc4NTVhYjAwNi4uOTcwMjVhMjQwZDU0IDEwMDY0NCAtLS0g YS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1faG9zdC5oICsrKyBiL2FyY2gveDg2L2luY2x1 ZGUvYXNtL2t2bV9ob3N0LmggQEAgLTEyODksMTUgKzEyODksNiBAQCBlbnVtIGt2bV9hcGlj dl9pbmhpYml0IHsgKi8gQVBJQ1ZfSU5ISUJJVF9SRUFTT05fTE9HSUNBTF9JRF9BTElBU0VE LCAtIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKiovIC0gLyogSU5ISUJJVHMgdGhhdCBhcmUgcmVsZXZhbnQgb25seSB0byB0aGUg SW50ZWwncyBBUElDdi4gKi8gLSAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqLyAtIC0gLyogLSAqIEFQSUN2IGlzIGRpc2FibGVk IGJlY2F1c2UgVERYIGRvZXNuJ3Qgc3VwcG9ydCBpdC4gLSAqLyAtIEFQSUNWX0lOSElCSVRf UkVBU09OX1REWCwgLSBOUl9BUElDVl9JTkhJQklUX1JFQVNPTlMsIH07IEBAIC0xMzE2LDgg KzEzMDcsNyBAQCBlbnVtIGt2bV9hcGljdl9pbmhpYml0IHsgX19BUElDVl9JTkhJQklUX1JF QVNPTihJUlFXSU4pLCBcIF9fQVBJQ1ZfSU5ISUJJVF9SRUFTT04oUElUX1JFSU5KKSwgXCBf X0FQSUNWX0lOSElCSVRfUkVBU09OKFNFViksIFwgLSBfX0FQSUNWX0lOSElCSVRfUkVBU09O KExPR0lDQUxfSURfQUxJQVNFRCksIFwgLSBfX0FQSUNWX0lOSElCSVRfUkVBU09OKFREWCkg KyANCl9fQVBJQ1ZfSU5ISUJJVF9SRUFTT04oTE9HSUNBTF9JRF9BTElBU0VEKSBzdHJ1Y3Qg a3ZtX2FyY2ggeyB1bnNpZ25lZCBsb25nIG5fdXNlZF9tbXVfcGFnZXM7IGRpZmYgLS1naXQg YS9hcmNoL3g4Ni9rdm0vdm14L21haW4uYyBiL2FyY2gveDg2L2t2bS92bXgvbWFpbi5jIGlu ZGV4IDliNzliNGJiMDYzZi4uZGY5Y2M0YTdmMmQ4IDEwMDY0NCAtLS0gYS9hcmNoL3g4Ni9r dm0vdm14L21haW4uYyArKysgYi9hcmNoL3g4Ni9rdm0vdm14L21haW4uYyBAQCAtNzgyLDgg Kzc4MiwxMCBAQCBzdGF0aWMgdm9pZCB2dF9zZXRfYXBpY19hY2Nlc3NfcGFnZV9hZGRyKHN0 cnVjdCBrdm1fdmNwdSAqdmNwdSkgc3RhdGljIHZvaWQgdnRfcmVmcmVzaF9hcGljdl9leGVj X2N0cmwoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KSB7IC0gaWYgKFdBUk5fT05fT05DRShpc190 ZF92Y3B1KHZjcHUpKSkgKyBpZiAoaXNfdGRfdmNwdSh2Y3B1KSkgeyArIEtWTV9CVUdfT04o IWt2bV92Y3B1X2FwaWN2X2FjdGl2ZSh2Y3B1KSwgdmNwdS0+a3ZtKTsgcmV0dXJuOyArIH0g dm14X3JlZnJlc2hfYXBpY3ZfZXhlY19jdHJsKHZjcHUpOyB9IEBAIC05MDgsOCArOTEwLDcg QEAgc3RhdGljIGludCB2dF9nbWVtX3ByaXZhdGVfbWF4X21hcHBpbmdfbGV2ZWwoc3RydWN0 IGt2bSAqa3ZtLCBrdm1fcGZuX3QgcGZuKSBCSVQoQVBJQ1ZfSU5ISUJJVF9SRUFTT05fQkxP Q0tJUlEpIHwgXCBCSVQoQVBJQ1ZfSU5ISUJJVF9SRUFTT05fUEhZU0lDQUxfSURfQUxJQVNF RCkgfCBcIEJJVChBUElDVl9JTkhJQklUX1JFQVNPTl9BUElDX0lEX01PRElGSUVEKSB8IFwg LSBCSVQoQVBJQ1ZfSU5ISUJJVF9SRUFTT05fQVBJQ19CQVNFX01PRElGSUVEKSB8IFwgLSBC SVQoQVBJQ1ZfSU5ISUJJVF9SRUFTT05fVERYKSkgKyBCSVQoQVBJQ1ZfSU5ISUJJVF9SRUFT T05fQVBJQ19CQVNFX01PRElGSUVEKSkgc3RydWN0IGt2bV94ODZfb3BzIHZ0X3g4Nl9vcHMg X19pbml0ZGF0YSA9IHsgLm5hbWUgPSANCktCVUlMRF9NT0ROQU1FLCBkaWZmIC0tZ2l0IGEv YXJjaC94ODYva3ZtL3ZteC90ZHguYyBiL2FyY2gveDg2L2t2bS92bXgvdGR4LmMgaW5kZXgg NjdmYzM5MWZlNzk4Li5jYzUxNmFiMmQ5OTAgMTAwNjQ0IC0tLSBhL2FyY2gveDg2L2t2bS92 bXgvdGR4LmMgKysrIGIvYXJjaC94ODYva3ZtL3ZteC90ZHguYyBAQCAtNjE0LDYgKzYxNCw3 IEBAIGludCB0ZHhfdm1faW5pdChzdHJ1Y3Qga3ZtICprdm0pIHN0cnVjdCBrdm1fdGR4ICpr dm1fdGR4ID0gdG9fa3ZtX3RkeChrdm0pOyBrdm0tPmFyY2guaGFzX3ByaXZhdGVfbWVtID0g dHJ1ZTsgKyBrdm0tPmFyY2guaGFzX3Byb3RlY3RlZF9zdGF0ZSA9IHRydWU7IC8qICogQmVj YXVzZSBndWVzdCBURCBpcyBwcm90ZWN0ZWQsIFZNTSBjYW4ndCBwYXJzZSB0aGUgaW5zdHJ1 Y3Rpb24gaW4gVEQuIEBAIC0yMzU0LDggKzIzNTUsNiBAQCBzdGF0aWMgaW50IF9fdGR4X3Rk X2luaXQoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3QgdGRfcGFyYW1zICp0ZF9wYXJhbXMsIGdv dG8gdGVhcmRvd247IH0gLSBrdm1fc2V0X2FwaWN2X2luaGliaXQoa3ZtLCBBUElDVl9JTkhJ QklUX1JFQVNPTl9URFgpOyAtIHJldHVybiAwOyAvKiBAQCAtMjc0MSw3ICsyNzQwLDYgQEAg c3RhdGljIGludCB0ZHhfdGRfdmNwdV9pbml0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0 IHZjcHVfcmN4KSByZXR1cm4gLUVJTzsgfSAtIHZjcHUtPmFyY2guYXBpYy0+YXBpY3ZfYWN0 aXZlID0gZmFsc2U7IHZjcHUtPmFyY2gubXBfc3RhdGUgPSBLVk1fTVBfU1RBVEVfUlVOTkFC TEU7IHJldHVybiAwOyBAQCAtMzI3Myw2ICszMjcxLDExIEBAIGludCBfX2luaXQgdGR4X2Jy aW5ndXAodm9pZCkgZ290byBzdWNjZXNzX2Rpc2FibGVfdGR4OyB9ICsgaWYgKCFlbmFibGVf YXBpY3YpIHsgKyBwcl9lcnIoIkFQSUN2IGlzIHJlcXVpcmVkIGZvciBURFhcbiIpOyArIGdv dG8gc3VjY2Vzc19kaXNhYmxlX3RkeDsgKyB9ICsgaWYgDQooIXRkcF9tbXVfZW5hYmxlZCB8 fCAhZW5hYmxlX21taW9fY2FjaGluZykgeyBwcl9lcnIoIlREUCBNTVUgYW5kIE1NSU8gY2Fj aGluZyBpcyByZXF1aXJlZCBmb3IgVERYXG4iKTsgZ290byBzdWNjZXNzX2Rpc2FibGVfdGR4 OyBkaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3g4Ni5jIGIvYXJjaC94ODYva3ZtL3g4Ni5j IGluZGV4IGU0MzNjOGVlNjNhNS4uODM3YTI4N2Q4YzQ3IDEwMDY0NCAtLS0gYS9hcmNoL3g4 Ni9rdm0veDg2LmMgKysrIGIvYXJjaC94ODYva3ZtL3g4Ni5jIEBAIC01MTA4LDYgKzUxMDgs OSBAQCB2b2lkIGt2bV9hcmNoX3ZjcHVfcHV0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkgc3Rh dGljIGludCBrdm1fdmNwdV9pb2N0bF9nZXRfbGFwaWMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1 LCBzdHJ1Y3Qga3ZtX2xhcGljX3N0YXRlICpzKSB7ICsgaWYgKHZjcHUtPmFyY2guYXBpYy0+ Z3Vlc3RfYXBpY19wcm90ZWN0ZWQpICsgcmV0dXJuIC1FSU5WQUw7ICsga3ZtX3g4Nl9jYWxs KHN5bmNfcGlyX3RvX2lycikodmNwdSk7IHJldHVybiBrdm1fYXBpY19nZXRfc3RhdGUodmNw dSwgcyk7IEBAIC01MTE4LDYgKzUxMjEsOSBAQCBzdGF0aWMgaW50IGt2bV92Y3B1X2lvY3Rs X3NldF9sYXBpYyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHsgaW50IHI7ICsgaWYgKHZjcHUt PmFyY2guYXBpYy0+Z3Vlc3RfYXBpY19wcm90ZWN0ZWQpICsgcmV0dXJuIC1FSU5WQUw7ICsg ciA9IGt2bV9hcGljX3NldF9zdGF0ZSh2Y3B1LCBzKTsgaWYgKHIpIHJldHVybiByOw0K