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 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 smtp.lore.kernel.org (Postfix) with ESMTPS id 58A6DC433F5 for ; Sun, 30 Jan 2022 04:04:00 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp3.osuosl.org (Postfix) with ESMTP id E1F6660746; Sun, 30 Jan 2022 04:03:59 +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 7coYvTaeNQ_N; Sun, 30 Jan 2022 04:03:58 +0000 (UTC) Received: from lists.linuxfoundation.org (lf-lists.osuosl.org [IPv6:2605:bc80:3010:104::8cd3:938]) by smtp3.osuosl.org (Postfix) with ESMTPS id 26C21606EC; Sun, 30 Jan 2022 04:03:58 +0000 (UTC) Received: from lf-lists.osuosl.org (localhost [127.0.0.1]) by lists.linuxfoundation.org (Postfix) with ESMTP id ECECCC001A; Sun, 30 Jan 2022 04:03:57 +0000 (UTC) Received: from smtp3.osuosl.org (smtp3.osuosl.org [140.211.166.136]) by lists.linuxfoundation.org (Postfix) with ESMTP id B1F1DC000B for ; Sun, 30 Jan 2022 04:03:55 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp3.osuosl.org (Postfix) with ESMTP id 9F8F960746 for ; Sun, 30 Jan 2022 04:03:55 +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 nbsNJApNoHH2 for ; Sun, 30 Jan 2022 04:03:54 +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 [170.10.129.124]) by smtp3.osuosl.org (Postfix) with ESMTPS id 1298E606EC for ; Sun, 30 Jan 2022 04:03:53 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1643515432; 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=HFIaqK7M9BAi53NL1rhH7gNbtHPeQB0H6j65AiGJWBg=; b=bdIQ84MEDjDSH2u5Exp99LKc6BtpYj75/eYTf7TeYBiqR275kevWV5mJNli+zGuZ58ayt/ /FvBXfdHxPJJ/1f+GkpzmWx0+o3BuluM6tCROSTAjqAzPmZa8oQ/u+qSRra8k8DZIa2r6A vFM2VDltFhb5qOHOeFH7XEfYPb3Qk5A= Received: from mail-pj1-f72.google.com (mail-pj1-f72.google.com [209.85.216.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-111-ULZ81vJaMsaJNfR5yYI2hQ-1; Sat, 29 Jan 2022 23:03:50 -0500 X-MC-Unique: ULZ81vJaMsaJNfR5yYI2hQ-1 Received: by mail-pj1-f72.google.com with SMTP id m21-20020a17090b069500b001b532620cd9so5680237pjz.1 for ; Sat, 29 Jan 2022 20:03:50 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:message-id:date:mime-version:user-agent:subject :content-language:to:cc:references:from:in-reply-to :content-transfer-encoding; bh=HFIaqK7M9BAi53NL1rhH7gNbtHPeQB0H6j65AiGJWBg=; b=ekVY/GLIwvD7q6ypYTrczwX2BwuKNsOJy5/nJfjDq6N0pcf38eyf2P5ix8oGABKswL Rvr8/J546rV3xApw7jSiSIc7gKoW8W/AJc6qxMnCY2NCO/4vrXrfvQ/a3f9OnfM0mc20 K4sCCWRR9QNP1+dtu1tcRl98EA+3D7zgTiFL8vOW9BljgxcPEVGxW5qF+i3QRNJtQx5o 8idszNIc8SUc3kwhRWNQn7mNDcGqADFzF2NPJA+NOVTHlvplisaJH5vh8Mna3zjaUsRH wEGqgFoCL/BrZmeWZQ2jHXApMKX+nmH3VXZdfrMIptnb+VxZK5zLcwMF1oN2yoX+wujq jV8g== X-Gm-Message-State: AOAM533bC/ykWOZGSB8QJPXFgR1HSRqlWLuFkYecRtUlmGgvHxeFTCbS FusM89mXUzqCaqU0kghuyJS7kxApr9+7Epe7WLVP8d8ivVyke+v6HwhButOo2uqsTnXsrKw8V99 cNXAvtaqmAilc8iDZs/PHGryO/0+OHGLQSkD9zfcWfw== X-Received: by 2002:a17:90b:4a12:: with SMTP id kk18mr27929715pjb.227.1643515429587; Sat, 29 Jan 2022 20:03:49 -0800 (PST) X-Google-Smtp-Source: ABdhPJxKwxwopr8ME/4KezW9LHVHcLAS/GF6p7bPNTRyCivwXXBqWiXSVQdRO4a11lM6RAazoGsdfg== X-Received: by 2002:a17:90b:4a12:: with SMTP id kk18mr27929696pjb.227.1643515429204; Sat, 29 Jan 2022 20:03:49 -0800 (PST) Received: from [10.72.13.18] ([209.132.188.80]) by smtp.gmail.com with ESMTPSA id nk11sm6644594pjb.55.2022.01.29.20.03.41 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sat, 29 Jan 2022 20:03:48 -0800 (PST) Message-ID: <82b8c3bf-1b11-86c7-4fad-294f5ccf1278@redhat.com> Date: Sun, 30 Jan 2022 12:03:36 +0800 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:91.0) Gecko/20100101 Thunderbird/91.5.1 Subject: Re: [PATCH 17/31] vdpa: adapt vhost_ops callbacks to svq To: =?UTF-8?Q?Eugenio_P=c3=a9rez?= , qemu-devel@nongnu.org References: <20220121202733.404989-1-eperezma@redhat.com> <20220121202733.404989-18-eperezma@redhat.com> From: Jason Wang In-Reply-To: <20220121202733.404989-18-eperezma@redhat.com> Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=jasowang@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Language: en-US Cc: Laurent Vivier , Parav Pandit , Cindy Lu , "Michael S. Tsirkin" , Richard Henderson , Markus Armbruster , Gautam Dawar , virtualization@lists.linux-foundation.org, Eduardo Habkost , Harpreet Singh Anand , Xiao W Wang , Stefan Hajnoczi , Eli Cohen , Paolo Bonzini , Zhu Lingshan , Eric Blake 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-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: virtualization-bounces@lists.linux-foundation.org Sender: "Virtualization" CuWcqCAyMDIyLzEvMjIg5LiK5Y2INDoyNywgRXVnZW5pbyBQw6lyZXog5YaZ6YGTOgo+IEZpcnN0 IGhhbGYgb2YgdGhlIGJ1ZmZlcnMgZm9yd2FyZGluZyBwYXJ0LCBwcmVwYXJpbmcgdmhvc3QtdmRw YQo+IGNhbGxiYWNrcyB0byBTVlEgdG8gb2ZmZXIgaXQuIFFFTVUgY2Fubm90IGVuYWJsZSBpdCBh dCB0aGlzIG1vbWVudCwgc28KPiB0aGlzIGlzIGVmZmVjdGl2ZWx5IGRlYWQgY29kZSBhdCB0aGUg bW9tZW50LCBidXQgaXQgaGVscHMgdG8gcmVkdWNlCj4gcGF0Y2ggc2l6ZS4KPgo+IFNpZ25lZC1v ZmYtYnk6IEV1Z2VuaW8gUMOpcmV6IDxlcGVyZXptYUByZWRoYXQuY29tPgo+IC0tLQo+ICAgaHcv dmlydGlvL3Zob3N0LXNoYWRvdy12aXJ0cXVldWUuaCB8ICAgMiArLQo+ICAgaHcvdmlydGlvL3Zo b3N0LXNoYWRvdy12aXJ0cXVldWUuYyB8ICAyMSArKysrLQo+ICAgaHcvdmlydGlvL3Zob3N0LXZk cGEuYyAgICAgICAgICAgICB8IDEzMyArKysrKysrKysrKysrKysrKysrKysrKysrKy0tLQo+ICAg MyBmaWxlcyBjaGFuZ2VkLCAxNDMgaW5zZXJ0aW9ucygrKSwgMTMgZGVsZXRpb25zKC0pCj4KPiBk aWZmIC0tZ2l0IGEvaHcvdmlydGlvL3Zob3N0LXNoYWRvdy12aXJ0cXVldWUuaCBiL2h3L3ZpcnRp by92aG9zdC1zaGFkb3ctdmlydHF1ZXVlLmgKPiBpbmRleCAwMzUyMDdhNDY5Li4zOWFlZjVmZmRm IDEwMDY0NAo+IC0tLSBhL2h3L3ZpcnRpby92aG9zdC1zaGFkb3ctdmlydHF1ZXVlLmgKPiArKysg Yi9ody92aXJ0aW8vdmhvc3Qtc2hhZG93LXZpcnRxdWV1ZS5oCj4gQEAgLTM1LDcgKzM1LDcgQEAg c2l6ZV90IHZob3N0X3N2cV9kZXZpY2VfYXJlYV9zaXplKGNvbnN0IFZob3N0U2hhZG93VmlydHF1 ZXVlICpzdnEpOwo+ICAgCj4gICB2b2lkIHZob3N0X3N2cV9zdG9wKFZob3N0U2hhZG93VmlydHF1 ZXVlICpzdnEpOwo+ICAgCj4gLVZob3N0U2hhZG93VmlydHF1ZXVlICp2aG9zdF9zdnFfbmV3KHZv aWQpOwo+ICtWaG9zdFNoYWRvd1ZpcnRxdWV1ZSAqdmhvc3Rfc3ZxX25ldyh1aW50MTZfdCBxc2l6 ZSk7Cj4gICAKPiAgIHZvaWQgdmhvc3Rfc3ZxX2ZyZWUoVmhvc3RTaGFkb3dWaXJ0cXVldWUgKnZx KTsKPiAgIAo+IGRpZmYgLS1naXQgYS9ody92aXJ0aW8vdmhvc3Qtc2hhZG93LXZpcnRxdWV1ZS5j IGIvaHcvdmlydGlvL3Zob3N0LXNoYWRvdy12aXJ0cXVldWUuYwo+IGluZGV4IGYxMjllYzgzOTUu LjdjMTY4MDc1ZDcgMTAwNjQ0Cj4gLS0tIGEvaHcvdmlydGlvL3Zob3N0LXNoYWRvdy12aXJ0cXVl dWUuYwo+ICsrKyBiL2h3L3ZpcnRpby92aG9zdC1zaGFkb3ctdmlydHF1ZXVlLmMKPiBAQCAtMjc3 LDkgKzI3NywxNyBAQCB2b2lkIHZob3N0X3N2cV9zdG9wKFZob3N0U2hhZG93VmlydHF1ZXVlICpz dnEpCj4gICAvKioKPiAgICAqIENyZWF0ZXMgdmhvc3Qgc2hhZG93IHZpcnRxdWV1ZSwgYW5kIGlu c3RydWN0IHZob3N0IGRldmljZSB0byB1c2UgdGhlIHNoYWRvdwo+ICAgICogbWV0aG9kcyBhbmQg ZmlsZSBkZXNjcmlwdG9ycy4KPiArICoKPiArICogQHFzaXplIFNoYWRvdyBWaXJ0UXVldWUgc2l6 ZQo+ICsgKgo+ICsgKiBSZXR1cm5zIHRoZSBuZXcgdmlydHF1ZXVlIG9yIE5VTEwuCj4gKyAqCj4g KyAqIEluIGNhc2Ugb2YgZXJyb3IsIHJlYXNvbiBpcyByZXBvcnRlZCB0aHJvdWdoIGVycm9yX3Jl cG9ydC4KPiAgICAqLwo+IC1WaG9zdFNoYWRvd1ZpcnRxdWV1ZSAqdmhvc3Rfc3ZxX25ldyh2b2lk KQo+ICtWaG9zdFNoYWRvd1ZpcnRxdWV1ZSAqdmhvc3Rfc3ZxX25ldyh1aW50MTZfdCBxc2l6ZSkK PiAgIHsKPiArICAgIHNpemVfdCBkZXNjX3NpemUgPSBzaXplb2YodnJpbmdfZGVzY190KSAqIHFz aXplOwo+ICsgICAgc2l6ZV90IGRldmljZV9zaXplLCBkcml2ZXJfc2l6ZTsKPiAgICAgICBnX2F1 dG9mcmVlIFZob3N0U2hhZG93VmlydHF1ZXVlICpzdnEgPSBnX25ldzAoVmhvc3RTaGFkb3dWaXJ0 cXVldWUsIDEpOwo+ICAgICAgIGludCByOwo+ICAgCj4gQEAgLTMwMCw2ICszMDgsMTUgQEAgVmhv c3RTaGFkb3dWaXJ0cXVldWUgKnZob3N0X3N2cV9uZXcodm9pZCkKPiAgICAgICAvKiBQbGFjZWhv bGRlciBkZXNjcmlwdG9yLCBpdCBzaG91bGQgYmUgZGVsZXRlZCBhdCBzZXRfa2lja19mZCAqLwo+ ICAgICAgIGV2ZW50X25vdGlmaWVyX2luaXRfZmQoJnN2cS0+c3ZxX2tpY2ssIElOVkFMSURfU1ZR X0tJQ0tfRkQpOwo+ICAgCj4gKyAgICBzdnEtPnZyaW5nLm51bSA9IHFzaXplOwoKCkkgd29uZGVy IGlmIHRoaXMgaXMgdGhlIGJlc3QuIEUuZyBzb21lIGhhcmR3YXJlIGNhbiBzdXBwb3J0IHVwIHRv IDMySyAKcXVldWUgc2l6ZS4gU28gdGhpcyB3aWxsIHByb2JhYmx5IGVuZCB1cCB3aXRoOgoKMSkg U1ZRIHVzZSAzMksgcXVldWUgc2l6ZQoyKSBoYXJkd2FyZSBxdWV1ZSB1c2VzIDI1NgoKPyBPciB3 ZSBTVlEgY2FuIHN0aWNrIHRvIDI1NiBidXQgdGhpcyB3aWxsIHRoaXMgY2F1c2UgdHJvdWJsZSBp ZiB3ZSB3YW50IAp0byBhZGQgZXZlbnQgaW5kZXggc3VwcG9ydD8KCgo+ICsgICAgZHJpdmVyX3Np emUgPSB2aG9zdF9zdnFfZHJpdmVyX2FyZWFfc2l6ZShzdnEpOwo+ICsgICAgZGV2aWNlX3NpemUg PSB2aG9zdF9zdnFfZGV2aWNlX2FyZWFfc2l6ZShzdnEpOwo+ICsgICAgc3ZxLT52cmluZy5kZXNj ID0gcWVtdV9tZW1hbGlnbihxZW11X3JlYWxfaG9zdF9wYWdlX3NpemUsIGRyaXZlcl9zaXplKTsK PiArICAgIHN2cS0+dnJpbmcuYXZhaWwgPSAodm9pZCAqKSgoY2hhciAqKXN2cS0+dnJpbmcuZGVz YyArIGRlc2Nfc2l6ZSk7Cj4gKyAgICBtZW1zZXQoc3ZxLT52cmluZy5kZXNjLCAwLCBkcml2ZXJf c2l6ZSk7Cj4gKyAgICBzdnEtPnZyaW5nLnVzZWQgPSBxZW11X21lbWFsaWduKHFlbXVfcmVhbF9o b3N0X3BhZ2Vfc2l6ZSwgZGV2aWNlX3NpemUpOwo+ICsgICAgbWVtc2V0KHN2cS0+dnJpbmcudXNl ZCwgMCwgZGV2aWNlX3NpemUpOwo+ICsKPiAgICAgICBldmVudF9ub3RpZmllcl9zZXRfaGFuZGxl cigmc3ZxLT5oZGV2X2NhbGwsIHZob3N0X3N2cV9oYW5kbGVfY2FsbCk7Cj4gICAgICAgcmV0dXJu IGdfc3RlYWxfcG9pbnRlcigmc3ZxKTsKPiAgIAo+IEBAIC0zMTgsNSArMzM1LDcgQEAgdm9pZCB2 aG9zdF9zdnFfZnJlZShWaG9zdFNoYWRvd1ZpcnRxdWV1ZSAqdnEpCj4gICAgICAgZXZlbnRfbm90 aWZpZXJfY2xlYW51cCgmdnEtPmhkZXZfa2ljayk7Cj4gICAgICAgZXZlbnRfbm90aWZpZXJfc2V0 X2hhbmRsZXIoJnZxLT5oZGV2X2NhbGwsIE5VTEwpOwo+ICAgICAgIGV2ZW50X25vdGlmaWVyX2Ns ZWFudXAoJnZxLT5oZGV2X2NhbGwpOwo+ICsgICAgcWVtdV92ZnJlZSh2cS0+dnJpbmcuZGVzYyk7 Cj4gKyAgICBxZW11X3ZmcmVlKHZxLT52cmluZy51c2VkKTsKPiAgICAgICBnX2ZyZWUodnEpOwo+ ICAgfQo+IGRpZmYgLS1naXQgYS9ody92aXJ0aW8vdmhvc3QtdmRwYS5jIGIvaHcvdmlydGlvL3Zo b3N0LXZkcGEuYwo+IGluZGV4IDlkODAxY2Y5MDcuLjUzZTE0YmFmYTAgMTAwNjQ0Cj4gLS0tIGEv aHcvdmlydGlvL3Zob3N0LXZkcGEuYwo+ICsrKyBiL2h3L3ZpcnRpby92aG9zdC12ZHBhLmMKPiBA QCAtNjQxLDIwICs2NDEsNTIgQEAgc3RhdGljIGludCB2aG9zdF92ZHBhX3NldF92cmluZ19hZGRy KHN0cnVjdCB2aG9zdF9kZXYgKmRldiwKPiAgICAgICByZXR1cm4gdmhvc3RfdmRwYV9jYWxsKGRl diwgVkhPU1RfU0VUX1ZSSU5HX0FERFIsIGFkZHIpOwo+ICAgfQo+ICAgCj4gLXN0YXRpYyBpbnQg dmhvc3RfdmRwYV9zZXRfdnJpbmdfbnVtKHN0cnVjdCB2aG9zdF9kZXYgKmRldiwKPiAtICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgdmhvc3RfdnJpbmdfc3RhdGUg KnJpbmcpCj4gK3N0YXRpYyBpbnQgdmhvc3RfdmRwYV9zZXRfZGV2X3ZyaW5nX251bShzdHJ1Y3Qg dmhvc3RfZGV2ICpkZXYsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzdHJ1Y3Qgdmhvc3RfdnJpbmdfc3RhdGUgKnJpbmcpCj4gICB7Cj4gICAgICAgdHJhY2Vfdmhv c3RfdmRwYV9zZXRfdnJpbmdfbnVtKGRldiwgcmluZy0+aW5kZXgsIHJpbmctPm51bSk7Cj4gICAg ICAgcmV0dXJuIHZob3N0X3ZkcGFfY2FsbChkZXYsIFZIT1NUX1NFVF9WUklOR19OVU0sIHJpbmcp Owo+ICAgfQo+ICAgCj4gLXN0YXRpYyBpbnQgdmhvc3RfdmRwYV9zZXRfdnJpbmdfYmFzZShzdHJ1 Y3Qgdmhvc3RfZGV2ICpkZXYsCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHN0cnVjdCB2aG9zdF92cmluZ19zdGF0ZSAqcmluZykKPiArc3RhdGljIGludCB2aG9zdF92 ZHBhX3NldF92cmluZ19udW0oc3RydWN0IHZob3N0X2RldiAqZGV2LAo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgdmhvc3RfdnJpbmdfc3RhdGUgKnJpbmcpCj4g K3sKPiArICAgIHN0cnVjdCB2aG9zdF92ZHBhICp2ID0gZGV2LT5vcGFxdWU7Cj4gKwo+ICsgICAg aWYgKHYtPnNoYWRvd192cXNfZW5hYmxlZCkgewo+ICsgICAgICAgIC8qCj4gKyAgICAgICAgICog VnJpbmcgbnVtIHdhcyBzZXQgYXQgZGV2aWNlIHN0YXJ0LiBTVlEgbnVtIGlzIGhhbmRsZWQgYnkg VmlydFF1ZXVlCj4gKyAgICAgICAgICogY29kZQo+ICsgICAgICAgICAqLwo+ICsgICAgICAgIHJl dHVybiAwOwo+ICsgICAgfQo+ICsKPiArICAgIHJldHVybiB2aG9zdF92ZHBhX3NldF9kZXZfdnJp bmdfbnVtKGRldiwgcmluZyk7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgdmhvc3RfdmRwYV9zZXRf ZGV2X3ZyaW5nX2Jhc2Uoc3RydWN0IHZob3N0X2RldiAqZGV2LAo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB2aG9zdF92cmluZ19zdGF0ZSAqcmluZykK PiAgIHsKPiAgICAgICB0cmFjZV92aG9zdF92ZHBhX3NldF92cmluZ19iYXNlKGRldiwgcmluZy0+ aW5kZXgsIHJpbmctPm51bSk7Cj4gICAgICAgcmV0dXJuIHZob3N0X3ZkcGFfY2FsbChkZXYsIFZI T1NUX1NFVF9WUklOR19CQVNFLCByaW5nKTsKPiAgIH0KPiAgIAo+ICtzdGF0aWMgaW50IHZob3N0 X3ZkcGFfc2V0X3ZyaW5nX2Jhc2Uoc3RydWN0IHZob3N0X2RldiAqZGV2LAo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHZob3N0X3ZyaW5nX3N0YXRlICpyaW5n KQo+ICt7Cj4gKyAgICBzdHJ1Y3Qgdmhvc3RfdmRwYSAqdiA9IGRldi0+b3BhcXVlOwo+ICsKPiAr ICAgIGlmICh2LT5zaGFkb3dfdnFzX2VuYWJsZWQpIHsKPiArICAgICAgICAvKgo+ICsgICAgICAg ICAqIFZyaW5nIGJhc2Ugd2FzIHNldCBhdCBkZXZpY2Ugc3RhcnQuIFNWUSBiYXNlIGlzIGhhbmRs ZWQgYnkgVmlydFF1ZXVlCj4gKyAgICAgICAgICogY29kZQo+ICsgICAgICAgICAqLwo+ICsgICAg ICAgIHJldHVybiAwOwo+ICsgICAgfQo+ICsKPiArICAgIHJldHVybiB2aG9zdF92ZHBhX3NldF9k ZXZfdnJpbmdfYmFzZShkZXYsIHJpbmcpOwo+ICt9Cj4gKwo+ICAgc3RhdGljIGludCB2aG9zdF92 ZHBhX2dldF92cmluZ19iYXNlKHN0cnVjdCB2aG9zdF9kZXYgKmRldiwKPiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB2aG9zdF92cmluZ19zdGF0ZSAqcmlu ZykKPiAgIHsKPiBAQCAtNzg0LDggKzgxNiw4IEBAIHN0YXRpYyBpbnQgdmhvc3RfdmRwYV9kZXZf c3RhcnQoc3RydWN0IHZob3N0X2RldiAqZGV2LCBib29sIHN0YXJ0ZWQpCj4gICAgICAgfQo+ICAg fQo+ICAgCj4gLXN0YXRpYyBpbnQgdmhvc3RfdmRwYV9nZXRfZmVhdHVyZXMoc3RydWN0IHZob3N0 X2RldiAqZGV2LAo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDY0 X3QgKmZlYXR1cmVzKQo+ICtzdGF0aWMgaW50IHZob3N0X3ZkcGFfZ2V0X2Rldl9mZWF0dXJlcyhz dHJ1Y3Qgdmhvc3RfZGV2ICpkZXYsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHVpbnQ2NF90ICpmZWF0dXJlcykKPiAgIHsKPiAgICAgICBpbnQgcmV0Owo+ICAgCj4g QEAgLTc5NCwxNSArODI2LDY0IEBAIHN0YXRpYyBpbnQgdmhvc3RfdmRwYV9nZXRfZmVhdHVyZXMo c3RydWN0IHZob3N0X2RldiAqZGV2LAo+ICAgICAgIHJldHVybiByZXQ7Cj4gICB9Cj4gICAKPiAr c3RhdGljIGludCB2aG9zdF92ZHBhX2dldF9mZWF0dXJlcyhzdHJ1Y3Qgdmhvc3RfZGV2ICpkZXYs IHVpbnQ2NF90ICpmZWF0dXJlcykKPiArewo+ICsgICAgc3RydWN0IHZob3N0X3ZkcGEgKnYgPSBk ZXYtPm9wYXF1ZTsKPiArICAgIGludCByZXQgPSB2aG9zdF92ZHBhX2dldF9kZXZfZmVhdHVyZXMo ZGV2LCBmZWF0dXJlcyk7Cj4gKwo+ICsgICAgaWYgKHJldCA9PSAwICYmIHYtPnNoYWRvd192cXNf ZW5hYmxlZCkgewo+ICsgICAgICAgIC8qIEZpbHRlciBvbmx5IGZlYXR1cmVzIHRoYXQgU1ZRIGNh biBvZmZlciB0byBndWVzdCAqLwo+ICsgICAgICAgIHZob3N0X3N2cV92YWxpZF9ndWVzdF9mZWF0 dXJlcyhmZWF0dXJlcyk7Cj4gKyAgICB9CgoKU29ycnkgaWYgSSd2ZSBhc2tlZCBiZWZvcmUsIEkg dGhpbmsgaXQncyBzdWZmaWNpZW50IHRvIGZpbHRlciBvdXQgdGhlIApkZXZpY2UgZmVhdHVyZXMg dGhhdCB3ZSBkb24ndCBzdXBwb3J0IGR1cmluZyBhbmQgZmFpbCB0aGUgdmhvc3QgCmluaXRpYWxp emF0aW9uLiBBbnkgcmVhc29uIHdlIG5lZWQgZG8gaXQgYWdhaW4gaGVyZT8KCgo+ICsKPiArICAg IHJldHVybiByZXQ7Cj4gK30KPiArCj4gICBzdGF0aWMgaW50IHZob3N0X3ZkcGFfc2V0X2ZlYXR1 cmVzKHN0cnVjdCB2aG9zdF9kZXYgKmRldiwKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdWludDY0X3QgZmVhdHVyZXMpCj4gICB7Cj4gKyAgICBzdHJ1Y3Qgdmhvc3RfdmRw YSAqdiA9IGRldi0+b3BhcXVlOwo+ICAgICAgIGludCByZXQ7Cj4gICAKPiAgICAgICBpZiAodmhv c3RfdmRwYV9vbmVfdGltZV9yZXF1ZXN0KGRldikpIHsKPiAgICAgICAgICAgcmV0dXJuIDA7Cj4g ICAgICAgfQo+ICAgCj4gKyAgICBpZiAodi0+c2hhZG93X3Zxc19lbmFibGVkKSB7Cj4gKyAgICAg ICAgdWludDY0X3QgZGV2X2ZlYXR1cmVzLCBzdnFfZmVhdHVyZXMsIGFja2VkX2ZlYXR1cmVzOwo+ ICsgICAgICAgIGJvb2wgb2s7Cj4gKwo+ICsgICAgICAgIHJldCA9IHZob3N0X3ZkcGFfZ2V0X2Rl dl9mZWF0dXJlcyhkZXYsICZkZXZfZmVhdHVyZXMpOwo+ICsgICAgICAgIGlmIChyZXQgIT0gMCkg ewo+ICsgICAgICAgICAgICBlcnJvcl9yZXBvcnQoIkNhbid0IGdldCB2ZHBhIGRldmljZSBmZWF0 dXJlcywgZ290ICglZCkiLCByZXQpOwo+ICsgICAgICAgICAgICByZXR1cm4gcmV0Owo+ICsgICAg ICAgIH0KPiArCj4gKyAgICAgICAgc3ZxX2ZlYXR1cmVzID0gZGV2X2ZlYXR1cmVzOwo+ICsgICAg ICAgIG9rID0gdmhvc3Rfc3ZxX3ZhbGlkX2RldmljZV9mZWF0dXJlcygmc3ZxX2ZlYXR1cmVzKTsK PiArICAgICAgICBpZiAodW5saWtlbHkoIW9rKSkgewo+ICsgICAgICAgICAgICBlcnJvcl9yZXBv cnQoIlNWUSBJbnZhbGlkIGRldmljZSBmZWF0dXJlIGZsYWdzLCBvZmZlcjogMHglIgo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgUFJJeDY0Iiwgb2s6IDB4JSJQUkl4NjQsIGRldi0+ZmVhdHVy ZXMsIHN2cV9mZWF0dXJlcyk7Cj4gKyAgICAgICAgICAgIHJldHVybiAtMTsKPiArICAgICAgICB9 Cj4gKwo+ICsgICAgICAgIG9rID0gdmhvc3Rfc3ZxX3ZhbGlkX2d1ZXN0X2ZlYXR1cmVzKCZmZWF0 dXJlcyk7Cj4gKyAgICAgICAgaWYgKHVubGlrZWx5KCFvaykpIHsKPiArICAgICAgICAgICAgZXJy b3JfcmVwb3J0KAo+ICsgICAgICAgICAgICAgICAgIkludmFsaWQgZ3Vlc3QgYWNrZWQgZmVhdHVy ZSBmbGFnLCBhY2tlZDogMHglIgo+ICsgICAgICAgICAgICAgICAgUFJJeDY0Iiwgb2s6IDB4JSJQ Ukl4NjQsIGRldi0+YWNrZWRfZmVhdHVyZXMsIGZlYXR1cmVzKTsKPiArICAgICAgICAgICAgcmV0 dXJuIC0xOwo+ICsgICAgICAgIH0KPiArCj4gKyAgICAgICAgb2sgPSB2aG9zdF9zdnFfYWNrX2d1 ZXN0X2ZlYXR1cmVzKHN2cV9mZWF0dXJlcywgZmVhdHVyZXMsCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICZhY2tlZF9mZWF0dXJlcyk7Cj4gKyAgICAgICAgaWYg KHVubGlrZWx5KCFvaykpIHsKPiArICAgICAgICAgICAgcmV0dXJuIC0xOwo+ICsgICAgICAgIH0K PiArCj4gKyAgICAgICAgZmVhdHVyZXMgPSBhY2tlZF9mZWF0dXJlczsKPiArICAgIH0KPiArCj4g ICAgICAgdHJhY2Vfdmhvc3RfdmRwYV9zZXRfZmVhdHVyZXMoZGV2LCBmZWF0dXJlcyk7Cj4gICAg ICAgcmV0ID0gdmhvc3RfdmRwYV9jYWxsKGRldiwgVkhPU1RfU0VUX0ZFQVRVUkVTLCAmZmVhdHVy ZXMpOwo+ICAgICAgIGlmIChyZXQpIHsKPiBAQCAtODIyLDEzICs5MDMsMzEgQEAgc3RhdGljIGlu dCB2aG9zdF92ZHBhX3NldF9vd25lcihzdHJ1Y3Qgdmhvc3RfZGV2ICpkZXYpCj4gICAgICAgcmV0 dXJuIHZob3N0X3ZkcGFfY2FsbChkZXYsIFZIT1NUX1NFVF9PV05FUiwgTlVMTCk7Cj4gICB9Cj4g ICAKPiAtc3RhdGljIGludCB2aG9zdF92ZHBhX3ZxX2dldF9hZGRyKHN0cnVjdCB2aG9zdF9kZXYg KmRldiwKPiAtICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgdmhvc3RfdnJpbmdfYWRkciAqYWRk ciwgc3RydWN0IHZob3N0X3ZpcnRxdWV1ZSAqdnEpCj4gK3N0YXRpYyB2b2lkIHZob3N0X3ZkcGFf dnFfZ2V0X2d1ZXN0X2FkZHIoc3RydWN0IHZob3N0X3ZyaW5nX2FkZHIgKmFkZHIsCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHZob3N0X3ZpcnRxdWV1 ZSAqdnEpCj4gICB7Cj4gLSAgICBhc3NlcnQoZGV2LT52aG9zdF9vcHMtPmJhY2tlbmRfdHlwZSA9 PSBWSE9TVF9CQUNLRU5EX1RZUEVfVkRQQSk7Cj4gICAgICAgYWRkci0+ZGVzY191c2VyX2FkZHIg PSAodWludDY0X3QpKHVuc2lnbmVkIGxvbmcpdnEtPmRlc2NfcGh5czsKPiAgICAgICBhZGRyLT5h dmFpbF91c2VyX2FkZHIgPSAodWludDY0X3QpKHVuc2lnbmVkIGxvbmcpdnEtPmF2YWlsX3BoeXM7 Cj4gICAgICAgYWRkci0+dXNlZF91c2VyX2FkZHIgPSAodWludDY0X3QpKHVuc2lnbmVkIGxvbmcp dnEtPnVzZWRfcGh5czsKPiArfQo+ICsKPiArc3RhdGljIGludCB2aG9zdF92ZHBhX3ZxX2dldF9h ZGRyKHN0cnVjdCB2aG9zdF9kZXYgKmRldiwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHN0cnVjdCB2aG9zdF92cmluZ19hZGRyICphZGRyLAo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc3RydWN0IHZob3N0X3ZpcnRxdWV1ZSAqdnEpCj4gK3sKPiArICAg IHN0cnVjdCB2aG9zdF92ZHBhICp2ID0gZGV2LT5vcGFxdWU7Cj4gKwo+ICsgICAgYXNzZXJ0KGRl di0+dmhvc3Rfb3BzLT5iYWNrZW5kX3R5cGUgPT0gVkhPU1RfQkFDS0VORF9UWVBFX1ZEUEEpOwo+ ICsKPiArICAgIGlmICh2LT5zaGFkb3dfdnFzX2VuYWJsZWQpIHsKPiArICAgICAgICBpbnQgaWR4 ID0gdmhvc3RfdmRwYV9nZXRfdnFfaW5kZXgoZGV2LCBhZGRyLT5pbmRleCk7Cj4gKyAgICAgICAg Vmhvc3RTaGFkb3dWaXJ0cXVldWUgKnN2cSA9IGdfcHRyX2FycmF5X2luZGV4KHYtPnNoYWRvd192 cXMsIGlkeCk7Cj4gKwo+ICsgICAgICAgIHZob3N0X3N2cV9nZXRfdnJpbmdfYWRkcihzdnEsIGFk ZHIpOwo+ICsgICAgfSBlbHNlIHsKPiArICAgICAgICB2aG9zdF92ZHBhX3ZxX2dldF9ndWVzdF9h ZGRyKGFkZHIsIHZxKTsKPiArICAgIH0KPiArCj4gICAgICAgdHJhY2Vfdmhvc3RfdmRwYV92cV9n ZXRfYWRkcihkZXYsIHZxLCBhZGRyLT5kZXNjX3VzZXJfYWRkciwKPiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGFkZHItPmF2YWlsX3VzZXJfYWRkciwgYWRkci0+dXNlZF91c2Vy X2FkZHIpOwo+ICAgICAgIHJldHVybiAwOwo+IEBAIC04NDksNiArOTQ4LDEyIEBAIHN0YXRpYyB2 b2lkIHZob3N0X3BzdnFfZnJlZShncG9pbnRlciBzdnEpCj4gICAgICAgdmhvc3Rfc3ZxX2ZyZWUo c3ZxKTsKPiAgIH0KPiAgIAo+ICtzdGF0aWMgaW50IHZob3N0X3ZkcGFfZ2V0X21heF9xdWV1ZV9z aXplKHN0cnVjdCB2aG9zdF9kZXYgKmRldiwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB1aW50MTZfdCAqcXNpemUpCj4gK3sKPiArICAgIHJldHVybiB2aG9zdF92 ZHBhX2NhbGwoZGV2LCBWSE9TVF9WRFBBX0dFVF9WUklOR19OVU0sIHFzaXplKTsKPiArfQo+ICsK PiAgIHN0YXRpYyBpbnQgdmhvc3RfdmRwYV9pbml0X3N2cShzdHJ1Y3Qgdmhvc3RfZGV2ICpoZGV2 LCBzdHJ1Y3Qgdmhvc3RfdmRwYSAqdiwKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBFcnJvciAqKmVycnApCj4gICB7Cj4gQEAgLTg1Nyw2ICs5NjIsNyBAQCBzdGF0aWMgaW50IHZo b3N0X3ZkcGFfaW5pdF9zdnEoc3RydWN0IHZob3N0X2RldiAqaGRldiwgc3RydWN0IHZob3N0X3Zk cGEgKnYsCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHZob3N0X3BzdnFfZnJlZSk7Cj4gICAgICAgdWludDY0X3QgZGV2X2ZlYXR1 cmVzOwo+ICAgICAgIHVpbnQ2NF90IHN2cV9mZWF0dXJlczsKPiArICAgIHVpbnQxNl90IHFzaXpl Owo+ICAgICAgIGludCByOwo+ICAgICAgIGJvb2wgb2s7Cj4gICAKPiBAQCAtODY0LDcgKzk3MCw3 IEBAIHN0YXRpYyBpbnQgdmhvc3RfdmRwYV9pbml0X3N2cShzdHJ1Y3Qgdmhvc3RfZGV2ICpoZGV2 LCBzdHJ1Y3Qgdmhvc3RfdmRwYSAqdiwKPiAgICAgICAgICAgZ290byBvdXQ7Cj4gICAgICAgfQo+ ICAgCj4gLSAgICByID0gdmhvc3RfdmRwYV9nZXRfZmVhdHVyZXMoaGRldiwgJmRldl9mZWF0dXJl cyk7Cj4gKyAgICByID0gdmhvc3RfdmRwYV9nZXRfZGV2X2ZlYXR1cmVzKGhkZXYsICZkZXZfZmVh dHVyZXMpOwo+ICAgICAgIGlmIChyICE9IDApIHsKPiAgICAgICAgICAgZXJyb3Jfc2V0ZyhlcnJw LCAiQ2FuJ3QgZ2V0IHZkcGEgZGV2aWNlIGZlYXR1cmVzLCBnb3QgKCVkKSIsIHIpOwo+ICAgICAg ICAgICByZXR1cm4gcjsKPiBAQCAtODc5LDkgKzk4NSwxNCBAQCBzdGF0aWMgaW50IHZob3N0X3Zk cGFfaW5pdF9zdnEoc3RydWN0IHZob3N0X2RldiAqaGRldiwgc3RydWN0IHZob3N0X3ZkcGEgKnYs Cj4gICAgICAgICAgIHJldHVybiAtMTsKPiAgICAgICB9Cj4gICAKPiArICAgIHIgPSB2aG9zdF92 ZHBhX2dldF9tYXhfcXVldWVfc2l6ZShoZGV2LCAmcXNpemUpOwo+ICsgICAgaWYgKHVubGlrZWx5 KHIpKSB7Cj4gKyAgICAgICAgcXNpemUgPSAyNTY7Cj4gKyAgICB9CgoKU2hvdWxkIHdlIGZhaWwg aW5zdGVhZCBvZiBoYXZpbmcgYSAiZGVmYXVsdCIgdmFsdWUgaGVyZT8KClRoYW5rcwoKCj4gKwo+ ICAgICAgIHNoYWRvd192cXMgPSBnX3B0cl9hcnJheV9uZXdfZnVsbChoZGV2LT5udnFzLCB2aG9z dF9wc3ZxX2ZyZWUpOwo+ICAgICAgIGZvciAodW5zaWduZWQgbiA9IDA7IG4gPCBoZGV2LT5udnFz OyArK24pIHsKPiAtICAgICAgICBWaG9zdFNoYWRvd1ZpcnRxdWV1ZSAqc3ZxID0gdmhvc3Rfc3Zx X25ldygpOwo+ICsgICAgICAgIFZob3N0U2hhZG93VmlydHF1ZXVlICpzdnEgPSB2aG9zdF9zdnFf bmV3KHFzaXplKTsKPiAgIAo+ICAgICAgICAgICBpZiAodW5saWtlbHkoIXN2cSkpIHsKPiAgICAg ICAgICAgICAgIGVycm9yX3NldGcoZXJycCwgIkNhbm5vdCBjcmVhdGUgc3ZxICV1Iiwgbik7Cgpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpWaXJ0dWFsaXph dGlvbiBtYWlsaW5nIGxpc3QKVmlydHVhbGl6YXRpb25AbGlzdHMubGludXgtZm91bmRhdGlvbi5v cmcKaHR0cHM6Ly9saXN0cy5saW51eGZvdW5kYXRpb24ub3JnL21haWxtYW4vbGlzdGluZm8vdmly dHVhbGl6YXRpb24= 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 lists.gnu.org (lists.gnu.org [209.51.188.17]) (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 87EB3C433EF for ; Sun, 30 Jan 2022 04:05:03 +0000 (UTC) Received: from localhost ([::1]:43190 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nE1SY-0001sG-0q for qemu-devel@archiver.kernel.org; Sat, 29 Jan 2022 23:05:02 -0500 Received: from eggs.gnu.org ([209.51.188.92]:44838) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nE1RW-0001CT-C8 for qemu-devel@nongnu.org; Sat, 29 Jan 2022 23:03:58 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]:28685) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nE1RS-0005nH-DT for qemu-devel@nongnu.org; Sat, 29 Jan 2022 23:03:56 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1643515432; 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=HFIaqK7M9BAi53NL1rhH7gNbtHPeQB0H6j65AiGJWBg=; b=bdIQ84MEDjDSH2u5Exp99LKc6BtpYj75/eYTf7TeYBiqR275kevWV5mJNli+zGuZ58ayt/ /FvBXfdHxPJJ/1f+GkpzmWx0+o3BuluM6tCROSTAjqAzPmZa8oQ/u+qSRra8k8DZIa2r6A vFM2VDltFhb5qOHOeFH7XEfYPb3Qk5A= Received: from mail-pg1-f199.google.com (mail-pg1-f199.google.com [209.85.215.199]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-460-k2FEldSxMb-dIn_KAVYakg-1; Sat, 29 Jan 2022 23:03:50 -0500 X-MC-Unique: k2FEldSxMb-dIn_KAVYakg-1 Received: by mail-pg1-f199.google.com with SMTP id 127-20020a630585000000b0035de5e88314so6077986pgf.2 for ; Sat, 29 Jan 2022 20:03:50 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:message-id:date:mime-version:user-agent:subject :content-language:to:cc:references:from:in-reply-to :content-transfer-encoding; bh=HFIaqK7M9BAi53NL1rhH7gNbtHPeQB0H6j65AiGJWBg=; b=N8TPnvXDRF9R4yp3ENn4Sx83xvMb5XBVbrQWzmY0mRn4VXBRI4AO/Rb86e09DAIpOs WswAnRXwP1f/ccm5OrhIOdPYrnowkxiZDeR+FEo8HycR64qpZaU3tJsxcQ0F8rz32NEJ LayNqZIGRavUNyRkBe/NH35WSw/WKo95/njChrfFSze0stQ0SW1r5V/jpJScvj6/iqGA 82kc7DSc9lJLhBiWuPgC174sVPr23RpYvZpzuRn0m81C4Zv5W0mBq327rnTLUofCKjbo S3Lu8ff55k/iuHyZS24Q0Aw+tFN9R8VsNvzQwdsTP9WnCnqjSBxrSJarIyqshvcer0Ti kBTA== X-Gm-Message-State: AOAM5335oyhrzGrtp+V0EvL47UwnwFmIiTMz+fg55y1QWsr6fEDxM8fE gvOyRU5OEOIYa5iIuptKvbUgBoIpxC64LvPitVJry1cmNtStCeR5cAzlr+WeGjHaw9Rjl+ZQCva grqADoCxjzTS0Xc8= X-Received: by 2002:a17:90b:4a12:: with SMTP id kk18mr27929736pjb.227.1643515429604; Sat, 29 Jan 2022 20:03:49 -0800 (PST) X-Google-Smtp-Source: ABdhPJxKwxwopr8ME/4KezW9LHVHcLAS/GF6p7bPNTRyCivwXXBqWiXSVQdRO4a11lM6RAazoGsdfg== X-Received: by 2002:a17:90b:4a12:: with SMTP id kk18mr27929696pjb.227.1643515429204; Sat, 29 Jan 2022 20:03:49 -0800 (PST) Received: from [10.72.13.18] ([209.132.188.80]) by smtp.gmail.com with ESMTPSA id nk11sm6644594pjb.55.2022.01.29.20.03.41 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sat, 29 Jan 2022 20:03:48 -0800 (PST) Message-ID: <82b8c3bf-1b11-86c7-4fad-294f5ccf1278@redhat.com> Date: Sun, 30 Jan 2022 12:03:36 +0800 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:91.0) Gecko/20100101 Thunderbird/91.5.1 Subject: Re: [PATCH 17/31] vdpa: adapt vhost_ops callbacks to svq To: =?UTF-8?Q?Eugenio_P=c3=a9rez?= , qemu-devel@nongnu.org References: <20220121202733.404989-1-eperezma@redhat.com> <20220121202733.404989-18-eperezma@redhat.com> From: Jason Wang In-Reply-To: <20220121202733.404989-18-eperezma@redhat.com> Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=jasowang@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Language: en-US Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Received-SPF: pass client-ip=170.10.133.124; envelope-from=jasowang@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -29 X-Spam_score: -3.0 X-Spam_bar: --- X-Spam_report: (-3.0 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.167, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, NICE_REPLY_A=-0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Laurent Vivier , Parav Pandit , Cindy Lu , "Michael S. Tsirkin" , Juan Quintela , Richard Henderson , Markus Armbruster , Gautam Dawar , virtualization@lists.linux-foundation.org, Eduardo Habkost , Harpreet Singh Anand , Xiao W Wang , Peter Xu , Stefan Hajnoczi , Eli Cohen , Paolo Bonzini , Zhu Lingshan , Eric Blake , Stefano Garzarella Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" 在 2022/1/22 上午4:27, Eugenio Pérez 写道: > First half of the buffers forwarding part, preparing vhost-vdpa > callbacks to SVQ to offer it. QEMU cannot enable it at this moment, so > this is effectively dead code at the moment, but it helps to reduce > patch size. > > Signed-off-by: Eugenio Pérez > --- > hw/virtio/vhost-shadow-virtqueue.h | 2 +- > hw/virtio/vhost-shadow-virtqueue.c | 21 ++++- > hw/virtio/vhost-vdpa.c | 133 ++++++++++++++++++++++++++--- > 3 files changed, 143 insertions(+), 13 deletions(-) > > diff --git a/hw/virtio/vhost-shadow-virtqueue.h b/hw/virtio/vhost-shadow-virtqueue.h > index 035207a469..39aef5ffdf 100644 > --- a/hw/virtio/vhost-shadow-virtqueue.h > +++ b/hw/virtio/vhost-shadow-virtqueue.h > @@ -35,7 +35,7 @@ size_t vhost_svq_device_area_size(const VhostShadowVirtqueue *svq); > > void vhost_svq_stop(VhostShadowVirtqueue *svq); > > -VhostShadowVirtqueue *vhost_svq_new(void); > +VhostShadowVirtqueue *vhost_svq_new(uint16_t qsize); > > void vhost_svq_free(VhostShadowVirtqueue *vq); > > diff --git a/hw/virtio/vhost-shadow-virtqueue.c b/hw/virtio/vhost-shadow-virtqueue.c > index f129ec8395..7c168075d7 100644 > --- a/hw/virtio/vhost-shadow-virtqueue.c > +++ b/hw/virtio/vhost-shadow-virtqueue.c > @@ -277,9 +277,17 @@ void vhost_svq_stop(VhostShadowVirtqueue *svq) > /** > * Creates vhost shadow virtqueue, and instruct vhost device to use the shadow > * methods and file descriptors. > + * > + * @qsize Shadow VirtQueue size > + * > + * Returns the new virtqueue or NULL. > + * > + * In case of error, reason is reported through error_report. > */ > -VhostShadowVirtqueue *vhost_svq_new(void) > +VhostShadowVirtqueue *vhost_svq_new(uint16_t qsize) > { > + size_t desc_size = sizeof(vring_desc_t) * qsize; > + size_t device_size, driver_size; > g_autofree VhostShadowVirtqueue *svq = g_new0(VhostShadowVirtqueue, 1); > int r; > > @@ -300,6 +308,15 @@ VhostShadowVirtqueue *vhost_svq_new(void) > /* Placeholder descriptor, it should be deleted at set_kick_fd */ > event_notifier_init_fd(&svq->svq_kick, INVALID_SVQ_KICK_FD); > > + svq->vring.num = qsize; I wonder if this is the best. E.g some hardware can support up to 32K queue size. So this will probably end up with: 1) SVQ use 32K queue size 2) hardware queue uses 256 ? Or we SVQ can stick to 256 but this will this cause trouble if we want to add event index support? > + driver_size = vhost_svq_driver_area_size(svq); > + device_size = vhost_svq_device_area_size(svq); > + svq->vring.desc = qemu_memalign(qemu_real_host_page_size, driver_size); > + svq->vring.avail = (void *)((char *)svq->vring.desc + desc_size); > + memset(svq->vring.desc, 0, driver_size); > + svq->vring.used = qemu_memalign(qemu_real_host_page_size, device_size); > + memset(svq->vring.used, 0, device_size); > + > event_notifier_set_handler(&svq->hdev_call, vhost_svq_handle_call); > return g_steal_pointer(&svq); > > @@ -318,5 +335,7 @@ void vhost_svq_free(VhostShadowVirtqueue *vq) > event_notifier_cleanup(&vq->hdev_kick); > event_notifier_set_handler(&vq->hdev_call, NULL); > event_notifier_cleanup(&vq->hdev_call); > + qemu_vfree(vq->vring.desc); > + qemu_vfree(vq->vring.used); > g_free(vq); > } > diff --git a/hw/virtio/vhost-vdpa.c b/hw/virtio/vhost-vdpa.c > index 9d801cf907..53e14bafa0 100644 > --- a/hw/virtio/vhost-vdpa.c > +++ b/hw/virtio/vhost-vdpa.c > @@ -641,20 +641,52 @@ static int vhost_vdpa_set_vring_addr(struct vhost_dev *dev, > return vhost_vdpa_call(dev, VHOST_SET_VRING_ADDR, addr); > } > > -static int vhost_vdpa_set_vring_num(struct vhost_dev *dev, > - struct vhost_vring_state *ring) > +static int vhost_vdpa_set_dev_vring_num(struct vhost_dev *dev, > + struct vhost_vring_state *ring) > { > trace_vhost_vdpa_set_vring_num(dev, ring->index, ring->num); > return vhost_vdpa_call(dev, VHOST_SET_VRING_NUM, ring); > } > > -static int vhost_vdpa_set_vring_base(struct vhost_dev *dev, > - struct vhost_vring_state *ring) > +static int vhost_vdpa_set_vring_num(struct vhost_dev *dev, > + struct vhost_vring_state *ring) > +{ > + struct vhost_vdpa *v = dev->opaque; > + > + if (v->shadow_vqs_enabled) { > + /* > + * Vring num was set at device start. SVQ num is handled by VirtQueue > + * code > + */ > + return 0; > + } > + > + return vhost_vdpa_set_dev_vring_num(dev, ring); > +} > + > +static int vhost_vdpa_set_dev_vring_base(struct vhost_dev *dev, > + struct vhost_vring_state *ring) > { > trace_vhost_vdpa_set_vring_base(dev, ring->index, ring->num); > return vhost_vdpa_call(dev, VHOST_SET_VRING_BASE, ring); > } > > +static int vhost_vdpa_set_vring_base(struct vhost_dev *dev, > + struct vhost_vring_state *ring) > +{ > + struct vhost_vdpa *v = dev->opaque; > + > + if (v->shadow_vqs_enabled) { > + /* > + * Vring base was set at device start. SVQ base is handled by VirtQueue > + * code > + */ > + return 0; > + } > + > + return vhost_vdpa_set_dev_vring_base(dev, ring); > +} > + > static int vhost_vdpa_get_vring_base(struct vhost_dev *dev, > struct vhost_vring_state *ring) > { > @@ -784,8 +816,8 @@ static int vhost_vdpa_dev_start(struct vhost_dev *dev, bool started) > } > } > > -static int vhost_vdpa_get_features(struct vhost_dev *dev, > - uint64_t *features) > +static int vhost_vdpa_get_dev_features(struct vhost_dev *dev, > + uint64_t *features) > { > int ret; > > @@ -794,15 +826,64 @@ static int vhost_vdpa_get_features(struct vhost_dev *dev, > return ret; > } > > +static int vhost_vdpa_get_features(struct vhost_dev *dev, uint64_t *features) > +{ > + struct vhost_vdpa *v = dev->opaque; > + int ret = vhost_vdpa_get_dev_features(dev, features); > + > + if (ret == 0 && v->shadow_vqs_enabled) { > + /* Filter only features that SVQ can offer to guest */ > + vhost_svq_valid_guest_features(features); > + } Sorry if I've asked before, I think it's sufficient to filter out the device features that we don't support during and fail the vhost initialization. Any reason we need do it again here? > + > + return ret; > +} > + > static int vhost_vdpa_set_features(struct vhost_dev *dev, > uint64_t features) > { > + struct vhost_vdpa *v = dev->opaque; > int ret; > > if (vhost_vdpa_one_time_request(dev)) { > return 0; > } > > + if (v->shadow_vqs_enabled) { > + uint64_t dev_features, svq_features, acked_features; > + bool ok; > + > + ret = vhost_vdpa_get_dev_features(dev, &dev_features); > + if (ret != 0) { > + error_report("Can't get vdpa device features, got (%d)", ret); > + return ret; > + } > + > + svq_features = dev_features; > + ok = vhost_svq_valid_device_features(&svq_features); > + if (unlikely(!ok)) { > + error_report("SVQ Invalid device feature flags, offer: 0x%" > + PRIx64", ok: 0x%"PRIx64, dev->features, svq_features); > + return -1; > + } > + > + ok = vhost_svq_valid_guest_features(&features); > + if (unlikely(!ok)) { > + error_report( > + "Invalid guest acked feature flag, acked: 0x%" > + PRIx64", ok: 0x%"PRIx64, dev->acked_features, features); > + return -1; > + } > + > + ok = vhost_svq_ack_guest_features(svq_features, features, > + &acked_features); > + if (unlikely(!ok)) { > + return -1; > + } > + > + features = acked_features; > + } > + > trace_vhost_vdpa_set_features(dev, features); > ret = vhost_vdpa_call(dev, VHOST_SET_FEATURES, &features); > if (ret) { > @@ -822,13 +903,31 @@ static int vhost_vdpa_set_owner(struct vhost_dev *dev) > return vhost_vdpa_call(dev, VHOST_SET_OWNER, NULL); > } > > -static int vhost_vdpa_vq_get_addr(struct vhost_dev *dev, > - struct vhost_vring_addr *addr, struct vhost_virtqueue *vq) > +static void vhost_vdpa_vq_get_guest_addr(struct vhost_vring_addr *addr, > + struct vhost_virtqueue *vq) > { > - assert(dev->vhost_ops->backend_type == VHOST_BACKEND_TYPE_VDPA); > addr->desc_user_addr = (uint64_t)(unsigned long)vq->desc_phys; > addr->avail_user_addr = (uint64_t)(unsigned long)vq->avail_phys; > addr->used_user_addr = (uint64_t)(unsigned long)vq->used_phys; > +} > + > +static int vhost_vdpa_vq_get_addr(struct vhost_dev *dev, > + struct vhost_vring_addr *addr, > + struct vhost_virtqueue *vq) > +{ > + struct vhost_vdpa *v = dev->opaque; > + > + assert(dev->vhost_ops->backend_type == VHOST_BACKEND_TYPE_VDPA); > + > + if (v->shadow_vqs_enabled) { > + int idx = vhost_vdpa_get_vq_index(dev, addr->index); > + VhostShadowVirtqueue *svq = g_ptr_array_index(v->shadow_vqs, idx); > + > + vhost_svq_get_vring_addr(svq, addr); > + } else { > + vhost_vdpa_vq_get_guest_addr(addr, vq); > + } > + > trace_vhost_vdpa_vq_get_addr(dev, vq, addr->desc_user_addr, > addr->avail_user_addr, addr->used_user_addr); > return 0; > @@ -849,6 +948,12 @@ static void vhost_psvq_free(gpointer svq) > vhost_svq_free(svq); > } > > +static int vhost_vdpa_get_max_queue_size(struct vhost_dev *dev, > + uint16_t *qsize) > +{ > + return vhost_vdpa_call(dev, VHOST_VDPA_GET_VRING_NUM, qsize); > +} > + > static int vhost_vdpa_init_svq(struct vhost_dev *hdev, struct vhost_vdpa *v, > Error **errp) > { > @@ -857,6 +962,7 @@ static int vhost_vdpa_init_svq(struct vhost_dev *hdev, struct vhost_vdpa *v, > vhost_psvq_free); > uint64_t dev_features; > uint64_t svq_features; > + uint16_t qsize; > int r; > bool ok; > > @@ -864,7 +970,7 @@ static int vhost_vdpa_init_svq(struct vhost_dev *hdev, struct vhost_vdpa *v, > goto out; > } > > - r = vhost_vdpa_get_features(hdev, &dev_features); > + r = vhost_vdpa_get_dev_features(hdev, &dev_features); > if (r != 0) { > error_setg(errp, "Can't get vdpa device features, got (%d)", r); > return r; > @@ -879,9 +985,14 @@ static int vhost_vdpa_init_svq(struct vhost_dev *hdev, struct vhost_vdpa *v, > return -1; > } > > + r = vhost_vdpa_get_max_queue_size(hdev, &qsize); > + if (unlikely(r)) { > + qsize = 256; > + } Should we fail instead of having a "default" value here? Thanks > + > shadow_vqs = g_ptr_array_new_full(hdev->nvqs, vhost_psvq_free); > for (unsigned n = 0; n < hdev->nvqs; ++n) { > - VhostShadowVirtqueue *svq = vhost_svq_new(); > + VhostShadowVirtqueue *svq = vhost_svq_new(qsize); > > if (unlikely(!svq)) { > error_setg(errp, "Cannot create svq %u", n);