From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from codeconstruct.com.au (pi.codeconstruct.com.au [203.29.241.158]) (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 25516175A5; Mon, 11 May 2026 02:20:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=203.29.241.158 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778466010; cv=none; b=lYh0QM/7klMwhYWP0ChLBsfWZWEBA1Jw0lFwhP05lGa2Xm/QZ7PkswADvVHrqKCXrxtrzaUke9M/13QM0LhdGYcF/52iO5fZyQuDtPwbs8aa8dcAutGk6AYwFtkO65F7OBIn1Ddc05+DP/vkDVdlx5mK8CpOFwMcwuZXxWI58m8= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778466010; c=relaxed/simple; bh=cueVfM19Tc2hVqvc834Z2IhsH5+2xoKgBP82NIR1myE=; h=Message-ID:Subject:From:To:Cc:Date:In-Reply-To:References: Content-Type:MIME-Version; b=byFA5iTH2K6FZ82AUDchTZnGn/oTfx/gyKeZ33ac1zDjFNaceOWxAC+zPjB8XNBAeEq+ah6LL6k6dTtXvTyzOSnNumg+50lh/vpo7AwiamutXQkgHexBW6L2TU2HvCOUR23ySxf6Pb1VHgB0VM67t19heCEaJTLmYgfVO987QIc= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=codeconstruct.com.au; spf=pass smtp.mailfrom=codeconstruct.com.au; dkim=pass (2048-bit key) header.d=codeconstruct.com.au header.i=@codeconstruct.com.au header.b=QXxG03z1; arc=none smtp.client-ip=203.29.241.158 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=codeconstruct.com.au Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=codeconstruct.com.au Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=codeconstruct.com.au header.i=@codeconstruct.com.au header.b="QXxG03z1" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=codeconstruct.com.au; s=2022a; t=1778466000; bh=cueVfM19Tc2hVqvc834Z2IhsH5+2xoKgBP82NIR1myE=; h=Subject:From:To:Cc:Date:In-Reply-To:References; b=QXxG03z1m8AywYmeYEf75ZVkTjpc7gx/jpo1XakHnHd0xFiHVn6EWrNnE4pD6J2qf ciOk4baIAwAP2oSaNlpEsHLo2QjLOAFQycOr3bNiQ0/J76MehM6itOCs35R4LSy9hQ zBQwHe8X8/yT6YsmHokjjdU2ZDQr3nMOaOF5QRza5RPct4Fz9mNe6YOEWF+NSJgsNz WwYTASp2lUZodXkPBE9K+P5t2PfcM27ZqLOU3rTEU6ek1VnPw1/SWvC/NXHwSMkVfz 2+AqjbuZQbp7e/eayHCe2mCxl2ZEOZhDgFKZGkfd1QNHtYwq/AuBnyPDGboOkh9cyF Dn+ZjZjkjma4Q== Received: from [192.168.72.167] (210-10-213-150.per.static-ipl.aapt.com.au [210.10.213.150]) by mail.codeconstruct.com.au (Postfix) with ESMTPSA id C81E86001B; Mon, 11 May 2026 10:19:58 +0800 (AWST) Message-ID: <9f4d364ebbbbbb697fcee022991a546e60692f11.camel@codeconstruct.com.au> Subject: Re: [net-next v41] mctp pcc: Implement MCTP over PCC Transport From: Jeremy Kerr To: Adam Young , Matt Johnston , Andrew Lunn , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org, Sudeep Holla , Jonathan Cameron , Huisong Li Date: Mon, 11 May 2026 10:19:57 +0800 In-Reply-To: <20260510163228.443778-1-admiyo@os.amperecomputing.com> References: <20260510163228.443778-1-admiyo@os.amperecomputing.com> Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 User-Agent: Evolution 3.46.4-2+deb12u1 Precedence: bulk X-Mailing-List: netdev@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 SGkgQWRhbSwKCllvdSBrZWVwIHNlbmRpbmcgb3V0IHZlcnNpb25zIG9mIHRoaXMgcGF0Y2ggd2hp Y2ggaGF2ZSBub3QgYWNjb21tb2RhdGVkCml0ZW1zIG9mIHByZXZpb3VzIGZlZWRiYWNrLiBJdCBp cyBub3QgY2xlYXIgaWYgdGhpcyBpcyBpbnRlbnRpb25hbCwgYnV0CmlmIHlvdSBkbyBkaXNhZ3Jl ZSB3aXRoIHNvbWUgcmVxdWVzdCBmb3IgY2hhbmdlLCB0aGVuIHJlc3BvbmQgdG8gdGhhdApyZXF1 ZXN0LCByYXRoZXIgdGhhbiBzaWxlbnRseSBpZ25vcmluZyBpdC4KCkFsdGVybmF0aXZlbHksIGlm IGl0J3Mgbm90IGNsZWFyIHdoYXQgdGhlIHJlcXVlc3QgaXMsIHRoZW4gcGxlYXNlCnJlc3BvbmQg dG8gdGhhdCB0aHJlYWQgYW5kIGFzayBmb3IgY2xhcmlmaWNhdGlvbi4KClNlZWluZyBjaGFuZ2Vz IHdpdGhvdXQgcHJldmlvdXMgY2hhbmdlIHJlcXVlc3RzIGVpdGhlciBpbXBsZW1lbnRlZCBvcgpy ZWplY3RlZCB0aHJvdWdoIGRpc2N1c3Npb24gaXMgbWFraW5nIHRoZSByZXZpZXcgcHJvY2VzcyBw cmV0dHkKZnJ1c3RyYXRpbmcsIGFuZCBpcyBhIHByaW1hcnkgcmVhc29uIHdoeSB0aGlzIGhhcyB0 YWtlbiA0MCB2ZXJzaW9ucyBzbwpmYXIuCgo+IENoYW5nZXMgZnJvbSBQcmV2aW91cyB2ZXJzaW9u Cj4gCj4gUmVtb3ZlIGNoZWNrIGZvciBza2JfaXNfbm9ubGluZWFyKHNrYikgYXMgaXQgaXMgZG9u ZSBpbiBza2JfbGluZWFyaXplKHNrYikKPiBSZW1vdmVkIGNvbW1lbnQgYWJvdXQgQkUgc3VwcG9y dAo+IFNwYWNpbmcgY2hhbmdlcyBhZnRlciBnb3RvcwoKVGhpcyBjaGFuZ2UgaXMgZ29vZCwgYnV0 IGhhc24ndCBiZWVuIGFwcGxpZWQgdG8gdGhlIHBhcnQgb2YgdGhlIGRyaXZlciBJCmhhZCBjb21t ZW50ZWQgb24uCgo+ICtzdGF0aWMgdm9pZCBtY3RwX3BjY19jbGllbnRfcnhfY2FsbGJhY2soc3Ry dWN0IG1ib3hfY2xpZW50ICpjbCwgdm9pZCAqbXNzZykKPiArewo+ICvCoMKgwqDCoMKgwqDCoHN0 cnVjdCBhY3BpX3BjY3RfZXh0X3BjY19zaGFyZWRfbWVtb3J5IHBjY19oZWFkZXI7Cj4gK8KgwqDC oMKgwqDCoMKgc3RydWN0IG1jdHBfcGNjX25kZXYgKm1jdHBfcGNjX25kZXY7Cj4gK8KgwqDCoMKg wqDCoMKgc3RydWN0IG1jdHBfcGNjX21haWxib3ggKmluYm94Owo+ICvCoMKgwqDCoMKgwqDCoHN0 cnVjdCBtY3RwX3NrYl9jYiAqY2I7Cj4gK8KgwqDCoMKgwqDCoMKgc3RydWN0IHNrX2J1ZmYgKnNr YjsKPiArwqDCoMKgwqDCoMKgwqB1MzIgaGVhZGVyX2xlbmd0aDsKPiArwqDCoMKgwqDCoMKgwqBp bnQgc2l6ZTsKPiArCj4gK8KgwqDCoMKgwqDCoMKgbWN0cF9wY2NfbmRldiA9IGNvbnRhaW5lcl9v ZihjbCwgc3RydWN0IG1jdHBfcGNjX25kZXYsIGluYm94LmNsaWVudCk7Cj4gK8KgwqDCoMKgwqDC oMKgaW5ib3ggPSAmbWN0cF9wY2NfbmRldi0+aW5ib3g7Cj4gK8KgwqDCoMKgwqDCoMKgbWVtY3B5 X2Zyb21pbygmcGNjX2hlYWRlciwgaW5ib3gtPmNoYW4tPnNobWVtLCBzaXplb2YocGNjX2hlYWRl cikpOwo+ICsKPiArwqDCoMKgwqDCoMKgwqAvLyBUaGUgbWVzc2FnZSBtdXN0IGF0IGxlYXN0IGhh dmUgdGhlIFBDQyBjb21tYW5kIGluZGljYXRpbmcgaXQgaXMgYW4gTUNUUAo+ICvCoMKgwqDCoMKg wqDCoC8vIG1lc3NhZ2UgZm9sbG93ZWQgYnkgdGhlIE1DVFAgaGVhZGVyLCBvciB3ZSBoYXZlIGEg bWFsZm9ybWVkIG1lc3NhZ2UuCj4gK8KgwqDCoMKgwqDCoMKgLy8gVGhpcyBtYXkgYmUgcnVuIG9u IGJpZyBlbmRpYW4gc3lzdGVtLCBidXQgdGhlIGRhdGEgaW4gdGhlIGJ1ZmZlciBpcwo+ICvCoMKg wqDCoMKgwqDCoC8vIGV4cGxpY2l0bHkgbGl0dGxlIGVuZGlhbi4KPiArwqDCoMKgwqDCoMKgwqBo ZWFkZXJfbGVuZ3RoID0gbGUzMl90b19jcHUocGNjX2hlYWRlci5sZW5ndGgpOwo+ICsKPiArwqDC oMKgwqDCoMKgwqBpZiAoaGVhZGVyX2xlbmd0aCA8IHNpemVvZihwY2NfaGVhZGVyLmNvbW1hbmQp ICsgc2l6ZW9mKHN0cnVjdCBtY3RwX2hkcikpCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoGdvdG8gZXJyb3I7Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoC8vIElmIHRoZSByZXBvcnRlZCBz aXplIGlzIGxhcmdlciB0aGFuIHRoZSBzaGFyZWQgbWVtb3J5IG1pbnVzIGhlYWRlcnMsCj4gK8Kg wqDCoMKgwqDCoMKgLy8gc29tZXRoaW5nIGlzIHdyb25nIGFuZCB0cmVhdCB0aGUgYnVmZmVyIGFz IGNvcnJ1cHRlZCBkYXRhLgo+ICvCoMKgwqDCoMKgwqDCoGlmIChoZWFkZXJfbGVuZ3RoID4gaW5i b3gtPmNoYW4tPnNobWVtX3NpemUgLSBQQ0NfRVhUUkFfTEVOKQo+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBnb3RvIGVycm9yOwo+ICsKPiArwqDCoMKgwqDCoMKgwqBpZiAobWVtY21w KCZwY2NfaGVhZGVyLmNvbW1hbmQsIE1DVFBfU0lHTkFUVVJFLCBNQ1RQX1NJR05BVFVSRV9MRU5H VEgpICE9IDApCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGdvdG8gZXJyb3I7Cj4g Kwo+ICvCoMKgwqDCoMKgwqDCoHNpemUgPSBoZWFkZXJfbGVuZ3RoICsgUENDX0VYVFJBX0xFTjsK PiArwqDCoMKgwqDCoMKgwqBza2IgPSBuZXRkZXZfYWxsb2Nfc2tiKG1jdHBfcGNjX25kZXYtPm5k ZXYsIHNpemUpOwo+ICvCoMKgwqDCoMKgwqDCoGlmICghc2tiKQo+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBnb3RvIGVycm9yOwoKQXMgSSBtZW50aW9uZWQgb24gdjQwLCBzcGFjZSBh ZnRlciB0aGlzLgoKPiArwqDCoMKgwqDCoMKgwqBza2JfcHV0KHNrYiwgc2l6ZSk7Cj4gK8KgwqDC oMKgwqDCoMKgc2tiLT5wcm90b2NvbCA9IGh0b25zKEVUSF9QX01DVFApOwo+ICvCoMKgwqDCoMKg wqDCoG1lbWNweV9mcm9taW8oc2tiLT5kYXRhLCBpbmJveC0+Y2hhbi0+c2htZW0sIHNpemUpOwo+ ICvCoMKgwqDCoMKgwqDCoGRldl9kc3RhdHNfcnhfYWRkKG1jdHBfcGNjX25kZXYtPm5kZXYsIHNp emUpOwo+ICvCoMKgwqDCoMKgwqDCoHNrYl9wdWxsKHNrYiwgc2l6ZW9mKHBjY19oZWFkZXIpKTsK PiArwqDCoMKgwqDCoMKgwqBza2JfcmVzZXRfbWFjX2hlYWRlcihza2IpOwo+ICvCoMKgwqDCoMKg wqDCoHNrYl9yZXNldF9uZXR3b3JrX2hlYWRlcihza2IpOwo+ICvCoMKgwqDCoMKgwqDCoGNiID0g X19tY3RwX2NiKHNrYik7Cj4gK8KgwqDCoMKgwqDCoMKgY2ItPmhhbGVuID0gMDsKPiArwqDCoMKg wqDCoMKgwqBuZXRpZl9yeChza2IpOwo+ICvCoMKgwqDCoMKgwqDCoHJldHVybjsKCkFuZCBvbmUg YWZ0ZXIgdGhpcy4KCj4gK2Vycm9yOgo+ICvCoMKgwqDCoMKgwqDCoGRldl9kc3RhdHNfcnhfZHJv cHBlZChtY3RwX3BjY19uZGV2LT5uZGV2KTsKPiArfQo+ICsKPiArc3RhdGljIG5ldGRldl90eF90 IG1jdHBfcGNjX3R4KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2 KQo+ICt7Cj4gK8KgwqDCoMKgwqDCoMKgc3RydWN0IGFjcGlfcGNjdF9leHRfcGNjX3NoYXJlZF9t ZW1vcnkgKnBjY19oZWFkZXI7Cj4gK8KgwqDCoMKgwqDCoMKgc3RydWN0IG1jdHBfcGNjX25kZXYg Km1wbmQgPSBuZXRkZXZfcHJpdihuZGV2KTsKPiArwqDCoMKgwqDCoMKgwqBpbnQgbGVuID0gc2ti LT5sZW47Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoC8qIENvbnNvbGlkYXRlZCBhIGZyYWdtZW50ZWQg cGFja2V0IGludG8gY29udGlndW91cyBtZW1vcnkgKi8KPiArwqDCoMKgwqDCoMKgwqBpZiAoc2ti X2xpbmVhcml6ZShza2IpKQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBnb3RvIGVy cm9yOwoKWW91IGhhdmUgcmVtb3ZlZCB0aGUgdW5uZWNlc3NhcnkgaXNfbGluZWFyIGNoZWNrLCBi dXQgdGhlIGVudGlyZQpsaW5lYXJpemUgaXMgdW5uZWNlc3NhcnkuIEZyb20gdjM5OgoKICBza2Jf bGluZWFyaXplKCkgYWxyZWFkeSBoYXMgdGhlIHNrYl9pc19ub25saW5lYXIoKSBjaGVjay4KICAK ICBIb3dldmVyLCB5b3UgZG9uJ3QgbmVlZCB0byBjYWxsIHNrYl9saW5lYXJpemUoKSBhbnl3YXks IGFzIHRoYXQgd2lsbAogIGhhcHBlbiBmb3IgeW91IGluIHZhbGlkYXRlX3htaXRfc2tiKCksIHNp bmNlIHRoZSBkcml2ZXIgZG9lcyBub3QKICBhZHZlcnRpc2Ugc3VwcG9ydCBmb3Igbm9ubGluZWFy IHNrYnMuCgo+ICsKPiArwqDCoMKgwqDCoMKgwqBpZiAoc2tiX2Nvd19oZWFkKHNrYiwgc2l6ZW9m KCpwY2NfaGVhZGVyKSkpCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGdvdG8gZXJy b3I7CgouLi4gYW5kLCBpZiB5b3UncmUgZ29pbmcgZm9yIHNwYWNpbmcgdXBkYXRlcywgbWF5IGFz IHdlbGwgZG8gb25lIGhlcmUKdG9vCgo+ICvCoMKgwqDCoMKgwqDCoHBjY19oZWFkZXIgPSBza2Jf cHVzaChza2IsIHNpemVvZigqcGNjX2hlYWRlcikpOwo+ICvCoMKgwqDCoMKgwqDCoHBjY19oZWFk ZXItPnNpZ25hdHVyZSA9IFBDQ19TSUdOQVRVUkUgfCBtcG5kLT5vdXRib3guaW5kZXg7Cj4gK8Kg wqDCoMKgwqDCoMKgcGNjX2hlYWRlci0+ZmxhZ3MgPSBQQ0NfQ01EX0NPTVBMRVRJT05fTk9USUZZ Owo+ICvCoMKgwqDCoMKgwqDCoG1lbWNweSgmcGNjX2hlYWRlci0+Y29tbWFuZCwgTUNUUF9TSUdO QVRVUkUsIE1DVFBfU0lHTkFUVVJFX0xFTkdUSCk7Cj4gK8KgwqDCoMKgwqDCoMKgcGNjX2hlYWRl ci0+bGVuZ3RoID0gbGVuICsgTUNUUF9TSUdOQVRVUkVfTEVOR1RIOwo+ICsKPiArwqDCoMKgwqDC oMKgwqBpZiAobWJveF9zZW5kX21lc3NhZ2UobXBuZC0+b3V0Ym94LmNoYW4tPm1jaGFuLCBza2Ip IDwgMCkgewo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvLyBSZW1vdmUgdGhlIGhl YWRlciBpbiBjYXNlIGl0IGdldHMgc2VudCBhZ2Fpbgo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBza2JfcHVsbChza2IsIHNpemVvZigqcGNjX2hlYWRlcikpOwo+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBuZXRpZl9zdG9wX3F1ZXVlKG5kZXYpOwo+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gTkVUREVWX1RYX0JVU1k7Cj4gK8KgwqDCoMKgwqDC oMKgfQo+ICsKPiArwqDCoMKgwqDCoMKgwqByZXR1cm4gTkVUREVWX1RYX09LOwoKQW5kIGhlcmUu Cgo+ICtlcnJvcjoKPiArwqDCoMKgwqDCoMKgwqBkZXZfZHN0YXRzX3R4X2Ryb3BwZWQobmRldik7 Cj4gK8KgwqDCoMKgwqDCoMKga2ZyZWVfc2tiKHNrYik7Cj4gK8KgwqDCoMKgwqDCoMKgcmV0dXJu IE5FVERFVl9UWF9PSzsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgbWN0cF9wY2NfdHhfcHJlcGFy ZShzdHJ1Y3QgbWJveF9jbGllbnQgKmNsLCB2b2lkICptc3NnKQo+ICt7Cj4gK8KgwqDCoMKgwqDC oMKgc3RydWN0IG1jdHBfcGNjX25kZXYgKm1jdHBfcGNjX25kZXY7Cj4gK8KgwqDCoMKgwqDCoMKg c3RydWN0IG1jdHBfcGNjX21haWxib3ggKm91dGJveDsKPiArwqDCoMKgwqDCoMKgwqBzdHJ1Y3Qg c2tfYnVmZiAqc2tiID0gbXNzZzsKPiArCj4gK8KgwqDCoMKgwqDCoMKgbWN0cF9wY2NfbmRldiA9 IGNvbnRhaW5lcl9vZihjbCwgc3RydWN0IG1jdHBfcGNjX25kZXYsIG91dGJveC5jbGllbnQpOwo+ ICvCoMKgwqDCoMKgwqDCoG91dGJveCA9ICZtY3RwX3BjY19uZGV2LT5vdXRib3g7Cj4gKwo+ICvC oMKgwqDCoMKgwqDCoC8qIFRoZSBQQ0MgTWFpbGJveCB0eXBpY2FsbHkgZG9lcyBub3QgbWFrZSB1 c2Ugb2YgdGhlIG1zc2cgcG9pbnRlcgo+ICvCoMKgwqDCoMKgwqDCoCAqIFRoZSBtY3RwLW92ZXIg cGNjIGRyaXZlciBpcyB0aGUgb25seSBjbGllbnQgdGhhdCB1c2VzIGl0Lgo+ICvCoMKgwqDCoMKg wqDCoCAqIFRoaXMgdmFsdWUgc2hvdWxkIGFsd2F5cyBiZSBub24tbnVsbDsgaXQgaXMgcG9zc2li bGUKPiArwqDCoMKgwqDCoMKgwqAgKiB0aGF0IGEgY2hhbmdlIGluIHRoZSBNYWlsYm94IGxldmVs IHdpbGwgYnJlYWsgdGhhdCBhc3N1bXB0aW9uLgo+ICvCoMKgwqDCoMKgwqDCoCAqLwo+ICvCoMKg wqDCoMKgwqDCoGlmICghc2tiKSB7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoG5l dGRldl93YXJuX29uY2UobWN0cF9wY2NfbmRldi0+bmRldiwKPiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgIiVzIGNhbGxlZCB3 aXRoIG51bGwgbWVzc2FnZS5cbiIsIF9fZnVuY19fKTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgcmV0dXJuOwo+ICvCoMKgwqDCoMKgwqDCoH0KPiArCj4gK8KgwqDCoMKgwqDCoMKg aWYgKHNrYi0+bGVuID4gb3V0Ym94LT5jaGFuLT5zaG1lbV9zaXplKSB7Cj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoGRldl9kc3RhdHNfdHhfZHJvcHBlZChtY3RwX3BjY19uZGV2LT5u ZGV2KTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuOwo+ICvCoMKgwqDC oMKgwqDCoH0KPiArwqDCoMKgwqDCoMKgwqBtZW1jcHlfdG9pbyhvdXRib3gtPmNoYW4tPnNobWVt LCBza2ItPmRhdGEsIHNrYi0+bGVuKTsKPiArCj4gK8KgwqDCoMKgwqDCoMKgLyoKPiArwqDCoMKg wqDCoMKgwqAgKiBUaGlzIHBhY2tldCBjb3VsZCBzdGlsbCBiZSBkcm9wcGVkIGluIHRoZSBQQ0Mg bGF5ZXIsCj4gK8KgwqDCoMKgwqDCoMKgICogQnV0IHRoZSBvbmx5IHBsYWNlIHRoYXQgY291bGQg ZGVhbCB3aXRoIHRoYXQgaXMgbWN0cF9wY2NfdHhfZG9uZS4KPiArwqDCoMKgwqDCoMKgwqAgKiBU aGF0IGlzIGNhbGxlZCBmcm9tIHRoZSBIYXJkLUlSUSBoYW5kbGVyLCBhbmQgaXQgaXMgbm90IHNh ZmUgdG8KPiArwqDCoMKgwqDCoMKgwqAgKiBjYWxsIHN0YXRzIGZ1bmN0aW9ucyBmcm9tIEhBUkQt SVJRIGNvbnRleHQuCj4gK8KgwqDCoMKgwqDCoMKgICovCgpZb3VyIG90aGVyIG9wdGlvbiwgaWYg eW91IHByZWZlciwgaXMgdG8gZG8gYW4gaXJxLXNhZmUgc3RhdHMgdXBkYXRlLgpUaGlzIGlzIGVz c2VudGlhbGx5IG9wZW4tY29kaW5nIGRldl9kc3RhdHNfdHhfYWRkKCksIGJ1dCB1c2luZyB0aGUK aXJxc2F2ZS9pcnFyZXN0b3JlIHZhcmlhbnRzIG9mIGJlZ2luL2VuZC4gU29tZXRoaW5nIGxpa2U6 CgoJc3RydWN0IHBjcHVfZHN0YXRzICpkc3RhdHMgPSB0aGlzX2NwdV9wdHIoZGV2LT5kc3RhdHMp OwoJdW5zaWduZWQgbG9uZyBmbGFnczsKCglmbGFncyA9IHU2NF9zdGF0c191cGRhdGVfYmVnaW5f aXJxc2F2ZSgmZHN0YXRzLT5zeW5jcCk7Cgl1NjRfc3RhdHNfaW5jKCZkc3RhdHMtPnR4X3BhY2tl dHMpOwoJdTY0X3N0YXRzX2FkZCgmZHN0YXRzLT50eF9ieXRlcywgc2tiLT5sZW4pOwoJdTY0X3N0 YXRzX3VwZGF0ZV9lbmRfaXJxcmVzdG9yZSgmZHN0YXRzLT5zeW5jcCwgZmxhZ3MpOwoKKGJ1dCB5 b3VyIGN1cnJlbnQgYXBwcm9hY2ggaXMgb2theSB0b28pCgpDaGVlcnMsCgoKSmVyZW15Cg==