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 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 2F77AC5AE49 for ; Fri, 20 Feb 2026 19:55:10 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References: Message-ID:Subject:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=qVILohPQaEEwOiNbCctGXTe/wzUfFw9GKcBYa9DqoVw=; b=oHIXyENfAHSNSV CH2jW2WKq3s9v5EsrpZm6o+kq/GLpsb61M2rTK45ztcOeGBt+Y/1tBVUInP9ukOqPRFs0F3xeEo7N xcKN8KTkQk9mZfQnZCWfuBtb0udw6iLibZGuc08IK62yL+mhWGNGccqOO+JCLcZt5Q4AvHYfG9Cch AQe/z7TPB4Mwyvzpde1q9pQGjICXA7Lile3W9/qd+J4TKdQ/XHoRyovWKR/w+toZIyF1U66wD9WmF h2JJ4YumYhg0+tQOZrCOIkBiKLuup9MQ2v2A8hhw3xBzLhDJlmgHgDlQuIhNtxD8yBX3DCWDRPBO6 hwX0jDgxGnwi1SdGXmEA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1vtWac-0000000FXbv-48a6; Fri, 20 Feb 2026 19:55:02 +0000 Received: from sea.source.kernel.org ([2600:3c0a:e001:78e:0:1991:8:25]) by bombadil.infradead.org with esmtps (Exim 4.98.2 #2 (Red Hat Linux)) id 1vtWaa-0000000FXb9-3lcm for linux-riscv@lists.infradead.org; Fri, 20 Feb 2026 19:55:02 +0000 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by sea.source.kernel.org (Postfix) with ESMTP id D6DA743A15; Fri, 20 Feb 2026 19:54:58 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id E4341C116C6; Fri, 20 Feb 2026 19:54:57 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1771617298; bh=G8bBEO/g8w7OleXjDK76ZPJ7XfuuZF81p9PP5s2xJGw=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=EbWQ4DZrULRIpfj3CJM7KKV//fsDC8CLhHmiPL0HturNAqFKrFk527trkEU6xhW2f w3SwTGScz1OkFw/9wovoXiC5e/95USuL7WrS9naQxcnv9wrrTqtb/IlHaGMsSezJhm br/QmCkRWyndpOzfSqun5kQUylX2CtCuiuK7FT2+5dCG3hjC1sJ8nNnSFugHlLq2Ht TZ9igfItIvo0leyV6QSa6cea+Ij6FrmhLbopseM+g86V9TQ0DtTZ+E5I37+aJQhFf2 JxupJktMKVQw45FKa3v1BaBYGIxB1QcTI+GrKklrwf6jKjr3cLj4fTR2h2gbQPwZ4D COnH7NWf35U8g== Date: Fri, 20 Feb 2026 11:54:56 -0800 From: Drew Fustini To: yunhui cui Subject: Re: [External] [PATCH RFC v2 08/17] RISC-V: QoS: add resctrl interface for CBQRI controllers Message-ID: References: <20260128-ssqosid-cbqri-v2-0-dca586b091b9@kernel.org> <20260128-ssqosid-cbqri-v2-8-dca586b091b9@kernel.org> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20260220_115500_982425_0CDDB9CC X-CRM114-Status: GOOD ( 35.78 ) X-BeenThere: linux-riscv@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Atish Patra , Adrien Ricciardi , Atish Kumar Patra , Conor Dooley , Nicolas Pitre , devicetree@vger.kernel.org, Liu Zhiwei , guo.wenjia23@zte.com.cn, linux-riscv@lists.infradead.org, Rob Herring , Peter Newman , x86@kernel.org, acpica-devel@lists.linux.dev, Robert Moore , liu.qingtao2@zte.com.cn, linux-acpi@vger.kernel.org, Ben Horgan , James Morse , Radim =?utf-8?B?S3LEjW3DocWZ?= , Dave Martin , Len Brown , Fenghua Yu , Chen Pei , Albert Ou , Kornel =?utf-8?Q?Dul=C4=99ba?= , Babu Moger , Weiwei Li , Paul Walmsley , Ved Shanbhogue , Reinette Chatre , Vasudevan Srinivasan , Tony Luck , Alexandre Ghiti , linux-kernel@vger.kernel.org, Samuel Holland , Krzysztof Kozlowski , Palmer Dabbelt , "Rafael J. Wysocki" , Paul Walmsley Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-riscv" Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org T24gTW9uLCBGZWIgMDIsIDIwMjYgYXQgMTI6MTI6MjhQTSArMDgwMCwgeXVuaHVpIGN1aSB3cm90 ZToKPiBIaSBEcmV3LAoKSGksIHRoYW5rcyBmb3IgeW91ciByZXZpZXcsIHNvcnJ5IEkgaGFkIHRo aXMgcmVwbHkgaW4gZHJhZnQgZm9yIGF3aGlsZQphbmQgZmFpbGVkIHRvIGFjdHVhbGx5IHNlbmQg aXQuIEFsbCBnb29kIHBvaW50cyBmcm9tIHlvdSBhbmQgSSd2ZSBiZWVuCndvcmtpbmcgb24gZml4 aW5nIHVwIHRoZSBjb2RlLgoKPiBPbiBUaHUsIEphbiAyOSwgMjAyNiBhdCA0OjI44oCvQU0gRHJl dyBGdXN0aW5pIDxmdXN0aW5pQGtlcm5lbC5vcmc+IHdyb3RlOgo+ID4KPiA+IEFkZCBpbnRlcmZh Y2UgZm9yIENCUVJJIGNvbnRyb2xsZXIgZHJpdmVycyB0byBtYWtlIHVzZSBvZiB0aGUgcmVzY3Ry bAo+ID4gZmlsZXN5c3RlbS4KPiA+Cj4gPiBDby1kZXZlbG9wZWQtYnk6IEFkcmllbiBSaWNjaWFy ZGkgPGFyaWNjaWFyZGlAYmF5bGlicmUuY29tPgo+ID4gU2lnbmVkLW9mZi1ieTogQWRyaWVuIFJp Y2NpYXJkaSA8YXJpY2NpYXJkaUBiYXlsaWJyZS5jb20+Cj4gPiBTaWduZWQtb2ZmLWJ5OiBEcmV3 IEZ1c3RpbmkgPGZ1c3RpbmlAa2VybmVsLm9yZz4KPiA+IC0tLQo+ID4gIGFyY2gvcmlzY3Yva2Vy bmVsL3Fvcy9xb3NfcmVzY3RybC5jIHwgMTE5MiArKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKwo+ID4gIDEgZmlsZSBjaGFuZ2VkLCAxMTkyIGluc2VydGlvbnMoKykKPiA+Cj4gPiBk aWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9rZXJuZWwvcW9zL3Fvc19yZXNjdHJsLmMgYi9hcmNoL3Jp c2N2L2tlcm5lbC9xb3MvcW9zX3Jlc2N0cmwuYwo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiA+ IGluZGV4IDAwMDAwMDAwMDAwMC4uZDUwMDA5ODU5OWQyCj4gPiAtLS0gL2Rldi9udWxsCj4gPiAr KysgYi9hcmNoL3Jpc2N2L2tlcm5lbC9xb3MvcW9zX3Jlc2N0cmwuYwo+ID4gQEAgLTAsMCArMSwx MTkyIEBACj4gPiArLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seQo+ID4g Kwo+ID4gKyNkZWZpbmUgcHJfZm10KGZtdCkgInFvczogcmVzY3RybDogIiBmbXQKPiA+ICsKPiA+ ICsjaW5jbHVkZSA8bGludXgvc2xhYi5oPgo+ID4gKyNpbmNsdWRlIDxsaW51eC9lcnIuaD4KPiA+ ICsjaW5jbHVkZSA8bGludXgvcmlzY3ZfcW9zLmg+Cj4gPiArI2luY2x1ZGUgPGxpbnV4L3Jlc2N0 cmwuaD4KPiA+ICsjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KPiA+ICsjaW5jbHVkZSA8YXNtL2Nz ci5oPgo+ID4gKyNpbmNsdWRlIDxhc20vcW9zLmg+Cj4gPiArI2luY2x1ZGUgImludGVybmFsLmgi Cj4gPiArCj4gPiArI2RlZmluZSBNQVhfQ09OVFJPTExFUlMgNgo+ID4gK3N0YXRpYyBzdHJ1Y3Qg Y2JxcmlfY29udHJvbGxlciBjb250cm9sbGVyc1tNQVhfQ09OVFJPTExFUlNdOwo+IAo+IFN3aXRj aCB0byBkeW5hbWljIGFsbG9jYXRpb24/IFJlbW92ZSBNQVhfQ09OVFJPTExFUlMuCgpZZXMsIEkg YW0gcmV3b3JraW5nIHRoZSBpbXBsZW1lbnRhdGlvbiB0byBkeW5hbWljYWxseSBhbGxvY2F0ZSB0 aGUKY2JxcmlfY29udHJvbGxlciBhcnJheSBiYXNlZCBvbiB0aGUgbnVtYmVyIG9mIGNvbnRyb2xs ZXJzIGFjdHVhbGx5IGluCnRoZSBzeXN0ZW0uCgo+ID4gK2ludCByZXNjdHJsX2FyY2hfcm1pZF9y ZWFkKHN0cnVjdCByZHRfcmVzb3VyY2UgKnIsIHN0cnVjdCByZHRfbW9uX2RvbWFpbiAqZCwKPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgIHUzMiBjbG9zaWQsIHUzMiBybWlkLCBlbnVtIHJl c2N0cmxfZXZlbnRfaWQgZXZlbnRpZCwKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgIHU2 NCAqdmFsLCB2b2lkICphcmNoX21vbl9jdHgpCj4gPiArewo+ID4gKyAgICAgICAvKgo+ID4gKyAg ICAgICAgKiBUaGUgY3VycmVudCBRZW11IGltcGxlbWVudGF0aW9uIG9mIENCUVJJIGNhcGFjaXR5 IGFuZCBiYW5kd2lkdGgKPiA+ICsgICAgICAgICogY29udHJvbGxlcnMgZG8gbm90IGVtdWxhdGUg dGhlIHV0aWxpemF0aW9uIG9mIHJlc291cmNlcyBvdmVyCj4gPiArICAgICAgICAqIHRpbWUuIFRo ZXJlZm9yZSwgUWVtdSBjdXJyZW50bHkgc2V0cyB0aGUgaW52YWxpZCBiaXQgaW4KPiA+ICsgICAg ICAgICogY2NfbW9uX2N0cl92YWwgYW5kIGJjX21vbl9jdHJfdmFsLCBhbmQgdGhlcmUgaXMgbm8g bWVhbmluZ2Z1bAo+ID4gKyAgICAgICAgKiB2YWx1ZSBvdGhlciB0aGFuIDAgdG8gcmV0dXJuIGZv ciByZWFkaW5nIGFuIFJNSUQgKGUuZy4gTUNJRCBpbgo+ID4gKyAgICAgICAgKiBDQlFSSSB0ZXJt aW5vbG9neSkKPiA+ICsgICAgICAgICovCj4gPiArCj4gPiArICAgICAgIHJldHVybiAwOwo+IAo+ IEltcGxlbWVudCBwZXIgdGhlIHNwZWMncyBkZXNjcmlwdGlvbiBkaXJlY3RseSwgbm90IGFzIHRo aXMgY29tbWVudCBzdGF0ZXM/CgpHb29kIHBvaW50IHRoYXQgdGhpcyBzaG91bGQgYWN0dWFsbHkg cGVyZm9ybSB0aGUgb3BlcmF0aW9uIHRvIHJlYWQgdGhlCnZhbHVlLCBldmVuIGlmIFFlbXUgaXMg anVzdCBzZXR0aW5nIHRoZSBpbnZhbGlkIGJpdCBhcyB0aGVyZSBpcyBubyByZWFsCnZhbHVlIGlt cGxlbWVudGVkIGluIFFlbXUuCgo+ID4gKy8qCj4gPiArICogTm90ZTogZm9yIHRoZSBwdXJwb3Nl cyBvZiB0aGUgQ0JRUkkgcHJvb2Ytb2YtY29uY2VwdCwgZGVidWcgbG9nZ2luZwo+ID4gKyAqIGhh cyBiZWVuIGxlZnQgaW4gdGhpcyBmdW5jdGlvbiB0aGF0IGRldGVjdHMgdGhlIHByb3BlcnRpZXMg b2YgQ0JRUkkKPiA+ICsgKiBjYXBhYmxlIGNvbnRyb2xsZXJzIGluIHRoZSBzeXN0ZW0uIHByX2lu Zm8gY2FsbHMgd291bGQgYmUgcmVtb3ZlZAo+ID4gKyAqIGJlZm9yZSBzdWJtaXR0aW5nIG5vbi1S RkMgcGF0Y2hlcy4KPiA+ICsgKi8KPiA+ICtzdGF0aWMgaW50IGNicXJpX3Byb2JlX2NvbnRyb2xs ZXIoc3RydWN0IGNicXJpX2NvbnRyb2xsZXJfaW5mbyAqY3RybF9pbmZvLAo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjYnFyaV9jb250cm9sbGVyICpjdHJsKQo+ ID4gK3sKPiA+ICsgICAgICAgaW50IGVyciA9IDAsIHN0YXR1czsKPiA+ICsgICAgICAgdTY0IHJl ZzsKPiA+ICsKPiA+ICsgICAgICAgcHJfaW5mbygiY29udHJvbGxlciBpbmZvOiB0eXBlPSVkIGFk ZHI9MHglbHggc2l6ZT0lbHUgbWF4LXJjaWQ9JXUgbWF4LW1jaWQ9JXUiLAo+ID4gKyAgICAgICAg ICAgICAgIGN0cmxfaW5mby0+dHlwZSwgY3RybF9pbmZvLT5hZGRyLCBjdHJsX2luZm8tPnNpemUs Cj4gPiArICAgICAgICAgICAgICAgY3RybF9pbmZvLT5yY2lkX2NvdW50LCBjdHJsX2luZm8tPm1j aWRfY291bnQpOwo+ID4gKwo+ID4gKyAgICAgICAvKiBtYXhfcm1pZCBpcyB1c2VkIGJ5IHJlc2N0 cmxfYXJjaF9zeXN0ZW1fbnVtX3JtaWRfaWR4KCkgKi8KPiA+ICsgICAgICAgbWF4X3JtaWQgPSBj dHJsX2luZm8tPm1jaWRfY291bnQ7Cj4gCj4gR2V0IHRoZSBtaW4gb2YgYWxsIGNvbnRyb2xsZXJz PwoKWWVzLCBJIHdpbGwgY2hhbmdlIHRoZSBsb2dpYyB0byBkbyB0aGF0LgoKPiA+ICtzdGF0aWMg aW50IHFvc19pbml0X2RvbWFpbl9jdHJsdmFsKHN0cnVjdCByZHRfcmVzb3VyY2UgKnIsIHN0cnVj dCByZHRfY3RybF9kb21haW4gKmQpCj4gPiArewo+ID4gKyAgICAgICBzdHJ1Y3QgY2JxcmlfcmVz Y3RybF9yZXMgKmh3X3JlczsKPiA+ICsgICAgICAgc3RydWN0IGNicXJpX3Jlc2N0cmxfZG9tICpo d19kb207Cj4gPiArICAgICAgIHU2NCAqZGM7Cj4gPiArICAgICAgIGludCBlcnIgPSAwOwo+ID4g KyAgICAgICBpbnQgaTsKPiA+ICsKPiA+ICsgICAgICAgaHdfcmVzID0gY29udGFpbmVyX29mKHIs IHN0cnVjdCBjYnFyaV9yZXNjdHJsX3JlcywgcmVzY3RybF9yZXMpOwo+ID4gKyAgICAgICBpZiAo IWh3X3JlcykKPiA+ICsgICAgICAgICAgICAgICByZXR1cm4gLUVOT01FTTsKPiA+ICsKPiA+ICsg ICAgICAgaHdfZG9tID0gY29udGFpbmVyX29mKGQsIHN0cnVjdCBjYnFyaV9yZXNjdHJsX2RvbSwg cmVzY3RybF9jdHJsX2RvbSk7Cj4gPiArICAgICAgIGlmICghaHdfZG9tKQo+ID4gKyAgICAgICAg ICAgICAgIHJldHVybiAtRU5PTUVNOwo+ID4gKwo+ID4gKyAgICAgICBkYyA9IGttYWxsb2NfYXJy YXkoaHdfcmVzLT5tYXhfcmNpZCwgc2l6ZW9mKCpod19kb20tPmN0cmxfdmFsKSwKPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgIEdGUF9LRVJORUwpOwo+ID4gKyAgICAgICBpZiAoIWRjKQo+ ID4gKyAgICAgICAgICAgICAgIHJldHVybiAtRU5PTUVNOwo+ID4gKwo+ID4gKyAgICAgICBod19k b20tPmN0cmxfdmFsID0gZGM7Cj4gPiArCj4gPiArICAgICAgIGZvciAoaSA9IDA7IGkgPCBod19y ZXMtPm1heF9yY2lkOyBpKyssIGRjKyspIHsKPiA+ICsgICAgICAgICAgICAgICBlcnIgPSByZXNj dHJsX2FyY2hfdXBkYXRlX29uZShyLCBkLCBpLCAwLCByZXNjdHJsX2dldF9kZWZhdWx0X2N0cmwo cikpOwo+ID4gKyAgICAgICAgICAgICAgIGlmIChlcnIpCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICByZXR1cm4gMDsKPiAKPiByZXR1cm4gMCA/CgpBaCwgeWVzLCBJIHdpbGwgdXBkYXRlIHRv IHJldHVybiBlcnJvciBpbnN0ZWFkIG9mIHNpbGVuY2luZyBpdC4KCj4gPiArc3RhdGljIGludCBx b3NfcmVzY3RybF9hZGRfY29udHJvbGxlcl9kb21haW4oc3RydWN0IGNicXJpX2NvbnRyb2xsZXIg KmN0cmwsIGludCAqaWQpCj4gPiArewo+ID4gKyAgICAgICBzdHJ1Y3QgcmR0X2N0cmxfZG9tYWlu ICpkb21haW4gPSBOVUxMOwo+ID4gKyAgICAgICBzdHJ1Y3QgY2JxcmlfcmVzY3RybF9yZXMgKmNi cXJpX3JlcyA9IE5VTEw7Cj4gPiArICAgICAgIHN0cnVjdCByZHRfcmVzb3VyY2UgKnJlcyA9IE5V TEw7Cj4gPiArICAgICAgIGludCBpbnRlcm5hbF9pZCA9ICppZDsKPiA+ICsgICAgICAgaW50IGVy ciA9IDA7Cj4gPiArCj4gPiArICAgICAgIGRvbWFpbiA9IHFvc19uZXdfZG9tYWluKGN0cmwpOwo+ ID4gKyAgICAgICBpZiAoIWRvbWFpbikKPiA+ICsgICAgICAgICAgICAgICByZXR1cm4gLUVOT1NQ QzsKPiA+ICsgICAgICAgaWYgKGN0cmwtPmN0cmxfaW5mby0+dHlwZSA9PSBDQlFSSV9DT05UUk9M TEVSX1RZUEVfQ0FQQUNJVFkpIHsKPiA+ICsgICAgICAgICAgICAgICBjcHVtYXNrX2NvcHkoJmRv bWFpbi0+aGRyLmNwdV9tYXNrLCAmY3RybC0+Y3RybF9pbmZvLT5jYWNoZS5jcHVfbWFzayk7Cj4g PiArICAgICAgICAgICAgICAgaWYgKGN0cmwtPmN0cmxfaW5mby0+Y2FjaGUuY2FjaGVfbGV2ZWwg PT0gMikgewo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgY2JxcmlfcmVzID0gJmNicXJpX3Jl c2N0cmxfcmVzb3VyY2VzW1JEVF9SRVNPVVJDRV9MMl07Cj4gPiArICAgICAgICAgICAgICAgICAg ICAgICBjYnFyaV9yZXMtPm1heF9yY2lkID0gY3RybC0+Y3RybF9pbmZvLT5yY2lkX2NvdW50Owo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgY2JxcmlfcmVzLT5tYXhfbWNpZCA9IGN0cmwtPmN0 cmxfaW5mby0+bWNpZF9jb3VudDsKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9ICZj YnFyaV9yZXMtPnJlc2N0cmxfcmVzOwo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgcmVzLT5t b24ubnVtX3JtaWQgPSBjdHJsLT5jdHJsX2luZm8tPm1jaWRfY291bnQ7Cj4gPiArICAgICAgICAg ICAgICAgICAgICAgICByZXMtPnJpZCA9IFJEVF9SRVNPVVJDRV9MMjsKPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgIHJlcy0+bmFtZSA9ICJMMiI7Cj4gPiArICAgICAgICAgICAgICAgICAgICAg ICByZXMtPmFsbG9jX2NhcGFibGUgPSBjdHJsLT5hbGxvY19jYXBhYmxlOwo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgcmVzLT5tb25fY2FwYWJsZSA9IGN0cmwtPm1vbl9jYXBhYmxlOwo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgcmVzLT5zY2hlbWFfZm10ID0gUkVTQ1RSTF9TQ0hFTUFf QklUTUFQOwo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgcmVzLT5jdHJsX3Njb3BlID0gUkVT Q1RSTF9MMl9DQUNIRTsKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIHJlcy0+Y2FjaGUuYXJj aF9oYXNfc3BhcnNlX2JpdG1hc2tzID0gZmFsc2U7Cj4gPiArICAgICAgICAgICAgICAgICAgICAg ICByZXMtPmNhY2hlLmFyY2hfaGFzX3Blcl9jcHVfY2ZnID0gZmFsc2U7Cj4gPiArICAgICAgICAg ICAgICAgICAgICAgICByZXMtPmNhY2hlLmNibV9sZW4gPSBjdHJsLT5jYy5uY2Jsa3M7Cj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICByZXMtPmNhY2hlLnNoYXJlYWJsZV9iaXRzID0gcmVzY3Ry bF9nZXRfZGVmYXVsdF9jdHJsKHJlcyk7Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICByZXMt PmNhY2hlLm1pbl9jYm1fYml0cyA9IDE7Cj4gPiArICAgICAgICAgICAgICAgfSBlbHNlIGlmIChj dHJsLT5jdHJsX2luZm8tPmNhY2hlLmNhY2hlX2xldmVsID09IDMpIHsKPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgIGNicXJpX3JlcyA9ICZjYnFyaV9yZXNjdHJsX3Jlc291cmNlc1tSRFRfUkVT T1VSQ0VfTDNdOwo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgY2JxcmlfcmVzLT5tYXhfcmNp ZCA9IGN0cmwtPmN0cmxfaW5mby0+cmNpZF9jb3VudDsKPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgIGNicXJpX3Jlcy0+bWF4X21jaWQgPSBjdHJsLT5jdHJsX2luZm8tPm1jaWRfY291bnQ7Cj4g PiArICAgICAgICAgICAgICAgICAgICAgICByZXMgPSAmY2JxcmlfcmVzLT5yZXNjdHJsX3JlczsK PiA+ICsgICAgICAgICAgICAgICAgICAgICAgIHJlcy0+bW9uLm51bV9ybWlkID0gY3RybC0+Y3Ry bF9pbmZvLT5tY2lkX2NvdW50Owo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgcmVzLT5yaWQg PSBSRFRfUkVTT1VSQ0VfTDM7Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICByZXMtPm5hbWUg PSAiTDMiOwo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgcmVzLT5zY2hlbWFfZm10ID0gUkVT Q1RSTF9TQ0hFTUFfQklUTUFQOwo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgcmVzLT5jdHJs X3Njb3BlID0gUkVTQ1RSTF9MM19DQUNIRTsKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIHJl cy0+YWxsb2NfY2FwYWJsZSA9IGN0cmwtPmFsbG9jX2NhcGFibGU7Cj4gPiArICAgICAgICAgICAg ICAgICAgICAgICByZXMtPm1vbl9jYXBhYmxlID0gY3RybC0+bW9uX2NhcGFibGU7Cj4gPiArICAg ICAgICAgICAgICAgICAgICAgICByZXMtPmNhY2hlLmFyY2hfaGFzX3NwYXJzZV9iaXRtYXNrcyA9 IGZhbHNlOwo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgcmVzLT5jYWNoZS5hcmNoX2hhc19w ZXJfY3B1X2NmZyA9IGZhbHNlOwo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgcmVzLT5jYWNo ZS5jYm1fbGVuID0gY3RybC0+Y2MubmNibGtzOwo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg cmVzLT5jYWNoZS5zaGFyZWFibGVfYml0cyA9IHJlc2N0cmxfZ2V0X2RlZmF1bHRfY3RybChyZXMp Owo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgcmVzLT5jYWNoZS5taW5fY2JtX2JpdHMgPSAx Owo+ID4gKyAgICAgICAgICAgICAgIH0gZWxzZSB7Cj4gPiArICAgICAgICAgICAgICAgICAgICAg ICBwcl93YXJuKCIlcygpOiB1bmtub3duIGNhY2hlIGxldmVsICVkIiwgX19mdW5jX18sCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN0cmwtPmN0cmxfaW5mby0+Y2FjaGUuY2Fj aGVfbGV2ZWwpOwo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgZXJyID0gLUVOT0RFVjsKPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyX2ZyZWVfZG9tYWluOwo+ID4gKyAgICAg ICAgICAgICAgIH0KPiA+ICsgICAgICAgfSBlbHNlIGlmIChjdHJsLT5jdHJsX2luZm8tPnR5cGUg PT0gQ0JRUklfQ09OVFJPTExFUl9UWVBFX0JBTkRXSURUSCkgewo+ID4gKyAgICAgICAgICAgICAg IGlmIChjdHJsLT5hbGxvY19jYXBhYmxlKSB7Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICBj YnFyaV9yZXMgPSAmY2JxcmlfcmVzY3RybF9yZXNvdXJjZXNbUkRUX1JFU09VUkNFX01CQV07Cj4g PiArICAgICAgICAgICAgICAgICAgICAgICBjYnFyaV9yZXMtPm1heF9yY2lkID0gY3RybC0+Y3Ry bF9pbmZvLT5yY2lkX2NvdW50Owo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgY2JxcmlfcmVz LT5tYXhfbWNpZCA9IGN0cmwtPmN0cmxfaW5mby0+bWNpZF9jb3VudDsKPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgIHJlcyA9ICZjYnFyaV9yZXMtPnJlc2N0cmxfcmVzOwo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgcmVzLT5tb24ubnVtX3JtaWQgPSBjdHJsLT5jdHJsX2luZm8tPm1jaWRf Y291bnQ7Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICByZXMtPnJpZCA9IFJEVF9SRVNPVVJD RV9NQkE7Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICByZXMtPm5hbWUgPSAiTUIiOwo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgcmVzLT5zY2hlbWFfZm10ID0gUkVTQ1RSTF9TQ0hFTUFf UkFOR0U7Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICByZXMtPmN0cmxfc2NvcGUgPSBSRVND VFJMX0wzX0NBQ0hFOwo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgcmVzLT5hbGxvY19jYXBh YmxlID0gY3RybC0+YWxsb2NfY2FwYWJsZTsKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIHJl cy0+bW9uX2NhcGFibGUgPSBmYWxzZTsKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIHJlcy0+ bWVtYncuZGVsYXlfbGluZWFyID0gdHJ1ZTsKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIHJl cy0+bWVtYncuYXJjaF9uZWVkc19saW5lYXIgPSB0cnVlOwo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgcmVzLT5tZW1idy50aHJvdHRsZV9tb2RlID0gVEhSRUFEX1RIUk9UVExFX1VOREVGSU5F RDsKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSBtaW5pbXVtIHBlcmNlbnRhZ2Ug YWxsb3dlZCBieSB0aGUgQ0JRUkkgc3BlYwo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgcmVz LT5tZW1idy5taW5fYncgPSAxOwo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIG1h eGltdW0gcGVyY2VudGFnZSBhbGxvd2VkIGJ5IHRoZSBDQlFSSSBzcGVjCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICByZXMtPm1lbWJ3Lm1heF9idyA9IDgwOwo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgcmVzLT5tZW1idy5id19ncmFuID0gMTsKPiA+ICsgICAgICAgICAgICAgICB9Cj4g Cj4gV3JhcCBhIGZ1bmN0aW9uLgoKSSBhbSBndWVzc2luZyB5b3UgbWVhbiB0byBicmVhayB1cCB0 aGlzIGxvbmcgZnVuY3Rpb24gaW50byBhIGNvdXBsZSBvZgpzbWFsbGVyIGZ1bmN0aW9ucz8gSSB3 aWxsIGdpdmUgdGhhdCBhIHRyeSBmb3IgdGhlIG5leHQgcmV2LgoKPiA+ICsgICAgICAgfSBlbHNl IHsKPiA+ICsgICAgICAgICAgICAgICBwcl93YXJuKCIlcygpOiB1bmtub3duIHJlc291cmNlICVk IiwgX19mdW5jX18sIGN0cmwtPmN0cmxfaW5mby0+dHlwZSk7Cj4gPiArICAgICAgICAgICAgICAg ZXJyID0gLUVOT0RFVjsKPiA+ICsgICAgICAgICAgICAgICBnb3RvIGVycl9mcmVlX2RvbWFpbjsK PiA+ICsgICAgICAgfQo+ID4gKwo+ID4gKyAgICAgICBkb21haW4tPmhkci5pZCA9IGludGVybmFs X2lkOwo+ID4gKyAgICAgICBlcnIgPSBxb3NfaW5pdF9kb21haW5fY3RybHZhbChyZXMsIGRvbWFp bik7Cj4gPiArICAgICAgIGlmIChlcnIpCj4gPiArICAgICAgICAgICAgICAgZ290byBlcnJfZnJl ZV9kb21haW47Cj4gPiArCj4gPiArICAgICAgIGlmIChjYnFyaV9yZXMpIHsKPiA+ICsgICAgICAg ICAgICAgICBsaXN0X2FkZF90YWlsKCZkb21haW4tPmhkci5saXN0LCAmY2JxcmlfcmVzLT5yZXNj dHJsX3Jlcy5jdHJsX2RvbWFpbnMpOwo+ID4gKyAgICAgICAgICAgICAgICppZCA9IGludGVybmFs X2lkOwo+ID4gKyAgICAgICAgICAgICAgIGVyciA9IHJlc2N0cmxfb25saW5lX2N0cmxfZG9tYWlu KHJlcywgZG9tYWluKTsKPiA+ICsgICAgICAgICAgICAgICBpZiAoZXJyKSB7Cj4gPiArICAgICAg ICAgICAgICAgICAgICAgICBwcl93YXJuKCIlcygpOiBmYWlsZWQgdG8gb25saW5lIGNicXJpX3Jl cyBkb21haW4iLCBfX2Z1bmNfXyk7Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVy cl9mcmVlX2RvbWFpbjsKPiA+ICsgICAgICAgICAgICAgICB9Cj4gPiArICAgICAgIH0KPiA+ICsK PiA+ICsgICAgICAgcmV0dXJuIDA7Cj4gPiArCj4gPiArZXJyX2ZyZWVfZG9tYWluOgo+ID4gKyAg ICAgICBwcl93YXJuKCIlcygpOiBlcnJfZnJlZV9kb21haW4iLCBfX2Z1bmNfXyk7Cj4gPiArICAg ICAgIGtmcmVlKGNvbnRhaW5lcl9vZihkb21haW4sIHN0cnVjdCBjYnFyaV9yZXNjdHJsX2RvbSwg cmVzY3RybF9jdHJsX2RvbSkpOwo+IAo+IGZyZWUgaHdfZG9tLT5jdHJsX3ZhbCDvvJ8KCkknbGwg dGFrZSBhIGNsb3NlciBsb29rIGF0IHRoZSBlcnJvciBjbGVhbnVwIHBhdGggYW5kIGZpeCBpbiB0 aGUgbmV4dApyZXYuCgpUaGFua3MsCkRyZXcKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCmxpbnV4LXJpc2N2IG1haWxpbmcgbGlzdApsaW51eC1yaXNjdkBs aXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlz dGluZm8vbGludXgtcmlzY3YK