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 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 smtp.lore.kernel.org (Postfix) with ESMTPS id BF2A4C6FA83 for ; Fri, 2 Sep 2022 06:15:03 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp4.osuosl.org (Postfix) with ESMTP id 288DB41678; Fri, 2 Sep 2022 06:15:03 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp4.osuosl.org 288DB41678 Authentication-Results: smtp4.osuosl.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256 header.s=mimecast20190719 header.b=C7i7POPU 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 l6DQeyZOzYbF; Fri, 2 Sep 2022 06:15:01 +0000 (UTC) Received: from lists.linuxfoundation.org (lf-lists.osuosl.org [IPv6:2605:bc80:3010:104::8cd3:938]) by smtp4.osuosl.org (Postfix) with ESMTPS id 50008410B8; Fri, 2 Sep 2022 06:15:00 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp4.osuosl.org 50008410B8 Received: from lf-lists.osuosl.org (localhost [127.0.0.1]) by lists.linuxfoundation.org (Postfix) with ESMTP id 2F9E5C0033; Fri, 2 Sep 2022 06:15:00 +0000 (UTC) Received: from smtp4.osuosl.org (smtp4.osuosl.org [IPv6:2605:bc80:3010::137]) by lists.linuxfoundation.org (Postfix) with ESMTP id C4AF7C002D for ; Fri, 2 Sep 2022 06:14:58 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp4.osuosl.org (Postfix) with ESMTP id 89FEA41635 for ; Fri, 2 Sep 2022 06:14:58 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp4.osuosl.org 89FEA41635 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 zxD1MUjn_53g for ; Fri, 2 Sep 2022 06:14:56 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.8.0 DKIM-Filter: OpenDKIM Filter v2.11.0 smtp4.osuosl.org 30D0A410B8 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by smtp4.osuosl.org (Postfix) with ESMTPS id 30D0A410B8 for ; Fri, 2 Sep 2022 06:14:56 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1662099294; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=BoKo8aceFb/Ymkvu8qEILExvargbfX9Gqhuc1uOjtxU=; b=C7i7POPUol/pCFm04xYQnqIxZG7BPiOG+qhkItgm6SBM98hyEOJMkwldlfMJuP2DHP1dLy 6UA4OvNJ/pY6mkukJq7gADcx75ZZf+NZKyajhrRogYf/pVHMA5j47HF8ohyZNzLpd+nrw8 bgww/c90vkJXvM0UKOrnSksZgNxtxzk= Received: from mail-wr1-f72.google.com (mail-wr1-f72.google.com [209.85.221.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-569-YNqTh1W5MaKrAl38f092pg-1; Fri, 02 Sep 2022 02:14:53 -0400 X-MC-Unique: YNqTh1W5MaKrAl38f092pg-1 Received: by mail-wr1-f72.google.com with SMTP id j9-20020a5d4649000000b00226d830857cso89023wrs.12 for ; Thu, 01 Sep 2022 23:14:53 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date :x-gm-message-state:from:to:cc:subject:date; bh=BoKo8aceFb/Ymkvu8qEILExvargbfX9Gqhuc1uOjtxU=; b=mE8XzYgfgPqirSh2CJ7DB08RnFjMfbbLpasZPdbsxxqW6dBB8N0PbIkiGP2kDMygSq EP8r7LXqO8FuPglYiFO0bPe7+p4lR4MKU3deX8GVEMPivKWNjvPMFDqtaMrqGQCksr9h ffPRyzO31y5xcmIhQw5rEbiuT4H9GE5asI6uRBSNCN1UQOmnzAuA3d/ajBEXSOmP13/y zjqqf3BvmjJwftUW0RxBIsTh+dN/Qtwws3NBYwJe6gANrGsChlAS5RH0iqnahigsRPQD 1ypeGwrj1DNcldUkiNYdkjEagRP7D4wZAHuE07vSyYC9xvQqtC51vD7Poya9QJLEAYH/ ZPIQ== X-Gm-Message-State: ACgBeo3X5PsuqkBJHfEYClqhAnjbdjlKQGBMf9oRMTuU1PUH4SXaCP9e quH+lLIwWnRlbNLKvTjszDk621U3MMfwnqcblgUAAUOl1P+dBD86jcm78sgJomckZduFp2OyDYL h2bvp94MyYsjVB7jYh5qhWuVstoWY6xt8rWNl2PL9NA== X-Received: by 2002:a05:600c:3790:b0:3a5:435d:b2d3 with SMTP id o16-20020a05600c379000b003a5435db2d3mr1615154wmr.134.1662099292485; Thu, 01 Sep 2022 23:14:52 -0700 (PDT) X-Google-Smtp-Source: AA6agR6Nfp0wHyi9mamhrHVfLubQB5FaDeqf9Tua4EtW8jhS9xn8WmYHzCrJIKHOIyTaoIHD7GoJSw== X-Received: by 2002:a05:600c:3790:b0:3a5:435d:b2d3 with SMTP id o16-20020a05600c379000b003a5435db2d3mr1615128wmr.134.1662099291990; Thu, 01 Sep 2022 23:14:51 -0700 (PDT) Received: from redhat.com ([2.55.191.225]) by smtp.gmail.com with ESMTPSA id d14-20020a05600c34ce00b003a5f54e3bbbsm7586210wmq.38.2022.09.01.23.14.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 01 Sep 2022 23:14:51 -0700 (PDT) Date: Fri, 2 Sep 2022 02:14:47 -0400 From: "Michael S. Tsirkin" To: Jason Wang Subject: Re: [PATCH 2/2] vDPA: conditionally read fields in virtio-net dev Message-ID: <20220902021054-mutt-send-email-mst@kernel.org> References: <449c2fb2-3920-7bf9-8c5c-a68456dfea76@intel.com> <20220817063450-mutt-send-email-mst@kernel.org> <54aa5a5c-69e2-d372-3e0c-b87f595d213c@redhat.com> <4678fc51-a402-d3ea-e875-6eba175933ba@oracle.com> MIME-Version: 1.0 In-Reply-To: X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Disposition: inline Cc: kvm , netdev , virtualization , Yongji Xie , Wu Zongyong , "Dawar, Gautam" , "Zhu, Lingshan" X-BeenThere: virtualization@lists.linux-foundation.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: Linux virtualization List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: virtualization-bounces@lists.linux-foundation.org Sender: "Virtualization" T24gRnJpLCBTZXAgMDIsIDIwMjIgYXQgMDI6MDM6MjJQTSArMDgwMCwgSmFzb24gV2FuZyB3cm90 ZToKPiBPbiBGcmksIEF1ZyAyNiwgMjAyMiBhdCAyOjI0IFBNIFNpLVdlaSBMaXUgPHNpLXdlaS5s aXVAb3JhY2xlLmNvbT4gd3JvdGU6Cj4gPgo+ID4KPiA+Cj4gPiBPbiA4LzIyLzIwMjIgODoyNiBQ TSwgSmFzb24gV2FuZyB3cm90ZToKPiA+ID4gT24gTW9uLCBBdWcgMjIsIDIwMjIgYXQgMTowOCBQ TSBaaHUsIExpbmdzaGFuIDxsaW5nc2hhbi56aHVAaW50ZWwuY29tPiB3cm90ZToKPiA+ID4+Cj4g PiA+Pgo+ID4gPj4gT24gOC8yMC8yMDIyIDQ6NTUgUE0sIFNpLVdlaSBMaXUgd3JvdGU6Cj4gPiA+ Pj4KPiA+ID4+PiBPbiA4LzE4LzIwMjIgNTo0MiBQTSwgSmFzb24gV2FuZyB3cm90ZToKPiA+ID4+ Pj4gT24gRnJpLCBBdWcgMTksIDIwMjIgYXQgNzoyMCBBTSBTaS1XZWkgTGl1IDxzaS13ZWkubGl1 QG9yYWNsZS5jb20+Cj4gPiA+Pj4+IHdyb3RlOgo+ID4gPj4+Pj4KPiA+ID4+Pj4+IE9uIDgvMTcv MjAyMiA5OjE1IFBNLCBKYXNvbiBXYW5nIHdyb3RlOgo+ID4gPj4+Pj4+IOWcqCAyMDIyLzgvMTcg MTg6MzcsIE1pY2hhZWwgUy4gVHNpcmtpbiDlhpnpgZM6Cj4gPiA+Pj4+Pj4+IE9uIFdlZCwgQXVn IDE3LCAyMDIyIGF0IDA1OjQzOjIyUE0gKzA4MDAsIFpodSwgTGluZ3NoYW4gd3JvdGU6Cj4gPiA+ Pj4+Pj4+PiBPbiA4LzE3LzIwMjIgNTozOSBQTSwgTWljaGFlbCBTLiBUc2lya2luIHdyb3RlOgo+ ID4gPj4+Pj4+Pj4+IE9uIFdlZCwgQXVnIDE3LCAyMDIyIGF0IDA1OjEzOjU5UE0gKzA4MDAsIFpo dSwgTGluZ3NoYW4gd3JvdGU6Cj4gPiA+Pj4+Pj4+Pj4+IE9uIDgvMTcvMjAyMiA0OjU1IFBNLCBN aWNoYWVsIFMuIFRzaXJraW4gd3JvdGU6Cj4gPiA+Pj4+Pj4+Pj4+PiBPbiBXZWQsIEF1ZyAxNywg MjAyMiBhdCAxMDoxNDoyNkFNICswODAwLCBaaHUsIExpbmdzaGFuIHdyb3RlOgo+ID4gPj4+Pj4+ Pj4+Pj4+IFllcyBpdCBpcyBhIGxpdHRsZSBtZXNzeSwgYW5kIHdlIGNhbiBub3QgY2hlY2sgX0Zf VkVSU0lPTl8xCj4gPiA+Pj4+Pj4+Pj4+Pj4gYmVjYXVzZSBvZgo+ID4gPj4+Pj4+Pj4+Pj4+IHRy YW5zaXRpb25hbCBkZXZpY2VzLCBzbyBtYXliZSB0aGlzIGlzIHRoZSBiZXN0IHdlIGNhbiBkbyBm b3IKPiA+ID4+Pj4+Pj4+Pj4+PiBub3cKPiA+ID4+Pj4+Pj4+Pj4+IEkgdGhpbmsgdmhvc3QgZ2Vu ZXJhbGx5IG5lZWRzIGFuIEFQSSB0byBkZWNsYXJlIGNvbmZpZyBzcGFjZQo+ID4gPj4+Pj4+Pj4+ Pj4gZW5kaWFuLW5lc3MKPiA+ID4+Pj4+Pj4+Pj4+IHRvIGtlcm5lbC4gdmRwYSBjYW4gcmV1c2Ug dGhhdCB0b28gdGhlbi4KPiA+ID4+Pj4+Pj4+Pj4gWWVzLCBJIHJlbWVtYmVyIHlvdSBoYXZlIG1l bnRpb25lZCBzb21lIElPQ1RMIHRvIHNldCB0aGUKPiA+ID4+Pj4+Pj4+Pj4gZW5kaWFuLW5lc3Ms Cj4gPiA+Pj4+Pj4+Pj4+IGZvciB2RFBBLCBJIHRoaW5rIG9ubHkgdGhlIHZlbmRvciBkcml2ZXIg a25vd3MgdGhlIGVuZGlhbiwKPiA+ID4+Pj4+Pj4+Pj4gc28gd2UgbWF5IG5lZWQgYSBuZXcgZnVu Y3Rpb24gdmRwYV9vcHMtPmdldF9lbmRpYW4oKS4KPiA+ID4+Pj4+Pj4+Pj4gSW4gdGhlIGxhc3Qg dGhyZWFkLCB3ZSBzYXkgbWF5YmUgaXQncyBiZXR0ZXIgdG8gYWRkIGEgY29tbWVudCBmb3IKPiA+ ID4+Pj4+Pj4+Pj4gbm93Lgo+ID4gPj4+Pj4+Pj4+PiBCdXQgaWYgeW91IHRoaW5rIHdlIHNob3Vs ZCBhZGQgYSB2ZHBhX29wcy0+Z2V0X2VuZGlhbigpLCBJIGNhbgo+ID4gPj4+Pj4+Pj4+PiB3b3Jr Cj4gPiA+Pj4+Pj4+Pj4+IG9uIGl0IGZvciBzdXJlIQo+ID4gPj4+Pj4+Pj4+Pgo+ID4gPj4+Pj4+ Pj4+PiBUaGFua3MKPiA+ID4+Pj4+Pj4+Pj4gWmh1IExpbmdzaGFuCj4gPiA+Pj4+Pj4+Pj4gSSB0 aGluayBRRU1VIGhhcyB0byBzZXQgZW5kaWFuLW5lc3MuIE5vIG9uZSBlbHNlIGtub3dzLgo+ID4g Pj4+Pj4+Pj4gWWVzLCBmb3IgU1cgYmFzZWQgdmhvc3QgaXQgaXMgdHJ1ZS4gQnV0IGZvciBIVyB2 RFBBLCBvbmx5Cj4gPiA+Pj4+Pj4+PiB0aGUgZGV2aWNlICYgZHJpdmVyIGtub3dzIHRoZSBlbmRp YW4sIEkgdGhpbmsgd2UgY2FuIG5vdAo+ID4gPj4+Pj4+Pj4gInNldCIgYSBoYXJkd2FyZSdzIGVu ZGlhbi4KPiA+ID4+Pj4+Pj4gUUVNVSBrbm93cyB0aGUgZ3Vlc3QgZW5kaWFuLW5lc3MgYW5kIGl0 IGtub3dzIHRoYXQKPiA+ID4+Pj4+Pj4gZGV2aWNlIGlzIGFjY2Vzc2VkIHRocm91Z2ggdGhlIGxl Z2FjeSBpbnRlcmZhY2UuCj4gPiA+Pj4+Pj4+IEl0IGNhbiBhY2NvcmRpbmdseSBzZW5kIGVuZGlh bi1uZXNzIHRvIHRoZSBrZXJuZWwgYW5kCj4gPiA+Pj4+Pj4+IGtlcm5lbCBjYW4gcHJvcGFnYXRl IGl0IHRvIHRoZSBkcml2ZXIuCj4gPiA+Pj4+Pj4gSSB3b25kZXIgaWYgd2UgY2FuIHNpbXBseSBm b3JjZSBMRSBhbmQgdGhlbiBRZW11IGNhbiBkbyB0aGUgZW5kaWFuCj4gPiA+Pj4+Pj4gY29udmVy c2lvbj8KPiA+ID4+Pj4+IGNvbnZlcnQgZnJvbSBMRSBmb3IgY29uZmlnIHNwYWNlIGZpZWxkcyBv bmx5LCBvciBRRU1VIGhhcyB0byBmb3JjZWZ1bGx5Cj4gPiA+Pj4+PiBtZWRpYXRlIGFuZCBjb3Zl cnQgZW5kaWFubmVzcyBmb3IgYWxsIGRldmljZSBtZW1vcnkgYWNjZXNzIGluY2x1ZGluZwo+ID4g Pj4+Pj4gZXZlbiB0aGUgZGF0YXBhdGggKGZpZWxkcyBpbiBkZXNjcmlwdG9yIGFuZCBhdmFpbC91 c2VkIHJpbmdzKT8KPiA+ID4+Pj4gRm9ybWVyLiBBY3R1YWxseSwgSSB3YW50IHRvIGZvcmNlIG1v ZGVybiBkZXZpY2VzIGZvciB2RFBBIHdoZW4KPiA+ID4+Pj4gZGV2ZWxvcGluZyB0aGUgdkRQQSBm cmFtZXdvcmsuIEJ1dCB0aGVuIHdlIHNlZSByZXF1aXJlbWVudHMgZm9yCj4gPiA+Pj4+IHRyYW5z aXRpb25hbCBvciBldmVuIGxlZ2FjeSAoZS5nIHRoZSBBbGkgRU5JIHBhcmVudCkuIFNvIGl0Cj4g PiA+Pj4+IGNvbXBsaWNhdGVzIHRoaW5ncyBhIGxvdC4KPiA+ID4+Pj4KPiA+ID4+Pj4gSSB0aGlu ayBzZXZlcmFsIGlkZWFzIGhhcyBiZWVuIHByb3Bvc2VkOgo+ID4gPj4+Pgo+ID4gPj4+PiAxKSBZ b3VyIHByb3Bvc2FsIG9mIGhhdmluZyBhIHZEUEEgc3BlY2lmaWMgd2F5IGZvcgo+ID4gPj4+PiBt b2Rlcm4vdHJhbnNpdGlvbmFsL2xlZ2FjeSBhd2FyZW5lc3MuIFRoaXMgc2VlbXMgdmVyeSBjbGVh biBzaW5jZSBlYWNoCj4gPiA+Pj4+IHRyYW5zcG9ydCBzaG91bGQgaGF2ZSB0aGUgYWJpbGl0eSB0 byBkbyB0aGF0IGJ1dCBpdCBzdGlsbCByZXF1aXJlcwo+ID4gPj4+PiBzb21lIGtpbmQgb2YgbWVk aWF0aW9uIGZvciB0aGUgY2FzZSBlLmcgcnVubmluZyBCRSBsZWdhY3kgZ3Vlc3Qgb24gTEUKPiA+ ID4+Pj4gaG9zdC4KPiA+ID4+PiBJbiB0aGVvcnkgaXQgc2VlbXMgbGlrZSBzbywgdGhvdWdoIHBy YWN0aWNhbGx5IEkgd29uZGVyIGlmIHdlIGNhbiBqdXN0Cj4gPiA+Pj4gZm9yYmlkIEJFIGxlZ2Fj eSBkcml2ZXIgZnJvbSBydW5uaW5nIG9uIG1vZGVybiBMRSBob3N0LiBGb3IgdGhvc2Ugd2hvCj4g PiA+Pj4gY2FyZSBhYm91dCBsZWdhY3kgQkUgZ3Vlc3QsIHRoZXkgbW9zdGx5IGxpa2UgY291bGQg YW5kIHNob3VsZCB0YWxrIHRvCj4gPiA+Pj4gdmVuZG9yIHRvIGdldCBuYXRpdmUgQkUgc3VwcG9y dCB0byBhY2hpZXZlIGhhcmR3YXJlIGFjY2VsZXJhdGlvbiwKPiA+ID4gVGhlIHByb2JsZW0gaXMg dGhlIGhhcmR3YXJlIHN0aWxsIG5lZWRzIGEgd2F5IHRvIGtub3cgdGhlIGVuZGlhbiBvZiB0aGUg Z3Vlc3Q/Cj4gPiBIYXJkd2FyZSBkb2Vzbid0IG5lZWQgdG8ga25vdy4gVk1NIHNob3VsZCBrbm93 IGJ5IGp1ZGdpbmcgZnJvbSBWRVJTSU9OXzEKPiA+IGZlYXR1cmUgYml0IG5lZ290aWF0aW9uIGFu ZCBsZWdhY3kgaW50ZXJmYWNlIGFjY2VzcyAod2l0aCBuZXcgY29kZSksIGFuZAo+ID4gdGhlIHRh cmdldCBhcmNoaXRlY3R1cmUgZW5kaWFubmVzcyAodGhlIGxhdHRlciBpcyBleGlzdGluZyBRRU1V IGNvZGUpLgo+ID4gPgo+ID4gPj4+IGZldwo+ID4gPj4+IG9mIHRoZW0gd291bGQgY291bnQgb24g UUVNVSBpbiBtZWRpYXRpbmcgb3IgZW11bGF0aW5nIHRoZSBkYXRhcGF0aAo+ID4gPj4+IChvdGhl cndpc2UgSSBkb24ndCBzZWUgdGhlIGJlbmVmaXQgb2YgYWRvcHRpbmcgdkRQQT8pLiBJIHN0aWxs IGZlZWwKPiA+ID4+PiB0aGF0IG5vdCBldmVyeSBoYXJkd2FyZSB2ZW5kb3IgaGFzIHRvIG9mZmVy IGJhY2t3YXJkIGNvbXBhdGliaWxpdHkKPiA+ID4+PiAodHJhbnNpdGlvbmFsIGRldmljZSkgd2l0 aCBsZWdhY3kgaW50ZXJmYWNlL2JlaGF2aW9yIChCRSBiZWluZyBqdXN0Cj4gPiA+Pj4gb25lKSwK PiA+ID4gUHJvYmFibHksIEkgYWdyZWUgaXQgaXMgYSBjb3JuZXIgY2FzZSwgYW5kIGRlYWxpbmcg d2l0aCB0cmFuc2l0aW9uYWwKPiA+ID4gZGV2aWNlIGZvciB0aGUgZm9sbG93aW5nIHNldHVwcyBp cyB2ZXJ5IGNoYWxsZW5nZSBmb3IgaGFyZHdhcmU6Cj4gPiA+Cj4gPiA+IC0gZHJpdmVyIHdpdGhv dXQgSU9NTVVfUExBVEZPUk0gc3VwcG9ydCwgKHJlcXVpcmluZyBkZXZpY2UgdG8gc2VuZAo+ID4g PiB0cmFuc2xhdGVkIHJlcXVlc3Qgd2hpY2ggaGF2ZSBzZWN1cml0eSBpbXBsaWNhdGlvbnMpCj4g PiBEb24ndCBnZXQgYmV0dGVyIHN1Z2dlc3Rpb24gZm9yIHRoaXMgb25lLCBidXQgSSBwcmVzdW1l IHRoaXMgaXMKPiA+IHNvbWV0aGluZyBsZWdhY3kgZ3Vlc3QgdXNlcnMgc2hvdWxkIGJlIGF3YXJl IG9mIGFoZWFkIGluIHRlcm0gb2YKPiA+IHNlY3VyaXR5IGltcGxpY2F0aW9ucy4KPiAKPiBQcm9i YWJseSBidXQgSSB0aGluayB0aGlzIGFzc3VtcHRpb24gd2lsbCBwcmV2ZW50IHRoZSBkZXZpY2Ug ZnJvbQo+IGJlaW5nIHVzZWQgaW4gYSBwcm9kdWN0aW9uIGVudmlyb25tZW50Lgo+IAo+ID4KPiA+ ID4gLSBCRSBsZWdhY3kgZ3Vlc3Qgb24gTEUgaG9zdCwgKHJlcXVpcmluZyBkZXZpY2UgdG8gaGF2 ZSBhIHdheSB0byBrbm93Cj4gPiA+IHRoZSBlbmRpYW4pCj4gPiBZZXMuIGRldmljZSBjYW4gdGVs bCBhcGFydCB3aXRoIHRoZSBoZWxwIGZyb20gVk1NIChqdWRnaW5nIGJ5IFZFUlNJT05fMQo+ID4g YWNrbm93bGVkZ2VtZW50IGFuZCBpZiBsZWdhY3kgaW50ZXJmYWNlIGlzIHVzZWQgZHVyaW5nIG5l Z290aWF0aW9uKS4KPiA+Cj4gPiA+IC0gZGV2aWNlIHNwZWNpZmljIHJlcXVpcmVtZW50IChlLmcg bW9kZXJuIHZpcnRpby1uZXQgbWFuZGF0ZSBtaW5pbWFsCj4gPiA+IGhlYWRlciBsZW5ndGggdG8g Y29udGFpbiBtcmdfcnhidWYgZXZlbiBpZiB0aGUgZGV2aWNlIGRvZXNuJ3Qgb2ZmZXIKPiA+ID4g aXQpCj4gPiBUaGlzIG9uZSBzZWVtcyB0byBiZSBzcGVjIG1hbmRhdGVkIHRyYW5zaXRpb25hbCBp bnRlcmZhY2UgcmVxdWlyZW1lbnQ/Cj4gCj4gWWVzLgo+IAo+ID4gV2hpY2ggdkRQQSBoYXJkd2Fy ZSB2ZW5kb3Igc2hvdWxkIHRha2UgY2FyZSBvZiByYXRoZXIgKGlmIHRoZXkgZG8gb2ZmZXIKPiA+ IGEgdHJhbnNpdGlvbmFsIGRldmljZSk/Cj4gCj4gUmlnaHQgYnV0IHRoaXMgaXMgbm90IHRoZSBv bmx5IG9uZS4gU2VjdGlvbiA3LjQgc3VtbWFyaWVzIHRoZQo+IHRyYW5zaXRpb25hbCBkZXZpY2Ug Y29uZm9ybWFuY2Ugd2hpY2ggaXMgYSB2ZXJ5IGxvbmcgbGlzdCBmb3IgdmVuZG9yCj4gdG8gZm9s bG93Lgo+IAo+ID4gPgo+ID4gPiBJdCBpcyBub3Qgb2J2aW91cyBmb3IgdGhlIGhhcmR3YXJlIHZl bmRvciwgc28gd2UgbWF5IGVuZCB1cCBkZWZlY3RpbmcKPiA+ID4gaW4gdGhlIGltcGxlbWVudGF0 aW9uLiBEZWFsaW5nIHdpdGggY29tcGF0aWJpbGl0eSBmb3IgdGhlIHRyYW5zaXRpb25hbAo+ID4g PiBkZXZpY2VzIGlzIGtpbmQgb2YgYSBuaWdodG1hcmUgd2hpY2ggdGhlcmUncyBubyB3YXkgZm9y IHRoZSBzcGVjIHRvCj4gPiA+IHJ1bGUgdGhlIGJlaGF2aW9yIG9mIGxlZ2FjeSBkZXZpY2VzLgo+ ID4gVGhlIGNvbXBhdGliaWxpdHkgZGV0ZWN0aW9uIHBhcnQgaXMgdGVkaW91cyBJIGFncmVlLiBU aGF0J3Mgd2h5IEkKPiA+IHN1Z2dlc3RlZCBzdGFydGluZyBmcm9tIHRoZSB2ZXJ5IG1pbmltYWwg YW5kIHByYWN0aWNhbGx5IGZlYXNpYmxlIChmb3IKPiA+IGUuZy4gb24geDg2KSwgYnV0IGp1c3Qg ZG9uJ3QgcHJvaGliaXQgdGhlIHBvc3NpYmlsaXR5IHRvIGV4dGVuZCB0byBiaWcKPiA+IGVuZGlh biBvciBjb21lIHVwIHdpdGggcXVpcmsgZml4ZXMgZm9yIHZhcmlvdXMgY2FzZXMgaW4gUUVNVS4K PiAKPiBUaGlzIGlzIHNvbWVob3cgd2UndmUgYWxyZWFkeSBiZWVuIGRvbmUsIGUuZyBhbGkgRU5J IGlzIGxpbWl0ZWQgdG8geDg2Lgo+IAo+ID4KPiA+ID4KPiA+ID4+PiAgIHRoaXMgaXMgdW5saWtl IHRoZSBzaXR1YXRpb24gb24gc29mdHdhcmUgdmlydGlvIGRldmljZSwgd2hpY2gKPiA+ID4+PiBo YXMgbGVnYWN5IHN1cHBvcnQgc2luY2UgZGF5IG9uZS4gSSB0aGluayB3ZSBldmVyIGRpc2N1c3Nl ZCBpdCBiZWZvcmU6Cj4gPiA+Pj4gZm9yIHRob3NlIHZEUEEgdmVuZG9ycyB3aG8gZG9uJ3Qgb2Zm ZXIgbGVnYWN5IGd1ZXN0IHN1cHBvcnQsIG1heWJlIHdlCj4gPiA+Pj4gc2hvdWxkIG1hbmRhdGUg c29tZSBmZWF0dXJlIGZvciBlLmcuIFZFUlNJT05fMSwgYXMgdGhlc2UgZGV2aWNlcwo+ID4gPj4+ IHJlYWxseSBkb24ndCBvZmZlciBmdW5jdGlvbmFsaXR5IG9mIHRoZSBvcHBvc2l0ZSBzaWRlICgh VkVSU0lPTl8xKQo+ID4gPj4+IGR1cmluZyBuZWdvdGlhdGlvbi4KPiA+ID4gSSd2ZSB0cmllZCBz b21ldGhpbmcgc2ltaWxhciBoZXJlIChhIGdsb2JhbCBtYW5kYXRvcnkgaW5zdGVhZCBvZiBwZXIg ZGV2aWNlKS4KPiA+ID4KPiA+ID4gaHR0cHM6Ly91cmxkZWZlbnNlLmNvbS92My9fX2h0dHBzOi8v bGttbC5vcmcvbGttbC8yMDIxLzYvNC8yNl9fOyEhQUNXVjVOOU0yUlY5OWhRIU5SUVBmajVvOW8z TUtFMTJ6ZTF6ZlhNQy05U3F3T1dxRjI2ZzhSckl5VURiVW13REl3bDVXUUNhTmlEZTZhWjJ5Ujgz ai1ORXFSWFFOWGNOeU9vJAo+ID4gPgo+ID4gPiBCdXQgZm9yIHNvbWUgcmVhc29uLCBpdCBpcyBu b3QgYXBwbGllZCBieSBNaWNoYWVsLiBJdCB3b3VsZCBiZSBhIGdyZWF0Cj4gPiA+IHJlbGllZiBp ZiB3ZSBzdXBwb3J0IG1vZGVybiBkZXZpY2VzIG9ubHkuIE1heWJlIGl0J3MgdGltZSB0byByZXZp c2l0Cj4gPiA+IHRoaXMgaWRlYSB0aGVuIHdlIGNhbiBpbnRyb2R1Y2UgbmV3IGJhY2tlbmQgZmVh dHVyZXMgYW5kIHRoZW4gd2UgY2FuCj4gPiA+IG1hbmRhdGUgVkVSU0lPTl8xCj4gPiBQcm9iYWJs eSwgbWFuZGF0aW5nIHBlci1kZXZpY2Ugc2hvdWxkIGJlIGZpbmUgSSBndWVzcy4KPiA+Cj4gPiA+ Cj4gPiA+Pj4gSGF2aW5nIGl0IHNhaWQsIHBlcmhhcHMgd2Ugc2hvdWxkIGFsc28gYWxsb3cgdmVu ZG9yIGRldmljZSB0bwo+ID4gPj4+IGltcGxlbWVudCBvbmx5IHBhcnRpYWwgc3VwcG9ydCBmb3Ig bGVnYWN5LiBXZSBjYW4gZGVmaW5lICJyZXZlcnNlZCIKPiA+ID4+PiBiYWNrZW5kIGZlYXR1cmUg dG8gZGVub3RlIHNvbWUgcGFydCBvZiB0aGUgbGVnYWN5Cj4gPiA+Pj4gaW50ZXJmYWNlL2Z1bmN0 aW9uYWxpdHkgbm90IGdldHRpbmcgaW1wbGVtZW50ZWQgYnkgZGV2aWNlLiBGb3IKPiA+ID4+PiBp bnN0YW5jZSwgVkhPU1RfQkFDS0VORF9GX05PX0JFX1ZSSU5HLCBWSE9TVF9CQUNLRU5EX0ZfTk9f QkVfQ09ORklHLAo+ID4gPj4+IFZIT1NUX0JBQ0tFTkRfRl9OT19BTElHTkVEX1ZSSU5HLAo+ID4g Pj4+IFZIT1NUX0JBQ0tFTkRfTkVUX0ZfTk9fV1JJVEVBQkxFX01BQywgYW5kIGV0IGFsLiBOb3Qg YWxsIG9mIHRoZXNlCj4gPiA+Pj4gbWlzc2luZyBmZWF0dXJlcyBmb3IgbGVnYWN5IHdvdWxkIGJl IGVhc3kgZm9yIFFFTVUgdG8gbWFrZSB1cCBmb3IsIHNvCj4gPiA+Pj4gUUVNVSBjYW4gc2VsZWN0 aXZlbHkgZW11bGF0ZSB0aG9zZSBhdCBpdHMgYmVzdCB3aGVuIG5lY2Vzc2FyeSBhbmQKPiA+ID4+ PiBhcHBsaWNhYmxlLiBJbiBvdGhlciB3b3JkLCB0aGlzIGRlc2lnbiBzaG91bGRuJ3QgcHJldmVu dCBRRU1VIGZyb20KPiA+ID4+PiBtYWtpbmcgdXAgZm9yIHZlbmRvciBkZXZpY2UncyBwYXJ0aWFs IGxlZ2FjeSBzdXBwb3J0Lgo+ID4gPiBUaGlzIGxvb2tzIHRvbyBoZWF2eXdlaWdodCBzaW5jZSBp dCB0cmllcyB0byBwcm92aWRlIGNvbXBhdGliaWxpdHkgZm9yCj4gPiA+IGxlZ2FjeSBkcml2ZXJz Lgo+ID4gVGhhdCdzIGp1c3QgZm9yIHRoZSBzYWtlIG9mIGV4dHJlbWUgYmFja3dhcmQgY29tcGF0 aWJpbGl0eSwgYnV0IHlvdSBjYW4KPiA+IHNheSB0aGF0J3Mgbm90IGV2ZW4gbmVlZGVkIGlmIHdl IG1hbmRhdGUgdHJhbnNpdGlvbmFsIGRldmljZSB0byBvZmZlcgo+ID4gYWxsIHJlcXVpcmVkIGlu dGVyZmFjZXMgZm9yIGJvdGggbGVnYWN5IGFuZCBtb2Rlcm4gZ3Vlc3QuCj4gPgo+ID4gPiAgIENv bnNpZGVyaW5nIHdlJ3ZlIGludHJvZHVjZWQgbW9kZXJuIGRldmljZXMgZm9yIDUrCj4gPiA+IHll YXJzLCBJJ2QgcmF0aGVyOgo+ID4gPgo+ID4gPiAtIFFlbXUgdG8gbWVkaWF0ZSB0aGUgY29uZmln IHNwYWNlIHN0dWZmcwo+ID4gPiAtIFNoYWRvdyB2aXJ0cXVldWUgdG8gbWVkaWF0ZSB0aGUgZGF0 YXBhdGggKEFGX1hEUCB0b2xkIHVzIHNoYWRvdyByaW5nCj4gPiA+IGNhbiBwZXJmb3JtIHZlcnkg d2VsbCBpZiB3ZSBkbyB6ZXJvLWNvcHkpLgo+ID4gVGhpcyBpcyBvbmUgd2F5IHRvIGFjaGlldmUs IHRob3VnaCBub3Qgc3VyZSB3ZSBzaG91bGQgc3RpY2sgdGhlIG9ubHkKPiA+IGhvcGUgdG8gemVy by1jb3B5LCB3aGljaCBJTUhPIG1heSB0YWtlIGEgbG9uZyB3YXkgdG8gcmVhbGl6ZSBhbmQKPiA+ IG9wdGltaXplIHRvIHdoZXJlIGEgc2ltcGxlIGRhdGFwYXRoIHBhc3N0aHJvdWdoIGNhbiBlYXNp bHkgZ2V0IHRvICh3aXRoCj4gPiBoYXJkd2FyZSBhY2NlbGVyYXRpb24gb2YgY296KS4KPiAKPiBO b3RlIHRoYXQsIGN1cnJlbnQgc2hhZG93IHZpcnRxdWV1ZSBpcyB6ZXJvY29weSwgUWVtdSBqdXN0 IG5lZWQgdG8KPiBmb3J3YXJkIHRoZSBkZXNjcmlwdG9ycy4KPiAKPiA+Cj4gPiA+Cj4gPiA+Pj4+ IDIpIE1pY2hhZWwgc3VnZ2VzdHMgdXNpbmcgVkhPU1RfU0VUX1ZSSU5HX0VORElBTiB3aGVyZSBp dCBtZWFucyB3ZQo+ID4gPj4+PiBuZWVkIGEgbmV3IGNvbmZpZyBvcHMgZm9yIHZEUEEgYnVzLCBi dXQgaXQgZG9lc24ndCBzb2x2ZSB0aGUgaXNzdWUgZm9yCj4gPiA+Pj4+IGNvbmZpZyBzcGFjZSAo YXQgbGVhc3QgZnJvbSBpdHMgbmFtZSkuIFdlIHByb2JhYmx5IG5lZWQgYSBuZXcgaW9jdGwKPiA+ ID4+Pj4gZm9yIGJvdGggdnJpbmcgYW5kIGNvbmZpZyBzcGFjZS4KPiA+ID4+PiBZZXAgYWRkaW5n IGEgbmV3IGlvY3RsIG1ha2VzIHRoaW5ncyBiZXR0ZXIsIGJ1dCBJIHRoaW5rIHRoZSBrZXkgaXMg bm90Cj4gPiA+Pj4gdGhlIG5ldyBpb2N0bC4gSXQncyB3aGV0aGVyIG9yIG5vdCB3ZSBzaG91bGQg ZW5mb3JjZSBldmVyeSB2RFBBIHZlbmRvcgo+ID4gPj4+IGRyaXZlciB0byBpbXBsZW1lbnQgYWxs IHRyYW5zaXRpb25hbCBpbnRlcmZhY2VzIHRvIGJlIHNwZWMgY29tcGxpYW50Lgo+ID4gPiBJIHRo aW5rIHRoZSBhbnN3ZXIgaXMgbm8gc2luY2UgdGhlIHNwZWMgYWxsb3dzIHRyYW5zaXRpb25hbCBk ZXZpY2UuCj4gPiA+IEFuZCB3ZSBrbm93IHRoaW5ncyB3aWxsIGJlIGdyZWF0bHkgc2ltcGxpZmll ZCBpZiB2RFBBIHN1cHBvcnQgbm9uCj4gPiA+IHRyYW5zaXRpb25hbCBkZXZpY2Ugb25seS4KPiA+ ID4KPiA+ID4gU28gd2UgY2FuIGNoYW5nZSB0aGUgcXVlc3Rpb24gdG86Cj4gPiA+Cj4gPiA+IDEp IGRvIHdlIG5lZWQgKG9yIGlzIGl0IHRvbyBsYXRlKSB0byBlbmZvcmNlIG5vbiB0cmFuc2l0aW9u YWwgZGV2aWNlPwo+ID4gV2UgYWxyZWFkeSBoYXZlIEFsaWJhYmEgRU5JIHdoaWNoIGlzIHNvcnQg b2YgYSBxdWFzaS10cmFuc2l0aW9uYWwKPiA+IGRldmljZSwgcmlnaHQ/IEluIHRoZSBzZW5zZSBp dCBkb2Vzbid0IGFkdmVydGlzZSBWRVJTSU9OXzEuIEkga25vdyB0aGUKPiA+IG90aGVyIHBhcnRz IG1pZ2h0IG5vdCBxdWFsaWZ5IGl0IHRvIGJlIGZ1bGx5IHRyYW5zaXRpb25hbCwgYnV0IGNvZGUg bm93Cj4gPiBkb2Vzbid0IHByb2hpYml0IGl0IGZyb20gc3VwcG9ydGluZyBWRVJTSU9OXzEgbW9k ZXJuIGludGVyZmFjZSBkZXBlbmRpbmcKPiA+IG9uIHdoYXRldmVyIGZ1dHVyZSBuZWVkLgo+IAo+ IFdlIGNhbiBhc2sgRU5JIGRldmVsb3BlciBmb3IgdGhlaXIgZnV0dXJlIHBsYW4sIGl0IGxvb2tz IHRvIG1lIGEKPiBsZWdhY3kgb25seSBkZXZpY2Ugd291bGRuJ3QgYmUgaW50ZXJlc3RlZCBpbiB0 aGUgZnV0dXJlLgo+IAo+IFpvbmd5b25nLCBkbyB5b3UgaGF2ZSB0aGUgcGxhbiB0byBpbXBsZW1l bnQgZGV2aWNlIHdpdGggVkVSU0lPTl8xIHN1cHBvcnQ/Cj4gCj4gPiA+IDIpIGlmIHllcywgY2Fu IHRyYW5zaXRpb25hbCBkZXZpY2UgYmUgbWVkaWF0ZSBpbiBhbiBlZmZpY2llbnQgd2F5Pwo+ID4g Pgo+ID4gPiBGb3IgMSksIGl0J3MgcHJvYmFibHkgdG9vIGxhdGUgYnV0IHdlIGNhbiBpbnZlbnQg bmV3IHZEUEEgZmVhdHVyZXMgYXMKPiA+ID4geW91IHN1Z2dlc3QgdG8gYmUgbm9uIHRyYW5zaXRp b25hbC4gVGhlbiB3ZSBjYW46Cj4gPiA+Cj4gPiA+IDEuMSkgZXh0ZW5kIHRoZSBuZXRsaW5rIEFQ SSB0byBwcm92aXNpb24gbm9uLXRyYW5zaXRvbmFsIGRldmljZQo+ID4gRGVmaW5lIG5vbi10cmFu c2l0aW9uYWw6IGRldmljZSBjb3VsZCBiZSBlaXRoZXIgbW9kZXJuLW9ubHkgb3IgbGVnYWN5LW9u bHk/Cj4gCj4gQWNjb3JkaW5nIHRvIHRoZSBzcGVjLCBub24tdHJhbnNpdGlvbmFsIHNob3VsZCBi ZSBtb2Rlcm4gb25seS4KPiAKPiA+ID4gMS4yKSB3b3JrIG9uIHRoZSBub24tdHJhbnN0aW9uYWwg ZGV2aWNlIGluIHRoZSBmdXR1cmUKPiA+ID4gMS4zKSBwcmVzZW50aW5nIHRyYW5zaXRpb25hbCBk ZXZpY2UgdmlhIG1lZGlhdGlvbgo+ID4gcHJlc2VudGluZyB0cmFuc2l0aW9uYWwgb24gdG9wIG9m IGEgbW9kZXJuIGRldmljZSB3aXRoIFZFUlNJT05fMSwgcmlnaHQ/Cj4gCj4gWWVzLCBJIG1lYW4g cHJlc2VudGluZy9tZWRpYXRpbmcgYSB0cmFuc2l0aW9uYWwgZGV2aWNlIG9uIHRvcCBvZiBhCj4g bm9uLXRyYW5zaXRpb25hbCBkZXZpY2UuCj4gCj4gPiBXaGF0IGlmIHRoZSBoYXJkd2FyZSBkZXZp Y2UgY2FuIHN1cHBvcnQgbGVnYWN5LWNvbXBhdGlibGUgZGF0YXBhdGgKPiA+IG5hdGl2ZWx5IHRo YXQgZG9lc24ndCBuZWVkIG1lZGlhdGlvbj8gQ2FuIGl0IGJlIGRvbmUgd2l0aCBkaXJlY3QKPiA+ IGRhdGFwYXRoIHBhc3N0aHJvdWdoIHdpdGhvdXQgc3ZxIGludm9sdmVtZW50Pwo+IAo+IEknZCBs aWtlIHRvIGF2b2lkIHN1cHBvcnRpbmcgbGVnYWN5LW9ubHkgZGV2aWNlIGxpa2UgRU5JIGluIHRo ZQo+IGZ1dHVyZS4gVGhlIG1ham9yIHByb2JsZW0gaXMgdGhhdCBpdCdzIG91dCBvZiB0aGUgc3Bl YyB0aHVzIHRoZQo+IGJlaGF2aW91ciBpcyBkZWZpbmVkIGJ5IHRoZSBjb2RlIG5vdCB0aGUgc3Bl Yy4KPiAKPiA+Cj4gPiA+Cj4gPiA+IFRoZSBwcmV2aW91cyB0cmFuc2l0aW9uYWwgdkRQQSB3b3Jr IGFzIGlzLCBpdCdzIHByb2JhYmx5IHRvbyBsYXRlIHRvCj4gPiA+IGZpeCBhbGwgdGhlIGlzc3Vl IHdlIHN1ZmZlci4KPiA+IFdoYXQgZG8geW91IG1lYW4gd29yayBhcy1pcywKPiAKPiBTZWUgYWJv dmUsIGJhc2ljYWxseSBJIG1lYW4gdGhlIGJlaGF2aW91ciBpcyBkZWZpbmVkIGJ5IHRoZSB2RFBB IGNvZGUKPiBub3QgKG9yIGNhbid0KSBieSB0aGUgc3BlYy4KPiAKPiBGb3IgZXhhbXBsZSwgZm9y IHZpcnRpby1wY2ksIHdlIGhhdmU6Cj4gCj4gbGVnYWN5IGludGVyZmFjZTogQkFSCj4gbW9kZXJu IGludGVyZmFjZTogY2FwYWJpbGl0eQo+IAo+IFNvIGEgdHJhbnNpdGlvbmFsIGRldmljZSBjYW4g c2ltcGxlIHByb3ZpZGUgYm90aCBvZiB0aG9zZSBpbnRlcmZhY2VzOgo+IEUuZyBmb3IgZGV2aWNl IGNvbmZpZ3VyYXRpb24gc3BhY2UsIGlmIGl0IGlzIGFjY2Vzc2VkIHZpYSBsZWdhY3kKPiBpbnRl cmZhY2UgZGV2aWNlIGtub3cgaXQgbmVlZHMgdG8gcHJvdmlkZSB0aGUgY29uZmlnIHdpdGggbmF0 aXZlCj4gZW5kaWFuIG90aGVyd2lzZSBsaXR0bGUgZW5kaWFuIHdoZW4gYWNjZXNzaW5nIHZpYSBt b2Rlcm4gaW50ZXJmYWNlLgo+IAo+IEZvciB2aXJ0aW8tbW1pbywgaXQgbG9va3MgdG8gbWUgaXQg ZG9lc24ndCBwcm92aWRlIGEgd2F5IGZvcgo+IHRyYW5zaXRpb25hbCBkZXZpY2UuCj4gCj4gRm9y IHZEUEEsIHdlIGFjdHVhbGx5IGRvbid0IGRlZmluZSB3aGV0aGVyIGNvbmZpZ19vcHMgaXMgYSBt b2Rlcm4gb3IKPiBsZWdhY3kgaW50ZXJmYWNlLiBUaGlzIGlzIHZlcnkgdHJpY2t5IGZvciB0aGUg dHJhbnNpdGlvbmFsIGRldmljZQo+IHNpbmNlIGl0IHRyaWVzIHRvIHJldXNlIHRoZSBzYW1lIGlu dGVyZmFjZSBmb3IgYm90aCBsZWdhY3kgYW5kIG1vZGVybgo+IHdoaWNoIG1ha2UgaXQgdmVyeSBo YXJkIHRvIGJlIGNvcnJlY3QuIEUuZzoKPiAKPiAxKSBWRVJTSU9OXzEgdHJpY2sgd29uJ3Qgd29y aywgZS5nIHRoZSBzcGVjIGFsbG93cyB0byByZWFkIGRldmljZQo+IGNvbmZpZ3VyYXRpb24gc3Bh Y2UgYmVmb3JlIEZFQVRVUkVfT0suIFNvIGxlZ2FjeSBkcml2ZXIgbWF5IGFzc3VtZSBhCj4gbmF0 aXZlIGVuZGlhbi4KCkkgYW0gdHJ5aW5nIHRvIGFkZHJlc3MgdGhpcyBpbiB0aGUgc3BlYy4gVGhl cmUgd2FzIGEgZmFpcmx5IG5hcnJvdwp3aW5kb3cgZHVyaW5nIHdoaWNoIGd1ZXN0cyBhY2Nlc3Nl ZCBjb25maWcgc3BhY2UgYmVmb3JlCndyaXRpbmcgb3V0IGZlYXR1cmVzLiBZZXMgYmVmb3JlIEZF QVRVUkVTX09LIGJ1dCBJIHRoaW5rCmFza2luZyB0aGF0IGd1ZXN0cyBzZW5kIHRoZSBmZWF0dXJl cyB0byBkZXZpY2UKYmVmb3JlIHBva2luZyBhdCBjb25maWcgc3BhY2UgdGhhdCBkZXBlbmRzIG9u IHRob3NlCmZlYXR1cmVzIGlzIHJlYXNvbmFibGUuCgpTaW1pbGFybHksIHdlIGNhbiBhbHNvIGNo YW5nZSBRRU1VIHRvIHNlbmQKZmVhdHVyZXMgdG8gdmRwYSBvbiBjb25maWcgYWNjZXNzIHRoYXQg aGFwcGVucyBiZWZvcmUKRkVBVFVSRVNfT0suCgoKCj4gMikgU0VUX1ZSSU5HX0VORElBTiBkb2Vz bid0IGZpeCBhbGwgdGhlIGlzc3VlLCB0aGVyZSdzIHN0aWxsIGEKPiBxdWVzdGlvbiB3aGF0IGVu ZGlhbiBpdCBpcyBiZWZvcmUgU0VUX1ZSSU5HX0VORElBTiAob3Igd2UgbmVlZCB0bwo+IHN1cHBv cnQgdXNlcnNwYWNlIHdpdGhvdXQgU0VUX1ZSSU5HX0VORElBTikKPiAuLi4KPiAKPiBUaGluZ3Mg d2lsbCBiZSBzaW1wbGlmaWVkIGlmIHdlIG1hbmRhdGUgdGhlIGNvbmZpZ19vcHMgYXMgdGhlIG1v ZGVybgo+IGludGVyZmFjZSBhbmQgcHJvdmlkZSB0aGUgbmVjZXNzYXJ5IG1lZGlhdGlvbiBpbiB0 aGUgaHlwZXJ2aXNvci4KPiAKPiA+IHdoYXQncyB0aGUgbm9tZW5jbGF0dXJlIGZvciB0aGF0LAo+ ID4gcXVhc2ktdHJhbnNpdGlvbmFsIG9yIGJyb2tlbi10cmFuc2l0aW9uYWw/Cj4gCj4gSWYgd2Ug aW52ZW50IG5ldyBBUEkgdG8gY2xhcmlmeSB0aGUgbW9kZXJuL2xlZ2FjeSBhbmQgZm9jdXMgb24g dGhlCj4gbW9kZXJuIGluIHRoZSBmdXR1cmUsIHdlIHByb2JhYmx5IGRvbid0IG5lZWQgYSBuYW1l PwoKT0suIFdoYXQgd2lsbCB0aGF0IEFQSSBiZSBsaWtlPyBNYXliZSBhIGJpdCBpbiBQUk9UT0NP TF9GRUFUVVJFUz8KCj4gPiBhbmQgd2hhdCBhcmUgdGhlIG91dHN0YW5kaW5nCj4gPiBpc3N1ZXMg eW91IGFudGljaXBhdGUgcmVtYWluaW5nPwo+IAo+IEJhc2ljYWxseSB3ZSBuZWVkIHRvIGNoZWNr IHRoZSBjb25mb3JtYW5jZSBsaXN0ZWQgaW4gc2VjdGlvbiA3LjQgb2YgdGhlIHNwZWMuCj4gCj4g PiBJZiBpdCBpcyBkZXZpY2Ugc3BlY2lmaWMgb3IgdmVuZG9yCj4gPiBkcml2ZXIgc3BlY2lmaWMs IGxldCBpdCBiZS4gQnV0IEkgd29uZGVyIGlmIHRoZXJlJ3MgYW55IGdlbmVyaWMgb25lIHRoYXQK PiA+IGhhcyB0byBiZSBmaXhlZCBpbiB2ZHBhIGNvcmUgdG8gc3VwcG9ydCBhIHRydWx5IHRyYW5z aXRpb25hbCBtb2RlbC4KPiAKPiBUd28gc2V0IG9mIGNvbmZpZ19vcHM/IEUuZwo+IAo+IGxlZ2Fj eV9jb25maWdfb3BzCj4gbW9kZXJuX2NvbmZpZ19vcHMKPiAKPiBCdXQgSSdtIG5vdCBzdXJlIHdo ZXRoZXIgb3Igbm90IGl0J3Mgd29ydGh3aGlsZS4KPiAKPiA+ID4KPiA+ID4gRm9yIDIpLCB0aGUg a2V5IHBhcnQgaXMgdGhlIGRhdGFwYXRoIG1lZGlhdGlvbiwgd2UgY2FuIHVzZSBzaGFkb3cgdmly dHF1ZXVlLgo+ID4gU3VyZS4gRm9yIG91ciB1c2UgY2FzZSwgd2UnZCBjYXJlIG1vcmUgaW4gcHJv dmlkaW5nIHRyYW5zaXRpb25hbCByYXRoZXIKPiA+IHRoYW4gYmVpbmcgbm9uLXRyYW5zaXRpb25h bC4gU28sIG9uZSBkZXZpY2UgZml0cyBhbGwuCj4gPgo+ID4gVGhhbmtzIGZvciBhbGwgdGhlIGlk ZWFzLiBUaGlzIGRpc2N1c3Npb24gaXMgcmVhbGx5IHVzZWZ1bC4KPiAKPiBBcHByZWNpYXRlIGZv ciB0aGUgZGlzY3Vzc2lvbi4KPiAKPiBUaGFua3MKPiAKPiA+Cj4gPiBCZXN0LAo+ID4gLVNpd2Vp Cj4gPiA+Cj4gPiA+Pj4gSWYgd2UgYWxsb3cgdGhlbSB0byByZWplY3QgdGhlIFZIT1NUX1NFVF9W UklOR19FTkRJQU4gIG9yCj4gPiA+Pj4gVkhPU1RfU0VUX0NPTkZJR19FTkRJQU4gY2FsbCwgd2hh dCBjb3VsZCB3ZSBkbz8gV2Ugd291bGQgc3RpbGwgZW5kIHVwCj4gPiA+Pj4gd2l0aCBzYW1lIHNp dHVhdGlvbiBvZiBlaXRoZXIgZmFpbCB0aGUgZ3Vlc3QsIG9yIHRyeWluZyB0bwo+ID4gPj4+IG1l ZGlhdGUvZW11bGF0ZSwgcmlnaHQ/Cj4gPiA+Pj4KPiA+ID4+PiBOb3QgdG8gbWVudGlvbiBWSE9T VF9TRVRfVlJJTkdfRU5ESUFOIGlzIHJhcmVseSBzdXBwb3J0ZWQgYnkgdmhvc3QKPiA+ID4+PiB0 b2RheSAtIGZldyBkaXN0cm8ga2VybmVsIGhhcyBDT05GSUdfVkhPU1RfQ1JPU1NfRU5ESUFOX0xF R0FDWSBlbmFibGVkCj4gPiA+Pj4gYW5kIFFFTVUganVzdCBpZ25vcmVzIHRoZSByZXN1bHQuIHZo b3N0IGRvZXNuJ3QgbmVjZXNzYXJpbHkgZGVwZW5kIG9uCj4gPiA+Pj4gaXQgdG8gZGV0ZXJtaW5l IGVuZGlhbm5lc3MgaXQgbG9va3MuCj4gPiA+PiBJIHdvdWxkIGxpa2UgdG8gc3VnZ2VzdCB0byBh ZGQgdHdvIG5ldyBjb25maWcgb3BzIGdldC9zZXRfdnFfZW5kaWFuKCkKPiA+ID4+IGFuZCBnZXQv c2V0X2NvbmZpZ19lbmRpYW4oKSBmb3IgdkRQQS4gVGhpcyBpcyB1c2VkIHRvOgo+ID4gPj4gYSkg c3VwcG9ydCBWSE9TVF9HRVQvU0VUX1ZSSU5HX0VORElBTiBhcyBNU1Qgc3VnZ2VzdGVkLCBhbmQg YWRkCj4gPiA+PiBWSE9TVF9TRVQvR0VUX0NPTkZJR19FTkRJQU4gZm9yIHZob3N0X3ZkcGEuCj4g PiA+PiBJZiB0aGUgZGV2aWNlIGhhcyBub3QgaW1wbGVtZW50ZWQgaW50ZXJmYWNlIHRvIHNldCBp dHMgZW5kaWFuZXNzLCB0aGVuCj4gPiA+PiBubyBtYXR0ZXIgc3VjY2VzcyBvciBmYWlsdXJlIG9m IFNFVF9FTkRJQU4sIFFFTVUga25vd3MgdGhlIGVuZGlhbi1uZXNzCj4gPiA+PiBhbnl3YXkuCj4g PiA+IEhvdyBjYW4gUWVtdSBrbm93IHRoZSBlbmRpYW4gaW4gdGhpcyB3YXk/IEFuZCBpZiBpdCBj YW4sIHRoZXJlJ3Mgbm8KPiA+ID4gbmVlZCBmb3IgdGhlIG5ldyBBUEk/Cj4gPiA+Cj4gPiA+PiBJ biB0aGlzIGNhc2UsIGlmIHRoZSBkZXZpY2UgZW5kaWFuZXNzIGRvZXMgbm90IG1hdGNoIHRoZSBn dWVzdCwKPiA+ID4+IHRoZXJlIG5lZWRzIGEgbWVkaWF0aW9uIGxheWVyIG9yIGZhaWwuCj4gPiA+ PiBiKSBvcHMtPmdldF9jb25maWdfZW5kaWFuKCkgY2FuIGFsd2F5cyB0ZWxsIHRoZSBlbmRpYW4t bmVzcyBvZiB0aGUKPiA+ID4+IGRldmljZSBjb25maWcgc3BhY2UgYWZ0ZXIgdGhlIHZlbmRvciBk cml2ZXIgcHJvYmluZyB0aGUgZGV2aWNlLiBTbyB3ZQo+ID4gPj4gY2FuIHVzZSB0aGlzIG9wcy0+ Z2V0X2NvbmZpZ19lbmRpYW4oKSBmb3IKPiA+ID4+IE1UVSwgTUFDIGFuZCBvdGhlciBmaWVsZHMg aGFuZGxpbmcgaW4gdmRwYV9kZXZfbmV0X2NvbmZpZ19maWxsKCkgYW5kIHdlCj4gPiA+PiBkb24n dCBuZWVkIHRvIHNldF9mZWF0dXJlcyBpbiB2ZHBhX2dldF9jb25maWdfdW5sb2NrZWQoKSwgc28g bm8gcmFjZQo+ID4gPj4gY29uZGl0aW9ucy4KPiA+ID4+IEV2ZXJ5IHRpbWUgb3BzLT5nZXRfY29u ZmlnKCkgcmV0dXJuZWQsIHdlIGNhbiB0ZWxsIHRoZSBlbmRpYW4gYnkKPiA+ID4+IG9wcy1jb25m aWdfPmdldF9lbmRpYW4oKSwgd2UgZG9uJ3QgbmVlZCBzZXRfZmVhdHVyZXMoeHh4LCAwKSBpZiBm ZWF0dXJlcwo+ID4gPj4gbmVnb3RpYXRpb24gbm90IGRvbmUuCj4gPiA+Pgo+ID4gPj4gVGhlIHF1 ZXN0aW9uIGlzOiBEbyB3ZSBuZWVkIHR3byBwYWlycyBvZiBpb2N0bHMgZm9yIGJvdGggdnEgYW5k IGNvbmZpZwo+ID4gPj4gc3BhY2U/IENhbiBjb25maWcgc3BhY2UgZW5kaWFuLW5lc3MgZGlmZmVy IGZyb20gdGhlIHZxcz8KPiA+ID4+IGMpIGRvIHdlIG5lZWQgYSBuZXcgbmV0bGluayBhdHRyIHRl bGxpbmcgdGhlIGVuZGlhbi1uZXNzIHRvIHVzZXIgc3BhY2U/Cj4gPiA+IEdlbmVyYWxseSwgSSdt IG5vdCBzdXJlIHRoaXMgaXMgYSBnb29kIGRlc2lnbiBjb25zaWRlciBpdCBwcm92aWRlcyBuZWl0 aGVyOgo+ID4gPgo+ID4gPiBDb21wYXRpYmlsaXR5IHdpdGggdGhlIHZpcnRpbyBzcGVjCj4gPiA+ Cj4gPiA+IG5vcgo+ID4gPgo+ID4gPiBDb21wYXRpYmlsaXR5IHdpdGggdGhlIGV4aXN0aW5nIHZo b3N0IEFQSSAoVkhPU1RfU0VUX1ZSSU5HX0VORElBTikKPiA+ID4KPiA+ID4gVGhhbmtzCj4gPiA+ Cj4gPiA+PiBUaGFua3MsCj4gPiA+PiBaaHUgTGluZ3NoYW4KPiA+ID4+Pj4gb3IKPiA+ID4+Pj4K PiA+ID4+Pj4gMykgcmV2aXNpdCB0aGUgaWRlYSBvZiBmb3JjaW5nIG1vZGVybiBvbmx5IGRldmlj ZSB3aGljaCBtYXkgc2ltcGxpZnkKPiA+ID4+Pj4gdGhpbmdzIGEgbG90Cj4gPiA+Pj4gSSBhbSBu b3QgYWN0dWFsbHkgYWdhaW5zdCBmb3JjaW5nIG1vZGVybiBvbmx5IGNvbmZpZyBzcGFjZSwgZ2l2 ZW4gdGhhdAo+ID4gPj4+IGl0J3Mgbm90IGhhcmQgZm9yIGVpdGhlciBRRU1VIG9yIGluZGl2aWR1 YWwgZHJpdmVyIHRvIG1lZGlhdGUgb3IKPiA+ID4+PiBlbXVsYXRlLCBhbmQgZm9yIHRoZSBtb3N0 IHBhcnQgaXQncyBub3QgY29uZmxpY3Qgd2l0aCB0aGUgZ29hbCBvZgo+ID4gPj4+IG9mZmxvYWQg b3IgYWNjZWxlcmF0aW9uIHdpdGggdkRQQS4gQnV0IGZvcmNpbmcgTEUgcmluZyBsYXlvdXQgSU1P Cj4gPiA+Pj4gd291bGQganVzdCBraWxsIG9mZiB0aGUgcG90ZW50aWFsIG9mIGEgdmVyeSBnb29k IHVzZSBjYXNlLiBDdXJyZW50bHkKPiA+ID4+PiBmb3Igb3VyIHVzZSBjYXNlIHRoZSBwcmlvcml0 eSBmb3Igc3VwcG9ydGluZyAwLjkuNSBndWVzdCB3aXRoIHZEUEEgaXMKPiA+ID4+PiBzbGlnaHRs eSBsb3dlciBjb21wYXJlZCB0byBsaXZlIG1pZ3JhdGlvbiwgYnV0IGl0IGlzIHN0aWxsIGluIG91 ciBUT0RPCj4gPiA+Pj4gbGlzdC4KPiA+ID4+Pgo+ID4gPj4+IFRoYW5rcywKPiA+ID4+PiAtU2l3 ZWkKPiA+ID4+Pgo+ID4gPj4+PiB3aGljaCB3YXkgc2hvdWxkIHdlIGdvPwo+ID4gPj4+Pgo+ID4g Pj4+Pj4gSSBob3BlCj4gPiA+Pj4+PiBpdCdzIG5vdCB0aGUgbGF0dGVyLCBvdGhlcndpc2UgaXQg bG9zZXMgdGhlIHBvaW50IHRvIHVzZSB2RFBBIGZvcgo+ID4gPj4+Pj4gZGF0YXBhdGggYWNjZWxl cmF0aW9uLgo+ID4gPj4+Pj4KPiA+ID4+Pj4+IEV2ZW4gaWYgaXRzIHRoZSBmb3JtZXIsIGl0J3Mg YSBsaXR0bGUgd2VpcmQgZm9yIHZlbmRvciBkZXZpY2UgdG8KPiA+ID4+Pj4+IGltcGxlbWVudCBh IExFIGNvbmZpZyBzcGFjZSB3aXRoIEJFIHJpbmcgbGF5b3V0LCBhbHRob3VnaCBzdGlsbAo+ID4g Pj4+Pj4gcG9zc2libGUuLi4KPiA+ID4+Pj4gUmlnaHQuCj4gPiA+Pj4+Cj4gPiA+Pj4+IFRoYW5r cwo+ID4gPj4+Pgo+ID4gPj4+Pj4gLVNpd2VpCj4gPiA+Pj4+Pj4gVGhhbmtzCj4gPiA+Pj4+Pj4K PiA+ID4+Pj4+Pgo+ID4gPj4+Pj4+Pj4gU28gaWYgeW91IHRoaW5rIHdlIHNob3VsZCBhZGQgYSB2 ZHBhX29wcy0+Z2V0X2VuZGlhbigpLAo+ID4gPj4+Pj4+Pj4gSSB3aWxsIGRyb3AgdGhlc2UgY29t bWVudHMgaW4gdGhlIG5leHQgdmVyc2lvbiBvZgo+ID4gPj4+Pj4+Pj4gc2VyaWVzLCBhbmQgd29y ayBvbiBhIG5ldyBwYXRjaCBmb3IgZ2V0X2VuZGlhbigpLgo+ID4gPj4+Pj4+Pj4KPiA+ID4+Pj4+ Pj4+IFRoYW5rcywKPiA+ID4+Pj4+Pj4+IFpodSBMaW5nc2hhbgo+ID4gPj4+Pj4+PiBHdWVzdHMg ZG9uJ3QgZ2V0IGVuZGlhbi1uZXNzIGZyb20gZGV2aWNlcyBzbyB0aGlzIHNlZW1zIHBvaW50bGVz cy4KPiA+ID4+Pj4+Pj4KPiA+CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpWaXJ0dWFsaXphdGlvbiBtYWlsaW5nIGxpc3QKVmlydHVhbGl6YXRpb25AbGlz dHMubGludXgtZm91bmRhdGlvbi5vcmcKaHR0cHM6Ly9saXN0cy5saW51eGZvdW5kYXRpb24ub3Jn L21haWxtYW4vbGlzdGluZm8vdmlydHVhbGl6YXRpb24= 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 17F66C6FA85 for ; Fri, 2 Sep 2022 06:15:06 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235446AbiIBGPE (ORCPT ); Fri, 2 Sep 2022 02:15:04 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56038 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235400AbiIBGO6 (ORCPT ); Fri, 2 Sep 2022 02:14:58 -0400 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id F28ED183AC for ; Thu, 1 Sep 2022 23:14:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1662099295; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=BoKo8aceFb/Ymkvu8qEILExvargbfX9Gqhuc1uOjtxU=; b=h3DyrwYTx83h5PyKMsSFXnpAzUrNzEk1HwXmJwyGuu3ZdKbuWqhJf2mZ/ij7bmUSIkuASN EeZiezJi72mQ19hLvd7FXVpaU9hY2SHG0IHLSGpvu7NjBWiZucaT8EML3W2RKe3qry7/2D 4lYnEVAkFRbZvKYIij2tFpG5aA6reV4= Received: from mail-wr1-f72.google.com (mail-wr1-f72.google.com [209.85.221.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-267-8FFVAtXdO6Wd8ZCipPGwAA-1; Fri, 02 Sep 2022 02:14:53 -0400 X-MC-Unique: 8FFVAtXdO6Wd8ZCipPGwAA-1 Received: by mail-wr1-f72.google.com with SMTP id e13-20020adfa44d000000b002260797ca0cso87354wra.20 for ; Thu, 01 Sep 2022 23:14:53 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date :x-gm-message-state:from:to:cc:subject:date; bh=BoKo8aceFb/Ymkvu8qEILExvargbfX9Gqhuc1uOjtxU=; b=BTsPXuY+xjb8gmwmt4+Krh2sdr4q4LQOZKzh1kxFm+U5EBnjVJSBF0eCcTZOGcA380 AOTC4f1OTOu3bvRnZNnACXXlKewsRFFlkp0QLlWA6Ste9G5DaWrGlEwWtYrbrT8QcvV8 W6Vdyqoo31X5Js30paRZJhsNJ4Tk5+dlSjRYkJZhGm0h08GtTnmeoT24eOubHOcmc6NA l1kuomyON8nhUjuydV5UgW6wdJWN2PoDiehPsIyhKuzijrww+62WV5Te0G5QseRWSa+R cTe5juhk5FRe6nkuhYlE2ruvJOv26aAm/zGPtk9JctoabAO+06LD6zi+aCNtbpE9awQj KFmA== X-Gm-Message-State: ACgBeo12kiR0WRYuOZE1TycRZhE1/uyMA9JjsEkEo6r2g7yD9Dc0xuIE R1bEb7QzlTGnzA/CyCRsyiOjU4s9mfRctPugZyhRwB3BYvr0/1TLoqDMwVG1syWbHq9ATd6vWVg UyN96qVdHJFe/ X-Received: by 2002:a05:600c:3790:b0:3a5:435d:b2d3 with SMTP id o16-20020a05600c379000b003a5435db2d3mr1615152wmr.134.1662099292485; Thu, 01 Sep 2022 23:14:52 -0700 (PDT) X-Google-Smtp-Source: AA6agR6Nfp0wHyi9mamhrHVfLubQB5FaDeqf9Tua4EtW8jhS9xn8WmYHzCrJIKHOIyTaoIHD7GoJSw== X-Received: by 2002:a05:600c:3790:b0:3a5:435d:b2d3 with SMTP id o16-20020a05600c379000b003a5435db2d3mr1615128wmr.134.1662099291990; Thu, 01 Sep 2022 23:14:51 -0700 (PDT) Received: from redhat.com ([2.55.191.225]) by smtp.gmail.com with ESMTPSA id d14-20020a05600c34ce00b003a5f54e3bbbsm7586210wmq.38.2022.09.01.23.14.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 01 Sep 2022 23:14:51 -0700 (PDT) Date: Fri, 2 Sep 2022 02:14:47 -0400 From: "Michael S. Tsirkin" To: Jason Wang Cc: Si-Wei Liu , Wu Zongyong , "Zhu, Lingshan" , virtualization , netdev , kvm , Parav Pandit , Yongji Xie , "Dawar, Gautam" Subject: Re: [PATCH 2/2] vDPA: conditionally read fields in virtio-net dev Message-ID: <20220902021054-mutt-send-email-mst@kernel.org> References: <449c2fb2-3920-7bf9-8c5c-a68456dfea76@intel.com> <20220817063450-mutt-send-email-mst@kernel.org> <54aa5a5c-69e2-d372-3e0c-b87f595d213c@redhat.com> <4678fc51-a402-d3ea-e875-6eba175933ba@oracle.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org On Fri, Sep 02, 2022 at 02:03:22PM +0800, Jason Wang wrote: > On Fri, Aug 26, 2022 at 2:24 PM Si-Wei Liu wrote: > > > > > > > > On 8/22/2022 8:26 PM, Jason Wang wrote: > > > On Mon, Aug 22, 2022 at 1:08 PM Zhu, Lingshan wrote: > > >> > > >> > > >> On 8/20/2022 4:55 PM, Si-Wei Liu wrote: > > >>> > > >>> On 8/18/2022 5:42 PM, Jason Wang wrote: > > >>>> On Fri, Aug 19, 2022 at 7:20 AM Si-Wei Liu > > >>>> wrote: > > >>>>> > > >>>>> On 8/17/2022 9:15 PM, Jason Wang wrote: > > >>>>>> 在 2022/8/17 18:37, Michael S. Tsirkin 写道: > > >>>>>>> On Wed, Aug 17, 2022 at 05:43:22PM +0800, Zhu, Lingshan wrote: > > >>>>>>>> On 8/17/2022 5:39 PM, Michael S. Tsirkin wrote: > > >>>>>>>>> On Wed, Aug 17, 2022 at 05:13:59PM +0800, Zhu, Lingshan wrote: > > >>>>>>>>>> On 8/17/2022 4:55 PM, Michael S. Tsirkin wrote: > > >>>>>>>>>>> On Wed, Aug 17, 2022 at 10:14:26AM +0800, Zhu, Lingshan wrote: > > >>>>>>>>>>>> Yes it is a little messy, and we can not check _F_VERSION_1 > > >>>>>>>>>>>> because of > > >>>>>>>>>>>> transitional devices, so maybe this is the best we can do for > > >>>>>>>>>>>> now > > >>>>>>>>>>> I think vhost generally needs an API to declare config space > > >>>>>>>>>>> endian-ness > > >>>>>>>>>>> to kernel. vdpa can reuse that too then. > > >>>>>>>>>> Yes, I remember you have mentioned some IOCTL to set the > > >>>>>>>>>> endian-ness, > > >>>>>>>>>> for vDPA, I think only the vendor driver knows the endian, > > >>>>>>>>>> so we may need a new function vdpa_ops->get_endian(). > > >>>>>>>>>> In the last thread, we say maybe it's better to add a comment for > > >>>>>>>>>> now. > > >>>>>>>>>> But if you think we should add a vdpa_ops->get_endian(), I can > > >>>>>>>>>> work > > >>>>>>>>>> on it for sure! > > >>>>>>>>>> > > >>>>>>>>>> Thanks > > >>>>>>>>>> Zhu Lingshan > > >>>>>>>>> I think QEMU has to set endian-ness. No one else knows. > > >>>>>>>> Yes, for SW based vhost it is true. But for HW vDPA, only > > >>>>>>>> the device & driver knows the endian, I think we can not > > >>>>>>>> "set" a hardware's endian. > > >>>>>>> QEMU knows the guest endian-ness and it knows that > > >>>>>>> device is accessed through the legacy interface. > > >>>>>>> It can accordingly send endian-ness to the kernel and > > >>>>>>> kernel can propagate it to the driver. > > >>>>>> I wonder if we can simply force LE and then Qemu can do the endian > > >>>>>> conversion? > > >>>>> convert from LE for config space fields only, or QEMU has to forcefully > > >>>>> mediate and covert endianness for all device memory access including > > >>>>> even the datapath (fields in descriptor and avail/used rings)? > > >>>> Former. Actually, I want to force modern devices for vDPA when > > >>>> developing the vDPA framework. But then we see requirements for > > >>>> transitional or even legacy (e.g the Ali ENI parent). So it > > >>>> complicates things a lot. > > >>>> > > >>>> I think several ideas has been proposed: > > >>>> > > >>>> 1) Your proposal of having a vDPA specific way for > > >>>> modern/transitional/legacy awareness. This seems very clean since each > > >>>> transport should have the ability to do that but it still requires > > >>>> some kind of mediation for the case e.g running BE legacy guest on LE > > >>>> host. > > >>> In theory it seems like so, though practically I wonder if we can just > > >>> forbid BE legacy driver from running on modern LE host. For those who > > >>> care about legacy BE guest, they mostly like could and should talk to > > >>> vendor to get native BE support to achieve hardware acceleration, > > > The problem is the hardware still needs a way to know the endian of the guest? > > Hardware doesn't need to know. VMM should know by judging from VERSION_1 > > feature bit negotiation and legacy interface access (with new code), and > > the target architecture endianness (the latter is existing QEMU code). > > > > > >>> few > > >>> of them would count on QEMU in mediating or emulating the datapath > > >>> (otherwise I don't see the benefit of adopting vDPA?). I still feel > > >>> that not every hardware vendor has to offer backward compatibility > > >>> (transitional device) with legacy interface/behavior (BE being just > > >>> one), > > > Probably, I agree it is a corner case, and dealing with transitional > > > device for the following setups is very challenge for hardware: > > > > > > - driver without IOMMU_PLATFORM support, (requiring device to send > > > translated request which have security implications) > > Don't get better suggestion for this one, but I presume this is > > something legacy guest users should be aware of ahead in term of > > security implications. > > Probably but I think this assumption will prevent the device from > being used in a production environment. > > > > > > - BE legacy guest on LE host, (requiring device to have a way to know > > > the endian) > > Yes. device can tell apart with the help from VMM (judging by VERSION_1 > > acknowledgement and if legacy interface is used during negotiation). > > > > > - device specific requirement (e.g modern virtio-net mandate minimal > > > header length to contain mrg_rxbuf even if the device doesn't offer > > > it) > > This one seems to be spec mandated transitional interface requirement? > > Yes. > > > Which vDPA hardware vendor should take care of rather (if they do offer > > a transitional device)? > > Right but this is not the only one. Section 7.4 summaries the > transitional device conformance which is a very long list for vendor > to follow. > > > > > > > It is not obvious for the hardware vendor, so we may end up defecting > > > in the implementation. Dealing with compatibility for the transitional > > > devices is kind of a nightmare which there's no way for the spec to > > > rule the behavior of legacy devices. > > The compatibility detection part is tedious I agree. That's why I > > suggested starting from the very minimal and practically feasible (for > > e.g. on x86), but just don't prohibit the possibility to extend to big > > endian or come up with quirk fixes for various cases in QEMU. > > This is somehow we've already been done, e.g ali ENI is limited to x86. > > > > > > > > >>> this is unlike the situation on software virtio device, which > > >>> has legacy support since day one. I think we ever discussed it before: > > >>> for those vDPA vendors who don't offer legacy guest support, maybe we > > >>> should mandate some feature for e.g. VERSION_1, as these devices > > >>> really don't offer functionality of the opposite side (!VERSION_1) > > >>> during negotiation. > > > I've tried something similar here (a global mandatory instead of per device). > > > > > > https://urldefense.com/v3/__https://lkml.org/lkml/2021/6/4/26__;!!ACWV5N9M2RV99hQ!NRQPfj5o9o3MKE12ze1zfXMC-9SqwOWqF26g8RrIyUDbUmwDIwl5WQCaNiDe6aZ2yR83j-NEqRXQNXcNyOo$ > > > > > > But for some reason, it is not applied by Michael. It would be a great > > > relief if we support modern devices only. Maybe it's time to revisit > > > this idea then we can introduce new backend features and then we can > > > mandate VERSION_1 > > Probably, mandating per-device should be fine I guess. > > > > > > > >>> Having it said, perhaps we should also allow vendor device to > > >>> implement only partial support for legacy. We can define "reversed" > > >>> backend feature to denote some part of the legacy > > >>> interface/functionality not getting implemented by device. For > > >>> instance, VHOST_BACKEND_F_NO_BE_VRING, VHOST_BACKEND_F_NO_BE_CONFIG, > > >>> VHOST_BACKEND_F_NO_ALIGNED_VRING, > > >>> VHOST_BACKEND_NET_F_NO_WRITEABLE_MAC, and et al. Not all of these > > >>> missing features for legacy would be easy for QEMU to make up for, so > > >>> QEMU can selectively emulate those at its best when necessary and > > >>> applicable. In other word, this design shouldn't prevent QEMU from > > >>> making up for vendor device's partial legacy support. > > > This looks too heavyweight since it tries to provide compatibility for > > > legacy drivers. > > That's just for the sake of extreme backward compatibility, but you can > > say that's not even needed if we mandate transitional device to offer > > all required interfaces for both legacy and modern guest. > > > > > Considering we've introduced modern devices for 5+ > > > years, I'd rather: > > > > > > - Qemu to mediate the config space stuffs > > > - Shadow virtqueue to mediate the datapath (AF_XDP told us shadow ring > > > can perform very well if we do zero-copy). > > This is one way to achieve, though not sure we should stick the only > > hope to zero-copy, which IMHO may take a long way to realize and > > optimize to where a simple datapath passthrough can easily get to (with > > hardware acceleration of coz). > > Note that, current shadow virtqueue is zerocopy, Qemu just need to > forward the descriptors. > > > > > > > > >>>> 2) Michael suggests using VHOST_SET_VRING_ENDIAN where it means we > > >>>> need a new config ops for vDPA bus, but it doesn't solve the issue for > > >>>> config space (at least from its name). We probably need a new ioctl > > >>>> for both vring and config space. > > >>> Yep adding a new ioctl makes things better, but I think the key is not > > >>> the new ioctl. It's whether or not we should enforce every vDPA vendor > > >>> driver to implement all transitional interfaces to be spec compliant. > > > I think the answer is no since the spec allows transitional device. > > > And we know things will be greatly simplified if vDPA support non > > > transitional device only. > > > > > > So we can change the question to: > > > > > > 1) do we need (or is it too late) to enforce non transitional device? > > We already have Alibaba ENI which is sort of a quasi-transitional > > device, right? In the sense it doesn't advertise VERSION_1. I know the > > other parts might not qualify it to be fully transitional, but code now > > doesn't prohibit it from supporting VERSION_1 modern interface depending > > on whatever future need. > > We can ask ENI developer for their future plan, it looks to me a > legacy only device wouldn't be interested in the future. > > Zongyong, do you have the plan to implement device with VERSION_1 support? > > > > 2) if yes, can transitional device be mediate in an efficient way? > > > > > > For 1), it's probably too late but we can invent new vDPA features as > > > you suggest to be non transitional. Then we can: > > > > > > 1.1) extend the netlink API to provision non-transitonal device > > Define non-transitional: device could be either modern-only or legacy-only? > > According to the spec, non-transitional should be modern only. > > > > 1.2) work on the non-transtional device in the future > > > 1.3) presenting transitional device via mediation > > presenting transitional on top of a modern device with VERSION_1, right? > > Yes, I mean presenting/mediating a transitional device on top of a > non-transitional device. > > > What if the hardware device can support legacy-compatible datapath > > natively that doesn't need mediation? Can it be done with direct > > datapath passthrough without svq involvement? > > I'd like to avoid supporting legacy-only device like ENI in the > future. The major problem is that it's out of the spec thus the > behaviour is defined by the code not the spec. > > > > > > > > > The previous transitional vDPA work as is, it's probably too late to > > > fix all the issue we suffer. > > What do you mean work as-is, > > See above, basically I mean the behaviour is defined by the vDPA code > not (or can't) by the spec. > > For example, for virtio-pci, we have: > > legacy interface: BAR > modern interface: capability > > So a transitional device can simple provide both of those interfaces: > E.g for device configuration space, if it is accessed via legacy > interface device know it needs to provide the config with native > endian otherwise little endian when accessing via modern interface. > > For virtio-mmio, it looks to me it doesn't provide a way for > transitional device. > > For vDPA, we actually don't define whether config_ops is a modern or > legacy interface. This is very tricky for the transitional device > since it tries to reuse the same interface for both legacy and modern > which make it very hard to be correct. E.g: > > 1) VERSION_1 trick won't work, e.g the spec allows to read device > configuration space before FEATURE_OK. So legacy driver may assume a > native endian. I am trying to address this in the spec. There was a fairly narrow window during which guests accessed config space before writing out features. Yes before FEATURES_OK but I think asking that guests send the features to device before poking at config space that depends on those features is reasonable. Similarly, we can also change QEMU to send features to vdpa on config access that happens before FEATURES_OK. > 2) SET_VRING_ENDIAN doesn't fix all the issue, there's still a > question what endian it is before SET_VRING_ENDIAN (or we need to > support userspace without SET_VRING_ENDIAN) > ... > > Things will be simplified if we mandate the config_ops as the modern > interface and provide the necessary mediation in the hypervisor. > > > what's the nomenclature for that, > > quasi-transitional or broken-transitional? > > If we invent new API to clarify the modern/legacy and focus on the > modern in the future, we probably don't need a name? OK. What will that API be like? Maybe a bit in PROTOCOL_FEATURES? > > and what are the outstanding > > issues you anticipate remaining? > > Basically we need to check the conformance listed in section 7.4 of the spec. > > > If it is device specific or vendor > > driver specific, let it be. But I wonder if there's any generic one that > > has to be fixed in vdpa core to support a truly transitional model. > > Two set of config_ops? E.g > > legacy_config_ops > modern_config_ops > > But I'm not sure whether or not it's worthwhile. > > > > > > > For 2), the key part is the datapath mediation, we can use shadow virtqueue. > > Sure. For our use case, we'd care more in providing transitional rather > > than being non-transitional. So, one device fits all. > > > > Thanks for all the ideas. This discussion is really useful. > > Appreciate for the discussion. > > Thanks > > > > > Best, > > -Siwei > > > > > >>> If we allow them to reject the VHOST_SET_VRING_ENDIAN or > > >>> VHOST_SET_CONFIG_ENDIAN call, what could we do? We would still end up > > >>> with same situation of either fail the guest, or trying to > > >>> mediate/emulate, right? > > >>> > > >>> Not to mention VHOST_SET_VRING_ENDIAN is rarely supported by vhost > > >>> today - few distro kernel has CONFIG_VHOST_CROSS_ENDIAN_LEGACY enabled > > >>> and QEMU just ignores the result. vhost doesn't necessarily depend on > > >>> it to determine endianness it looks. > > >> I would like to suggest to add two new config ops get/set_vq_endian() > > >> and get/set_config_endian() for vDPA. This is used to: > > >> a) support VHOST_GET/SET_VRING_ENDIAN as MST suggested, and add > > >> VHOST_SET/GET_CONFIG_ENDIAN for vhost_vdpa. > > >> If the device has not implemented interface to set its endianess, then > > >> no matter success or failure of SET_ENDIAN, QEMU knows the endian-ness > > >> anyway. > > > How can Qemu know the endian in this way? And if it can, there's no > > > need for the new API? > > > > > >> In this case, if the device endianess does not match the guest, > > >> there needs a mediation layer or fail. > > >> b) ops->get_config_endian() can always tell the endian-ness of the > > >> device config space after the vendor driver probing the device. So we > > >> can use this ops->get_config_endian() for > > >> MTU, MAC and other fields handling in vdpa_dev_net_config_fill() and we > > >> don't need to set_features in vdpa_get_config_unlocked(), so no race > > >> conditions. > > >> Every time ops->get_config() returned, we can tell the endian by > > >> ops-config_>get_endian(), we don't need set_features(xxx, 0) if features > > >> negotiation not done. > > >> > > >> The question is: Do we need two pairs of ioctls for both vq and config > > >> space? Can config space endian-ness differ from the vqs? > > >> c) do we need a new netlink attr telling the endian-ness to user space? > > > Generally, I'm not sure this is a good design consider it provides neither: > > > > > > Compatibility with the virtio spec > > > > > > nor > > > > > > Compatibility with the existing vhost API (VHOST_SET_VRING_ENDIAN) > > > > > > Thanks > > > > > >> Thanks, > > >> Zhu Lingshan > > >>>> or > > >>>> > > >>>> 3) revisit the idea of forcing modern only device which may simplify > > >>>> things a lot > > >>> I am not actually against forcing modern only config space, given that > > >>> it's not hard for either QEMU or individual driver to mediate or > > >>> emulate, and for the most part it's not conflict with the goal of > > >>> offload or acceleration with vDPA. But forcing LE ring layout IMO > > >>> would just kill off the potential of a very good use case. Currently > > >>> for our use case the priority for supporting 0.9.5 guest with vDPA is > > >>> slightly lower compared to live migration, but it is still in our TODO > > >>> list. > > >>> > > >>> Thanks, > > >>> -Siwei > > >>> > > >>>> which way should we go? > > >>>> > > >>>>> I hope > > >>>>> it's not the latter, otherwise it loses the point to use vDPA for > > >>>>> datapath acceleration. > > >>>>> > > >>>>> Even if its the former, it's a little weird for vendor device to > > >>>>> implement a LE config space with BE ring layout, although still > > >>>>> possible... > > >>>> Right. > > >>>> > > >>>> Thanks > > >>>> > > >>>>> -Siwei > > >>>>>> Thanks > > >>>>>> > > >>>>>> > > >>>>>>>> So if you think we should add a vdpa_ops->get_endian(), > > >>>>>>>> I will drop these comments in the next version of > > >>>>>>>> series, and work on a new patch for get_endian(). > > >>>>>>>> > > >>>>>>>> Thanks, > > >>>>>>>> Zhu Lingshan > > >>>>>>> Guests don't get endian-ness from devices so this seems pointless. > > >>>>>>> > >