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 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 316F5C433ED for ; Mon, 12 Apr 2021 21:23:31 +0000 (UTC) Received: from smtp3.osuosl.org (smtp3.osuosl.org [140.211.166.136]) (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 C049E6135C for ; Mon, 12 Apr 2021 21:23:30 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org C049E6135C Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=redhat.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=virtualization-bounces@lists.linux-foundation.org Received: from localhost (localhost [127.0.0.1]) by smtp3.osuosl.org (Postfix) with ESMTP id 83A5D60611; Mon, 12 Apr 2021 21:23:30 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org 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 hbA4_AJ7FXij; Mon, 12 Apr 2021 21:23:29 +0000 (UTC) Received: from lists.linuxfoundation.org (lf-lists.osuosl.org [140.211.9.56]) by smtp3.osuosl.org (Postfix) with ESMTP id 927CF60B01; Mon, 12 Apr 2021 21:23:28 +0000 (UTC) Received: from lf-lists.osuosl.org (localhost [127.0.0.1]) by lists.linuxfoundation.org (Postfix) with ESMTP id 538E1C000C; Mon, 12 Apr 2021 21:23:28 +0000 (UTC) Received: from smtp3.osuosl.org (smtp3.osuosl.org [140.211.166.136]) by lists.linuxfoundation.org (Postfix) with ESMTP id 1EE83C000A for ; Mon, 12 Apr 2021 21:23:27 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp3.osuosl.org (Postfix) with ESMTP id 01B6560694 for ; Mon, 12 Apr 2021 21:23:27 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org 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 kYeOgXgdGCNi for ; Mon, 12 Apr 2021 21:23:25 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.8.0 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [216.205.24.124]) by smtp3.osuosl.org (Postfix) with ESMTPS id 7637A60611 for ; Mon, 12 Apr 2021 21:23:25 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1618262604; 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=GvP/tErD9e1+fzMdeH0Z2ejVXmCsyTPxRm5Ef0II10o=; b=do5uu3jwWdnAW82MRQH2AezkJfrrbvfYyvMXuWzK50nfFysiUbMbNfMt6uUcyAIb1iE3mK G4l33Kgk7C91qDTxnTxSfgU82E+Ks5950/htstRWQ2I8TDTQizsxCLRWr/f39MAildktOf 6D3p42QjpWjWewKjM8z/gD2cYZqKJR0= Received: from mail-wm1-f69.google.com (mail-wm1-f69.google.com [209.85.128.69]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-297-SO2A4hyiOnaEahgeewiAUg-1; Mon, 12 Apr 2021 17:23:22 -0400 X-MC-Unique: SO2A4hyiOnaEahgeewiAUg-1 Received: by mail-wm1-f69.google.com with SMTP id t83-20020a1cc3560000b029011f8f517694so213074wmf.3 for ; Mon, 12 Apr 2021 14:23:22 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:content-transfer-encoding :in-reply-to; bh=GvP/tErD9e1+fzMdeH0Z2ejVXmCsyTPxRm5Ef0II10o=; b=X5eJAMohXNctV6aiRYnxHguIxT6Yl6thoewvddxurnt/j5ys7OLqGUmJjKQdcFP5cH brcgdy8hicTLXZ/ZODfeRVfjznBS5Tcz6Ran0wEu6i+MC0hfd9ZL6MRJF3QifzGb0co2 I9LdUP+PJM8qCURP4tzCsi9L6P3W2vYYrxElPpL8RmvyIIOXCZuXt1ZCLD70MhNBNOX6 mIlic0r14/nZYA8+x1Bksjwod2ecqowIXjelFGkaiRPvXD70Di5g9G2HLPpdG5VpVivn QFiRjCeubdQg7UmoIT6OWrtheMTuAB/+NEOH+GIl9/y1bqzBF8ttfZYU/rJeujcR1QhH N0sg== X-Gm-Message-State: AOAM532P5oWKwMWmdaIYUqIHMzKdwqcWIUGScOB5dW5Oa9MVtVZP15+N ZbaRR8bAO9scyw1cJJ1SxGwx5TteXssFAgA1Sn1E4dFxxDgXiUEVmsT52+i3cBQcUSzfrorBGX4 gwtdiMvSOXYqzDLDgQoiRuKUJOChMZd6JT88JgAmpug== X-Received: by 2002:adf:f403:: with SMTP id g3mr33018219wro.367.1618262601259; Mon, 12 Apr 2021 14:23:21 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxSAdtuHQ+Dn7LmIQl700F9pQ7SeQBzkb1U38t8iayK+tw/Ge8UZhrl+YyBMnG58bAK8jvmCA== X-Received: by 2002:adf:f403:: with SMTP id g3mr33018199wro.367.1618262600958; Mon, 12 Apr 2021 14:23:20 -0700 (PDT) Received: from redhat.com ([2a10:8006:2281:0:1994:c627:9eac:1825]) by smtp.gmail.com with ESMTPSA id m15sm17095738wrp.96.2021.04.12.14.23.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 12 Apr 2021 14:23:19 -0700 (PDT) Date: Mon, 12 Apr 2021 17:23:16 -0400 From: "Michael S. Tsirkin" To: Max Gurtovoy Subject: Re: [PATCH v2 1/3] virtio: update reset callback to return status Message-ID: <20210412171858-mutt-send-email-mst@kernel.org> References: <20210408081109.56537-1-mgurtovoy@nvidia.com> <16fa0e31-a305-3b41-b0d3-ad76aa00177b@redhat.com> <1f134102-4ccb-57e3-858d-3922d851ce8a@nvidia.com> <20210408115524-mutt-send-email-mst@kernel.org> <31fa92ca-bce5-b71f-406d-8f3951b2143c@nvidia.com> <20210412080051-mutt-send-email-mst@kernel.org> MIME-Version: 1.0 In-Reply-To: Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=mst@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Disposition: inline Cc: kvm@vger.kernel.org, cohuck@redhat.com, virtualization@lists.linux-foundation.org, nitzanc@nvidia.com, oren@nvidia.com 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" T24gTW9uLCBBcHIgMTIsIDIwMjEgYXQgMDQ6MDM6MDJQTSArMDMwMCwgTWF4IEd1cnRvdm95IHdy b3RlOgo+IAo+IE9uIDQvMTIvMjAyMSAzOjA0IFBNLCBNaWNoYWVsIFMuIFRzaXJraW4gd3JvdGU6 Cj4gPiBPbiBNb24sIEFwciAxMiwgMjAyMSBhdCAwMjo1NToyN1BNICswMzAwLCBNYXggR3VydG92 b3kgd3JvdGU6Cj4gPiA+IE9uIDQvOC8yMDIxIDY6NTYgUE0sIE1pY2hhZWwgUy4gVHNpcmtpbiB3 cm90ZToKPiA+ID4gPiBPbiBUaHUsIEFwciAwOCwgMjAyMSBhdCAxMjo1Njo1MlBNICswMzAwLCBN YXggR3VydG92b3kgd3JvdGU6Cj4gPiA+ID4gPiBPbiA0LzgvMjAyMSAxMTo1OCBBTSwgSmFzb24g V2FuZyB3cm90ZToKPiA+ID4gPiA+ID4g5ZyoIDIwMjEvNC84IOS4i+WNiDQ6MTEsIE1heCBHdXJ0 b3ZveSDlhpnpgZM6Cj4gPiA+ID4gPiA+ID4gVGhlIHJlc2V0IGRldmljZSBvcGVyYXRpb24sIHVz dWFsbHkgaXMgYW4gb3BlcmF0aW9uIHRoYXQgbWlnaHQgZmFpbCBmcm9tCj4gPiA+ID4gPiA+ID4g dmFyaW91cyByZWFzb25zLiBGb3IgZXhhbXBsZSwgdGhlIGNvbnRyb2xsZXIgbWlnaHQgYmUgaW4g YSBiYWQgc3RhdGUgYW5kCj4gPiA+ID4gPiA+ID4gY2FuJ3QgYW5zd2VyIHRvIGFueSByZXF1ZXN0 LiBVc3VhbGx5LCB0aGUgcGFyYXZpcnQgU1cgYmFzZWQgdmlydGlvCj4gPiA+ID4gPiA+ID4gZGV2 aWNlcyBhbHdheXMgc3VjY2VlZCBpbiByZXNldCBvcGVyYXRpb24gYnV0IHRoaXMgaXMgbm90IHRo ZSBjYXNlIGZvcgo+ID4gPiA+ID4gPiA+IEhXIGJhc2VkIHZpcnRpbyBkZXZpY2VzLgo+ID4gPiA+ ID4gPiBJIHdvdWxkIGxpa2UgdG8ga25vdyB1bmRlciB3aGF0IGNvbmRpdGlvbiB0aGF0IHRoZSBy ZXNldCBvcGVyYXRpb24gbWF5Cj4gPiA+ID4gPiA+IGZhaWwgKGV4Y2VwdCBmb3IgdGhlIGNhc2Ug b2YgYSBidWdnIGd1ZXN0KS4KPiA+ID4gPiA+IFRoZSBjb250cm9sbGVyIG1pZ2h0IG5vdCBiZSBy ZWFkeSBvciBzdHVjay4gVGhpcyBpcyBhIHJlYWwgdXNlIGNhc2UgZm9yIG1hbnkKPiA+ID4gPiA+ IFBDSSBkZXZpY2VzLgo+ID4gPiA+ID4gCj4gPiA+ID4gPiBGb3IgcmVhbCBkZXZpY2VzIHRoZSBG VyBtaWdodCBiZSBpbiBhIGJhZCBzdGF0ZSBhbmQgaXQgY2FuIGhhcHBlbiBhbHNvIGZvcgo+ID4g PiA+ID4gcGFyYXZpcnQgZGV2aWNlIGlmIHlvdSBoYXZlIGEgYnVnIGluIHRoZSBjb250cm9sbGVy IGNvZGUgb3IgaWYgeW91IGVudGVyZWQKPiA+ID4gPiA+IHNvbWUgZXJyb3IgZmxvdyAoT3V0IG9m IG1lbW9yeSkuCj4gPiA+ID4gPiAKPiA+ID4gPiA+IFlvdSBkb24ndCB3YW50IHRvIGJlIHN0dWNr IGJlY2F1c2Ugb2Ygb25lIGJhZCBkZXZpY2UuCj4gPiA+ID4gT0sgc28gbWF5YmUgd2UgY2FuIGRv IG1vcmUgdG8gZGV0ZWN0IHRoZSBiYWQgZGV2aWNlLgo+ID4gPiA+IFdvbid0IHdlIGdldCBhbGwg MSdzIG9uIGEgcmVhZCBpbiB0aGlzIGNhc2U/Cj4gPiA+IE5vLiBob3cgY2FuIHdlIGd1YXJhbnRl ZSBpdCA/Cj4gPiA+IAo+ID4gV2VsbCB0aGlzIGlzIHdoYXQgeW91IHRlbmQgdG8gZ2V0IGlmIGUu Zy4geW91IGRpc2FibGUgZGV2aWNlIG1lbW9yeS4KPiA+IAo+ID4gQW55d2F5LCB5b3Uga25vdyBh Ym91dCBoYXJkd2FyZSwgSSBkb24ndCAuLi4gSXQncyBub3QgcmV0dXJuaW5nIDAgYWZ0ZXIKPiA+ IHJlc2V0IGFzIGl0IHNob3VsZCAuLi4gd2hhdCBkb2VzIGl0IHJldHVybj8gSG9wZWZ1bGx5IG5v dCByYW5kb20gbm9pc2UgLQo+ID4gSSBkb24ndCB0aGluayBpdCdzIHZlcnkgcHJhY3RpY2FsIHRv IHdyaXRlIGEgZHJpdmVyIGZvciBhIGRldmljZSB0aGF0Cj4gPiBzdGFydHMgZG9pbmcgdGhhdCBh dCByYW5kb20gdGltZXMgLi4uCj4gCj4gVGhlIGRldmljZSBtYXkgcmV0dXJuIDB4NDAgKE5FRURT X1JFU0VUKS4gSXQgZG9lc24ndCBoYXZlIHRvIHJldHVybiBhbGwgMSdzLgo+Cj4gRm9yIHBhcmF2 aXJ0IGRldmljZXMsIHRoaW5rIG9mIGEgc2l0dWF0aW9uIHRoYXQgeW91IGNhbid0IGFsbG9jYXRl IHNvbWUKPiBpbnRlcm5hbCBidWZmZXJzIChtYWxsb2MgZmFpbGVkKSBhbmQgeW91IHdhbnQgdG8g d2FpdCBmb3IgZmV3IHNlY29uZHMgdW50aWwKPiB0aGUgc3lzdGVtIG1lbW9yeSB3aWxsIGZyZWUg c29tZSBwYWdlcy4KPiAKPiBTbyB5b3UgbWF5IHJldHVybiBORUVEU19SRVNFVCB0aGF0IGluZGlj YXRlcyBzb21lIGVycm9yIHN0YXRlIG9mIHRoZSBkZXZpY2UuCj4gT25jZSB0aGUgc3lzdGVtIG1l bW9yeSBmcmVlZCBieSBvdGhlciBhcHBsaWNhdGlvbiBmb3IgZXhhbXBsZSwgeW91ciBpbnRlcm5h bAo+IHZpcnRpbyBkZXZpY2UgbWFsbG9jIHN1Y2NlZWRlZCBhbmQgeW91IG1heSByZXR1cm4gMC4K PiAKPiBJbiB0aGlzIGNhc2UsIHlvdSBkb24ndCB3YW50IHRvIHN0YWxsIHRoZSBvdGhlciB2aXJ0 aW8gZGV2aWNlcyB0byBwcm9iZQo+ICh0aGV5IG1pZ2h0IGJlIHJlYWwgSFcgZGV2aWNlcyB0aGF0 IGRyaXZlbiBieSB0aGUgc2FtZSBkcml2ZXIpLCByaWdodCA/CgpTbyB0aGUgZGV2aWNlIGlzIHZl cnkgYnVzeSB0aGVuPyBOb3Qgc3VyZSBpdCdzIHNtYXJ0IHRvIGp1c3QgYXNzdW1lCml0J3Mgc2Fm ZSB0byBmcmVlIGFsbCBtZW1vcnkgYWxsb2NhdGVkIGZvciBpdCB0aGVuIC4uLgoKSSBndWVzcyB0 aGUgbGVzc29uIGlzIGRvbid0IG1ha2UgZGV2aWNlIHJlc2V0IGRlcGVuZCBvbiBtYWxsb2MKb2Yg c29tZSBtZW1vcnk/CgoKCj4gCj4gPiAKPiA+ID4gPiAKPiA+ID4gPiA+ID4gPiBUaGlzIGNvbW1p dCBpcyBhbHNvIGEgcHJlcGFyYXRpb24gZm9yIGFkZGluZyBhIHRpbWVvdXQgbWVjaGFuaXNtIGZv cgo+ID4gPiA+ID4gPiA+IHJlc2V0dGluZyB2aXJ0aW8gZGV2aWNlcy4KPiA+ID4gPiA+ID4gPiAK PiA+ID4gPiA+ID4gPiBTaWduZWQtb2ZmLWJ5OiBNYXggR3VydG92b3kgPG1ndXJ0b3ZveUBudmlk aWEuY29tPgo+ID4gPiA+ID4gPiA+IC0tLQo+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+IGNo YW5nZXMgZnJvbSB2MToKPiA+ID4gPiA+ID4gPiAgIMKgIC0gdXBkYXRlIHZpcnRpb19jY3cuYyAo Q29ybmVsaWEpCj4gPiA+ID4gPiA+ID4gICDCoCAtIHVwZGF0ZSB2aXJ0aW9fdW1sLmMKPiA+ID4g PiA+ID4gPiAgIMKgIC0gdXBkYXRlIG1seGJmLXRtZmlmby5jCj4gPiA+ID4gPiA+IE5vdGUgdGhh dCB2aXJ0aW8gZHJpdmVyIG1heSBjYWxsIHJlc2V0LCBzbyB5b3UgcHJvYmFibHkgbmVlZCB0byBj b252ZXJ0Cj4gPiA+ID4gPiA+IHRoZW0uCj4gPiA+ID4gPiBJJ20gc3VyZSBJIHVuZGVyc3RhbmQu Cj4gPiA+ID4gPiAKPiA+ID4gPiA+IENvbnZlcnQgdG8gd2hhdCA/Cj4gPiA+ID4gPiAKPiA+ID4g PiA+IFRoYW5rcy4KPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiBUaGFua3MKPiA+ID4gPiA+ID4gCj4g PiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+IC0tLQo+ID4gPiA+ID4gPiA+ICAgwqAgYXJjaC91bS9k cml2ZXJzL3ZpcnRpb191bWwuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqAgNCArKystCj4g PiA+ID4gPiA+ID4gICDCoCBkcml2ZXJzL3BsYXRmb3JtL21lbGxhbm94L21seGJmLXRtZmlmby5j IHzCoCA0ICsrKy0KPiA+ID4gPiA+ID4gPiAgIMKgIGRyaXZlcnMvcmVtb3RlcHJvYy9yZW1vdGVw cm9jX3ZpcnRpby5jwqDCoCB8wqAgNCArKystCj4gPiA+ID4gPiA+ID4gICDCoCBkcml2ZXJzL3Mz OTAvdmlydGlvL3ZpcnRpb19jY3cuY8KgwqDCoMKgwqDCoMKgwqAgfMKgIDkgKysrKysrLS0tCj4g PiA+ID4gPiA+ID4gICDCoCBkcml2ZXJzL3ZpcnRpby92aXJ0aW8uY8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgfCAyMiArKysrKysrKysrKysrKystLS0tLS0tCj4gPiA+ID4gPiA+ ID4gICDCoCBkcml2ZXJzL3ZpcnRpby92aXJ0aW9fbW1pby5jwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHzCoCAzICsrLQo+ID4gPiA+ID4gPiA+ICAgwqAgZHJpdmVycy92aXJ0aW8vdmlydGlvX3Bj aV9sZWdhY3kuY8KgwqDCoMKgwqDCoCB8wqAgNCArKystCj4gPiA+ID4gPiA+ID4gICDCoCBkcml2 ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX21vZGVybi5jwqDCoMKgwqDCoMKgIHzCoCAzICsrLQo+ID4g PiA+ID4gPiA+ICAgwqAgZHJpdmVycy92aXJ0aW8vdmlydGlvX3ZkcGEuY8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCB8wqAgNCArKystCj4gPiA+ID4gPiA+ID4gICDCoCBpbmNsdWRlL2xpbnV4L3Zp cnRpb19jb25maWcuaMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgIDUgKysrLS0KPiA+ID4gPiA+ ID4gPiAgIMKgIDEwIGZpbGVzIGNoYW5nZWQsIDQzIGluc2VydGlvbnMoKyksIDE5IGRlbGV0aW9u cygtKQo+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+IGRpZmYgLS1naXQgYS9hcmNoL3VtL2Ry aXZlcnMvdmlydGlvX3VtbC5jIGIvYXJjaC91bS9kcml2ZXJzL3ZpcnRpb191bWwuYwo+ID4gPiA+ ID4gPiA+IGluZGV4IDkxZGRmNzRjYTg4OC4uYjZlNjYyNjVlZDMyIDEwMDY0NAo+ID4gPiA+ID4g PiA+IC0tLSBhL2FyY2gvdW0vZHJpdmVycy92aXJ0aW9fdW1sLmMKPiA+ID4gPiA+ID4gPiArKysg Yi9hcmNoL3VtL2RyaXZlcnMvdmlydGlvX3VtbC5jCj4gPiA+ID4gPiA+ID4gQEAgLTgyNywxMSAr ODI3LDEzIEBAIHN0YXRpYyB2b2lkIHZ1X3NldF9zdGF0dXMoc3RydWN0IHZpcnRpb19kZXZpY2UK PiA+ID4gPiA+ID4gPiAqdmRldiwgdTggc3RhdHVzKQo+ID4gPiA+ID4gPiA+ICAgwqDCoMKgwqDC oCB2dV9kZXYtPnN0YXR1cyA9IHN0YXR1czsKPiA+ID4gPiA+ID4gPiAgIMKgIH0KPiA+ID4gPiA+ ID4gPiAgIMKgIC1zdGF0aWMgdm9pZCB2dV9yZXNldChzdHJ1Y3QgdmlydGlvX2RldmljZSAqdmRl dikKPiA+ID4gPiA+ID4gPiArc3RhdGljIGludCB2dV9yZXNldChzdHJ1Y3QgdmlydGlvX2Rldmlj ZSAqdmRldikKPiA+ID4gPiA+ID4gPiAgIMKgIHsKPiA+ID4gPiA+ID4gPiAgIMKgwqDCoMKgwqAg c3RydWN0IHZpcnRpb191bWxfZGV2aWNlICp2dV9kZXYgPSB0b192aXJ0aW9fdW1sX2RldmljZSh2 ZGV2KTsKPiA+ID4gPiA+ID4gPiAgIMKgIMKgwqDCoMKgwqAgdnVfZGV2LT5zdGF0dXMgPSAwOwo+ ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiArwqDCoMKgIHJldHVybiAwOwo+ID4gPiA+ID4g PiA+ICAgwqAgfQo+ID4gPiA+ID4gPiA+ICAgwqAgwqAgc3RhdGljIHZvaWQgdnVfZGVsX3ZxKHN0 cnVjdCB2aXJ0cXVldWUgKnZxKQo+ID4gPiA+ID4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3Bs YXRmb3JtL21lbGxhbm94L21seGJmLXRtZmlmby5jCj4gPiA+ID4gPiA+ID4gYi9kcml2ZXJzL3Bs YXRmb3JtL21lbGxhbm94L21seGJmLXRtZmlmby5jCj4gPiA+ID4gPiA+ID4gaW5kZXggYmJjNGU3 MWExNmZmLi5jMTkyYjhhYzVkOWUgMTAwNjQ0Cj4gPiA+ID4gPiA+ID4gLS0tIGEvZHJpdmVycy9w bGF0Zm9ybS9tZWxsYW5veC9tbHhiZi10bWZpZm8uYwo+ID4gPiA+ID4gPiA+ICsrKyBiL2RyaXZl cnMvcGxhdGZvcm0vbWVsbGFub3gvbWx4YmYtdG1maWZvLmMKPiA+ID4gPiA+ID4gPiBAQCAtOTgw LDExICs5ODAsMTMgQEAgc3RhdGljIHZvaWQKPiA+ID4gPiA+ID4gPiBtbHhiZl90bWZpZm9fdmly dGlvX3NldF9zdGF0dXMoc3RydWN0IHZpcnRpb19kZXZpY2UgKnZkZXYsCj4gPiA+ID4gPiA+ID4g ICDCoCB9Cj4gPiA+ID4gPiA+ID4gICDCoCDCoCAvKiBSZXNldCB0aGUgZGV2aWNlLiBOb3QgbXVj aCBoZXJlIGZvciBub3cuICovCj4gPiA+ID4gPiA+ID4gLXN0YXRpYyB2b2lkIG1seGJmX3RtZmlm b192aXJ0aW9fcmVzZXQoc3RydWN0IHZpcnRpb19kZXZpY2UgKnZkZXYpCj4gPiA+ID4gPiA+ID4g K3N0YXRpYyBpbnQgbWx4YmZfdG1maWZvX3ZpcnRpb19yZXNldChzdHJ1Y3QgdmlydGlvX2Rldmlj ZSAqdmRldikKPiA+ID4gPiA+ID4gPiAgIMKgIHsKPiA+ID4gPiA+ID4gPiAgIMKgwqDCoMKgwqAg c3RydWN0IG1seGJmX3RtZmlmb192ZGV2ICp0bV92ZGV2ID0gbWx4YmZfdmRldl90b190bWZpZm8o dmRldik7Cj4gPiA+ID4gPiA+ID4gICDCoCDCoMKgwqDCoMKgIHRtX3ZkZXYtPnN0YXR1cyA9IDA7 Cj4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ICvCoMKgwqAgcmV0dXJuIDA7Cj4gPiA+ID4g PiA+ID4gICDCoCB9Cj4gPiA+ID4gPiA+ID4gICDCoCDCoCAvKiBSZWFkIHRoZSB2YWx1ZSBvZiBh IGNvbmZpZ3VyYXRpb24gZmllbGQuICovCj4gPiA+ID4gPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvcmVtb3RlcHJvYy9yZW1vdGVwcm9jX3ZpcnRpby5jCj4gPiA+ID4gPiA+ID4gYi9kcml2ZXJz L3JlbW90ZXByb2MvcmVtb3RlcHJvY192aXJ0aW8uYwo+ID4gPiA+ID4gPiA+IGluZGV4IDBjYzYx N2Y3NjA2OC4uY2E5NTczYzYyYzNkIDEwMDY0NAo+ID4gPiA+ID4gPiA+IC0tLSBhL2RyaXZlcnMv cmVtb3RlcHJvYy9yZW1vdGVwcm9jX3ZpcnRpby5jCj4gPiA+ID4gPiA+ID4gKysrIGIvZHJpdmVy cy9yZW1vdGVwcm9jL3JlbW90ZXByb2NfdmlydGlvLmMKPiA+ID4gPiA+ID4gPiBAQCAtMTkxLDcg KzE5MSw3IEBAIHN0YXRpYyB2b2lkIHJwcm9jX3ZpcnRpb19zZXRfc3RhdHVzKHN0cnVjdAo+ID4g PiA+ID4gPiA+IHZpcnRpb19kZXZpY2UgKnZkZXYsIHU4IHN0YXR1cykKPiA+ID4gPiA+ID4gPiAg IMKgwqDCoMKgwqAgZGV2X2RiZygmdmRldi0+ZGV2LCAic3RhdHVzOiAlZFxuIiwgc3RhdHVzKTsK PiA+ID4gPiA+ID4gPiAgIMKgIH0KPiA+ID4gPiA+ID4gPiAgIMKgIC1zdGF0aWMgdm9pZCBycHJv Y192aXJ0aW9fcmVzZXQoc3RydWN0IHZpcnRpb19kZXZpY2UgKnZkZXYpCj4gPiA+ID4gPiA+ID4g K3N0YXRpYyBpbnQgcnByb2NfdmlydGlvX3Jlc2V0KHN0cnVjdCB2aXJ0aW9fZGV2aWNlICp2ZGV2 KQo+ID4gPiA+ID4gPiA+ICAgwqAgewo+ID4gPiA+ID4gPiA+ICAgwqDCoMKgwqDCoCBzdHJ1Y3Qg cnByb2NfdmRldiAqcnZkZXYgPSB2ZGV2X3RvX3J2ZGV2KHZkZXYpOwo+ID4gPiA+ID4gPiA+ICAg wqDCoMKgwqDCoCBzdHJ1Y3QgZndfcnNjX3ZkZXYgKnJzYzsKPiA+ID4gPiA+ID4gPiBAQCAtMjAw LDYgKzIwMCw4IEBAIHN0YXRpYyB2b2lkIHJwcm9jX3ZpcnRpb19yZXNldChzdHJ1Y3QKPiA+ID4g PiA+ID4gPiB2aXJ0aW9fZGV2aWNlICp2ZGV2KQo+ID4gPiA+ID4gPiA+ICAgwqAgwqDCoMKgwqDC oCByc2MtPnN0YXR1cyA9IDA7Cj4gPiA+ID4gPiA+ID4gICDCoMKgwqDCoMKgIGRldl9kYmcoJnZk ZXYtPmRldiwgInJlc2V0ICFcbiIpOwo+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiArwqDC oMKgIHJldHVybiAwOwo+ID4gPiA+ID4gPiA+ICAgwqAgfQo+ID4gPiA+ID4gPiA+ICAgwqAgwqAg LyogcHJvdmlkZSB0aGUgdmRldiBmZWF0dXJlcyBhcyByZXRyaWV2ZWQgZnJvbSB0aGUgZmlybXdh cmUgKi8KPiA+ID4gPiA+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9zMzkwL3ZpcnRpby92aXJ0 aW9fY2N3LmMKPiA+ID4gPiA+ID4gPiBiL2RyaXZlcnMvczM5MC92aXJ0aW8vdmlydGlvX2Njdy5j Cj4gPiA+ID4gPiA+ID4gaW5kZXggNTRlNjg2ZGNhNmRlLi41MmIzMjU1NWU3NDYgMTAwNjQ0Cj4g PiA+ID4gPiA+ID4gLS0tIGEvZHJpdmVycy9zMzkwL3ZpcnRpby92aXJ0aW9fY2N3LmMKPiA+ID4g PiA+ID4gPiArKysgYi9kcml2ZXJzL3MzOTAvdmlydGlvL3ZpcnRpb19jY3cuYwo+ID4gPiA+ID4g PiA+IEBAIC03MzIsMTQgKzczMiwxNSBAQCBzdGF0aWMgaW50IHZpcnRpb19jY3dfZmluZF92cXMo c3RydWN0Cj4gPiA+ID4gPiA+ID4gdmlydGlvX2RldmljZSAqdmRldiwgdW5zaWduZWQgbnZxcywK PiA+ID4gPiA+ID4gPiAgIMKgwqDCoMKgwqAgcmV0dXJuIHJldDsKPiA+ID4gPiA+ID4gPiAgIMKg IH0KPiA+ID4gPiA+ID4gPiAgIMKgIC1zdGF0aWMgdm9pZCB2aXJ0aW9fY2N3X3Jlc2V0KHN0cnVj dCB2aXJ0aW9fZGV2aWNlICp2ZGV2KQo+ID4gPiA+ID4gPiA+ICtzdGF0aWMgaW50IHZpcnRpb19j Y3dfcmVzZXQoc3RydWN0IHZpcnRpb19kZXZpY2UgKnZkZXYpCj4gPiA+ID4gPiA+ID4gICDCoCB7 Cj4gPiA+ID4gPiA+ID4gICDCoMKgwqDCoMKgIHN0cnVjdCB2aXJ0aW9fY2N3X2RldmljZSAqdmNk ZXYgPSB0b192Y19kZXZpY2UodmRldik7Cj4gPiA+ID4gPiA+ID4gICDCoMKgwqDCoMKgIHN0cnVj dCBjY3cxICpjY3c7Cj4gPiA+ID4gPiA+ID4gK8KgwqDCoCBpbnQgcmV0Owo+ID4gPiA+ID4gPiA+ ICAgwqAgwqDCoMKgwqDCoCBjY3cgPSBjY3dfZGV2aWNlX2RtYV96YWxsb2ModmNkZXYtPmNkZXYs IHNpemVvZigqY2N3KSk7Cj4gPiA+ID4gPiA+ID4gICDCoMKgwqDCoMKgIGlmICghY2N3KQo+ID4g PiA+ID4gPiA+IC3CoMKgwqDCoMKgwqDCoCByZXR1cm47Cj4gPiA+ID4gPiA+ID4gK8KgwqDCoMKg wqDCoMKgIHJldHVybiAtRU5PTUVNOwo+ID4gPiA+ID4gPiA+ICAgwqAgwqDCoMKgwqDCoCAvKiBa ZXJvIHN0YXR1cyBiaXRzLiAqLwo+ID4gPiA+ID4gPiA+ICAgwqDCoMKgwqDCoCB2Y2Rldi0+ZG1h X2FyZWEtPnN0YXR1cyA9IDA7Cj4gPiA+ID4gPiA+ID4gQEAgLTc0OSw4ICs3NTAsMTAgQEAgc3Rh dGljIHZvaWQgdmlydGlvX2Njd19yZXNldChzdHJ1Y3QKPiA+ID4gPiA+ID4gPiB2aXJ0aW9fZGV2 aWNlICp2ZGV2KQo+ID4gPiA+ID4gPiA+ICAgwqDCoMKgwqDCoCBjY3ctPmZsYWdzID0gMDsKPiA+ ID4gPiA+ID4gPiAgIMKgwqDCoMKgwqAgY2N3LT5jb3VudCA9IDA7Cj4gPiA+ID4gPiA+ID4gICDC oMKgwqDCoMKgIGNjdy0+Y2RhID0gMDsKPiA+ID4gPiA+ID4gPiAtwqDCoMKgIGNjd19pb19oZWxw ZXIodmNkZXYsIGNjdywgVklSVElPX0NDV19ET0lOR19SRVNFVCk7Cj4gPiA+ID4gPiA+ID4gK8Kg wqDCoCByZXQgPSBjY3dfaW9faGVscGVyKHZjZGV2LCBjY3csIFZJUlRJT19DQ1dfRE9JTkdfUkVT RVQpOwo+ID4gPiA+ID4gPiA+ICAgwqDCoMKgwqDCoCBjY3dfZGV2aWNlX2RtYV9mcmVlKHZjZGV2 LT5jZGV2LCBjY3csIHNpemVvZigqY2N3KSk7Cj4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ ICvCoMKgwqAgcmV0dXJuIHJldDsKPiA+ID4gPiA+ID4gPiAgIMKgIH0KPiA+ID4gPiA+ID4gPiAg IMKgIMKgIHN0YXRpYyB1NjQgdmlydGlvX2Njd19nZXRfZmVhdHVyZXMoc3RydWN0IHZpcnRpb19k ZXZpY2UgKnZkZXYpCj4gPiA+ID4gPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlydGlvL3Zp cnRpby5jIGIvZHJpdmVycy92aXJ0aW8vdmlydGlvLmMKPiA+ID4gPiA+ID4gPiBpbmRleCA0YjE1 YzAwYzBhMGEuLmRkYmZkNWI1ZjNiZCAxMDA2NDQKPiA+ID4gPiA+ID4gPiAtLS0gYS9kcml2ZXJz L3ZpcnRpby92aXJ0aW8uYwo+ID4gPiA+ID4gPiA+ICsrKyBiL2RyaXZlcnMvdmlydGlvL3ZpcnRp by5jCj4gPiA+ID4gPiA+ID4gQEAgLTMzOCw3ICszMzgsNyBAQCBpbnQgcmVnaXN0ZXJfdmlydGlv X2RldmljZShzdHJ1Y3QgdmlydGlvX2RldmljZQo+ID4gPiA+ID4gPiA+ICpkZXYpCj4gPiA+ID4g PiA+ID4gICDCoMKgwqDCoMKgIC8qIEFzc2lnbiBhIHVuaXF1ZSBkZXZpY2UgaW5kZXggYW5kIGhl bmNlIG5hbWUuICovCj4gPiA+ID4gPiA+ID4gICDCoMKgwqDCoMKgIGVyciA9IGlkYV9zaW1wbGVf Z2V0KCZ2aXJ0aW9faW5kZXhfaWRhLCAwLCAwLCBHRlBfS0VSTkVMKTsKPiA+ID4gPiA+ID4gPiAg IMKgwqDCoMKgwqAgaWYgKGVyciA8IDApCj4gPiA+ID4gPiA+ID4gLcKgwqDCoMKgwqDCoMKgIGdv dG8gb3V0Owo+ID4gPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoCBnb3RvIG91dF9lcnI7Cj4gPiA+ ID4gPiA+ID4gICDCoCDCoMKgwqDCoMKgIGRldi0+aW5kZXggPSBlcnI7Cj4gPiA+ID4gPiA+ID4g ICDCoMKgwqDCoMKgIGRldl9zZXRfbmFtZSgmZGV2LT5kZXYsICJ2aXJ0aW8ldSIsIGRldi0+aW5k ZXgpOwo+ID4gPiA+ID4gPiA+IEBAIC0zNDksNyArMzQ5LDkgQEAgaW50IHJlZ2lzdGVyX3ZpcnRp b19kZXZpY2Uoc3RydWN0IHZpcnRpb19kZXZpY2UKPiA+ID4gPiA+ID4gPiAqZGV2KQo+ID4gPiA+ ID4gPiA+ICAgwqAgwqDCoMKgwqDCoCAvKiBXZSBhbHdheXMgc3RhcnQgYnkgcmVzZXR0aW5nIHRo ZSBkZXZpY2UsIGluIGNhc2UgYSBwcmV2aW91cwo+ID4gPiA+ID4gPiA+ICAgwqDCoMKgwqDCoMKg ICogZHJpdmVyIG1lc3NlZCBpdCB1cC7CoCBUaGlzIGFsc28gdGVzdHMgdGhhdCBjb2RlIHBhdGgg YQo+ID4gPiA+ID4gPiA+IGxpdHRsZS4gKi8KPiA+ID4gPiA+ID4gPiAtwqDCoMKgIGRldi0+Y29u ZmlnLT5yZXNldChkZXYpOwo+ID4gPiA+ID4gPiA+ICvCoMKgwqAgZXJyID0gZGV2LT5jb25maWct PnJlc2V0KGRldik7Cj4gPiA+ID4gPiA+ID4gK8KgwqDCoCBpZiAoZXJyKQo+ID4gPiA+ID4gPiA+ ICvCoMKgwqDCoMKgwqDCoCBnb3RvIG91dF9pZGE7Cj4gPiA+ID4gPiA+ID4gICDCoCDCoMKgwqDC oMKgIC8qIEFja25vd2xlZGdlIHRoYXQgd2UndmUgc2VlbiB0aGUgZGV2aWNlLiAqLwo+ID4gPiA+ ID4gPiA+ICAgwqDCoMKgwqDCoCB2aXJ0aW9fYWRkX3N0YXR1cyhkZXYsIFZJUlRJT19DT05GSUdf U19BQ0tOT1dMRURHRSk7Cj4gPiA+ID4gPiA+ID4gQEAgLTM2MiwxMCArMzY0LDE0IEBAIGludCBy ZWdpc3Rlcl92aXJ0aW9fZGV2aWNlKHN0cnVjdAo+ID4gPiA+ID4gPiA+IHZpcnRpb19kZXZpY2Ug KmRldikKPiA+ID4gPiA+ID4gPiAgIMKgwqDCoMKgwqDCoCAqLwo+ID4gPiA+ID4gPiA+ICAgwqDC oMKgwqDCoCBlcnIgPSBkZXZpY2VfYWRkKCZkZXYtPmRldik7Cj4gPiA+ID4gPiA+ID4gICDCoMKg wqDCoMKgIGlmIChlcnIpCj4gPiA+ID4gPiA+ID4gLcKgwqDCoMKgwqDCoMKgIGlkYV9zaW1wbGVf cmVtb3ZlKCZ2aXJ0aW9faW5kZXhfaWRhLCBkZXYtPmluZGV4KTsKPiA+ID4gPiA+ID4gPiAtb3V0 Ogo+ID4gPiA+ID4gPiA+IC3CoMKgwqAgaWYgKGVycikKPiA+ID4gPiA+ID4gPiAtwqDCoMKgwqDC oMKgwqAgdmlydGlvX2FkZF9zdGF0dXMoZGV2LCBWSVJUSU9fQ09ORklHX1NfRkFJTEVEKTsKPiA+ ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqAgZ290byBvdXRfaWRhOwo+ID4gPiA+ID4gPiA+ICsK PiA+ID4gPiA+ID4gPiArwqDCoMKgIHJldHVybiAwOwo+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ ID4gPiArb3V0X2lkYToKPiA+ID4gPiA+ID4gPiArwqDCoMKgIGlkYV9zaW1wbGVfcmVtb3ZlKCZ2 aXJ0aW9faW5kZXhfaWRhLCBkZXYtPmluZGV4KTsKPiA+ID4gPiA+ID4gPiArb3V0X2VycjoKPiA+ ID4gPiA+ID4gPiArwqDCoMKgIHZpcnRpb19hZGRfc3RhdHVzKGRldiwgVklSVElPX0NPTkZJR19T X0ZBSUxFRCk7Cj4gPiA+ID4gPiA+ID4gICDCoMKgwqDCoMKgIHJldHVybiBlcnI7Cj4gPiA+ID4g PiA+ID4gICDCoCB9Cj4gPiA+ID4gPiA+ID4gICDCoCBFWFBPUlRfU1lNQk9MX0dQTChyZWdpc3Rl cl92aXJ0aW9fZGV2aWNlKTsKPiA+ID4gPiA+ID4gPiBAQCAtNDA4LDcgKzQxNCw5IEBAIGludCB2 aXJ0aW9fZGV2aWNlX3Jlc3RvcmUoc3RydWN0IHZpcnRpb19kZXZpY2UgKmRldikKPiA+ID4gPiA+ ID4gPiAgIMKgIMKgwqDCoMKgwqAgLyogV2UgYWx3YXlzIHN0YXJ0IGJ5IHJlc2V0dGluZyB0aGUg ZGV2aWNlLCBpbiBjYXNlIGEgcHJldmlvdXMKPiA+ID4gPiA+ID4gPiAgIMKgwqDCoMKgwqDCoCAq IGRyaXZlciBtZXNzZWQgaXQgdXAuICovCj4gPiA+ID4gPiA+ID4gLcKgwqDCoCBkZXYtPmNvbmZp Zy0+cmVzZXQoZGV2KTsKPiA+ID4gPiA+ID4gPiArwqDCoMKgIHJldCA9IGRldi0+Y29uZmlnLT5y ZXNldChkZXYpOwo+ID4gPiA+ID4gPiA+ICvCoMKgwqAgaWYgKHJldCkKPiA+ID4gPiA+ID4gPiAr wqDCoMKgwqDCoMKgwqAgZ290byBlcnI7Cj4gPiA+ID4gPiA+ID4gICDCoCDCoMKgwqDCoMKgIC8q IEFja25vd2xlZGdlIHRoYXQgd2UndmUgc2VlbiB0aGUgZGV2aWNlLiAqLwo+ID4gPiA+ID4gPiA+ ICAgwqDCoMKgwqDCoCB2aXJ0aW9fYWRkX3N0YXR1cyhkZXYsIFZJUlRJT19DT05GSUdfU19BQ0tO T1dMRURHRSk7Cj4gPiA+ID4gPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlydGlvL3ZpcnRp b19tbWlvLmMgYi9kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbW1pby5jCj4gPiA+ID4gPiA+ID4gaW5k ZXggNTYxMjhiOWM0NmViLi4xMmI4ZjA0OGM0OGQgMTAwNjQ0Cj4gPiA+ID4gPiA+ID4gLS0tIGEv ZHJpdmVycy92aXJ0aW8vdmlydGlvX21taW8uYwo+ID4gPiA+ID4gPiA+ICsrKyBiL2RyaXZlcnMv dmlydGlvL3ZpcnRpb19tbWlvLmMKPiA+ID4gPiA+ID4gPiBAQCAtMjU2LDEyICsyNTYsMTMgQEAg c3RhdGljIHZvaWQgdm1fc2V0X3N0YXR1cyhzdHJ1Y3QgdmlydGlvX2RldmljZQo+ID4gPiA+ID4g PiA+ICp2ZGV2LCB1OCBzdGF0dXMpCj4gPiA+ID4gPiA+ID4gICDCoMKgwqDCoMKgIHdyaXRlbChz dGF0dXMsIHZtX2Rldi0+YmFzZSArIFZJUlRJT19NTUlPX1NUQVRVUyk7Cj4gPiA+ID4gPiA+ID4g ICDCoCB9Cj4gPiA+ID4gPiA+ID4gICDCoCAtc3RhdGljIHZvaWQgdm1fcmVzZXQoc3RydWN0IHZp cnRpb19kZXZpY2UgKnZkZXYpCj4gPiA+ID4gPiA+ID4gK3N0YXRpYyBpbnQgdm1fcmVzZXQoc3Ry dWN0IHZpcnRpb19kZXZpY2UgKnZkZXYpCj4gPiA+ID4gPiA+ID4gICDCoCB7Cj4gPiA+ID4gPiA+ ID4gICDCoMKgwqDCoMKgIHN0cnVjdCB2aXJ0aW9fbW1pb19kZXZpY2UgKnZtX2RldiA9IHRvX3Zp cnRpb19tbWlvX2RldmljZSh2ZGV2KTsKPiA+ID4gPiA+ID4gPiAgIMKgIMKgwqDCoMKgwqAgLyog MCBzdGF0dXMgbWVhbnMgYSByZXNldC4gKi8KPiA+ID4gPiA+ID4gPiAgIMKgwqDCoMKgwqAgd3Jp dGVsKDAsIHZtX2Rldi0+YmFzZSArIFZJUlRJT19NTUlPX1NUQVRVUyk7Cj4gPiA+ID4gPiA+ID4g K8KgwqDCoCByZXR1cm4gMDsKPiA+ID4gPiA+ID4gPiAgIMKgIH0KPiA+ID4gPiA+ID4gPiAgIMKg IMKgIGRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX2xlZ2FjeS5jCj4gPiA+ ID4gPiA+ID4gYi9kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX2xlZ2FjeS5jCj4gPiA+ID4gPiA+ ID4gaW5kZXggZDYyZTk4MzVhZWVjLi4wYjVkOTVlM2VmYTEgMTAwNjQ0Cj4gPiA+ID4gPiA+ID4g LS0tIGEvZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9sZWdhY3kuYwo+ID4gPiA+ID4gPiA+ICsr KyBiL2RyaXZlcnMvdmlydGlvL3ZpcnRpb19wY2lfbGVnYWN5LmMKPiA+ID4gPiA+ID4gPiBAQCAt ODksNyArODksNyBAQCBzdGF0aWMgdm9pZCB2cF9zZXRfc3RhdHVzKHN0cnVjdCB2aXJ0aW9fZGV2 aWNlCj4gPiA+ID4gPiA+ID4gKnZkZXYsIHU4IHN0YXR1cykKPiA+ID4gPiA+ID4gPiAgIMKgwqDC oMKgwqAgaW93cml0ZTgoc3RhdHVzLCB2cF9kZXYtPmlvYWRkciArIFZJUlRJT19QQ0lfU1RBVFVT KTsKPiA+ID4gPiA+ID4gPiAgIMKgIH0KPiA+ID4gPiA+ID4gPiAgIMKgIC1zdGF0aWMgdm9pZCB2 cF9yZXNldChzdHJ1Y3QgdmlydGlvX2RldmljZSAqdmRldikKPiA+ID4gPiA+ID4gPiArc3RhdGlj IGludCB2cF9yZXNldChzdHJ1Y3QgdmlydGlvX2RldmljZSAqdmRldikKPiA+ID4gPiA+ID4gPiAg IMKgIHsKPiA+ID4gPiA+ID4gPiAgIMKgwqDCoMKgwqAgc3RydWN0IHZpcnRpb19wY2lfZGV2aWNl ICp2cF9kZXYgPSB0b192cF9kZXZpY2UodmRldik7Cj4gPiA+ID4gPiA+ID4gICDCoMKgwqDCoMKg IC8qIDAgc3RhdHVzIG1lYW5zIGEgcmVzZXQuICovCj4gPiA+ID4gPiA+ID4gQEAgLTk5LDYgKzk5 LDggQEAgc3RhdGljIHZvaWQgdnBfcmVzZXQoc3RydWN0IHZpcnRpb19kZXZpY2UgKnZkZXYpCj4g PiA+ID4gPiA+ID4gICDCoMKgwqDCoMKgIGlvcmVhZDgodnBfZGV2LT5pb2FkZHIgKyBWSVJUSU9f UENJX1NUQVRVUyk7Cj4gPiA+ID4gPiA+ID4gICDCoMKgwqDCoMKgIC8qIEZsdXNoIHBlbmRpbmcg VlEvY29uZmlndXJhdGlvbiBjYWxsYmFja3MuICovCj4gPiA+ID4gPiA+ID4gICDCoMKgwqDCoMKg IHZwX3N5bmNocm9uaXplX3ZlY3RvcnModmRldik7Cj4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4g PiA+ICvCoMKgwqAgcmV0dXJuIDA7Cj4gPiA+ID4gPiA+ID4gICDCoCB9Cj4gPiA+ID4gPiA+ID4g ICDCoCDCoCBzdGF0aWMgdTE2IHZwX2NvbmZpZ192ZWN0b3Ioc3RydWN0IHZpcnRpb19wY2lfZGV2 aWNlICp2cF9kZXYsCj4gPiA+ID4gPiA+ID4gdTE2IHZlY3RvcikKPiA+ID4gPiA+ID4gPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9tb2Rlcm4uYwo+ID4gPiA+ID4gPiA+ IGIvZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9tb2Rlcm4uYwo+ID4gPiA+ID4gPiA+IGluZGV4 IGZiZDRlYmMwMGViNi4uY2MzNDEyYTk2YTE3IDEwMDY0NAo+ID4gPiA+ID4gPiA+IC0tLSBhL2Ry aXZlcnMvdmlydGlvL3ZpcnRpb19wY2lfbW9kZXJuLmMKPiA+ID4gPiA+ID4gPiArKysgYi9kcml2 ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX21vZGVybi5jCj4gPiA+ID4gPiA+ID4gQEAgLTE1OCw3ICsx NTgsNyBAQCBzdGF0aWMgdm9pZCB2cF9zZXRfc3RhdHVzKHN0cnVjdCB2aXJ0aW9fZGV2aWNlCj4g PiA+ID4gPiA+ID4gKnZkZXYsIHU4IHN0YXR1cykKPiA+ID4gPiA+ID4gPiAgIMKgwqDCoMKgwqAg dnBfbW9kZXJuX3NldF9zdGF0dXMoJnZwX2Rldi0+bWRldiwgc3RhdHVzKTsKPiA+ID4gPiA+ID4g PiAgIMKgIH0KPiA+ID4gPiA+ID4gPiAgIMKgIC1zdGF0aWMgdm9pZCB2cF9yZXNldChzdHJ1Y3Qg dmlydGlvX2RldmljZSAqdmRldikKPiA+ID4gPiA+ID4gPiArc3RhdGljIGludCB2cF9yZXNldChz dHJ1Y3QgdmlydGlvX2RldmljZSAqdmRldikKPiA+ID4gPiA+ID4gPiAgIMKgIHsKPiA+ID4gPiA+ ID4gPiAgIMKgwqDCoMKgwqAgc3RydWN0IHZpcnRpb19wY2lfZGV2aWNlICp2cF9kZXYgPSB0b192 cF9kZXZpY2UodmRldik7Cj4gPiA+ID4gPiA+ID4gICDCoMKgwqDCoMKgIHN0cnVjdCB2aXJ0aW9f cGNpX21vZGVybl9kZXZpY2UgKm1kZXYgPSAmdnBfZGV2LT5tZGV2Owo+ID4gPiA+ID4gPiA+IEBA IC0xNzQsNiArMTc0LDcgQEAgc3RhdGljIHZvaWQgdnBfcmVzZXQoc3RydWN0IHZpcnRpb19kZXZp Y2UgKnZkZXYpCj4gPiA+ID4gPiA+ID4gICDCoMKgwqDCoMKgwqDCoMKgwqAgbXNsZWVwKDEpOwo+ ID4gPiA+ID4gPiA+ICAgwqDCoMKgwqDCoCAvKiBGbHVzaCBwZW5kaW5nIFZRL2NvbmZpZ3VyYXRp b24gY2FsbGJhY2tzLiAqLwo+ID4gPiA+ID4gPiA+ICAgwqDCoMKgwqDCoCB2cF9zeW5jaHJvbml6 ZV92ZWN0b3JzKHZkZXYpOwo+ID4gPiA+ID4gPiA+ICvCoMKgwqAgcmV0dXJuIDA7Cj4gPiA+ID4g PiA+ID4gICDCoCB9Cj4gPiA+ID4gPiA+ID4gICDCoCDCoCBzdGF0aWMgdTE2IHZwX2NvbmZpZ192 ZWN0b3Ioc3RydWN0IHZpcnRpb19wY2lfZGV2aWNlICp2cF9kZXYsCj4gPiA+ID4gPiA+ID4gdTE2 IHZlY3RvcikKPiA+ID4gPiA+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy92aXJ0aW8vdmlydGlv X3ZkcGEuYyBiL2RyaXZlcnMvdmlydGlvL3ZpcnRpb192ZHBhLmMKPiA+ID4gPiA+ID4gPiBpbmRl eCBlMjhhY2Y0ODJlMGMuLjVmZDRlNjI3YTliMCAxMDA2NDQKPiA+ID4gPiA+ID4gPiAtLS0gYS9k cml2ZXJzL3ZpcnRpby92aXJ0aW9fdmRwYS5jCj4gPiA+ID4gPiA+ID4gKysrIGIvZHJpdmVycy92 aXJ0aW8vdmlydGlvX3ZkcGEuYwo+ID4gPiA+ID4gPiA+IEBAIC05NywxMSArOTcsMTMgQEAgc3Rh dGljIHZvaWQgdmlydGlvX3ZkcGFfc2V0X3N0YXR1cyhzdHJ1Y3QKPiA+ID4gPiA+ID4gPiB2aXJ0 aW9fZGV2aWNlICp2ZGV2LCB1OCBzdGF0dXMpCj4gPiA+ID4gPiA+ID4gICDCoMKgwqDCoMKgIHJl dHVybiBvcHMtPnNldF9zdGF0dXModmRwYSwgc3RhdHVzKTsKPiA+ID4gPiA+ID4gPiAgIMKgIH0K PiA+ID4gPiA+ID4gPiAgIMKgIC1zdGF0aWMgdm9pZCB2aXJ0aW9fdmRwYV9yZXNldChzdHJ1Y3Qg dmlydGlvX2RldmljZSAqdmRldikKPiA+ID4gPiA+ID4gPiArc3RhdGljIGludCB2aXJ0aW9fdmRw YV9yZXNldChzdHJ1Y3QgdmlydGlvX2RldmljZSAqdmRldikKPiA+ID4gPiA+ID4gPiAgIMKgIHsK PiA+ID4gPiA+ID4gPiAgIMKgwqDCoMKgwqAgc3RydWN0IHZkcGFfZGV2aWNlICp2ZHBhID0gdmRf Z2V0X3ZkcGEodmRldik7Cj4gPiA+ID4gPiA+ID4gICDCoCDCoMKgwqDCoMKgIHZkcGFfcmVzZXQo dmRwYSk7Cj4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ICvCoMKgwqAgcmV0dXJuIDA7Cj4g PiA+ID4gPiA+ID4gICDCoCB9Cj4gPiA+ID4gPiA+ID4gICDCoCDCoCBzdGF0aWMgYm9vbCB2aXJ0 aW9fdmRwYV9ub3RpZnkoc3RydWN0IHZpcnRxdWV1ZSAqdnEpCj4gPiA+ID4gPiA+ID4gZGlmZiAt LWdpdCBhL2luY2x1ZGUvbGludXgvdmlydGlvX2NvbmZpZy5oCj4gPiA+ID4gPiA+ID4gYi9pbmNs dWRlL2xpbnV4L3ZpcnRpb19jb25maWcuaAo+ID4gPiA+ID4gPiA+IGluZGV4IDg1MTliM2FlNWQ1 Mi4uZDJiMGYxNjk5YTc1IDEwMDY0NAo+ID4gPiA+ID4gPiA+IC0tLSBhL2luY2x1ZGUvbGludXgv dmlydGlvX2NvbmZpZy5oCj4gPiA+ID4gPiA+ID4gKysrIGIvaW5jbHVkZS9saW51eC92aXJ0aW9f Y29uZmlnLmgKPiA+ID4gPiA+ID4gPiBAQCAtNDQsOSArNDQsMTAgQEAgc3RydWN0IHZpcnRpb19z aG1fcmVnaW9uIHsKPiA+ID4gPiA+ID4gPiAgIMKgwqAgKsKgwqDCoCBzdGF0dXM6IHRoZSBuZXcg c3RhdHVzIGJ5dGUKPiA+ID4gPiA+ID4gPiAgIMKgwqAgKiBAcmVzZXQ6IHJlc2V0IHRoZSBkZXZp Y2UKPiA+ID4gPiA+ID4gPiAgIMKgwqAgKsKgwqDCoCB2ZGV2OiB0aGUgdmlydGlvIGRldmljZQo+ ID4gPiA+ID4gPiA+IC0gKsKgwqDCoCBBZnRlciB0aGlzLCBzdGF0dXMgYW5kIGZlYXR1cmUgbmVn b3RpYXRpb24gbXVzdCBiZSBkb25lIGFnYWluCj4gPiA+ID4gPiA+ID4gKyAqwqDCoMKgIFVwb24g c3VjY2Vzcywgc3RhdHVzIGFuZCBmZWF0dXJlIG5lZ290aWF0aW9uIG11c3QgYmUgZG9uZSBhZ2Fp bgo+ID4gPiA+ID4gPiA+ICAgwqDCoCAqwqDCoMKgIERldmljZSBtdXN0IG5vdCBiZSByZXNldCBm cm9tIGl0cyB2cS9jb25maWcgY2FsbGJhY2tzLCBvciBpbgo+ID4gPiA+ID4gPiA+ICAgwqDCoCAq wqDCoMKgIHBhcmFsbGVsIHdpdGggYmVpbmcgYWRkZWQvcmVtb3ZlZC4KPiA+ID4gPiA+ID4gPiAr ICrCoMKgwqAgUmV0dXJucyAwIG9uIHN1Y2Nlc3Mgb3IgZXJyb3Igc3RhdHVzLgo+ID4gPiA+ID4g PiA+ICAgwqDCoCAqIEBmaW5kX3ZxczogZmluZCB2aXJ0cXVldWVzIGFuZCBpbnN0YW50aWF0ZSB0 aGVtLgo+ID4gPiA+ID4gPiA+ICAgwqDCoCAqwqDCoMKgIHZkZXY6IHRoZSB2aXJ0aW9fZGV2aWNl Cj4gPiA+ID4gPiA+ID4gICDCoMKgICrCoMKgwqAgbnZxczogdGhlIG51bWJlciBvZiB2aXJ0cXVl dWVzIHRvIGZpbmQKPiA+ID4gPiA+ID4gPiBAQCAtODIsNyArODMsNyBAQCBzdHJ1Y3QgdmlydGlv X2NvbmZpZ19vcHMgewo+ID4gPiA+ID4gPiA+ICAgwqDCoMKgwqDCoCB1MzIgKCpnZW5lcmF0aW9u KShzdHJ1Y3QgdmlydGlvX2RldmljZSAqdmRldik7Cj4gPiA+ID4gPiA+ID4gICDCoMKgwqDCoMKg IHU4ICgqZ2V0X3N0YXR1cykoc3RydWN0IHZpcnRpb19kZXZpY2UgKnZkZXYpOwo+ID4gPiA+ID4g PiA+ICAgwqDCoMKgwqDCoCB2b2lkICgqc2V0X3N0YXR1cykoc3RydWN0IHZpcnRpb19kZXZpY2Ug KnZkZXYsIHU4IHN0YXR1cyk7Cj4gPiA+ID4gPiA+ID4gLcKgwqDCoCB2b2lkICgqcmVzZXQpKHN0 cnVjdCB2aXJ0aW9fZGV2aWNlICp2ZGV2KTsKPiA+ID4gPiA+ID4gPiArwqDCoMKgIGludCAoKnJl c2V0KShzdHJ1Y3QgdmlydGlvX2RldmljZSAqdmRldik7Cj4gPiA+ID4gPiA+ID4gICDCoMKgwqDC oMKgIGludCAoKmZpbmRfdnFzKShzdHJ1Y3QgdmlydGlvX2RldmljZSAqLCB1bnNpZ25lZCBudnFz LAo+ID4gPiA+ID4gPiA+ICAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IHZpcnRx dWV1ZSAqdnFzW10sIHZxX2NhbGxiYWNrX3QgKmNhbGxiYWNrc1tdLAo+ID4gPiA+ID4gPiA+ICAg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY29uc3QgY2hhciAqIGNvbnN0IG5hbWVzW10sIGNv bnN0IGJvb2wgKmN0eCwKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fClZpcnR1YWxpemF0aW9uIG1haWxpbmcgbGlzdApWaXJ0dWFsaXphdGlvbkBsaXN0cy5s aW51eC1mb3VuZGF0aW9uLm9yZwpodHRwczovL2xpc3RzLmxpbnV4Zm91bmRhdGlvbi5vcmcvbWFp bG1hbi9saXN0aW5mby92aXJ0dWFsaXphdGlvbg== 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=-15.8 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_CR_TRAILER,INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS 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 C3038C433B4 for ; Mon, 12 Apr 2021 21:23:27 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 8D0076135C for ; Mon, 12 Apr 2021 21:23:27 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S240582AbhDLVXo (ORCPT ); Mon, 12 Apr 2021 17:23:44 -0400 Received: from us-smtp-delivery-124.mimecast.com ([216.205.24.124]:59844 "EHLO us-smtp-delivery-124.mimecast.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S240295AbhDLVXn (ORCPT ); Mon, 12 Apr 2021 17:23:43 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1618262604; 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=GvP/tErD9e1+fzMdeH0Z2ejVXmCsyTPxRm5Ef0II10o=; b=do5uu3jwWdnAW82MRQH2AezkJfrrbvfYyvMXuWzK50nfFysiUbMbNfMt6uUcyAIb1iE3mK G4l33Kgk7C91qDTxnTxSfgU82E+Ks5950/htstRWQ2I8TDTQizsxCLRWr/f39MAildktOf 6D3p42QjpWjWewKjM8z/gD2cYZqKJR0= Received: from mail-wm1-f69.google.com (mail-wm1-f69.google.com [209.85.128.69]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-295-GZ_rbUi2Pey6b6GKm3qhvw-1; Mon, 12 Apr 2021 17:23:22 -0400 X-MC-Unique: GZ_rbUi2Pey6b6GKm3qhvw-1 Received: by mail-wm1-f69.google.com with SMTP id o22-20020a1ca5160000b0290126af94672aso212452wme.2 for ; Mon, 12 Apr 2021 14:23:22 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:content-transfer-encoding :in-reply-to; bh=GvP/tErD9e1+fzMdeH0Z2ejVXmCsyTPxRm5Ef0II10o=; b=j+nyc9nbP6OGhYcuLJpsQm0m0M21Pvrinb6FYstBQcy0/9EurmXk6XWxYZX4rhEgEe 6abdXXxfnEFiMdh/qCTstT6dn9Rag5zFsJKg1pdFRPsPxZ9JTUJw0JhNby5nDBfCx/EQ TBktQfiNnj4MRy/QphlXaXyMFiSoSnhArQZlI5mhvRqK9uNmxmnmqir2K78OTcSTvUm3 6tjaeAs6Pam6bPeuukBtjCYDx3nnujZn2JJgMpHJK7kMABL9XgSLxbMwBzmmzRgDx4kR vM7xQqe49rhqORetQOy2QuOIHNkaNL3VLjpA/sblsYTuGrv0LR5/z53a/xMIVa3R6W/0 DiDg== X-Gm-Message-State: AOAM5330Z1mP45ZDNHiclHe4VWA1lX5LhNox4VUDakmOB2c/H8HXOk/Q +2FKp+hmuduioVtrSXEIUzzOJg7iXzx3+Ubv8NjH8ey5rFv6uK2PmS3t9Jzf5MWF03FA/Lpavuq wd6koVFT4/eD7 X-Received: by 2002:adf:f403:: with SMTP id g3mr33018213wro.367.1618262601256; Mon, 12 Apr 2021 14:23:21 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxSAdtuHQ+Dn7LmIQl700F9pQ7SeQBzkb1U38t8iayK+tw/Ge8UZhrl+YyBMnG58bAK8jvmCA== X-Received: by 2002:adf:f403:: with SMTP id g3mr33018199wro.367.1618262600958; Mon, 12 Apr 2021 14:23:20 -0700 (PDT) Received: from redhat.com ([2a10:8006:2281:0:1994:c627:9eac:1825]) by smtp.gmail.com with ESMTPSA id m15sm17095738wrp.96.2021.04.12.14.23.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 12 Apr 2021 14:23:19 -0700 (PDT) Date: Mon, 12 Apr 2021 17:23:16 -0400 From: "Michael S. Tsirkin" To: Max Gurtovoy Cc: Jason Wang , kvm@vger.kernel.org, virtualization@lists.linux-foundation.org, oren@nvidia.com, nitzanc@nvidia.com, cohuck@redhat.com Subject: Re: [PATCH v2 1/3] virtio: update reset callback to return status Message-ID: <20210412171858-mutt-send-email-mst@kernel.org> References: <20210408081109.56537-1-mgurtovoy@nvidia.com> <16fa0e31-a305-3b41-b0d3-ad76aa00177b@redhat.com> <1f134102-4ccb-57e3-858d-3922d851ce8a@nvidia.com> <20210408115524-mutt-send-email-mst@kernel.org> <31fa92ca-bce5-b71f-406d-8f3951b2143c@nvidia.com> <20210412080051-mutt-send-email-mst@kernel.org> 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 Mon, Apr 12, 2021 at 04:03:02PM +0300, Max Gurtovoy wrote: > > On 4/12/2021 3:04 PM, Michael S. Tsirkin wrote: > > On Mon, Apr 12, 2021 at 02:55:27PM +0300, Max Gurtovoy wrote: > > > On 4/8/2021 6:56 PM, Michael S. Tsirkin wrote: > > > > On Thu, Apr 08, 2021 at 12:56:52PM +0300, Max Gurtovoy wrote: > > > > > On 4/8/2021 11:58 AM, Jason Wang wrote: > > > > > > 在 2021/4/8 下午4:11, Max Gurtovoy 写道: > > > > > > > The reset device operation, usually is an operation that might fail from > > > > > > > various reasons. For example, the controller might be in a bad state and > > > > > > > can't answer to any request. Usually, the paravirt SW based virtio > > > > > > > devices always succeed in reset operation but this is not the case for > > > > > > > HW based virtio devices. > > > > > > I would like to know under what condition that the reset operation may > > > > > > fail (except for the case of a bugg guest). > > > > > The controller might not be ready or stuck. This is a real use case for many > > > > > PCI devices. > > > > > > > > > > For real devices the FW might be in a bad state and it can happen also for > > > > > paravirt device if you have a bug in the controller code or if you entered > > > > > some error flow (Out of memory). > > > > > > > > > > You don't want to be stuck because of one bad device. > > > > OK so maybe we can do more to detect the bad device. > > > > Won't we get all 1's on a read in this case? > > > No. how can we guarantee it ? > > > > > Well this is what you tend to get if e.g. you disable device memory. > > > > Anyway, you know about hardware, I don't ... It's not returning 0 after > > reset as it should ... what does it return? Hopefully not random noise - > > I don't think it's very practical to write a driver for a device that > > starts doing that at random times ... > > The device may return 0x40 (NEEDS_RESET). It doesn't have to return all 1's. > > For paravirt devices, think of a situation that you can't allocate some > internal buffers (malloc failed) and you want to wait for few seconds until > the system memory will free some pages. > > So you may return NEEDS_RESET that indicates some error state of the device. > Once the system memory freed by other application for example, your internal > virtio device malloc succeeded and you may return 0. > > In this case, you don't want to stall the other virtio devices to probe > (they might be real HW devices that driven by the same driver), right ? So the device is very busy then? Not sure it's smart to just assume it's safe to free all memory allocated for it then ... I guess the lesson is don't make device reset depend on malloc of some memory? > > > > > > > > > > > > > > This commit is also a preparation for adding a timeout mechanism for > > > > > > > resetting virtio devices. > > > > > > > > > > > > > > Signed-off-by: Max Gurtovoy > > > > > > > --- > > > > > > > > > > > > > > changes from v1: > > > > > > >   - update virtio_ccw.c (Cornelia) > > > > > > >   - update virtio_uml.c > > > > > > >   - update mlxbf-tmfifo.c > > > > > > Note that virtio driver may call reset, so you probably need to convert > > > > > > them. > > > > > I'm sure I understand. > > > > > > > > > > Convert to what ? > > > > > > > > > > Thanks. > > > > > > > > > > > Thanks > > > > > > > > > > > > > > > > > > > --- > > > > > > >   arch/um/drivers/virtio_uml.c             |  4 +++- > > > > > > >   drivers/platform/mellanox/mlxbf-tmfifo.c |  4 +++- > > > > > > >   drivers/remoteproc/remoteproc_virtio.c   |  4 +++- > > > > > > >   drivers/s390/virtio/virtio_ccw.c         |  9 ++++++--- > > > > > > >   drivers/virtio/virtio.c                  | 22 +++++++++++++++------- > > > > > > >   drivers/virtio/virtio_mmio.c             |  3 ++- > > > > > > >   drivers/virtio/virtio_pci_legacy.c       |  4 +++- > > > > > > >   drivers/virtio/virtio_pci_modern.c       |  3 ++- > > > > > > >   drivers/virtio/virtio_vdpa.c             |  4 +++- > > > > > > >   include/linux/virtio_config.h            |  5 +++-- > > > > > > >   10 files changed, 43 insertions(+), 19 deletions(-) > > > > > > > > > > > > > > diff --git a/arch/um/drivers/virtio_uml.c b/arch/um/drivers/virtio_uml.c > > > > > > > index 91ddf74ca888..b6e66265ed32 100644 > > > > > > > --- a/arch/um/drivers/virtio_uml.c > > > > > > > +++ b/arch/um/drivers/virtio_uml.c > > > > > > > @@ -827,11 +827,13 @@ static void vu_set_status(struct virtio_device > > > > > > > *vdev, u8 status) > > > > > > >       vu_dev->status = status; > > > > > > >   } > > > > > > >   -static void vu_reset(struct virtio_device *vdev) > > > > > > > +static int vu_reset(struct virtio_device *vdev) > > > > > > >   { > > > > > > >       struct virtio_uml_device *vu_dev = to_virtio_uml_device(vdev); > > > > > > >         vu_dev->status = 0; > > > > > > > + > > > > > > > +    return 0; > > > > > > >   } > > > > > > >     static void vu_del_vq(struct virtqueue *vq) > > > > > > > diff --git a/drivers/platform/mellanox/mlxbf-tmfifo.c > > > > > > > b/drivers/platform/mellanox/mlxbf-tmfifo.c > > > > > > > index bbc4e71a16ff..c192b8ac5d9e 100644 > > > > > > > --- a/drivers/platform/mellanox/mlxbf-tmfifo.c > > > > > > > +++ b/drivers/platform/mellanox/mlxbf-tmfifo.c > > > > > > > @@ -980,11 +980,13 @@ static void > > > > > > > mlxbf_tmfifo_virtio_set_status(struct virtio_device *vdev, > > > > > > >   } > > > > > > >     /* Reset the device. Not much here for now. */ > > > > > > > -static void mlxbf_tmfifo_virtio_reset(struct virtio_device *vdev) > > > > > > > +static int mlxbf_tmfifo_virtio_reset(struct virtio_device *vdev) > > > > > > >   { > > > > > > >       struct mlxbf_tmfifo_vdev *tm_vdev = mlxbf_vdev_to_tmfifo(vdev); > > > > > > >         tm_vdev->status = 0; > > > > > > > + > > > > > > > +    return 0; > > > > > > >   } > > > > > > >     /* Read the value of a configuration field. */ > > > > > > > diff --git a/drivers/remoteproc/remoteproc_virtio.c > > > > > > > b/drivers/remoteproc/remoteproc_virtio.c > > > > > > > index 0cc617f76068..ca9573c62c3d 100644 > > > > > > > --- a/drivers/remoteproc/remoteproc_virtio.c > > > > > > > +++ b/drivers/remoteproc/remoteproc_virtio.c > > > > > > > @@ -191,7 +191,7 @@ static void rproc_virtio_set_status(struct > > > > > > > virtio_device *vdev, u8 status) > > > > > > >       dev_dbg(&vdev->dev, "status: %d\n", status); > > > > > > >   } > > > > > > >   -static void rproc_virtio_reset(struct virtio_device *vdev) > > > > > > > +static int rproc_virtio_reset(struct virtio_device *vdev) > > > > > > >   { > > > > > > >       struct rproc_vdev *rvdev = vdev_to_rvdev(vdev); > > > > > > >       struct fw_rsc_vdev *rsc; > > > > > > > @@ -200,6 +200,8 @@ static void rproc_virtio_reset(struct > > > > > > > virtio_device *vdev) > > > > > > >         rsc->status = 0; > > > > > > >       dev_dbg(&vdev->dev, "reset !\n"); > > > > > > > + > > > > > > > +    return 0; > > > > > > >   } > > > > > > >     /* provide the vdev features as retrieved from the firmware */ > > > > > > > diff --git a/drivers/s390/virtio/virtio_ccw.c > > > > > > > b/drivers/s390/virtio/virtio_ccw.c > > > > > > > index 54e686dca6de..52b32555e746 100644 > > > > > > > --- a/drivers/s390/virtio/virtio_ccw.c > > > > > > > +++ b/drivers/s390/virtio/virtio_ccw.c > > > > > > > @@ -732,14 +732,15 @@ static int virtio_ccw_find_vqs(struct > > > > > > > virtio_device *vdev, unsigned nvqs, > > > > > > >       return ret; > > > > > > >   } > > > > > > >   -static void virtio_ccw_reset(struct virtio_device *vdev) > > > > > > > +static int virtio_ccw_reset(struct virtio_device *vdev) > > > > > > >   { > > > > > > >       struct virtio_ccw_device *vcdev = to_vc_device(vdev); > > > > > > >       struct ccw1 *ccw; > > > > > > > +    int ret; > > > > > > >         ccw = ccw_device_dma_zalloc(vcdev->cdev, sizeof(*ccw)); > > > > > > >       if (!ccw) > > > > > > > -        return; > > > > > > > +        return -ENOMEM; > > > > > > >         /* Zero status bits. */ > > > > > > >       vcdev->dma_area->status = 0; > > > > > > > @@ -749,8 +750,10 @@ static void virtio_ccw_reset(struct > > > > > > > virtio_device *vdev) > > > > > > >       ccw->flags = 0; > > > > > > >       ccw->count = 0; > > > > > > >       ccw->cda = 0; > > > > > > > -    ccw_io_helper(vcdev, ccw, VIRTIO_CCW_DOING_RESET); > > > > > > > +    ret = ccw_io_helper(vcdev, ccw, VIRTIO_CCW_DOING_RESET); > > > > > > >       ccw_device_dma_free(vcdev->cdev, ccw, sizeof(*ccw)); > > > > > > > + > > > > > > > +    return ret; > > > > > > >   } > > > > > > >     static u64 virtio_ccw_get_features(struct virtio_device *vdev) > > > > > > > diff --git a/drivers/virtio/virtio.c b/drivers/virtio/virtio.c > > > > > > > index 4b15c00c0a0a..ddbfd5b5f3bd 100644 > > > > > > > --- a/drivers/virtio/virtio.c > > > > > > > +++ b/drivers/virtio/virtio.c > > > > > > > @@ -338,7 +338,7 @@ int register_virtio_device(struct virtio_device > > > > > > > *dev) > > > > > > >       /* Assign a unique device index and hence name. */ > > > > > > >       err = ida_simple_get(&virtio_index_ida, 0, 0, GFP_KERNEL); > > > > > > >       if (err < 0) > > > > > > > -        goto out; > > > > > > > +        goto out_err; > > > > > > >         dev->index = err; > > > > > > >       dev_set_name(&dev->dev, "virtio%u", dev->index); > > > > > > > @@ -349,7 +349,9 @@ int register_virtio_device(struct virtio_device > > > > > > > *dev) > > > > > > >         /* We always start by resetting the device, in case a previous > > > > > > >        * driver messed it up.  This also tests that code path a > > > > > > > little. */ > > > > > > > -    dev->config->reset(dev); > > > > > > > +    err = dev->config->reset(dev); > > > > > > > +    if (err) > > > > > > > +        goto out_ida; > > > > > > >         /* Acknowledge that we've seen the device. */ > > > > > > >       virtio_add_status(dev, VIRTIO_CONFIG_S_ACKNOWLEDGE); > > > > > > > @@ -362,10 +364,14 @@ int register_virtio_device(struct > > > > > > > virtio_device *dev) > > > > > > >        */ > > > > > > >       err = device_add(&dev->dev); > > > > > > >       if (err) > > > > > > > -        ida_simple_remove(&virtio_index_ida, dev->index); > > > > > > > -out: > > > > > > > -    if (err) > > > > > > > -        virtio_add_status(dev, VIRTIO_CONFIG_S_FAILED); > > > > > > > +        goto out_ida; > > > > > > > + > > > > > > > +    return 0; > > > > > > > + > > > > > > > +out_ida: > > > > > > > +    ida_simple_remove(&virtio_index_ida, dev->index); > > > > > > > +out_err: > > > > > > > +    virtio_add_status(dev, VIRTIO_CONFIG_S_FAILED); > > > > > > >       return err; > > > > > > >   } > > > > > > >   EXPORT_SYMBOL_GPL(register_virtio_device); > > > > > > > @@ -408,7 +414,9 @@ int virtio_device_restore(struct virtio_device *dev) > > > > > > >         /* We always start by resetting the device, in case a previous > > > > > > >        * driver messed it up. */ > > > > > > > -    dev->config->reset(dev); > > > > > > > +    ret = dev->config->reset(dev); > > > > > > > +    if (ret) > > > > > > > +        goto err; > > > > > > >         /* Acknowledge that we've seen the device. */ > > > > > > >       virtio_add_status(dev, VIRTIO_CONFIG_S_ACKNOWLEDGE); > > > > > > > diff --git a/drivers/virtio/virtio_mmio.c b/drivers/virtio/virtio_mmio.c > > > > > > > index 56128b9c46eb..12b8f048c48d 100644 > > > > > > > --- a/drivers/virtio/virtio_mmio.c > > > > > > > +++ b/drivers/virtio/virtio_mmio.c > > > > > > > @@ -256,12 +256,13 @@ static void vm_set_status(struct virtio_device > > > > > > > *vdev, u8 status) > > > > > > >       writel(status, vm_dev->base + VIRTIO_MMIO_STATUS); > > > > > > >   } > > > > > > >   -static void vm_reset(struct virtio_device *vdev) > > > > > > > +static int vm_reset(struct virtio_device *vdev) > > > > > > >   { > > > > > > >       struct virtio_mmio_device *vm_dev = to_virtio_mmio_device(vdev); > > > > > > >         /* 0 status means a reset. */ > > > > > > >       writel(0, vm_dev->base + VIRTIO_MMIO_STATUS); > > > > > > > +    return 0; > > > > > > >   } > > > > > > >     diff --git a/drivers/virtio/virtio_pci_legacy.c > > > > > > > b/drivers/virtio/virtio_pci_legacy.c > > > > > > > index d62e9835aeec..0b5d95e3efa1 100644 > > > > > > > --- a/drivers/virtio/virtio_pci_legacy.c > > > > > > > +++ b/drivers/virtio/virtio_pci_legacy.c > > > > > > > @@ -89,7 +89,7 @@ static void vp_set_status(struct virtio_device > > > > > > > *vdev, u8 status) > > > > > > >       iowrite8(status, vp_dev->ioaddr + VIRTIO_PCI_STATUS); > > > > > > >   } > > > > > > >   -static void vp_reset(struct virtio_device *vdev) > > > > > > > +static int vp_reset(struct virtio_device *vdev) > > > > > > >   { > > > > > > >       struct virtio_pci_device *vp_dev = to_vp_device(vdev); > > > > > > >       /* 0 status means a reset. */ > > > > > > > @@ -99,6 +99,8 @@ static void vp_reset(struct virtio_device *vdev) > > > > > > >       ioread8(vp_dev->ioaddr + VIRTIO_PCI_STATUS); > > > > > > >       /* Flush pending VQ/configuration callbacks. */ > > > > > > >       vp_synchronize_vectors(vdev); > > > > > > > + > > > > > > > +    return 0; > > > > > > >   } > > > > > > >     static u16 vp_config_vector(struct virtio_pci_device *vp_dev, > > > > > > > u16 vector) > > > > > > > diff --git a/drivers/virtio/virtio_pci_modern.c > > > > > > > b/drivers/virtio/virtio_pci_modern.c > > > > > > > index fbd4ebc00eb6..cc3412a96a17 100644 > > > > > > > --- a/drivers/virtio/virtio_pci_modern.c > > > > > > > +++ b/drivers/virtio/virtio_pci_modern.c > > > > > > > @@ -158,7 +158,7 @@ static void vp_set_status(struct virtio_device > > > > > > > *vdev, u8 status) > > > > > > >       vp_modern_set_status(&vp_dev->mdev, status); > > > > > > >   } > > > > > > >   -static void vp_reset(struct virtio_device *vdev) > > > > > > > +static int vp_reset(struct virtio_device *vdev) > > > > > > >   { > > > > > > >       struct virtio_pci_device *vp_dev = to_vp_device(vdev); > > > > > > >       struct virtio_pci_modern_device *mdev = &vp_dev->mdev; > > > > > > > @@ -174,6 +174,7 @@ static void vp_reset(struct virtio_device *vdev) > > > > > > >           msleep(1); > > > > > > >       /* Flush pending VQ/configuration callbacks. */ > > > > > > >       vp_synchronize_vectors(vdev); > > > > > > > +    return 0; > > > > > > >   } > > > > > > >     static u16 vp_config_vector(struct virtio_pci_device *vp_dev, > > > > > > > u16 vector) > > > > > > > diff --git a/drivers/virtio/virtio_vdpa.c b/drivers/virtio/virtio_vdpa.c > > > > > > > index e28acf482e0c..5fd4e627a9b0 100644 > > > > > > > --- a/drivers/virtio/virtio_vdpa.c > > > > > > > +++ b/drivers/virtio/virtio_vdpa.c > > > > > > > @@ -97,11 +97,13 @@ static void virtio_vdpa_set_status(struct > > > > > > > virtio_device *vdev, u8 status) > > > > > > >       return ops->set_status(vdpa, status); > > > > > > >   } > > > > > > >   -static void virtio_vdpa_reset(struct virtio_device *vdev) > > > > > > > +static int virtio_vdpa_reset(struct virtio_device *vdev) > > > > > > >   { > > > > > > >       struct vdpa_device *vdpa = vd_get_vdpa(vdev); > > > > > > >         vdpa_reset(vdpa); > > > > > > > + > > > > > > > +    return 0; > > > > > > >   } > > > > > > >     static bool virtio_vdpa_notify(struct virtqueue *vq) > > > > > > > diff --git a/include/linux/virtio_config.h > > > > > > > b/include/linux/virtio_config.h > > > > > > > index 8519b3ae5d52..d2b0f1699a75 100644 > > > > > > > --- a/include/linux/virtio_config.h > > > > > > > +++ b/include/linux/virtio_config.h > > > > > > > @@ -44,9 +44,10 @@ struct virtio_shm_region { > > > > > > >    *    status: the new status byte > > > > > > >    * @reset: reset the device > > > > > > >    *    vdev: the virtio device > > > > > > > - *    After this, status and feature negotiation must be done again > > > > > > > + *    Upon success, status and feature negotiation must be done again > > > > > > >    *    Device must not be reset from its vq/config callbacks, or in > > > > > > >    *    parallel with being added/removed. > > > > > > > + *    Returns 0 on success or error status. > > > > > > >    * @find_vqs: find virtqueues and instantiate them. > > > > > > >    *    vdev: the virtio_device > > > > > > >    *    nvqs: the number of virtqueues to find > > > > > > > @@ -82,7 +83,7 @@ struct virtio_config_ops { > > > > > > >       u32 (*generation)(struct virtio_device *vdev); > > > > > > >       u8 (*get_status)(struct virtio_device *vdev); > > > > > > >       void (*set_status)(struct virtio_device *vdev, u8 status); > > > > > > > -    void (*reset)(struct virtio_device *vdev); > > > > > > > +    int (*reset)(struct virtio_device *vdev); > > > > > > >       int (*find_vqs)(struct virtio_device *, unsigned nvqs, > > > > > > >               struct virtqueue *vqs[], vq_callback_t *callbacks[], > > > > > > >               const char * const names[], const bool *ctx,