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 21E6A230BD5; Thu, 7 May 2026 03:02:45 +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=1778122968; cv=none; b=FOEjmUMpIrBQIo/U0MUz6WTeAsyI59mLZaYyC2MlKPuVTVV15t0RZl4veV85zd6+3V4xsnDyECEhKAXIu3c/j88P7Tw7qLhSYuZI7/u//p6gGUEAdYCImHqgi1BSRUpPz6sC/SBHZhbE8yiJXdv1HZbjGjmmE581m+leyka7MBM= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778122968; c=relaxed/simple; bh=L2Nt9kI/E40Y9oOdBaBThbSHJ1mhE61SqnkYDUwso4M=; h=Message-ID:Subject:From:To:Cc:Date:In-Reply-To:References: Content-Type:MIME-Version; b=RPzHImoSbosaKSA3Lk8L9yPDfwboRd20B/zqhqkUatAB3X97frUENiaN9+UsEY+HQhd4e1o4NvOC01Ak+sQ5awozSgOq/Tz4+J0QSIp+dFN+vyUKi6e1KKgpLTVleMaNP11GTaxw/x0nJdFv4RnTk+v68k8rhY2QsfpPYdOHR5k= 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=Ws4EChti; 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="Ws4EChti" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=codeconstruct.com.au; s=2022a; t=1778122963; bh=L2Nt9kI/E40Y9oOdBaBThbSHJ1mhE61SqnkYDUwso4M=; h=Subject:From:To:Cc:Date:In-Reply-To:References; b=Ws4EChtivOxi8vYhnfWB29r8url4ec7zCv0vTSYznyQ4lT0x7Wfjm3HyvQfjS2YAN W9aYMH+GwxucThqa25939m1goeOyBq/UXOC3tHYPl4KWOzHbk3aLr9RTWydjy41AID VAhnyZsGdV7iiKmWrxekGUihtHvAsT6xk9P4NLR8W1TAeqy8Dt2oa6TcNf5lwLiumQ xT2JotD0sGZYdhNXtqoXN35byIw9pUzsNSk3WJ8F12Fzz3axYM7mfG+Fbup/vvdqpJ 4PAfhSOJzfh8q1TJ5HrNpzdPfAKIyAehYcxt3umiR8H6aIVE/LZAfJFvz/Fr/Pjia2 OkCscfGwugo1Q== 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 5EA19604AF; Thu, 7 May 2026 11:02:42 +0800 (AWST) Message-ID: <04015745fb7223f6d7dc262ae505daf0272586fb.camel@codeconstruct.com.au> Subject: Re: [net-next v39] 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: Thu, 07 May 2026 11:02:42 +0800 In-Reply-To: <20260506214327.276069-1-admiyo@os.amperecomputing.com> References: <20260506214327.276069-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 SGkgQWRhbSwKCj4gK3N0YXRpYyB2b2lkIG1jdHBfcGNjX2NsaWVudF9yeF9jYWxsYmFjayhzdHJ1 Y3QgbWJveF9jbGllbnQgKmNsLCB2b2lkICptc3NnKQo+ICt7Cj4gK8KgwqDCoMKgwqDCoMKgc3Ry dWN0IGFjcGlfcGNjdF9leHRfcGNjX3NoYXJlZF9tZW1vcnkgcGNjX2hlYWRlcjsKPiArwqDCoMKg wqDCoMKgwqBzdHJ1Y3QgbWN0cF9wY2NfbmRldiAqbWN0cF9wY2NfbmRldjsKPiArwqDCoMKgwqDC oMKgwqBzdHJ1Y3QgbWN0cF9wY2NfbWFpbGJveCAqaW5ib3g7Cj4gK8KgwqDCoMKgwqDCoMKgc3Ry dWN0IG1jdHBfc2tiX2NiICpjYjsKPiArwqDCoMKgwqDCoMKgwqBzdHJ1Y3Qgc2tfYnVmZiAqc2ti Owo+ICvCoMKgwqDCoMKgwqDCoHUzMiBoZWFkZXJfbGVuZ3RoOwo+ICvCoMKgwqDCoMKgwqDCoGlu dCBzaXplOwo+ICsKPiArwqDCoMKgwqDCoMKgwqBtY3RwX3BjY19uZGV2ID0gY29udGFpbmVyX29m KGNsLCBzdHJ1Y3QgbWN0cF9wY2NfbmRldiwgaW5ib3guY2xpZW50KTsKPiArwqDCoMKgwqDCoMKg wqBpbmJveCA9ICZtY3RwX3BjY19uZGV2LT5pbmJveDsKPiArwqDCoMKgwqDCoMKgwqBtZW1jcHlf ZnJvbWlvKCZwY2NfaGVhZGVyLCBpbmJveC0+Y2hhbi0+c2htZW0sIHNpemVvZihwY2NfaGVhZGVy KSk7Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoC8vIFRoZSBtZXNzYWdlIG11c3QgYXQgbGVhc3QgaGF2 ZSB0aGUgUENDIGNvbW1hbmQgaW5kaWNhdGluZyBpdCBpcyBhbiBNQ1RQCj4gK8KgwqDCoMKgwqDC oMKgLy8gbWVzc2FnZSBmb2xsb3dlZCBieSB0aGUgTUNUUCBoZWFkZXIsIG9yIHdlIGhhdmUgYSBt YWxmb3JtZWQgbWVzc2FnZS4KPiArwqDCoMKgwqDCoMKgwqAvLyBUaGlzIG1heSBiZSBydW4gb24g YmlnIGVuZGlhbiBzeXN0ZW0sIGJ1dCB0aGUgZGF0YSBpbiB0aGUgYnVmZmVyIGlzCj4gK8KgwqDC oMKgwqDCoMKgLy8gZXhwbGljaXRseSBsaXR0bGUgZW5kaWFuLgo+ICvCoMKgwqDCoMKgwqDCoGhl YWRlcl9sZW5ndGggPSBsZTMyX3RvX2NwdShwY2NfaGVhZGVyLmxlbmd0aCk7Cj4gK8KgwqDCoMKg wqDCoMKgaWYgKGhlYWRlcl9sZW5ndGggPCBzaXplb2YocGNjX2hlYWRlci5jb21tYW5kKSArIHNp emVvZihzdHJ1Y3QgbWN0cF9oZHIpKSB7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oGRldl9kc3RhdHNfcnhfZHJvcHBlZChtY3RwX3BjY19uZGV2LT5uZGV2KTsKPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuOwo+ICvCoMKgwqDCoMKgwqDCoH0KPiArwqDCoMKg wqDCoMKgwqAvLyBJZiB0aGUgcmVwb3J0ZWQgc2l6ZSBpcyBsYXJnZXIgdGhhbiB0aGUgc2hhcmVk IG1lbW9yeSBtaW51cyBoZWFkZXJzLAo+ICvCoMKgwqDCoMKgwqDCoC8vIHNvbWV0aGluZyBpcyB3 cm9uZyBhbmQgdHJlYXQgdGhlIGJ1ZmZlciBhcyBjb3JydXB0ZWQgZGF0YS4KPiArwqDCoMKgwqDC oMKgwqBpZiAoaGVhZGVyX2xlbmd0aCA+IGluYm94LT5jaGFuLT5zaG1lbV9zaXplIC0gUENDX0VY VFJBX0xFTikgewo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkZXZfZHN0YXRzX3J4 X2Ryb3BwZWQobWN0cF9wY2NfbmRldi0+bmRldik7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoHJldHVybjsKPiArwqDCoMKgwqDCoMKgwqB9Cj4gK8KgwqDCoMKgwqDCoMKgaWYgKG1l bWNtcCgmcGNjX2hlYWRlci5jb21tYW5kLCBNQ1RQX1NJR05BVFVSRSwgTUNUUF9TSUdOQVRVUkVf TEVOR1RIKSAhPSAwKSB7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRldl9kc3Rh dHNfcnhfZHJvcHBlZChtY3RwX3BjY19uZGV2LT5uZGV2KTsKPiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgcmV0dXJuOwo+ICvCoMKgwqDCoMKgwqDCoH0KPiArCj4gK8KgwqDCoMKgwqDC oMKgc2l6ZSA9IGhlYWRlcl9sZW5ndGggKyBQQ0NfRVhUUkFfTEVOOwo+ICvCoMKgwqDCoMKgwqDC oHNrYiA9IG5ldGRldl9hbGxvY19za2IobWN0cF9wY2NfbmRldi0+bmRldiwgc2l6ZSk7Cj4gK8Kg wqDCoMKgwqDCoMKgaWYgKCFza2IpIHsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg ZGV2X2RzdGF0c19yeF9kcm9wcGVkKG1jdHBfcGNjX25kZXYtPm5kZXYpOwo+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm47Cj4gK8KgwqDCoMKgwqDCoMKgfQoKTWlub3IsIGJ1 dCB5b3UgaGF2ZSBmb3VyIGluc3RhbmNlcyBvZiB0aGUgZHN0YXRzX3J4X2Ryb3BwZWQgY2FsbCwg dGhhdAptYXkgd29yayBhcyBhIHNoYXJlZCBlcnJvciBwYXRoLgoKPiArwqDCoMKgwqDCoMKgwqBz a2JfcHV0KHNrYiwgc2l6ZSk7Cj4gK8KgwqDCoMKgwqDCoMKgc2tiLT5wcm90b2NvbCA9IGh0b25z KEVUSF9QX01DVFApOwo+ICvCoMKgwqDCoMKgwqDCoG1lbWNweV9mcm9taW8oc2tiLT5kYXRhLCBp bmJveC0+Y2hhbi0+c2htZW0sIHNpemUpOwo+ICvCoMKgwqDCoMKgwqDCoGRldl9kc3RhdHNfcnhf YWRkKG1jdHBfcGNjX25kZXYtPm5kZXYsIHNpemUpOwo+ICvCoMKgwqDCoMKgwqDCoHNrYl9wdWxs KHNrYiwgc2l6ZW9mKHBjY19oZWFkZXIpKTsKPiArwqDCoMKgwqDCoMKgwqBza2JfcmVzZXRfbWFj X2hlYWRlcihza2IpOwo+ICvCoMKgwqDCoMKgwqDCoHNrYl9yZXNldF9uZXR3b3JrX2hlYWRlcihz a2IpOwo+ICvCoMKgwqDCoMKgwqDCoGNiID0gX19tY3RwX2NiKHNrYik7Cj4gK8KgwqDCoMKgwqDC oMKgY2ItPmhhbGVuID0gMDsKPiArwqDCoMKgwqDCoMKgwqBuZXRpZl9yeChza2IpOwo+ICt9Cj4g Kwo+ICtzdGF0aWMgbmV0ZGV2X3R4X3QgbWN0cF9wY2NfdHgoc3RydWN0IHNrX2J1ZmYgKnNrYiwg c3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpCj4gK3sKPiArwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgYWNw aV9wY2N0X2V4dF9wY2Nfc2hhcmVkX21lbW9yeSAqcGNjX2hlYWRlcjsKPiArwqDCoMKgwqDCoMKg wqBzdHJ1Y3QgbWN0cF9wY2NfbmRldiAqbXBuZCA9IG5ldGRldl9wcml2KG5kZXYpOwo+ICvCoMKg wqDCoMKgwqDCoGludCBsZW4gPSBza2ItPmxlbjsKPiArCj4gK8KgwqDCoMKgwqDCoMKgLyogQ29u c29saWRhdGVkIGEgZnJhZ21lbnRlZCBwYWNrZXQgaW50byBjb250aWd1b3VzIG1lbW9yeSAqLwo+ ICvCoMKgwqDCoMKgwqDCoGlmIChza2JfaXNfbm9ubGluZWFyKHNrYikpIHsKPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKHNrYl9saW5lYXJpemUoc2tiKSkKPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGdvdG8gZXJyb3I7Cj4gK8KgwqDC oMKgwqDCoMKgfQoKc2tiX2xpbmVhcml6ZSgpIGFscmVhZHkgaGFzIHRoZSBza2JfaXNfbm9ubGlu ZWFyKCkgY2hlY2suCgpIb3dldmVyLCB5b3UgZG9uJ3QgbmVlZCB0byBjYWxsIHNrYl9saW5lYXJp emUoKSBhbnl3YXksIGFzIHRoYXQgd2lsbApoYXBwZW4gZm9yIHlvdSBpbiB2YWxpZGF0ZV94bWl0 X3NrYigpLCBzaW5jZSB0aGUgZHJpdmVyIGRvZXMgbm90CmFkdmVydGlzZSBzdXBwb3J0IGZvciBu b25saW5lYXIgc2ticy4KCj4gKwo+ICvCoMKgwqDCoMKgwqDCoGlmIChza2JfY293X2hlYWQoc2ti LCBzaXplb2YoKnBjY19oZWFkZXIpKSkKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg Z290byBlcnJvcjsKPiArCj4gK8KgwqDCoMKgwqDCoMKgLyoqCj4gK8KgwqDCoMKgwqDCoMKgICog VGhpcyBjb2RlIGNvdWxkIHBvdGVudGlhbGx5IGJlIHJ1biBvbiBBIEJpZyBFbmRpYW4KPiArwqDC oMKgwqDCoMKgwqAgKiBTeXN0ZW0uwqAgVGhlIEFDUEkgc3BlY2lmaWNhdGlvbiByZXF1aXJlcyB0 aGF0IHZhbHVlcwo+ICvCoMKgwqDCoMKgwqDCoCAqIGluIHRoZSBzaGFyZWQgYnVmZmVyIGJlIGxp dHRsZSBlbmRpYW4uCj4gK8KgwqDCoMKgwqDCoMKgICovCgpNaW5vciwgYnV0IEkgZG9uJ3QgdGhp bmsgdGhpcyBjb21tZW50IGlzIG5lY2Vzc2FyeS4KCk1vcmUgaW1wb3J0YW50bHkgdGhvdWdoLCB5 b3UncmUgZ2V0dGluZyBhIGJ1bmNoIG9mIHdhcm5pbmdzIGZyb20gdGhlIHVzZQpvZiB0aGVzZSBl bmRpYW4gaGVscGVyczoKCiAgZHJpdmVycy9uZXQvbWN0cC9tY3RwLXBjYy5jOjcwOjI1OiB3YXJu aW5nOiBjYXN0IHRvIHJlc3RyaWN0ZWQgX19sZTMyCiAgZHJpdmVycy9uZXQvbWN0cC9tY3RwLXBj Yy5jOjEyNTozMTogd2FybmluZzogaW5jb3JyZWN0IHR5cGUgaW4gYXNzaWdubWVudCAoZGlmZmVy ZW50IGJhc2UgdHlwZXMpCiAgZHJpdmVycy9uZXQvbWN0cC9tY3RwLXBjYy5jOjEyNTozMTogICAg ZXhwZWN0ZWQgdW5zaWduZWQgaW50IFt1c2VydHlwZV0gc2lnbmF0dXJlCiAgZHJpdmVycy9uZXQv bWN0cC9tY3RwLXBjYy5jOjEyNTozMTogICAgZ290IHJlc3RyaWN0ZWQgX19sZTMyIFt1c2VydHlw ZV0KICBkcml2ZXJzL25ldC9tY3RwL21jdHAtcGNjLmM6MTI2OjI3OiB3YXJuaW5nOiBpbmNvcnJl Y3QgdHlwZSBpbiBhc3NpZ25tZW50IChkaWZmZXJlbnQgYmFzZSB0eXBlcykKICBkcml2ZXJzL25l dC9tY3RwL21jdHAtcGNjLmM6MTI2OjI3OiAgICBleHBlY3RlZCB1bnNpZ25lZCBpbnQgW3VzZXJ0 eXBlXSBmbGFncwogIGRyaXZlcnMvbmV0L21jdHAvbWN0cC1wY2MuYzoxMjY6Mjc6ICAgIGdvdCBy ZXN0cmljdGVkIF9fbGUzMiBbdXNlcnR5cGVdCiAgZHJpdmVycy9uZXQvbWN0cC9tY3RwLXBjYy5j OjEyODoyODogd2FybmluZzogaW5jb3JyZWN0IHR5cGUgaW4gYXNzaWdubWVudCAoZGlmZmVyZW50 IGJhc2UgdHlwZXMpCiAgZHJpdmVycy9uZXQvbWN0cC9tY3RwLXBjYy5jOjEyODoyODogICAgZXhw ZWN0ZWQgdW5zaWduZWQgaW50IFt1c2VydHlwZV0gbGVuZ3RoCiAgZHJpdmVycy9uZXQvbWN0cC9t Y3RwLXBjYy5jOjEyODoyODogICAgZ290IHJlc3RyaWN0ZWQgX19sZTMyIFt1c2VydHlwZV0KCkxv b2tzIGxpa2Ugc3RydWN0IGFjcGlfcGNjdF9leHRfcGNjX3NoYXJlZF9tZW1vcnkgZG9lcyBub3Qg c3BlY2lmeQpmaWVsZHMgYXMgbGl0dGxlIGVuZGlhbiwgYnV0IGhvc3QgZW5kaWFuLgoKWW91IGNv dWxkIGNoYW5nZSB0byBlbmRpYW4tYW5ub3RhdGVkIHR5cGVzIHRvIHRob3NlIEFDUEkgc3RydWN0 cywgYnV0CnRoZXJlIGFyZSBwcm9iYWJseSByZWFzb25zIHdoeSB0aGF0J3Mgbm90IGFscmVhZHkg ZG9uZS4gVGhpcyBtaWdodCBiZSBhbgppbmRpY2F0aW9uIHRoYXQgdGhlcmUgYXJlIG5vIGJpZy1l bmRpYW4gQUNQSSBwbGF0Zm9ybXMsIHNvIHlvdSBkb24ndApuZWVkIHRoZSBlbmRpYW4gY29udmVy c2lvbnM/Cgo+ICvCoMKgwqDCoMKgwqDCoHBjY19oZWFkZXIgPSBza2JfcHVzaChza2IsIHNpemVv ZigqcGNjX2hlYWRlcikpOwo+ICvCoMKgwqDCoMKgwqDCoHBjY19oZWFkZXItPnNpZ25hdHVyZSA9 IGNwdV90b19sZTMyKFBDQ19TSUdOQVRVUkUgfCBtcG5kLT5vdXRib3guaW5kZXgpOwo+ICvCoMKg wqDCoMKgwqDCoHBjY19oZWFkZXItPmZsYWdzID0gY3B1X3RvX2xlMzIoUENDX0NNRF9DT01QTEVU SU9OX05PVElGWSk7Cj4gK8KgwqDCoMKgwqDCoMKgbWVtY3B5KCZwY2NfaGVhZGVyLT5jb21tYW5k LCBNQ1RQX1NJR05BVFVSRSwgTUNUUF9TSUdOQVRVUkVfTEVOR1RIKTsKPiArwqDCoMKgwqDCoMKg wqBwY2NfaGVhZGVyLT5sZW5ndGggPcKgIGNwdV90b19sZTMyKGxlbiArIE1DVFBfU0lHTkFUVVJF X0xFTkdUSCk7Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoGlmIChtYm94X3NlbmRfbWVzc2FnZShtcG5k LT5vdXRib3guY2hhbi0+bWNoYW4sIHNrYikgPCAwKSB7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoC8vIFJlbW92ZSB0aGUgaGVhZGVyIGluIGNhc2UgaXQgZ2V0cyBzZW50IGFnYWlu Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHNrYl9wdWxsKHNrYiwgc2l6ZW9mKCpw Y2NfaGVhZGVyKSk7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoG5ldGlmX3N0b3Bf cXVldWUobmRldik7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiBORVRE RVZfVFhfQlVTWTsKPiArwqDCoMKgwqDCoMKgwqB9Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoHJldHVy biBORVRERVZfVFhfT0s7Cj4gK2Vycm9yOgo+ICvCoMKgwqDCoMKgwqDCoGRldl9kc3RhdHNfdHhf ZHJvcHBlZChuZGV2KTsKPiArwqDCoMKgwqDCoMKgwqBrZnJlZV9za2Ioc2tiKTsKPiArwqDCoMKg wqDCoMKgwqByZXR1cm4gTkVUREVWX1RYX09LOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBtY3Rw X3BjY190eF9wcmVwYXJlKHN0cnVjdCBtYm94X2NsaWVudCAqY2wsIHZvaWQgKm1zc2cpCj4gK3sK PiArwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgbWN0cF9wY2NfbmRldiAqbWN0cF9wY2NfbmRldjsKPiAr wqDCoMKgwqDCoMKgwqBzdHJ1Y3QgbWN0cF9wY2NfbWFpbGJveCAqb3V0Ym94Owo+ICvCoMKgwqDC oMKgwqDCoHN0cnVjdCBza19idWZmICpza2IgPSBtc3NnOwo+ICsKPiArwqDCoMKgwqDCoMKgwqBt Y3RwX3BjY19uZGV2ID0gY29udGFpbmVyX29mKGNsLCBzdHJ1Y3QgbWN0cF9wY2NfbmRldiwgb3V0 Ym94LmNsaWVudCk7Cj4gK8KgwqDCoMKgwqDCoMKgb3V0Ym94ID0gJm1jdHBfcGNjX25kZXYtPm91 dGJveDsKPiArCj4gK8KgwqDCoMKgwqDCoMKgLyogVGhlIFBDQyBNYWlsYm94IHR5cGljYWxseSBk b2VzIG5vdCBtYWtlIHVzZSBvZiB0aGUgbXNzZyBwb2ludGVyCj4gK8KgwqDCoMKgwqDCoMKgICog VGhlIG1jdHAtb3ZlciBwY2MgZHJpdmVyIGlzIHRoZSBvbmx5IGNsaWVudCB0aGF0IHVzZXMgaXQu Cj4gK8KgwqDCoMKgwqDCoMKgICogVGhpcyB2YWx1ZSBzaG91bGQgYWx3YXlzIGJlIG5vbi1udWxs OyBpdCBpcyBwb3NzaWJsZQo+ICvCoMKgwqDCoMKgwqDCoCAqIHRoYXQgYSBjaGFuZ2UgaW4gdGhl IE1haWxib3ggbGV2ZWwgd2lsbCBicmVhayB0aGF0IGFzc3VtcHRpb24uCj4gK8KgwqDCoMKgwqDC oMKgICovCj4gK8KgwqDCoMKgwqDCoMKgaWYgKCFza2IpIHsKPiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgV0FSTl9PTkNFKCFza2IsICIlcyBjYWxsZWQgd2l0aCBudWxsIG1lc3NhZ2Uu XG4iLCBfX2Z1bmNfXyk7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybjsK PiArwqDCoMKgwqDCoMKgwqB9CgpJJ2Qgc3VnZ2VzdCBuZXRkZXZfd2Fybl9vbmNlKCksIHNvIHdl IGtub3cgd2hpY2ggZGV2aWNlIGlzIGNhdXNpbmcgdGhpcy4KCj4gKwo+ICvCoMKgwqDCoMKgwqDC oGlmIChza2ItPmxlbiA+IG91dGJveC0+Y2hhbi0+c2htZW1fc2l6ZSkgewo+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBkZXZfZHN0YXRzX3R4X2Ryb3BwZWQobWN0cF9wY2NfbmRldi0+ bmRldik7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybjsKPiArwqDCoMKg wqDCoMKgwqB9Cj4gK8KgwqDCoMKgwqDCoMKgbWVtY3B5X3RvaW8ob3V0Ym94LT5jaGFuLT5zaG1l bSzCoCBza2ItPmRhdGEsIHNrYi0+bGVuKTsKClN1cGVyIG1pbm9yOiBkb3VibGUgc3BhY2UgYmVm b3JlIHNrYi0+ZGF0YSB0aGVyZS4KCj4gK8KgwqDCoMKgwqDCoMKgZGV2X2RzdGF0c190eF9hZGQo bWN0cF9wY2NfbmRldi0+bmRldiwgc2tiLT5sZW4pOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBt Y3RwX3BjY190eF9kb25lKHN0cnVjdCBtYm94X2NsaWVudCAqYywgdm9pZCAqbXNzZywgaW50IHIp Cj4gK3sKPiArwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgbWN0cF9wY2NfbmRldiAqbWN0cF9wY2NfbmRl djsKPiArwqDCoMKgwqDCoMKgwqBzdHJ1Y3Qgc2tfYnVmZiAqc2tiID0gbXNzZzsKPiArCj4gK8Kg wqDCoMKgwqDCoMKgLyoKPiArwqDCoMKgwqDCoMKgwqAgKiBJZiB0aGVyZSBpcyBhIHBhY2tldCBp biBmbGlnaHQgZHVyaW5nIGRyaXZlciBjbGVhbnVwCj4gK8KgwqDCoMKgwqDCoMKgICogSXQgbWF5 IGhhdmUgYmVlbiBmcmVlZCBhbHJlYWR5Lgo+ICvCoMKgwqDCoMKgwqDCoCAqLwo+ICvCoMKgwqDC oMKgwqDCoGlmICghbXNzZykKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJu Owo+ICvCoMKgwqDCoMKgwqDCoC8qCj4gK8KgwqDCoMKgwqDCoMKgICogSWYgdGhlIHJldHVybiBj b2RlIGlzIG5vbi16ZXJvLCB3ZSBzaG91bGQgbm90IHJlcG9ydCB0aGUgcGFja2V0Cj4gK8KgwqDC oMKgwqDCoMKgICogYXMgdHJhbnNtaXR0ZWQuwqAgSG93ZXZlciwgd2UgYXJlIGluIElSUSBjb250 ZXh0IHJpZ2h0IG5vdywgYW5kIHdlCj4gK8KgwqDCoMKgwqDCoMKgICogY2Fubm90IHNhZmVseSB3 cml0ZSB0cmFuc21pc3Npb24gc3RhdGlzdGljcy4KPiArwqDCoMKgwqDCoMKgwqAgKi8KClRoaXMg cmVhZHMgYXMgaWYgeW91J3JlIG5vdCB1cGRhdGluZyBzdGF0cyBhdCBhbGwsIGJ1dCB5b3UgZG8g c28gaW4KbWN0cF9wY2NfdHhfcHJlcGFyZSgpLiBJIGRvbid0IHRoaW5rIHRoaXMgY29tbWVudCBp cyBuZWNlc3NhcnkgLSBpZgp5b3UgcmVhbGx5IHdhbnQgdG8gbWVudGlvbiB0aGlzLCBhZGQgYSBj b21tZW50IG9uIHRoZQpkZXZfZHN0YXRzX3R4X2FkZCgpIHRvIGluZGljYXRlIHdoeSB5b3UncmUg Y2FsbGluZyBpdCBlYXJseS4KCj4gK8KgwqDCoMKgwqDCoMKgbWN0cF9wY2NfbmRldiA9IGNvbnRh aW5lcl9vZihjLCBzdHJ1Y3QgbWN0cF9wY2NfbmRldiwgb3V0Ym94LmNsaWVudCk7Cj4gK8KgwqDC oMKgwqDCoMKgZGV2X2NvbnN1bWVfc2tiX2FueShza2IpOwo+ICvCoMKgwqDCoMKgwqDCoG5ldGlm X3dha2VfcXVldWUobWN0cF9wY2NfbmRldi0+bmRldik7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQg bWN0cF9wY2Nfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqbmRldikKPiArewo+ICvCoMKgwqDCoMKg wqDCoHN0cnVjdCBtY3RwX3BjY19uZGV2ICptY3RwX3BjY19uZGV2ID0gbmV0ZGV2X3ByaXYobmRl dik7Cj4gK8KgwqDCoMKgwqDCoMKgc3RydWN0IG1jdHBfcGNjX21haWxib3ggKm91dGJveCwgKmlu Ym94Owo+ICsKPiArwqDCoMKgwqDCoMKgwqBvdXRib3ggPSAmbWN0cF9wY2NfbmRldi0+b3V0Ym94 Owo+ICvCoMKgwqDCoMKgwqDCoGluYm94ID0gJm1jdHBfcGNjX25kZXYtPmluYm94Owo+ICsKPiAr wqDCoMKgwqDCoMKgwqBvdXRib3gtPmNoYW4gPSBwY2NfbWJveF9yZXF1ZXN0X2NoYW5uZWwoJm91 dGJveC0+Y2xpZW50LCBvdXRib3gtPmluZGV4KTsKPiArwqDCoMKgwqDCoMKgwqBpZiAoSVNfRVJS KG91dGJveC0+Y2hhbikpCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiBQ VFJfRVJSKG91dGJveC0+Y2hhbik7Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoGlmIChvdXRib3gtPmNo YW4tPnNobWVtX3NpemXCoCA8wqAgTUNUUF9QQ0NfTUlOX1NJWkUpIHsKCk1pbm9yOiBvZGQgc3Bh Y2luZyBoZXJlLgoKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcGNjX21ib3hfZnJl ZV9jaGFubmVsKG91dGJveC0+Y2hhbik7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oHJldHVybiAtRUlOVkFMOwo+ICvCoMKgwqDCoMKgwqDCoH0KPiArCj4gK8KgwqDCoMKgwqDCoMKg aW5ib3gtPmNsaWVudC5yeF9jYWxsYmFjayA9IG1jdHBfcGNjX2NsaWVudF9yeF9jYWxsYmFjazsK PiArwqDCoMKgwqDCoMKgwqBpbmJveC0+Y2hhbiA9IHBjY19tYm94X3JlcXVlc3RfY2hhbm5lbCgm aW5ib3gtPmNsaWVudCwgaW5ib3gtPmluZGV4KTsKPiArwqDCoMKgwqDCoMKgwqBpZiAoSVNfRVJS KGluYm94LT5jaGFuKSkgewo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBwY2NfbWJv eF9mcmVlX2NoYW5uZWwob3V0Ym94LT5jaGFuKTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgcmV0dXJuIFBUUl9FUlIoaW5ib3gtPmNoYW4pOwo+ICvCoMKgwqDCoMKgwqDCoH0KPiAr wqDCoMKgwqDCoMKgwqBpZiAoaW5ib3gtPmNoYW4tPnNobWVtX3NpemUgPCBNQ1RQX1BDQ19NSU5f U0laRSkgewo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBwY2NfbWJveF9mcmVlX2No YW5uZWwob3V0Ym94LT5jaGFuKTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcGNj X21ib3hfZnJlZV9jaGFubmVsKGluYm94LT5jaGFuKTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgcmV0dXJuIC1FSU5WQUw7Cj4gK8KgwqDCoMKgwqDCoMKgfQo+ICvCoMKgwqDCoMKg wqDCoHJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IG1jdHBfcGNjX3N0b3Aoc3RydWN0 IG5ldF9kZXZpY2UgKm5kZXYpCj4gK3sKPiArwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgbWN0cF9wY2Nf bmRldiAqbWN0cF9wY2NfbmRldjsKPiArwqDCoMKgwqDCoMKgwqB1bnNpZ25lZCBpbnQgY291bnQs IGlkeDsKPiArwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgbWJveF9jaGFuICpjaGFuOwo+ICvCoMKgwqDC oMKgwqDCoHN0cnVjdCBza19idWZmICpza2I7Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoG1jdHBfcGNj X25kZXYgPSBuZXRkZXZfcHJpdihuZGV2KTsKPiArwqDCoMKgwqDCoMKgwqBjaGFuID0gbWN0cF9w Y2NfbmRldi0+b3V0Ym94LmNoYW4tPm1jaGFuOwo+ICvCoMKgwqDCoMKgwqDCoHBjY19tYm94X2Zy ZWVfY2hhbm5lbChtY3RwX3BjY19uZGV2LT5pbmJveC5jaGFuKTsKPiArwqDCoMKgwqDCoMKgwqBz Y29wZWRfZ3VhcmQoc3BpbmxvY2tfaXJxc2F2ZSwgJmNoYW4tPmxvY2spIHsKPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgc2tiID0gY2hhbi0+YWN0aXZlX3JlcTsKPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgY2hhbi0+YWN0aXZlX3JlcSA9IE5VTEw7Cj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmIChza2IpIHsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRldl9kc3RhdHNfdHhfZHJvcHBlZChuZGV2KTsKPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRldl9jb25zdW1l X3NrYl9hbnkoc2tiKTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfQo+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB3aGlsZSAoY2hhbi0+bXNnX2NvdW50ID4gMCkgewo+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY291bnQgPSBj aGFuLT5tc2dfY291bnQ7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBpZHggPSBjaGFuLT5tc2dfZnJlZTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmIChpZHggPj0gY291bnQpCj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWR4IC09IGNv dW50Owo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZWxz ZQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoGlkeCArPSBNQk9YX1RYX1FVRVVFX0xFTiAtIGNvdW50Owo+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc2tiID0gY2hhbi0+bXNnX2RhdGFb aWR4XTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRl dl9kc3RhdHNfdHhfZHJvcHBlZChuZGV2KTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoGRldl9jb25zdW1lX3NrYl9hbnkoc2tiKTsKPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNoYW4tPm1zZ19jb3VudC0tOwo+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9Cj4gK8KgwqDCoMKgwqDCoMKgfQoKSSdt IGdvaW5nIHRvIGFzc3VtZSB0aGlzIGlzIGFsbCBPSyB3aXRoIHJlc3BlY3QgdG8gUENDIGNoYW5u ZWwgYWN0aXZpdHkuCgo+ICvCoMKgwqDCoMKgwqDCoHBjY19tYm94X2ZyZWVfY2hhbm5lbChtY3Rw X3BjY19uZGV2LT5vdXRib3guY2hhbik7Cj4gK8KgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gK30K PiArCj4gK3N0YXRpYyBpbnQgbWN0cF9wY2NfY2hhbmdlX210dShzdHJ1Y3QgbmV0X2RldmljZSAq ZGV2LCBpbnQgbmV3X210dSkKPiArewo+ICvCoMKgwqDCoMKgwqDCoGlmIChuZXdfbXR1ID4gZGV2 LT5tYXhfbXR1KQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gLUVJTlZB TDsKPiArwqDCoMKgwqDCoMKgwqBpZiAobmV3X210dSA8IE1DVFBfTUlOX01UVSkKPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIC1FSU5WQUw7Cj4gK8KgwqDCoMKgwqDCoMKg cmV0dXJuIDA7Cj4gK30KClRoZSBjb3JlIGFscmVhZHkgZG9lcyB0aGVzZSBjaGVja3MsIEkgZG9u J3QgdGhpbmsgeW91IG5lZWQgYQpuZG9fY2hhbmdlX210dSBjYWxsYmFjayBhdCBhbGwuCgpDaGVl cnMsCgoKSmVyZW15Cg==