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=-3.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE, SPF_PASS autolearn=no 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 E4995C49EA6 for ; Thu, 24 Jun 2021 04:46:49 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id D0FB4613DC for ; Thu, 24 Jun 2021 04:46:49 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230104AbhFXEtE (ORCPT ); Thu, 24 Jun 2021 00:49:04 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53452 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230046AbhFXEtC (ORCPT ); Thu, 24 Jun 2021 00:49:02 -0400 Received: from mail-ej1-x631.google.com (mail-ej1-x631.google.com [IPv6:2a00:1450:4864:20::631]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4AC21C06175F for ; Wed, 23 Jun 2021 21:46:43 -0700 (PDT) Received: by mail-ej1-x631.google.com with SMTP id hc16so7329433ejc.12 for ; Wed, 23 Jun 2021 21:46:43 -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=qV+mylXL/2SS4mJCMLehWyslEuC3Qq8x/PXCguBgY/I=; b=yLsRfVae0FF0DXCc80Qe7rbCzVIrdmQDyeaVXSgU7731bg1QMqw4lgqLCxjyZUZjwu TDH7cb0lIajOurwizpXzJMb1Ld/YEZ/vOZ/tKUWon1ytyFmk7qtEyniUaT9wfomHXaCZ Q5k7DOlqy4oW2+TRbKidZkfTZk1foP9dbr9CEZLKOgBzOUjNXSWZEPhSFmyl+eKMt16P UetkLAJ4Ll73DccWxMTSvwQYbyiWwHF4SXeF68p10765hT8FeXCxeTOqWo6XDYYUASaW U0fLxWjMmOWM2r455SZayrz6m1rBoWQox1axwCaI6sMaC6VcTv4xi2V6T6wMsgxpGUUR 4qsA== 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=qV+mylXL/2SS4mJCMLehWyslEuC3Qq8x/PXCguBgY/I=; b=Cyv4FThg0mR37ntrPlkA+Xf2lc/eybLdAwJDgRXVbSSMm9b6b6EP7xsaPCQFnkPz9w nlm/IjyOH0vo7Yu29jN+K6SnriBfEd3rvMthXBjCYJBNsd8dgCZPYD7INLPKji/TLOum WHN6xZ2xFP2ph0L4b59YGH3cE8QyShYfkrXly6lyhEnnhxT997QojVBhPZ3DutUZEWDw 9qUwO03nnz5NigbqvztZ46AW9iMxB8zRIH3xSZiVpQfOiHP8CR7Oq+lys1xWsGoaqyOm FpmbewkT9tB9thll2LALf2uXwMqxceWgY093NcVu2Hmcqk7ISlAuu3xtXAJtZW/d4tly 3iXg== X-Gm-Message-State: AOAM530vEEhu0hQIO05lJHPhvqOPyzNTZDh3VEVdjm4eK863MfkTr9ZF fj7YWKjwwDI7yXtQMV7ebk2Qi4Yn1sGrn+7Wl4Ko X-Google-Smtp-Source: ABdhPJxLv6gMYjF4IzwXDzBGPms1QJcwsfrq54qSD0tH6LJ386sUw0R2U1ERHQHkfRm0DArekdU8YwZzZP3+ubsA+P4= X-Received: by 2002:a17:906:3c4a:: with SMTP id i10mr3283231ejg.372.1624510001769; Wed, 23 Jun 2021 21:46:41 -0700 (PDT) MIME-Version: 1.0 References: <20210615141331.407-1-xieyongji@bytedance.com> <20210615141331.407-10-xieyongji@bytedance.com> <1bba439f-ffc8-c20e-e8a4-ac73e890c592@redhat.com> <0aeb7cb7-58e5-1a95-d830-68edd7e8ec2e@redhat.com> In-Reply-To: From: Yongji Xie Date: Thu, 24 Jun 2021 12:46:30 +0800 Message-ID: Subject: Re: Re: [PATCH v8 09/10] vduse: Introduce VDUSE - vDPA Device in Userspace To: Jason Wang Cc: "Michael S. Tsirkin" , Stefan Hajnoczi , Stefano Garzarella , Parav Pandit , Christoph Hellwig , Christian Brauner , Randy Dunlap , Matthew Wilcox , Al Viro , Jens Axboe , bcrl@kvack.org, Jonathan Corbet , =?UTF-8?Q?Mika_Penttil=C3=A4?= , Dan Carpenter , joro@8bytes.org, Greg KH , songmuchun@bytedance.com, virtualization , netdev@vger.kernel.org, kvm , linux-fsdevel@vger.kernel.org, iommu@lists.linux-foundation.org, linux-kernel Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, Jun 24, 2021 at 11:35 AM Jason Wang wrote: > > > =E5=9C=A8 2021/6/23 =E4=B8=8B=E5=8D=881:50, Yongji Xie =E5=86=99=E9=81=93= : > > On Wed, Jun 23, 2021 at 11:31 AM Jason Wang wrote= : > >> > >> =E5=9C=A8 2021/6/22 =E4=B8=8B=E5=8D=884:14, Yongji Xie =E5=86=99=E9=81= =93: > >>> On Tue, Jun 22, 2021 at 3:50 PM Jason Wang wrot= e: > >>>> =E5=9C=A8 2021/6/22 =E4=B8=8B=E5=8D=883:22, Yongji Xie =E5=86=99=E9= =81=93: > >>>>>> We need fix a way to propagate the error to the userspace. > >>>>>> > >>>>>> E.g if we want to stop the deivce, we will delay the status reset = until > >>>>>> we get respose from the userspace? > >>>>>> > >>>>> I didn't get how to delay the status reset. And should it be a DoS > >>>>> that we want to fix if the userspace doesn't give a response foreve= r? > >>>> You're right. So let's make set_status() can fail first, then propag= ate > >>>> its failure via VHOST_VDPA_SET_STATUS. > >>>> > >>> OK. So we only need to propagate the failure in the vhost-vdpa case, = right? > >> > >> I think not, we need to deal with the reset for virtio as well: > >> > >> E.g in register_virtio_devices(), we have: > >> > >> /* We always start by resetting the device, in case a previo= us > >> * driver messed it up. This also tests that code path a > >> little. */ > >> dev->config->reset(dev); > >> > >> We probably need to make reset can fail and then fail the > >> register_virtio_device() as well. > >> > > OK, looks like virtio_add_status() and virtio_device_ready()[1] should > > be also modified if we need to propagate the failure in the > > virtio-vdpa case. Or do we only need to care about the reset case? > > > > [1] https://lore.kernel.org/lkml/20210517093428.670-1-xieyongji@bytedan= ce.com/ > > > My understanding is DRIVER_OK is not something that needs to be validated= : > > " > > DRIVER_OK (4) > Indicates that the driver is set up and ready to drive the device. > > " > > Since the spec doesn't require to re-read the and check if DRIVER_OK is > set in 3.1.1 Driver Requirements: Device Initialization. > > It's more about "telling the device that driver is ready." > > But we don have some status bit that requires the synchronization with > the device. > > 1) FEATURES_OK, spec requires to re-read the status bit to check whether > or it it was set by the device: > > " > > Re-read device status to ensure the FEATURES_OK bit is still set: > otherwise, the device does not support our subset of features and the > device is unusable. > > " > > This is useful for some device which can only support a subset of the > features. E.g a device that can only work for packed virtqueue. This > means the current design of set_features won't work, we need either: > > 1a) relay the set_features request to userspace > > or > > 1b) introduce a mandated_device_features during device creation and > validate the driver features during the set_features(), and don't set > FEATURES_OK if they don't match. > > > 2) Some transports (PCI) requires to re-read the status to ensure the > synchronization. > > " > > After writing 0 to device_status, the driver MUST wait for a read of > device_status to return 0 before reinitializing the device. > > " > > So we need to deal with both FEATURES_OK and reset, but probably not > DRIVER_OK. > OK, I see. Thanks for the explanation. One more question is how about clearing the corresponding status bit in get_status() rather than making set_status() fail. Since the spec recommends this way for validation which is done in virtio_dev_remove() and virtio_finalize_features(). Thanks, Yongji 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=-3.5 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE, SPF_PASS,URIBL_BLOCKED autolearn=no 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 2005CC49EA7 for ; Thu, 24 Jun 2021 04:46:50 +0000 (UTC) Received: from smtp1.osuosl.org (smtp1.osuosl.org [140.211.166.138]) (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 A848F613D9 for ; Thu, 24 Jun 2021 04:46:49 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org A848F613D9 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=bytedance.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=iommu-bounces@lists.linux-foundation.org Received: from localhost (localhost [127.0.0.1]) by smtp1.osuosl.org (Postfix) with ESMTP id 6262A83BF5; Thu, 24 Jun 2021 04:46:49 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp1.osuosl.org ([127.0.0.1]) by localhost (smtp1.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 1kh6iXHliUZm; Thu, 24 Jun 2021 04:46:48 +0000 (UTC) Received: from lists.linuxfoundation.org (lf-lists.osuosl.org [140.211.9.56]) by smtp1.osuosl.org (Postfix) with ESMTPS id 4B6DA83AB5; Thu, 24 Jun 2021 04:46:48 +0000 (UTC) Received: from lf-lists.osuosl.org (localhost [127.0.0.1]) by lists.linuxfoundation.org (Postfix) with ESMTP id DD6EEC001A; Thu, 24 Jun 2021 04:46:47 +0000 (UTC) Received: from smtp3.osuosl.org (smtp3.osuosl.org [IPv6:2605:bc80:3010::136]) by lists.linuxfoundation.org (Postfix) with ESMTP id 8484FC001A for ; Thu, 24 Jun 2021 04:46:45 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp3.osuosl.org (Postfix) with ESMTP id 5C43460804 for ; Thu, 24 Jun 2021 04:46:45 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Authentication-Results: smtp3.osuosl.org (amavisd-new); dkim=pass (2048-bit key) header.d=bytedance-com.20150623.gappssmtp.com Received: from smtp3.osuosl.org ([127.0.0.1]) by localhost (smtp3.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id BXLlrdh57ltT for ; Thu, 24 Jun 2021 04:46:44 +0000 (UTC) X-Greylist: whitelisted by SQLgrey-1.8.0 Received: from mail-ej1-x632.google.com (mail-ej1-x632.google.com [IPv6:2a00:1450:4864:20::632]) by smtp3.osuosl.org (Postfix) with ESMTPS id E674A607AB for ; Thu, 24 Jun 2021 04:46:43 +0000 (UTC) Received: by mail-ej1-x632.google.com with SMTP id hq39so7398670ejc.5 for ; Wed, 23 Jun 2021 21:46:43 -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=qV+mylXL/2SS4mJCMLehWyslEuC3Qq8x/PXCguBgY/I=; b=yLsRfVae0FF0DXCc80Qe7rbCzVIrdmQDyeaVXSgU7731bg1QMqw4lgqLCxjyZUZjwu TDH7cb0lIajOurwizpXzJMb1Ld/YEZ/vOZ/tKUWon1ytyFmk7qtEyniUaT9wfomHXaCZ Q5k7DOlqy4oW2+TRbKidZkfTZk1foP9dbr9CEZLKOgBzOUjNXSWZEPhSFmyl+eKMt16P UetkLAJ4Ll73DccWxMTSvwQYbyiWwHF4SXeF68p10765hT8FeXCxeTOqWo6XDYYUASaW U0fLxWjMmOWM2r455SZayrz6m1rBoWQox1axwCaI6sMaC6VcTv4xi2V6T6wMsgxpGUUR 4qsA== 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=qV+mylXL/2SS4mJCMLehWyslEuC3Qq8x/PXCguBgY/I=; b=CjLZ8hbXD2BitH2kY0Ux28ZObHuCOGPBKQFg4s8NbBz/dw+jXmKv0MuEFvS27a1KAo VCGPjabWZ8Se3fmRe2kTt/UeZ6lz6Xz4vIMFLjqWEqDS7IXg7/xDDBlXcg5cMwNMTDbp ns1iG36v7+tSahhkLuFE75LfRBzBmO9kTHewZRu5tfQOGCdBF0OTcMS0AlHK++f9DYKP W0lTUPoi3gfz8BW3u3n7soUaV3gu4hVczBHF1Otsmq+x5SxPn80/NfSIQI5ubBuyN1aZ i5J2f1l3sAt4XlKtz82Be2O+TisRjWV9fVVag3KuxCLJWViZv+Tb2+59Hs5i5B7XURaO 4k3g== X-Gm-Message-State: AOAM532jKxdzVQ3r5jtoybR3hursP2JbVlKmmiCxM8NFjNQ74zbFJxph +VTWj0j5DVQIa4DDNRUUrMx0ooV5elqWboZZ2OI9 X-Google-Smtp-Source: ABdhPJxLv6gMYjF4IzwXDzBGPms1QJcwsfrq54qSD0tH6LJ386sUw0R2U1ERHQHkfRm0DArekdU8YwZzZP3+ubsA+P4= X-Received: by 2002:a17:906:3c4a:: with SMTP id i10mr3283231ejg.372.1624510001769; Wed, 23 Jun 2021 21:46:41 -0700 (PDT) MIME-Version: 1.0 References: <20210615141331.407-1-xieyongji@bytedance.com> <20210615141331.407-10-xieyongji@bytedance.com> <1bba439f-ffc8-c20e-e8a4-ac73e890c592@redhat.com> <0aeb7cb7-58e5-1a95-d830-68edd7e8ec2e@redhat.com> In-Reply-To: From: Yongji Xie Date: Thu, 24 Jun 2021 12:46:30 +0800 Message-ID: Subject: Re: Re: [PATCH v8 09/10] vduse: Introduce VDUSE - vDPA Device in Userspace To: Jason Wang Cc: kvm , "Michael S. Tsirkin" , virtualization , Christian Brauner , Jonathan Corbet , Matthew Wilcox , Christoph Hellwig , Dan Carpenter , Stefano Garzarella , Al Viro , Stefan Hajnoczi , songmuchun@bytedance.com, Jens Axboe , Greg KH , Randy Dunlap , linux-kernel , iommu@lists.linux-foundation.org, bcrl@kvack.org, netdev@vger.kernel.org, linux-fsdevel@vger.kernel.org, =?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" T24gVGh1LCBKdW4gMjQsIDIwMjEgYXQgMTE6MzUgQU0gSmFzb24gV2FuZyA8amFzb3dhbmdAcmVk aGF0LmNvbT4gd3JvdGU6Cj4KPgo+IOWcqCAyMDIxLzYvMjMg5LiL5Y2IMTo1MCwgWW9uZ2ppIFhp ZSDlhpnpgZM6Cj4gPiBPbiBXZWQsIEp1biAyMywgMjAyMSBhdCAxMTozMSBBTSBKYXNvbiBXYW5n IDxqYXNvd2FuZ0ByZWRoYXQuY29tPiB3cm90ZToKPiA+Pgo+ID4+IOWcqCAyMDIxLzYvMjIg5LiL 5Y2INDoxNCwgWW9uZ2ppIFhpZSDlhpnpgZM6Cj4gPj4+IE9uIFR1ZSwgSnVuIDIyLCAyMDIxIGF0 IDM6NTAgUE0gSmFzb24gV2FuZyA8amFzb3dhbmdAcmVkaGF0LmNvbT4gd3JvdGU6Cj4gPj4+PiDl nKggMjAyMS82LzIyIOS4i+WNiDM6MjIsIFlvbmdqaSBYaWUg5YaZ6YGTOgo+ID4+Pj4+PiBXZSBu ZWVkIGZpeCBhIHdheSB0byBwcm9wYWdhdGUgdGhlIGVycm9yIHRvIHRoZSB1c2Vyc3BhY2UuCj4g Pj4+Pj4+Cj4gPj4+Pj4+IEUuZyBpZiB3ZSB3YW50IHRvIHN0b3AgdGhlIGRlaXZjZSwgd2Ugd2ls bCBkZWxheSB0aGUgc3RhdHVzIHJlc2V0IHVudGlsCj4gPj4+Pj4+IHdlIGdldCByZXNwb3NlIGZy b20gdGhlIHVzZXJzcGFjZT8KPiA+Pj4+Pj4KPiA+Pj4+PiBJIGRpZG4ndCBnZXQgaG93IHRvIGRl bGF5IHRoZSBzdGF0dXMgcmVzZXQuIEFuZCBzaG91bGQgaXQgYmUgYSBEb1MKPiA+Pj4+PiB0aGF0 IHdlIHdhbnQgdG8gZml4IGlmIHRoZSB1c2Vyc3BhY2UgZG9lc24ndCBnaXZlIGEgcmVzcG9uc2Ug Zm9yZXZlcj8KPiA+Pj4+IFlvdSdyZSByaWdodC4gU28gbGV0J3MgbWFrZSBzZXRfc3RhdHVzKCkg Y2FuIGZhaWwgZmlyc3QsIHRoZW4gcHJvcGFnYXRlCj4gPj4+PiBpdHMgZmFpbHVyZSB2aWEgVkhP U1RfVkRQQV9TRVRfU1RBVFVTLgo+ID4+Pj4KPiA+Pj4gT0suIFNvIHdlIG9ubHkgbmVlZCB0byBw cm9wYWdhdGUgdGhlIGZhaWx1cmUgaW4gdGhlIHZob3N0LXZkcGEgY2FzZSwgcmlnaHQ/Cj4gPj4K PiA+PiBJIHRoaW5rIG5vdCwgd2UgbmVlZCB0byBkZWFsIHdpdGggdGhlIHJlc2V0IGZvciB2aXJ0 aW8gYXMgd2VsbDoKPiA+Pgo+ID4+IEUuZyBpbiByZWdpc3Rlcl92aXJ0aW9fZGV2aWNlcygpLCB3 ZSBoYXZlOgo+ID4+Cj4gPj4gICAgICAgICAgIC8qIFdlIGFsd2F5cyBzdGFydCBieSByZXNldHRp bmcgdGhlIGRldmljZSwgaW4gY2FzZSBhIHByZXZpb3VzCj4gPj4gICAgICAgICAgICAqIGRyaXZl ciBtZXNzZWQgaXQgdXAuICBUaGlzIGFsc28gdGVzdHMgdGhhdCBjb2RlIHBhdGggYQo+ID4+IGxp dHRsZS4gKi8KPiA+PiAgICAgICAgIGRldi0+Y29uZmlnLT5yZXNldChkZXYpOwo+ID4+Cj4gPj4g V2UgcHJvYmFibHkgbmVlZCB0byBtYWtlIHJlc2V0IGNhbiBmYWlsIGFuZCB0aGVuIGZhaWwgdGhl Cj4gPj4gcmVnaXN0ZXJfdmlydGlvX2RldmljZSgpIGFzIHdlbGwuCj4gPj4KPiA+IE9LLCBsb29r cyBsaWtlIHZpcnRpb19hZGRfc3RhdHVzKCkgYW5kIHZpcnRpb19kZXZpY2VfcmVhZHkoKVsxXSBz aG91bGQKPiA+IGJlIGFsc28gbW9kaWZpZWQgaWYgd2UgbmVlZCB0byBwcm9wYWdhdGUgdGhlIGZh aWx1cmUgaW4gdGhlCj4gPiB2aXJ0aW8tdmRwYSBjYXNlLiBPciBkbyB3ZSBvbmx5IG5lZWQgdG8g Y2FyZSBhYm91dCB0aGUgcmVzZXQgY2FzZT8KPiA+Cj4gPiBbMV0gaHR0cHM6Ly9sb3JlLmtlcm5l bC5vcmcvbGttbC8yMDIxMDUxNzA5MzQyOC42NzAtMS14aWV5b25namlAYnl0ZWRhbmNlLmNvbS8K Pgo+Cj4gTXkgdW5kZXJzdGFuZGluZyBpcyBEUklWRVJfT0sgaXMgbm90IHNvbWV0aGluZyB0aGF0 IG5lZWRzIHRvIGJlIHZhbGlkYXRlZDoKPgo+ICIKPgo+IERSSVZFUl9PSyAoNCkKPiBJbmRpY2F0 ZXMgdGhhdCB0aGUgZHJpdmVyIGlzIHNldCB1cCBhbmQgcmVhZHkgdG8gZHJpdmUgdGhlIGRldmlj ZS4KPgo+ICIKPgo+IFNpbmNlIHRoZSBzcGVjIGRvZXNuJ3QgcmVxdWlyZSB0byByZS1yZWFkIHRo ZSBhbmQgY2hlY2sgaWYgRFJJVkVSX09LIGlzCj4gc2V0IGluIDMuMS4xIERyaXZlciBSZXF1aXJl bWVudHM6IERldmljZSBJbml0aWFsaXphdGlvbi4KPgo+IEl0J3MgbW9yZSBhYm91dCAidGVsbGlu ZyB0aGUgZGV2aWNlIHRoYXQgZHJpdmVyIGlzIHJlYWR5LiIKPgo+IEJ1dCB3ZSBkb24gaGF2ZSBz b21lIHN0YXR1cyBiaXQgdGhhdCByZXF1aXJlcyB0aGUgc3luY2hyb25pemF0aW9uIHdpdGgKPiB0 aGUgZGV2aWNlLgo+Cj4gMSkgRkVBVFVSRVNfT0ssIHNwZWMgcmVxdWlyZXMgdG8gcmUtcmVhZCB0 aGUgc3RhdHVzIGJpdCB0byBjaGVjayB3aGV0aGVyCj4gb3IgaXQgaXQgd2FzIHNldCBieSB0aGUg ZGV2aWNlOgo+Cj4gIgo+Cj4gUmUtcmVhZCBkZXZpY2Ugc3RhdHVzIHRvIGVuc3VyZSB0aGUgRkVB VFVSRVNfT0sgYml0IGlzIHN0aWxsIHNldDoKPiBvdGhlcndpc2UsIHRoZSBkZXZpY2UgZG9lcyBu b3Qgc3VwcG9ydCBvdXIgc3Vic2V0IG9mIGZlYXR1cmVzIGFuZCB0aGUKPiBkZXZpY2UgaXMgdW51 c2FibGUuCj4KPiAiCj4KPiBUaGlzIGlzIHVzZWZ1bCBmb3Igc29tZSBkZXZpY2Ugd2hpY2ggY2Fu IG9ubHkgc3VwcG9ydCBhIHN1YnNldCBvZiB0aGUKPiBmZWF0dXJlcy4gRS5nIGEgZGV2aWNlIHRo YXQgY2FuIG9ubHkgd29yayBmb3IgcGFja2VkIHZpcnRxdWV1ZS4gVGhpcwo+IG1lYW5zIHRoZSBj dXJyZW50IGRlc2lnbiBvZiBzZXRfZmVhdHVyZXMgd29uJ3Qgd29yaywgd2UgbmVlZCBlaXRoZXI6 Cj4KPiAxYSkgcmVsYXkgdGhlIHNldF9mZWF0dXJlcyByZXF1ZXN0IHRvIHVzZXJzcGFjZQo+Cj4g b3IKPgo+IDFiKSBpbnRyb2R1Y2UgYSBtYW5kYXRlZF9kZXZpY2VfZmVhdHVyZXMgZHVyaW5nIGRl dmljZSBjcmVhdGlvbiBhbmQKPiB2YWxpZGF0ZSB0aGUgZHJpdmVyIGZlYXR1cmVzIGR1cmluZyB0 aGUgc2V0X2ZlYXR1cmVzKCksIGFuZCBkb24ndCBzZXQKPiBGRUFUVVJFU19PSyBpZiB0aGV5IGRv bid0IG1hdGNoLgo+Cj4KPiAyKSBTb21lIHRyYW5zcG9ydHMgKFBDSSkgcmVxdWlyZXMgdG8gcmUt cmVhZCB0aGUgc3RhdHVzIHRvIGVuc3VyZSB0aGUKPiBzeW5jaHJvbml6YXRpb24uCj4KPiAiCj4K PiBBZnRlciB3cml0aW5nIDAgdG8gZGV2aWNlX3N0YXR1cywgdGhlIGRyaXZlciBNVVNUIHdhaXQg Zm9yIGEgcmVhZCBvZgo+IGRldmljZV9zdGF0dXMgdG8gcmV0dXJuIDAgYmVmb3JlIHJlaW5pdGlh bGl6aW5nIHRoZSBkZXZpY2UuCj4KPiAiCj4KPiBTbyB3ZSBuZWVkIHRvIGRlYWwgd2l0aCBib3Ro IEZFQVRVUkVTX09LIGFuZCByZXNldCwgYnV0IHByb2JhYmx5IG5vdAo+IERSSVZFUl9PSy4KPgoK T0ssIEkgc2VlLiBUaGFua3MgZm9yIHRoZSBleHBsYW5hdGlvbi4gT25lIG1vcmUgcXVlc3Rpb24g aXMgaG93IGFib3V0CmNsZWFyaW5nIHRoZSBjb3JyZXNwb25kaW5nIHN0YXR1cyBiaXQgaW4gZ2V0 X3N0YXR1cygpIHJhdGhlciB0aGFuCm1ha2luZyBzZXRfc3RhdHVzKCkgZmFpbC4gU2luY2UgdGhl IHNwZWMgcmVjb21tZW5kcyB0aGlzIHdheSBmb3IKdmFsaWRhdGlvbiB3aGljaCBpcyBkb25lIGlu IHZpcnRpb19kZXZfcmVtb3ZlKCkgYW5kCnZpcnRpb19maW5hbGl6ZV9mZWF0dXJlcygpLgoKVGhh bmtzLApZb25namkKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KaW9tbXUgbWFpbGluZyBsaXN0CmlvbW11QGxpc3RzLmxpbnV4LWZvdW5kYXRpb24ub3JnCmh0 dHBzOi8vbGlzdHMubGludXhmb3VuZGF0aW9uLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lvbW11