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 X-Spam-Level: X-Spam-Status: No, score=-13.6 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_RED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 77BDCC432BE for ; Tue, 3 Aug 2021 08:52:20 +0000 (UTC) Received: from smtp4.osuosl.org (smtp4.osuosl.org [140.211.166.137]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id E18D361037 for ; Tue, 3 Aug 2021 08:52:19 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org E18D361037 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=bytedance.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=lists.linux-foundation.org Received: from localhost (localhost [127.0.0.1]) by smtp4.osuosl.org (Postfix) with ESMTP id AAE8D4042E; Tue, 3 Aug 2021 08:52:19 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp4.osuosl.org ([127.0.0.1]) by localhost (smtp4.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id zCAWgRr4Y0rT; Tue, 3 Aug 2021 08:52:18 +0000 (UTC) Received: from lists.linuxfoundation.org (lf-lists.osuosl.org [140.211.9.56]) by smtp4.osuosl.org (Postfix) with ESMTPS id 341184041C; Tue, 3 Aug 2021 08:52:18 +0000 (UTC) Received: from lf-lists.osuosl.org (localhost [127.0.0.1]) by lists.linuxfoundation.org (Postfix) with ESMTP id 0EF87C0010; Tue, 3 Aug 2021 08:52:18 +0000 (UTC) Received: from smtp2.osuosl.org (smtp2.osuosl.org [IPv6:2605:bc80:3010::133]) by lists.linuxfoundation.org (Postfix) with ESMTP id 1B7CEC0010 for ; Tue, 3 Aug 2021 08:52:16 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp2.osuosl.org (Postfix) with ESMTP id 0E6A84016B for ; Tue, 3 Aug 2021 08:52:16 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Authentication-Results: smtp2.osuosl.org (amavisd-new); dkim=pass (2048-bit key) header.d=bytedance-com.20150623.gappssmtp.com Received: from smtp2.osuosl.org ([127.0.0.1]) by localhost (smtp2.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 9pMVXORwQzlh for ; Tue, 3 Aug 2021 08:52:13 +0000 (UTC) X-Greylist: whitelisted by SQLgrey-1.8.0 Received: from mail-ed1-x531.google.com (mail-ed1-x531.google.com [IPv6:2a00:1450:4864:20::531]) by smtp2.osuosl.org (Postfix) with ESMTPS id 8AD12400E6 for ; Tue, 3 Aug 2021 08:52:13 +0000 (UTC) Received: by mail-ed1-x531.google.com with SMTP id y7so25798427eda.5 for ; Tue, 03 Aug 2021 01:52:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bytedance-com.20150623.gappssmtp.com; s=20150623; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=yNVHfomn1+7EeD9B5QlHFpydoWXL8UTDlRD2Gz6lLm4=; b=W0MTWrHDNl+PRjXzBtO9//AT8bfTt0UGPAHtUfBNteJlLivBgLI3a3M0Cm6JfHl6EU OzC+TGexcu64OQ0IP3USZrqt2WiDlFnE3x853FdQ3WR9WB4jRQw/jYSdkoofkjW2qDU3 j58nWRiHEPc+e52N0nWvgyhMZhyAMe7deX8EcVEhLUoh4nAqTBSQO688xMWgma06sg/a 33OeapUYYq8j1XteBpboom94lgmjToIStbqrTzJdFXzT3azY/Zuaq+3TI8dS3w7cS6uf 7W5dKidG7EeuuBKAOhfmGL49foVg2UwnrUwNzB+zkgtIL7M7E83x3xOceSwH5iUf4oNA WW4g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=yNVHfomn1+7EeD9B5QlHFpydoWXL8UTDlRD2Gz6lLm4=; b=Rvc6mGGRqHm0AsdSok57rcfcvKfrY7j1+f3NO3rOMmcnMQ1b1NH0Hhm7qh72ollkG0 2VfXo68oxb5UAtALi6pKDYyQbxcknMT12kGw9+Eq0uSDjdO4KWrIXDb5Zp/AnU58jfbs m4P86r6kxvzpsE87OuGmVr+zzHPEMhcklns75EzKACmTeLm4jQl5wXcZZvURxkcNs4xC jqKcSK12rvERLGqyBW1euIFqoi8HWtB8eUlQiDThLABRnZPD0NxZtq7hMzcXZx6LRu9m ob5goG/OiGsvtcZqiByU+ZuudlWgyweWnsoG/0bZ2Xb28GxTI126Nd39Fg1jz/bSccrB k1Cg== X-Gm-Message-State: AOAM530M2J1EXfV5uvMqs4VcOhGVzRNBIBTXnEzxN+85hVPc8OttD5n6 m68SXScGJYzMaCahiZiKW6CLCveSlZxNEvzTCVTE X-Google-Smtp-Source: ABdhPJzP3mqKMcinlyFQCqeLKP6E0gKZq9ZubV8wxKczwvyn7WhW7EmyF4LbdLIGRxNOj8q+vmW+CnwGpcs0ZzKpngc= X-Received: by 2002:a05:6402:74f:: with SMTP id p15mr23885429edy.195.1627980731381; Tue, 03 Aug 2021 01:52:11 -0700 (PDT) MIME-Version: 1.0 References: <20210729073503.187-1-xieyongji@bytedance.com> <20210729073503.187-18-xieyongji@bytedance.com> <05365f36-bc3a-40f4-764d-37a7249b94b1@redhat.com> In-Reply-To: <05365f36-bc3a-40f4-764d-37a7249b94b1@redhat.com> From: Yongji Xie Date: Tue, 3 Aug 2021 16:52:00 +0800 Message-ID: Subject: Re: [PATCH v10 17/17] Documentation: Add documentation for VDUSE To: Jason Wang Cc: kvm , "Michael S. Tsirkin" , virtualization , Christian Brauner , Jonathan Corbet , Matthew Wilcox , Christoph Hellwig , Dan Carpenter , Stefano Garzarella , Liu Xiaodong , linux-fsdevel@vger.kernel.org, Al Viro , Stefan Hajnoczi , songmuchun@bytedance.com, Jens Axboe , He Zhe , Greg KH , Randy Dunlap , linux-kernel , iommu@lists.linux-foundation.org, bcrl@kvack.org, netdev@vger.kernel.org, Joe Perches , =?UTF-8?Q?Mika_Penttil=C3=A4?= X-BeenThere: iommu@lists.linux-foundation.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: Development issues for Linux IOMMU support List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: iommu-bounces@lists.linux-foundation.org Sender: "iommu" T24gVHVlLCBBdWcgMywgMjAyMSBhdCAzOjM1IFBNIEphc29uIFdhbmcgPGphc293YW5nQHJlZGhh dC5jb20+IHdyb3RlOgo+Cj4KPiDlnKggMjAyMS83LzI5IOS4i+WNiDM6MzUsIFhpZSBZb25namkg 5YaZ6YGTOgo+ID4gVkRVU0UgKHZEUEEgRGV2aWNlIGluIFVzZXJzcGFjZSkgaXMgYSBmcmFtZXdv cmsgdG8gc3VwcG9ydAo+ID4gaW1wbGVtZW50aW5nIHNvZnR3YXJlLWVtdWxhdGVkIHZEUEEgZGV2 aWNlcyBpbiB1c2Vyc3BhY2UuIFRoaXMKPiA+IGRvY3VtZW50IGlzIGludGVuZGVkIHRvIGNsYXJp ZnkgdGhlIFZEVVNFIGRlc2lnbiBhbmQgdXNhZ2UuCj4gPgo+ID4gU2lnbmVkLW9mZi1ieTogWGll IFlvbmdqaSA8eGlleW9uZ2ppQGJ5dGVkYW5jZS5jb20+Cj4gPiAtLS0KPiA+ICAgRG9jdW1lbnRh dGlvbi91c2Vyc3BhY2UtYXBpL2luZGV4LnJzdCB8ICAgMSArCj4gPiAgIERvY3VtZW50YXRpb24v dXNlcnNwYWNlLWFwaS92ZHVzZS5yc3QgfCAyMzIgKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKwo+ID4gICAyIGZpbGVzIGNoYW5nZWQsIDIzMyBpbnNlcnRpb25zKCspCj4gPiAgIGNy ZWF0ZSBtb2RlIDEwMDY0NCBEb2N1bWVudGF0aW9uL3VzZXJzcGFjZS1hcGkvdmR1c2UucnN0Cj4g Pgo+ID4gZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdXNlcnNwYWNlLWFwaS9pbmRleC5yc3Qg Yi9Eb2N1bWVudGF0aW9uL3VzZXJzcGFjZS1hcGkvaW5kZXgucnN0Cj4gPiBpbmRleCAwYjVlZWZl ZDAyN2UuLmM0MzJiZTA3MGY2NyAxMDA2NDQKPiA+IC0tLSBhL0RvY3VtZW50YXRpb24vdXNlcnNw YWNlLWFwaS9pbmRleC5yc3QKPiA+ICsrKyBiL0RvY3VtZW50YXRpb24vdXNlcnNwYWNlLWFwaS9p bmRleC5yc3QKPiA+IEBAIC0yNyw2ICsyNyw3IEBAIHBsYWNlIHdoZXJlIHRoaXMgaW5mb3JtYXRp b24gaXMgZ2F0aGVyZWQuCj4gPiAgICAgIGlvbW11Cj4gPiAgICAgIG1lZGlhL2luZGV4Cj4gPiAg ICAgIHN5c2ZzLXBsYXRmb3JtX3Byb2ZpbGUKPiA+ICsgICB2ZHVzZQo+ID4KPiA+ICAgLi4gb25s eTo6ICBzdWJwcm9qZWN0IGFuZCBodG1sCj4gPgo+ID4gZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRp b24vdXNlcnNwYWNlLWFwaS92ZHVzZS5yc3QgYi9Eb2N1bWVudGF0aW9uL3VzZXJzcGFjZS1hcGkv dmR1c2UucnN0Cj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+ID4gaW5kZXggMDAwMDAwMDAwMDAw Li4zMGM5ZDE0ODIxMjYKPiA+IC0tLSAvZGV2L251bGwKPiA+ICsrKyBiL0RvY3VtZW50YXRpb24v dXNlcnNwYWNlLWFwaS92ZHVzZS5yc3QKPiA+IEBAIC0wLDAgKzEsMjMyIEBACj4gPiArPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo+ID4gK1ZEVVNFIC0gInZEUEEgRGV2aWNlIGlu IFVzZXJzcGFjZSIKPiA+ICs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cj4gPiAr Cj4gPiArdkRQQSAodmlydGlvIGRhdGEgcGF0aCBhY2NlbGVyYXRpb24pIGRldmljZSBpcyBhIGRl dmljZSB0aGF0IHVzZXMgYQo+ID4gK2RhdGFwYXRoIHdoaWNoIGNvbXBsaWVzIHdpdGggdGhlIHZp cnRpbyBzcGVjaWZpY2F0aW9ucyB3aXRoIHZlbmRvcgo+ID4gK3NwZWNpZmljIGNvbnRyb2wgcGF0 aC4gdkRQQSBkZXZpY2VzIGNhbiBiZSBib3RoIHBoeXNpY2FsbHkgbG9jYXRlZCBvbgo+ID4gK3Ro ZSBoYXJkd2FyZSBvciBlbXVsYXRlZCBieSBzb2Z0d2FyZS4gVkRVU0UgaXMgYSBmcmFtZXdvcmsg dGhhdCBtYWtlcyBpdAo+ID4gK3Bvc3NpYmxlIHRvIGltcGxlbWVudCBzb2Z0d2FyZS1lbXVsYXRl ZCB2RFBBIGRldmljZXMgaW4gdXNlcnNwYWNlLiBBbmQKPiA+ICt0byBtYWtlIHRoZSBkZXZpY2Ug ZW11bGF0aW9uIG1vcmUgc2VjdXJlLCB0aGUgZW11bGF0ZWQgdkRQQSBkZXZpY2Uncwo+ID4gK2Nv bnRyb2wgcGF0aCBpcyBoYW5kbGVkIGluIHRoZSBrZXJuZWwgYW5kIG9ubHkgdGhlIGRhdGEgcGF0 aCBpcwo+ID4gK2ltcGxlbWVudGVkIGluIHRoZSB1c2Vyc3BhY2UuCj4gPiArCj4gPiArTm90ZSB0 aGF0IG9ubHkgdmlydGlvIGJsb2NrIGRldmljZSBpcyBzdXBwb3J0ZWQgYnkgVkRVU0UgZnJhbWV3 b3JrIG5vdywKPiA+ICt3aGljaCBjYW4gcmVkdWNlIHNlY3VyaXR5IHJpc2tzIHdoZW4gdGhlIHVz ZXJzcGFjZSBwcm9jZXNzIHRoYXQgaW1wbGVtZW50cwo+ID4gK3RoZSBkYXRhIHBhdGggaXMgcnVu IGJ5IGFuIHVucHJpdmlsZWdlZCB1c2VyLiBUaGUgc3VwcG9ydCBmb3Igb3RoZXIgZGV2aWNlCj4g PiArdHlwZXMgY2FuIGJlIGFkZGVkIGFmdGVyIHRoZSBzZWN1cml0eSBpc3N1ZSBvZiBjb3JyZXNw b25kaW5nIGRldmljZSBkcml2ZXIKPiA+ICtpcyBjbGFyaWZpZWQgb3IgZml4ZWQgaW4gdGhlIGZ1 dHVyZS4KPiA+ICsKPiA+ICtDcmVhdGUvRGVzdHJveSBWRFVTRSBkZXZpY2VzCj4gPiArLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCj4gPiArCj4gPiArVkRVU0UgZGV2aWNlcyBhcmUgY3JlYXRlZCBh cyBmb2xsb3dzOgo+ID4gKwo+ID4gKzEuIENyZWF0ZSBhIG5ldyBWRFVTRSBpbnN0YW5jZSB3aXRo IGlvY3RsKFZEVVNFX0NSRUFURV9ERVYpIG9uCj4gPiArICAgL2Rldi92ZHVzZS9jb250cm9sLgo+ ID4gKwo+ID4gKzIuIFNldHVwIGVhY2ggdmlydHF1ZXVlIHdpdGggaW9jdGwoVkRVU0VfVlFfU0VU VVApIG9uIC9kZXYvdmR1c2UvJE5BTUUuCj4gPiArCj4gPiArMy4gQmVnaW4gcHJvY2Vzc2luZyBW RFVTRSBtZXNzYWdlcyBmcm9tIC9kZXYvdmR1c2UvJE5BTUUuIFRoZSBmaXJzdAo+ID4gKyAgIG1l c3NhZ2VzIHdpbGwgYXJyaXZlIHdoaWxlIGF0dGFjaGluZyB0aGUgVkRVU0UgaW5zdGFuY2UgdG8g dkRQQSBidXMuCj4gPiArCj4gPiArNC4gU2VuZCB0aGUgVkRQQV9DTURfREVWX05FVyBuZXRsaW5r IG1lc3NhZ2UgdG8gYXR0YWNoIHRoZSBWRFVTRQo+ID4gKyAgIGluc3RhbmNlIHRvIHZEUEEgYnVz Lgo+ID4gKwo+ID4gK1ZEVVNFIGRldmljZXMgYXJlIGRlc3Ryb3llZCBhcyBmb2xsb3dzOgo+ID4g Kwo+ID4gKzEuIFNlbmQgdGhlIFZEUEFfQ01EX0RFVl9ERUwgbmV0bGluayBtZXNzYWdlIHRvIGRl dGFjaCB0aGUgVkRVU0UKPiA+ICsgICBpbnN0YW5jZSBmcm9tIHZEUEEgYnVzLgo+ID4gKwo+ID4g KzIuIENsb3NlIHRoZSBmaWxlIGRlc2NyaXB0b3IgcmVmZXJyaW5nIHRvIC9kZXYvdmR1c2UvJE5B TUUuCj4gPiArCj4gPiArMy4gRGVzdHJveSB0aGUgVkRVU0UgaW5zdGFuY2Ugd2l0aCBpb2N0bChW RFVTRV9ERVNUUk9ZX0RFVikgb24KPiA+ICsgICAvZGV2L3ZkdXNlL2NvbnRyb2wuCj4gPiArCj4g PiArVGhlIG5ldGxpbmsgbWVzc2FnZXMgY2FuIGJlIHNlbnQgdmlhIHZkcGEgdG9vbCBpbiBpcHJv dXRlMiBvciB1c2UgdGhlCj4gPiArYmVsb3cgc2FtcGxlIGNvZGVzOgo+ID4gKwo+ID4gKy4uIGNv ZGUtYmxvY2s6OiBjCj4gPiArCj4gPiArICAgICBzdGF0aWMgaW50IG5ldGxpbmtfYWRkX3ZkdXNl KGNvbnN0IGNoYXIgKm5hbWUsIGVudW0gdmRwYV9jb21tYW5kIGNtZCkKPiA+ICsgICAgIHsKPiA+ ICsgICAgICAgICAgICAgc3RydWN0IG5sX3NvY2sgKm5sc29jazsKPiA+ICsgICAgICAgICAgICAg c3RydWN0IG5sX21zZyAqbXNnOwo+ID4gKyAgICAgICAgICAgICBpbnQgZmFtaWQ7Cj4gPiArCj4g PiArICAgICAgICAgICAgIG5sc29jayA9IG5sX3NvY2tldF9hbGxvYygpOwo+ID4gKyAgICAgICAg ICAgICBpZiAoIW5sc29jaykKPiA+ICsgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLUVOT01F TTsKPiA+ICsKPiA+ICsgICAgICAgICAgICAgaWYgKGdlbmxfY29ubmVjdChubHNvY2spKQo+ID4g KyAgICAgICAgICAgICAgICAgICAgIGdvdG8gZnJlZV9zb2NrOwo+ID4gKwo+ID4gKyAgICAgICAg ICAgICBmYW1pZCA9IGdlbmxfY3RybF9yZXNvbHZlKG5sc29jaywgVkRQQV9HRU5MX05BTUUpOwo+ ID4gKyAgICAgICAgICAgICBpZiAoZmFtaWQgPCAwKQo+ID4gKyAgICAgICAgICAgICAgICAgICAg IGdvdG8gY2xvc2Vfc29jazsKPiA+ICsKPiA+ICsgICAgICAgICAgICAgbXNnID0gbmxtc2dfYWxs b2MoKTsKPiA+ICsgICAgICAgICAgICAgaWYgKCFtc2cpCj4gPiArICAgICAgICAgICAgICAgICAg ICAgZ290byBjbG9zZV9zb2NrOwo+ID4gKwo+ID4gKyAgICAgICAgICAgICBpZiAoIWdlbmxtc2df cHV0KG1zZywgTkxfQVVUT19QT1JULCBOTF9BVVRPX1NFUSwgZmFtaWQsIDAsIDAsIGNtZCwgMCkp Cj4gPiArICAgICAgICAgICAgICAgICAgICAgZ290byBubGFfcHV0X2ZhaWx1cmU7Cj4gPiArCj4g PiArICAgICAgICAgICAgIE5MQV9QVVRfU1RSSU5HKG1zZywgVkRQQV9BVFRSX0RFVl9OQU1FLCBu YW1lKTsKPiA+ICsgICAgICAgICAgICAgaWYgKGNtZCA9PSBWRFBBX0NNRF9ERVZfTkVXKQo+ID4g KyAgICAgICAgICAgICAgICAgICAgIE5MQV9QVVRfU1RSSU5HKG1zZywgVkRQQV9BVFRSX01HTVRE RVZfREVWX05BTUUsICJ2ZHVzZSIpOwo+ID4gKwo+ID4gKyAgICAgICAgICAgICBpZiAobmxfc2Vu ZF9zeW5jKG5sc29jaywgbXNnKSkKPiA+ICsgICAgICAgICAgICAgICAgICAgICBnb3RvIGNsb3Nl X3NvY2s7Cj4gPiArCj4gPiArICAgICAgICAgICAgIG5sX2Nsb3NlKG5sc29jayk7Cj4gPiArICAg ICAgICAgICAgIG5sX3NvY2tldF9mcmVlKG5sc29jayk7Cj4gPiArCj4gPiArICAgICAgICAgICAg IHJldHVybiAwOwo+ID4gKyAgICAgbmxhX3B1dF9mYWlsdXJlOgo+ID4gKyAgICAgICAgICAgICBu bG1zZ19mcmVlKG1zZyk7Cj4gPiArICAgICBjbG9zZV9zb2NrOgo+ID4gKyAgICAgICAgICAgICBu bF9jbG9zZShubHNvY2spOwo+ID4gKyAgICAgZnJlZV9zb2NrOgo+ID4gKyAgICAgICAgICAgICBu bF9zb2NrZXRfZnJlZShubHNvY2spOwo+ID4gKyAgICAgICAgICAgICByZXR1cm4gLTE7Cj4gPiAr ICAgICB9Cj4gPiArCj4gPiArSG93IFZEVVNFIHdvcmtzCj4gPiArLS0tLS0tLS0tLS0tLS0tCj4g PiArCj4gPiArQXMgbWVudGlvbmVkIGFib3ZlLCBhIFZEVVNFIGRldmljZSBpcyBjcmVhdGVkIGJ5 IGlvY3RsKFZEVVNFX0NSRUFURV9ERVYpIG9uCj4gPiArL2Rldi92ZHVzZS9jb250cm9sLiBXaXRo IHRoaXMgaW9jdGwsIHVzZXJzcGFjZSBjYW4gc3BlY2lmeSBzb21lIGJhc2ljIGNvbmZpZ3VyYXRp b24KPiA+ICtzdWNoIGFzIGRldmljZSBuYW1lICh1bmlxdWVseSBpZGVudGlmeSBhIFZEVVNFIGRl dmljZSksIHZpcnRpbyBmZWF0dXJlcywgdmlydGlvCj4gPiArY29uZmlndXJhdGlvbiBzcGFjZSwg dGhlIG51bWJlciBvZiB2aXJ0cXVldWVzIGFuZCBzbyBvbiBmb3IgdGhpcyBlbXVsYXRlZCBkZXZp Y2UuCj4gPiArVGhlbiBhIGNoYXIgZGV2aWNlIGludGVyZmFjZSAoL2Rldi92ZHVzZS8kTkFNRSkg aXMgZXhwb3J0ZWQgdG8gdXNlcnNwYWNlIGZvciBkZXZpY2UKPiA+ICtlbXVsYXRpb24uIFVzZXJz cGFjZSBjYW4gdXNlIHRoZSBWRFVTRV9WUV9TRVRVUCBpb2N0bCBvbiAvZGV2L3ZkdXNlLyROQU1F IHRvCj4gPiArYWRkIHBlci12aXJ0cXVldWUgY29uZmlndXJhdGlvbiBzdWNoIGFzIHRoZSBtYXgg c2l6ZSBvZiB2aXJ0cXVldWUgdG8gdGhlIGRldmljZS4KPiA+ICsKPiA+ICtBZnRlciB0aGUgaW5p dGlhbGl6YXRpb24sIHRoZSBWRFVTRSBkZXZpY2UgY2FuIGJlIGF0dGFjaGVkIHRvIHZEUEEgYnVz IHZpYQo+ID4gK3RoZSBWRFBBX0NNRF9ERVZfTkVXIG5ldGxpbmsgbWVzc2FnZS4gVXNlcnNwYWNl IG5lZWRzIHRvIHJlYWQoKS93cml0ZSgpIG9uCj4gPiArL2Rldi92ZHVzZS8kTkFNRSB0byByZWNl aXZlL3JlcGx5IHNvbWUgY29udHJvbCBtZXNzYWdlcyBmcm9tL3RvIFZEVVNFIGtlcm5lbAo+ID4g K21vZHVsZSBhcyBmb2xsb3dzOgo+ID4gKwo+ID4gKy4uIGNvZGUtYmxvY2s6OiBjCj4gPiArCj4g PiArICAgICBzdGF0aWMgaW50IHZkdXNlX21lc3NhZ2VfaGFuZGxlcihpbnQgZGV2X2ZkKQo+ID4g KyAgICAgewo+ID4gKyAgICAgICAgICAgICBpbnQgbGVuOwo+ID4gKyAgICAgICAgICAgICBzdHJ1 Y3QgdmR1c2VfZGV2X3JlcXVlc3QgcmVxOwo+ID4gKyAgICAgICAgICAgICBzdHJ1Y3QgdmR1c2Vf ZGV2X3Jlc3BvbnNlIHJlc3A7Cj4gPiArCj4gPiArICAgICAgICAgICAgIGxlbiA9IHJlYWQoZGV2 X2ZkLCAmcmVxLCBzaXplb2YocmVxKSk7Cj4gPiArICAgICAgICAgICAgIGlmIChsZW4gIT0gc2l6 ZW9mKHJlcSkpCj4gPiArICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwo+ID4gKwo+ID4g KyAgICAgICAgICAgICByZXNwLnJlcXVlc3RfaWQgPSByZXEucmVxdWVzdF9pZDsKPiA+ICsKPiA+ ICsgICAgICAgICAgICAgc3dpdGNoIChyZXEudHlwZSkgewo+ID4gKwo+ID4gKyAgICAgICAgICAg ICAvKiBoYW5kbGUgZGlmZmVyZW50IHR5cGVzIG9mIG1lc3NhZ2VzICovCj4gPiArCj4gPiArICAg ICAgICAgICAgIH0KPiA+ICsKPiA+ICsgICAgICAgICAgICAgbGVuID0gd3JpdGUoZGV2X2ZkLCAm cmVzcCwgc2l6ZW9mKHJlc3ApKTsKPiA+ICsgICAgICAgICAgICAgaWYgKGxlbiAhPSBzaXplb2Yo cmVzcCkpCj4gPiArICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwo+ID4gKwo+ID4gKyAg ICAgICAgICAgICByZXR1cm4gMDsKPiA+ICsgICAgIH0KPiA+ICsKPiA+ICtUaGVyZSBhcmUgbm93 IHRocmVlIHR5cGVzIG9mIG1lc3NhZ2VzIGludHJvZHVjZWQgYnkgVkRVU0UgZnJhbWV3b3JrOgo+ ID4gKwo+ID4gKy0gVkRVU0VfR0VUX1ZRX1NUQVRFOiBHZXQgdGhlIHN0YXRlIGZvciB2aXJ0cXVl dWUsIHVzZXJzcGFjZSBzaG91bGQgcmV0dXJuCj4gPiArICBhdmFpbCBpbmRleCBmb3Igc3BsaXQg dmlydHF1ZXVlIG9yIHRoZSBkZXZpY2UvZHJpdmVyIHJpbmcgd3JhcCBjb3VudGVycyBhbmQKPiA+ ICsgIHRoZSBhdmFpbCBhbmQgdXNlZCBpbmRleCBmb3IgcGFja2VkIHZpcnRxdWV1ZS4KPiA+ICsK PiA+ICstIFZEVVNFX1NFVF9TVEFUVVM6IFNldCB0aGUgZGV2aWNlIHN0YXR1cywgdXNlcnNwYWNl IHNob3VsZCBmb2xsb3cKPiA+ICsgIHRoZSB2aXJ0aW8gc3BlYzogaHR0cHM6Ly9kb2NzLm9hc2lz LW9wZW4ub3JnL3ZpcnRpby92aXJ0aW8vdjEuMS92aXJ0aW8tdjEuMS5odG1sCj4gPiArICB0byBw cm9jZXNzIHRoaXMgbWVzc2FnZS4gRm9yIGV4YW1wbGUsIGZhaWwgdG8gc2V0IHRoZSBGRUFUVVJF U19PSyBkZXZpY2UKPiA+ICsgIHN0YXR1cyBiaXQgaWYgdGhlIGRldmljZSBjYW4gbm90IGFjY2Vw dCB0aGUgbmVnb3RpYXRlZCB2aXJ0aW8gZmVhdHVyZXMKPiA+ICsgIGdldCBmcm9tIHRoZSBWRFVT RV9ERVZfR0VUX0ZFQVRVUkVTIGlvY3RsLgo+Cj4KPiBJIHdvbmRlciBpZiBpdCdzIGJldHRlciB0 byBhZGQgYSBzZWN0aW9uIGFib3V0IHRoZSBmdXR1cmUgd29yaz8KPgo+IEUuZyB0aGUgc3VwcG9y dCBmb3IgdGhlIHVzZXJzcGFjZSBkZXZpY2UgdG8gbW9kaWZ5IHN0YXR1cyAobGlrZQo+IE5FRURT X1JFU0VUKS4KPgoKSSBwcmVmZXIgdG8gZG9jdW1lbnQgaXQgYWZ0ZXIgd2UgYWRkIHRoaXMgbmV3 IGZlYXR1cmUuCgo+Cj4gPiArCj4gPiArLSBWRFVTRV9VUERBVEVfSU9UTEI6IE5vdGlmeSB1c2Vy c3BhY2UgdG8gdXBkYXRlIHRoZSBtZW1vcnkgbWFwcGluZyBmb3Igc3BlY2lmaWVkCj4gPiArICBJ T1ZBIHJhbmdlLCB1c2Vyc3BhY2Ugc2hvdWxkIGZpcnN0bHkgcmVtb3ZlIHRoZSBvbGQgbWFwcGlu ZywgdGhlbiBzZXR1cCB0aGUgbmV3Cj4gPiArICBtYXBwaW5nIHZpYSB0aGUgVkRVU0VfSU9UTEJf R0VUX0ZEIGlvY3RsLgo+ID4gKwo+ID4gK0FmdGVyIERSSVZFUl9PSyBzdGF0dXMgYml0IGlzIHNl dCB2aWEgdGhlIFZEVVNFX1NFVF9TVEFUVVMgbWVzc2FnZSwgdXNlcnNwYWNlIGlzCj4gPiArYWJs ZSB0byBzdGFydCB0aGUgZGF0YXBsYW5lIHByb2Nlc3NpbmcgYXMgZm9sbG93czoKPiA+ICsKPiA+ ICsxLiBHZXQgdGhlIHNwZWNpZmllZCB2aXJ0cXVldWUncyBpbmZvcm1hdGlvbiB3aXRoIHRoZSBW RFVTRV9WUV9HRVRfSU5GTyBpb2N0bCwKPiA+ICsgICBpbmNsdWRpbmcgdGhlIHNpemUsIHRoZSBJ T1ZBcyBvZiBkZXNjcmlwdG9yIHRhYmxlLCBhdmFpbGFibGUgcmluZyBhbmQgdXNlZCByaW5nLAo+ ID4gKyAgIHRoZSBzdGF0ZSBhbmQgdGhlIHJlYWR5IHN0YXR1cy4KPiA+ICsKPiA+ICsyLiBQYXNz IHRoZSBhYm92ZSBJT1ZBcyB0byB0aGUgVkRVU0VfSU9UTEJfR0VUX0ZEIGlvY3RsIHNvIHRoYXQg dGhvc2UgSU9WQSByZWdpb25zCj4gPiArICAgY2FuIGJlIG1hcHBlZCBpbnRvIHVzZXJzcGFjZS4g U29tZSBzYW1wbGUgY29kZXMgaXMgc2hvd24gYmVsb3c6Cj4gPiArCj4gPiArLi4gY29kZS1ibG9j azo6IGMKPiA+ICsKPiA+ICsgICAgIHN0YXRpYyBpbnQgcGVybV90b19wcm90KHVpbnQ4X3QgcGVy bSkKPiA+ICsgICAgIHsKPiA+ICsgICAgICAgICAgICAgaW50IHByb3QgPSAwOwo+ID4gKwo+ID4g KyAgICAgICAgICAgICBzd2l0Y2ggKHBlcm0pIHsKPiA+ICsgICAgICAgICAgICAgY2FzZSBWRFVT RV9BQ0NFU1NfV086Cj4gPiArICAgICAgICAgICAgICAgICAgICAgcHJvdCB8PSBQUk9UX1dSSVRF Owo+ID4gKyAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwo+ID4gKyAgICAgICAgICAgICBjYXNl IFZEVVNFX0FDQ0VTU19STzoKPiA+ICsgICAgICAgICAgICAgICAgICAgICBwcm90IHw9IFBST1Rf UkVBRDsKPiA+ICsgICAgICAgICAgICAgICAgICAgICBicmVhazsKPiA+ICsgICAgICAgICAgICAg Y2FzZSBWRFVTRV9BQ0NFU1NfUlc6Cj4gPiArICAgICAgICAgICAgICAgICAgICAgcHJvdCB8PSBQ Uk9UX1JFQUQgfCBQUk9UX1dSSVRFOwo+ID4gKyAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwo+ ID4gKyAgICAgICAgICAgICB9Cj4gPiArCj4gPiArICAgICAgICAgICAgIHJldHVybiBwcm90Owo+ ID4gKyAgICAgfQo+ID4gKwo+ID4gKyAgICAgc3RhdGljIHZvaWQgKmlvdmFfdG9fdmEoaW50IGRl dl9mZCwgdWludDY0X3QgaW92YSwgdWludDY0X3QgKmxlbikKPiA+ICsgICAgIHsKPiA+ICsgICAg ICAgICAgICAgaW50IGZkOwo+ID4gKyAgICAgICAgICAgICB2b2lkICphZGRyOwo+ID4gKyAgICAg ICAgICAgICBzaXplX3Qgc2l6ZTsKPiA+ICsgICAgICAgICAgICAgc3RydWN0IHZkdXNlX2lvdGxi X2VudHJ5IGVudHJ5Owo+ID4gKwo+ID4gKyAgICAgICAgICAgICBlbnRyeS5zdGFydCA9IGlvdmE7 Cj4gPiArICAgICAgICAgICAgIGVudHJ5Lmxhc3QgPSBpb3ZhOwo+ID4gKwo+ID4gKyAgICAgICAg ICAgICAvKgo+ID4gKyAgICAgICAgICAgICAgKiBGaW5kIHRoZSBmaXJzdCBJT1ZBIHJlZ2lvbiB0 aGF0IG92ZXJsYXBzIHdpdGggdGhlIHNwZWNpZmllZAo+ID4gKyAgICAgICAgICAgICAgKiByYW5n ZSBbc3RhcnQsIGxhc3RdIGFuZCByZXR1cm4gdGhlIGNvcnJlc3BvbmRpbmcgZmlsZSBkZXNjcmlw dG9yLgo+ID4gKyAgICAgICAgICAgICAgKi8KPiA+ICsgICAgICAgICAgICAgZmQgPSBpb2N0bChk ZXZfZmQsIFZEVVNFX0lPVExCX0dFVF9GRCwgJmVudHJ5KTsKPiA+ICsgICAgICAgICAgICAgaWYg KGZkIDwgMCkKPiA+ICsgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKPiA+ICsKPiA+ ICsgICAgICAgICAgICAgc2l6ZSA9IGVudHJ5Lmxhc3QgLSBlbnRyeS5zdGFydCArIDE7Cj4gPiAr ICAgICAgICAgICAgICpsZW4gPSBlbnRyeS5sYXN0IC0gaW92YSArIDE7Cj4gPiArICAgICAgICAg ICAgIGFkZHIgPSBtbWFwKDAsIHNpemUsIHBlcm1fdG9fcHJvdChlbnRyeS5wZXJtKSwgTUFQX1NI QVJFRCwKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgZmQsIGVudHJ5Lm9mZnNldCk7Cj4g PiArICAgICAgICAgICAgIGNsb3NlKGZkKTsKPiA+ICsgICAgICAgICAgICAgaWYgKGFkZHIgPT0g TUFQX0ZBSUxFRCkKPiA+ICsgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKPiA+ICsK PiA+ICsgICAgICAgICAgICAgLyoKPiA+ICsgICAgICAgICAgICAgICogVXNpbmcgc29tZSBkYXRh IHN0cnVjdHVyZXMgc3VjaCBhcyBsaW5rZWQgbGlzdCB0byBzdG9yZQo+ID4gKyAgICAgICAgICAg ICAgKiB0aGUgaW90bGIgbWFwcGluZy4gVGhlIG11bm1hcCgyKSBzaG91bGQgYmUgY2FsbGVkIGZv ciB0aGUKPiA+ICsgICAgICAgICAgICAgICogY2FjaGVkIG1hcHBpbmcgd2hlbiB0aGUgY29ycmVz cG9uZGluZyBWRFVTRV9VUERBVEVfSU9UTEIKPiA+ICsgICAgICAgICAgICAgICogbWVzc2FnZSBp cyByZWNlaXZlZCBvciB0aGUgZGV2aWNlIGlzIHJlc2V0Lgo+ID4gKyAgICAgICAgICAgICAgKi8K PiA+ICsKPiA+ICsgICAgICAgICAgICAgcmV0dXJuIGFkZHIgKyBpb3ZhIC0gZW50cnkuc3RhcnQ7 Cj4gPiArICAgICB9Cj4gPiArCj4gPiArMy4gU2V0dXAgdGhlIGtpY2sgZXZlbnRmZCBmb3IgdGhl IHNwZWNpZmllZCB2aXJ0cXVldWVzIHdpdGggdGhlIFZEVVNFX1ZRX1NFVFVQX0tJQ0tGRAo+ID4g KyAgIGlvY3RsLiBUaGUga2ljayBldmVudGZkIGlzIHVzZWQgYnkgVkRVU0Uga2VybmVsIG1vZHVs ZSB0byBub3RpZnkgdXNlcnNwYWNlIHRvCj4gPiArICAgY29uc3VtZSB0aGUgYXZhaWxhYmxlIHJp bmcuCj4gPiArCj4gPiArNC4gTGlzdGVuIHRvIHRoZSBraWNrIGV2ZW50ZmQgYW5kIGNvbnN1bWUg dGhlIGF2YWlsYWJsZSByaW5nLiBUaGUgYnVmZmVyIGRlc2NyaWJlZAo+ID4gKyAgIGJ5IHRoZSBk ZXNjcmlwdG9ycyBpbiB0aGUgZGVzY3JpcHRvciB0YWJsZSBzaG91bGQgYmUgYWxzbyBtYXBwZWQg aW50byB1c2Vyc3BhY2UKPiA+ICsgICB2aWEgdGhlIFZEVVNFX0lPVExCX0dFVF9GRCBpb2N0bCBi ZWZvcmUgYWNjZXNzaW5nLgo+Cj4KPiAoT3IgdXNlcnNwYWNlIG1heSBwb2xsIHRoZSBpbmRpY2Vz IGluc3RlYWQsIHRoZSBraWNrIGV2ZW50ZmQgaXMgbm90IGEgbXVzdCkuCj4KCk9LLCB3aWxsIGFk ZCBpdC4KClRoYW5rcywKWW9uZ2ppCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCmlvbW11IG1haWxpbmcgbGlzdAppb21tdUBsaXN0cy5saW51eC1mb3VuZGF0 aW9uLm9yZwpodHRwczovL2xpc3RzLmxpbnV4Zm91bmRhdGlvbi5vcmcvbWFpbG1hbi9saXN0aW5m by9pb21tdQ==