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 smtp1.osuosl.org (smtp1.osuosl.org [140.211.166.138]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 22B46C6FD1D for ; Wed, 15 Mar 2023 07:05:54 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp1.osuosl.org (Postfix) with ESMTP id AD6CF8148F; Wed, 15 Mar 2023 07:05:53 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp1.osuosl.org AD6CF8148F Authentication-Results: smtp1.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=IeyFyCQW X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp1.osuosl.org ([127.0.0.1]) by localhost (smtp1.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id asAOM-VTVz8r; Wed, 15 Mar 2023 07:05:52 +0000 (UTC) Received: from lists.linuxfoundation.org (lf-lists.osuosl.org [140.211.9.56]) by smtp1.osuosl.org (Postfix) with ESMTPS id BFE518144E; Wed, 15 Mar 2023 07:05:51 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp1.osuosl.org BFE518144E Received: from lf-lists.osuosl.org (localhost [127.0.0.1]) by lists.linuxfoundation.org (Postfix) with ESMTP id A9414C0035; Wed, 15 Mar 2023 07:05:51 +0000 (UTC) Received: from smtp1.osuosl.org (smtp1.osuosl.org [140.211.166.138]) by lists.linuxfoundation.org (Postfix) with ESMTP id 183B0C0032 for ; Wed, 15 Mar 2023 07:05:51 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp1.osuosl.org (Postfix) with ESMTP id E7D508146A for ; Wed, 15 Mar 2023 07:05:50 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp1.osuosl.org E7D508146A X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp1.osuosl.org ([127.0.0.1]) by localhost (smtp1.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id XWoLiz5eMNlD for ; Wed, 15 Mar 2023 07:05:49 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.8.0 DKIM-Filter: OpenDKIM Filter v2.11.0 smtp1.osuosl.org 88E8D8144E Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by smtp1.osuosl.org (Postfix) with ESMTPS id 88E8D8144E for ; Wed, 15 Mar 2023 07:05:49 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1678863948; 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=GK7ilReN9bo1OsYk8ynoSHPpp2q3aS8NUzPtNEQ8lp4=; b=IeyFyCQWsUaHtrbkjGiXx5O8gU9suj48uu2H8Fj8FRIlXo6TLzgFQwkqBGc5SF1O98rPPc h+rv06mYNcs6pl5Q4LSi9hnyBlOXIoMwO/9P42+qepK5ab6livUrN9+0EnUQWEML2deh/A AFCsfCid4RR0oNR5Bq79SlCyt3YS+D8= Received: from mail-oa1-f69.google.com (mail-oa1-f69.google.com [209.85.160.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-633-Q1v4fwX1N6uTWuRgfLGEPQ-1; Wed, 15 Mar 2023 03:05:47 -0400 X-MC-Unique: Q1v4fwX1N6uTWuRgfLGEPQ-1 Received: by mail-oa1-f69.google.com with SMTP id 586e51a60fabf-1765e2031ccso10547565fac.2 for ; Wed, 15 Mar 2023 00:05:46 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1678863946; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=GK7ilReN9bo1OsYk8ynoSHPpp2q3aS8NUzPtNEQ8lp4=; b=t1ybnPw3M7Id1Y9gjn8W7mZfbt5x9Tpfy3xQW2MqOCcydPnam0KN4oaBGmMyaMAJKr qdntb/p8/diulyP0KtpUJ0/lza7MXOmUHBox2pXjUSKfUUy7oD849BOzEbaub8Tf8fUs Jol/DOTy/NTNrLfo/ZP8c9zSQ+U+iuRVKiPXJGCWlBW5pcuDILJddigxqMWDCrcGm2vW Ku+jjc+H1PmmEuzl++Xi44sRn7N6DYZ0twNs4tOCW6M8fkdAWHxS6kEM7rmffTuVrNCi Tu0ZzNHn2wuhI7XztITyOo/cHdJBMVHSf02x8u028e0gnUt0MBzvesncY3Y2FdGI3SLJ Ru/g== X-Gm-Message-State: AO0yUKUkJgyd7MdwAfebPl36qg9SDSKoOa2f2KzkLctydDI5gZas8S5R MuoOOptH0SBtiJoAnJQlkD7gzdTcY8uLJyY3B/VS49nk1S+qKspu3CouOJL+oiT6OQEMZJHX0Pr KfzVaCWt2iiU10/+W3rLobyxNVnUVvKM8A6N1694BnZXeRlWx676k3MtWuw== X-Received: by 2002:a05:6871:2315:b0:177:c2fb:8cec with SMTP id sf21-20020a056871231500b00177c2fb8cecmr3695925oab.9.1678863946005; Wed, 15 Mar 2023 00:05:46 -0700 (PDT) X-Google-Smtp-Source: AK7set8KcrM8dHG6jtPovHcgo7AZZgpEN+/caS9S8RyxwNkv4Yu3cybwCiwoENy0G0s2/va5dDJGuUWBkn5MNPJrwwM= X-Received: by 2002:a05:6871:2315:b0:177:c2fb:8cec with SMTP id sf21-20020a056871231500b00177c2fb8cecmr3695918oab.9.1678863945730; Wed, 15 Mar 2023 00:05:45 -0700 (PDT) MIME-Version: 1.0 References: <20230309013046.23523-1-shannon.nelson@amd.com> <20230309013046.23523-5-shannon.nelson@amd.com> In-Reply-To: <20230309013046.23523-5-shannon.nelson@amd.com> From: Jason Wang Date: Wed, 15 Mar 2023 15:05:34 +0800 Message-ID: Subject: Re: [PATCH RFC v2 virtio 4/7] pds_vdpa: add vdpa config client commands To: Shannon Nelson X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Cc: brett.creeley@amd.com, mst@redhat.com, netdev@vger.kernel.org, virtualization@lists.linux-foundation.org, kuba@kernel.org, drivers@pensando.io, davem@davemloft.net 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" T24gVGh1LCBNYXIgOSwgMjAyMyBhdCA5OjMx4oCvQU0gU2hhbm5vbiBOZWxzb24gPHNoYW5ub24u bmVsc29uQGFtZC5jb20+IHdyb3RlOgo+Cj4gVGhlc2UgYXJlIHRoZSBhZG1pbnEgY29tbWFuZHMg dGhhdCB3aWxsIGJlIG5lZWRlZCBmb3IKPiBzZXR0aW5nIHVwIGFuZCB1c2luZyB0aGUgdkRQQSBk ZXZpY2UuCgpJdCdzIGJldHRlciB0byBleHBsYWluIHVuZGVyIHdoaWNoIGNhc2UgdGhlIGRyaXZl ciBzaG91bGQgdXNlIGFkbWlucSwKSSBzZWUgc29tZSBmdW5jdGlvbnMgb3ZlcmxhcCB3aXRoIGNv bW1vbiBjb25maWd1cmF0aW9uIGNhcGFiaWxpdHkuCk1vcmUgYmVsb3cuCgo+Cj4gU2lnbmVkLW9m Zi1ieTogU2hhbm5vbiBOZWxzb24gPHNoYW5ub24ubmVsc29uQGFtZC5jb20+Cj4gLS0tCj4gIGRy aXZlcnMvdmRwYS9wZHMvTWFrZWZpbGUgICAgfCAgIDEgKwo+ICBkcml2ZXJzL3ZkcGEvcGRzL2Nt ZHMuYyAgICAgIHwgMjA3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gIGRy aXZlcnMvdmRwYS9wZHMvY21kcy5oICAgICAgfCAgMTYgKysrCj4gIGRyaXZlcnMvdmRwYS9wZHMv dmRwYV9kZXYuaCAgfCAgMzYgKysrKystCj4gIGluY2x1ZGUvbGludXgvcGRzL3Bkc192ZHBhLmgg fCAxNzUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiAgNSBmaWxlcyBjaGFuZ2VkLCA0 MzQgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJp dmVycy92ZHBhL3Bkcy9jbWRzLmMKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvdmRwYS9w ZHMvY21kcy5oCj4KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy92ZHBhL3Bkcy9NYWtlZmlsZSBiL2Ry aXZlcnMvdmRwYS9wZHMvTWFrZWZpbGUKPiBpbmRleCBjYTJlZmE4YzZlYjUuLjcyMTFlYmEzZDk0 MiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3ZkcGEvcGRzL01ha2VmaWxlCj4gKysrIGIvZHJpdmVy cy92ZHBhL3Bkcy9NYWtlZmlsZQo+IEBAIC00LDYgKzQsNyBAQAo+ICBvYmotJChDT05GSUdfUERT X1ZEUEEpIDo9IHBkc192ZHBhLm8KPgo+ICBwZHNfdmRwYS15IDo9IGF1eF9kcnYubyBcCj4gKyAg ICAgICAgICAgICBjbWRzLm8gXAo+ICAgICAgICAgICAgICAgdmlydGlvX3BjaS5vIFwKPiAgICAg ICAgICAgICAgIHZkcGFfZGV2Lm8KPgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3ZkcGEvcGRzL2Nt ZHMuYyBiL2RyaXZlcnMvdmRwYS9wZHMvY21kcy5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBp bmRleCAwMDAwMDAwMDAwMDAuLjQ1NDEwNzM5MTA3Ywo+IC0tLSAvZGV2L251bGwKPiArKysgYi9k cml2ZXJzL3ZkcGEvcGRzL2NtZHMuYwo+IEBAIC0wLDAgKzEsMjA3IEBACj4gKy8vIFNQRFgtTGlj ZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkKPiArLyogQ29weXJpZ2h0KGMpIDIwMjMgQWR2 YW5jZWQgTWljcm8gRGV2aWNlcywgSW5jICovCj4gKwo+ICsjaW5jbHVkZSA8bGludXgvdmRwYS5o Pgo+ICsjaW5jbHVkZSA8bGludXgvdmlydGlvX3BjaV9tb2Rlcm4uaD4KPiArCj4gKyNpbmNsdWRl IDxsaW51eC9wZHMvcGRzX2NvcmVfaWYuaD4KPiArI2luY2x1ZGUgPGxpbnV4L3Bkcy9wZHNfYWRt aW5xLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9wZHMvcGRzX2F1eGJ1cy5oPgo+ICsjaW5jbHVkZSA8 bGludXgvcGRzL3Bkc192ZHBhLmg+Cj4gKwo+ICsjaW5jbHVkZSAidmRwYV9kZXYuaCIKPiArI2lu Y2x1ZGUgImF1eF9kcnYuaCIKPiArI2luY2x1ZGUgImNtZHMuaCIKPiArCj4gK2ludCBwZHNfdmRw YV9pbml0X2h3KHN0cnVjdCBwZHNfdmRwYV9kZXZpY2UgKnBkc3YpCj4gK3sKPiArICAgICAgIHN0 cnVjdCBwZHNfYXV4aWxpYXJ5X2RldiAqcGFkZXYgPSBwZHN2LT52ZHBhX2F1eC0+cGFkZXY7Cj4g KyAgICAgICBzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmcGFkZXYtPmF1eF9kZXYuZGV2Owo+ICsgICAg ICAgc3RydWN0IHBkc192ZHBhX2luaXRfY21kIGluaXRfY21kID0gewo+ICsgICAgICAgICAgICAg ICAub3Bjb2RlID0gUERTX1ZEUEFfQ01EX0lOSVQsCj4gKyAgICAgICAgICAgICAgIC52ZHBhX2lu ZGV4ID0gcGRzdi0+dmRwYV9pbmRleCwKPiArICAgICAgICAgICAgICAgLnZmX2lkID0gY3B1X3Rv X2xlMTYocGRzdi0+dmRwYV9hdXgtPnZmX2lkKSwKPiArICAgICAgICAgICAgICAgLmxlbiA9IGNw dV90b19sZTMyKHNpemVvZihzdHJ1Y3QgdmlydGlvX25ldF9jb25maWcpKSwKPiArICAgICAgICAg ICAgICAgLmNvbmZpZ19wYSA9IDAsICAgLyogd2UgdXNlIHRoZSBQQ0kgc3BhY2UsIG5vdCBhbiBh bHRlcm5hdGUgc3BhY2UgKi8KPiArICAgICAgIH07Cj4gKyAgICAgICBzdHJ1Y3QgcGRzX3ZkcGFf Y29tcCBpbml0X2NvbXAgPSB7MH07Cj4gKyAgICAgICBpbnQgZXJyOwo+ICsKPiArICAgICAgIC8q IEluaXRpYWxpemUgdGhlIHZkcGEvdmlydGlvIGRldmljZSAqLwo+ICsgICAgICAgZXJyID0gcGFk ZXYtPm9wcy0+YWRtaW5xX2NtZChwYWRldiwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKHVuaW9uIHBkc19jb3JlX2FkbWlucV9jbWQgKikmaW5pdF9jbWQsCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihpbml0X2NtZCksCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1bmlvbiBwZHNfY29yZV9hZG1pbnFfY29t cCAqKSZpbml0X2NvbXAsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAp Owo+ICsgICAgICAgaWYgKGVycikKPiArICAgICAgICAgICAgICAgZGV2X2VycihkZXYsICJGYWls ZWQgdG8gaW5pdCBodywgc3RhdHVzICVkOiAlcGVcbiIsCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgaW5pdF9jb21wLnN0YXR1cywgRVJSX1BUUihlcnIpKTsKPiArCj4gKyAgICAgICByZXR1cm4g ZXJyOwo+ICt9Cj4gKwo+ICtpbnQgcGRzX3ZkcGFfY21kX3Jlc2V0KHN0cnVjdCBwZHNfdmRwYV9k ZXZpY2UgKnBkc3YpCj4gK3sKClRoaXMgZnVuY3Rpb24gaXMgbm90IHVzZWQuCgpBbmQgSSB3b25k ZXIgd2hhdCdzIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gcmVzZXQgdmlhIGFkbWlucSBhbmQgcmVz ZXQKdmlhIHBkc192ZHBhX3NldF9zdGF0dXMoMCkgPwoKPiArICAgICAgIHN0cnVjdCBwZHNfYXV4 aWxpYXJ5X2RldiAqcGFkZXYgPSBwZHN2LT52ZHBhX2F1eC0+cGFkZXY7Cj4gKyAgICAgICBzdHJ1 Y3QgZGV2aWNlICpkZXYgPSAmcGFkZXYtPmF1eF9kZXYuZGV2Owo+ICsgICAgICAgc3RydWN0IHBk c192ZHBhX2NtZCBjbWQgPSB7Cj4gKyAgICAgICAgICAgICAgIC5vcGNvZGUgPSBQRFNfVkRQQV9D TURfUkVTRVQsCj4gKyAgICAgICAgICAgICAgIC52ZHBhX2luZGV4ID0gcGRzdi0+dmRwYV9pbmRl eCwKPiArICAgICAgICAgICAgICAgLnZmX2lkID0gY3B1X3RvX2xlMTYocGRzdi0+dmRwYV9hdXgt PnZmX2lkKSwKPiArICAgICAgIH07Cj4gKyAgICAgICBzdHJ1Y3QgcGRzX3ZkcGFfY29tcCBjb21w ID0gezB9Owo+ICsgICAgICAgaW50IGVycjsKPiArCj4gKyAgICAgICBlcnIgPSBwYWRldi0+b3Bz LT5hZG1pbnFfY21kKHBhZGV2LAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAodW5pb24gcGRzX2NvcmVfYWRtaW5xX2NtZCAqKSZjbWQsCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHNpemVvZihjbWQpLAo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAodW5pb24gcGRzX2NvcmVfYWRtaW5xX2NvbXAgKikmY29tcCwKPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCk7Cj4gKyAgICAgICBpZiAoZXJyKQo+ ICsgICAgICAgICAgICAgICBkZXZfZXJyKGRldiwgIkZhaWxlZCB0byByZXNldCBodywgc3RhdHVz ICVkOiAlcGVcbiIsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgY29tcC5zdGF0dXMsIEVSUl9Q VFIoZXJyKSk7CgpJdCBtaWdodCBiZSBiZXR0ZXIgdG8gdXNlIGRlYl9kYmcoKSBoZXJlIHNpbmNl IGl0IGNhbiBiZSB0cmlnZ2VyZWQgYnkgdGhlIGd1ZXN0LgoKPiArCj4gKyAgICAgICByZXR1cm4g ZXJyOwo+ICt9Cj4gKwo+ICtpbnQgcGRzX3ZkcGFfY21kX3NldF9tYWMoc3RydWN0IHBkc192ZHBh X2RldmljZSAqcGRzdiwgdTggKm1hYykKPiArewo+ICsgICAgICAgc3RydWN0IHBkc19hdXhpbGlh cnlfZGV2ICpwYWRldiA9IHBkc3YtPnZkcGFfYXV4LT5wYWRldjsKPiArICAgICAgIHN0cnVjdCBk ZXZpY2UgKmRldiA9ICZwYWRldi0+YXV4X2Rldi5kZXY7Cj4gKyAgICAgICBzdHJ1Y3QgcGRzX3Zk cGFfc2V0YXR0cl9jbWQgY21kID0gewo+ICsgICAgICAgICAgICAgICAub3Bjb2RlID0gUERTX1ZE UEFfQ01EX1NFVF9BVFRSLAo+ICsgICAgICAgICAgICAgICAudmRwYV9pbmRleCA9IHBkc3YtPnZk cGFfaW5kZXgsCj4gKyAgICAgICAgICAgICAgIC52Zl9pZCA9IGNwdV90b19sZTE2KHBkc3YtPnZk cGFfYXV4LT52Zl9pZCksCj4gKyAgICAgICAgICAgICAgIC5hdHRyID0gUERTX1ZEUEFfQVRUUl9N QUMsCj4gKyAgICAgICB9Owo+ICsgICAgICAgc3RydWN0IHBkc192ZHBhX2NvbXAgY29tcCA9IHsw fTsKPiArICAgICAgIGludCBlcnI7Cj4gKwo+ICsgICAgICAgZXRoZXJfYWRkcl9jb3B5KGNtZC5t YWMsIG1hYyk7Cj4gKyAgICAgICBlcnIgPSBwYWRldi0+b3BzLT5hZG1pbnFfY21kKHBhZGV2LAo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodW5pb24gcGRzX2NvcmVfYWRt aW5xX2NtZCAqKSZjbWQsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNp emVvZihjbWQpLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodW5pb24g cGRzX2NvcmVfYWRtaW5xX2NvbXAgKikmY29tcCwKPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgMCk7Cj4gKyAgICAgICBpZiAoZXJyKQo+ICsgICAgICAgICAgICAgICBkZXZf ZXJyKGRldiwgIkZhaWxlZCB0byBzZXQgbWFjIGFkZHJlc3MgJXBNLCBzdGF0dXMgJWQ6ICVwZVxu IiwKPiArICAgICAgICAgICAgICAgICAgICAgICBtYWMsIGNvbXAuc3RhdHVzLCBFUlJfUFRSKGVy cikpOwo+ICsKPiArICAgICAgIHJldHVybiBlcnI7Cj4gK30KPiArCj4gK2ludCBwZHNfdmRwYV9j bWRfc2V0X21heF92cV9wYWlycyhzdHJ1Y3QgcGRzX3ZkcGFfZGV2aWNlICpwZHN2LCB1MTYgbWF4 X3ZxcCkKPiArewo+ICsgICAgICAgc3RydWN0IHBkc19hdXhpbGlhcnlfZGV2ICpwYWRldiA9IHBk c3YtPnZkcGFfYXV4LT5wYWRldjsKPiArICAgICAgIHN0cnVjdCBkZXZpY2UgKmRldiA9ICZwYWRl di0+YXV4X2Rldi5kZXY7Cj4gKyAgICAgICBzdHJ1Y3QgcGRzX3ZkcGFfc2V0YXR0cl9jbWQgY21k ID0gewo+ICsgICAgICAgICAgICAgICAub3Bjb2RlID0gUERTX1ZEUEFfQ01EX1NFVF9BVFRSLAo+ ICsgICAgICAgICAgICAgICAudmRwYV9pbmRleCA9IHBkc3YtPnZkcGFfaW5kZXgsCj4gKyAgICAg ICAgICAgICAgIC52Zl9pZCA9IGNwdV90b19sZTE2KHBkc3YtPnZkcGFfYXV4LT52Zl9pZCksCj4g KyAgICAgICAgICAgICAgIC5hdHRyID0gUERTX1ZEUEFfQVRUUl9NQVhfVlFfUEFJUlMsCj4gKyAg ICAgICAgICAgICAgIC5tYXhfdnFfcGFpcnMgPSBjcHVfdG9fbGUxNihtYXhfdnFwKSwKPiArICAg ICAgIH07Cj4gKyAgICAgICBzdHJ1Y3QgcGRzX3ZkcGFfY29tcCBjb21wID0gezB9Owo+ICsgICAg ICAgaW50IGVycjsKPiArCj4gKyAgICAgICBlcnIgPSBwYWRldi0+b3BzLT5hZG1pbnFfY21kKHBh ZGV2LAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodW5pb24gcGRzX2Nv cmVfYWRtaW5xX2NtZCAqKSZjbWQsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHNpemVvZihjbWQpLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo dW5pb24gcGRzX2NvcmVfYWRtaW5xX2NvbXAgKikmY29tcCwKPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgMCk7Cj4gKyAgICAgICBpZiAoZXJyKQo+ICsgICAgICAgICAgICAg ICBkZXZfZXJyKGRldiwgIkZhaWxlZCB0byBzZXQgbWF4IHZxIHBhaXJzICV1LCBzdGF0dXMgJWQ6 ICVwZVxuIiwKPiArICAgICAgICAgICAgICAgICAgICAgICBtYXhfdnFwLCBjb21wLnN0YXR1cywg RVJSX1BUUihlcnIpKTsKPiArCj4gKyAgICAgICByZXR1cm4gZXJyOwo+ICt9Cj4gKwo+ICtpbnQg cGRzX3ZkcGFfY21kX2luaXRfdnEoc3RydWN0IHBkc192ZHBhX2RldmljZSAqcGRzdiwgdTE2IHFp ZCwKPiArICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHBkc192ZHBhX3ZxX2luZm8gKnZx X2luZm8pCj4gK3sKPiArICAgICAgIHN0cnVjdCBwZHNfYXV4aWxpYXJ5X2RldiAqcGFkZXYgPSBw ZHN2LT52ZHBhX2F1eC0+cGFkZXY7Cj4gKyAgICAgICBzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmcGFk ZXYtPmF1eF9kZXYuZGV2Owo+ICsgICAgICAgc3RydWN0IHBkc192ZHBhX3ZxX2luaXRfY29tcCBj b21wID0gezB9Owo+ICsgICAgICAgc3RydWN0IHBkc192ZHBhX3ZxX2luaXRfY21kIGNtZCA9IHsK PiArICAgICAgICAgICAgICAgLm9wY29kZSA9IFBEU19WRFBBX0NNRF9WUV9JTklULAo+ICsgICAg ICAgICAgICAgICAudmRwYV9pbmRleCA9IHBkc3YtPnZkcGFfaW5kZXgsCj4gKyAgICAgICAgICAg ICAgIC52Zl9pZCA9IGNwdV90b19sZTE2KHBkc3YtPnZkcGFfYXV4LT52Zl9pZCksCj4gKyAgICAg ICAgICAgICAgIC5xaWQgPSBjcHVfdG9fbGUxNihxaWQpLAo+ICsgICAgICAgICAgICAgICAubGVu ID0gY3B1X3RvX2xlMTYoaWxvZzIodnFfaW5mby0+cV9sZW4pKSwKPiArICAgICAgICAgICAgICAg LmRlc2NfYWRkciA9IGNwdV90b19sZTY0KHZxX2luZm8tPmRlc2NfYWRkciksCj4gKyAgICAgICAg ICAgICAgIC5hdmFpbF9hZGRyID0gY3B1X3RvX2xlNjQodnFfaW5mby0+YXZhaWxfYWRkciksCj4g KyAgICAgICAgICAgICAgIC51c2VkX2FkZHIgPSBjcHVfdG9fbGU2NCh2cV9pbmZvLT51c2VkX2Fk ZHIpLAo+ICsgICAgICAgICAgICAgICAuaW50cl9pbmRleCA9IGNwdV90b19sZTE2KHFpZCksCj4g KyAgICAgICB9Owo+ICsgICAgICAgaW50IGVycjsKPiArCj4gKyAgICAgICBkZXZfZGJnKGRldiwg IiVzOiBxaWQgJWQgbGVuICVkIGRlc2NfYWRkciAlI2xseCBhdmFpbF9hZGRyICUjbGx4IHVzZWRf YWRkciAlI2xseFxuIiwKPiArICAgICAgICAgICAgICAgX19mdW5jX18sIHFpZCwgaWxvZzIodnFf aW5mby0+cV9sZW4pLAo+ICsgICAgICAgICAgICAgICB2cV9pbmZvLT5kZXNjX2FkZHIsIHZxX2lu Zm8tPmF2YWlsX2FkZHIsIHZxX2luZm8tPnVzZWRfYWRkcik7Cj4gKwo+ICsgICAgICAgZXJyID0g cGFkZXYtPm9wcy0+YWRtaW5xX2NtZChwYWRldiwKPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKHVuaW9uIHBkc19jb3JlX2FkbWlucV9jbWQgKikmY21kLAo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoY21kKSwKPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKHVuaW9uIHBkc19jb3JlX2FkbWlucV9jb21wICopJmNv bXAsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDApOwoKV2UgbWFwIGNv bW1vbiBjZmcgaW4gcGRzX3ZkcGFfcHJvYmVfdmlydGlvLCBhbnkgcmVhc29uIGZvciB1c2luZwph ZG1pbnEgaGVyZT8gKEkgZ3Vlc3MgaXQgbWlnaHQgYmUgZmFzdGVyPykKCj4gKyAgICAgICBpZiAo ZXJyKSB7Cj4gKyAgICAgICAgICAgICAgIGRldl9lcnIoZGV2LCAiRmFpbGVkIHRvIGluaXQgdnEg JWQsIHN0YXR1cyAlZDogJXBlXG4iLAo+ICsgICAgICAgICAgICAgICAgICAgICAgIHFpZCwgY29t cC5zdGF0dXMsIEVSUl9QVFIoZXJyKSk7Cj4gKyAgICAgICAgICAgICAgIHJldHVybiBlcnI7Cj4g KyAgICAgICB9Cj4gKwo+ICsgICAgICAgdnFfaW5mby0+aHdfcXR5cGUgPSBjb21wLmh3X3F0eXBl OwoKV2hhdCBkb2VzIGh3X3F0eXBlIG1lYW4/Cgo+ICsgICAgICAgdnFfaW5mby0+aHdfcWluZGV4 ID0gbGUxNl90b19jcHUoY29tcC5od19xaW5kZXgpOwo+ICsKPiArICAgICAgIHJldHVybiAwOwo+ ICt9Cj4gKwo+ICtpbnQgcGRzX3ZkcGFfY21kX3Jlc2V0X3ZxKHN0cnVjdCBwZHNfdmRwYV9kZXZp Y2UgKnBkc3YsIHUxNiBxaWQpCj4gK3sKPiArICAgICAgIHN0cnVjdCBwZHNfYXV4aWxpYXJ5X2Rl diAqcGFkZXYgPSBwZHN2LT52ZHBhX2F1eC0+cGFkZXY7Cj4gKyAgICAgICBzdHJ1Y3QgZGV2aWNl ICpkZXYgPSAmcGFkZXYtPmF1eF9kZXYuZGV2Owo+ICsgICAgICAgc3RydWN0IHBkc192ZHBhX3Zx X3Jlc2V0X2NtZCBjbWQgPSB7Cj4gKyAgICAgICAgICAgICAgIC5vcGNvZGUgPSBQRFNfVkRQQV9D TURfVlFfUkVTRVQsCj4gKyAgICAgICAgICAgICAgIC52ZHBhX2luZGV4ID0gcGRzdi0+dmRwYV9p bmRleCwKPiArICAgICAgICAgICAgICAgLnZmX2lkID0gY3B1X3RvX2xlMTYocGRzdi0+dmRwYV9h dXgtPnZmX2lkKSwKPiArICAgICAgICAgICAgICAgLnFpZCA9IGNwdV90b19sZTE2KHFpZCksCj4g KyAgICAgICB9Owo+ICsgICAgICAgc3RydWN0IHBkc192ZHBhX2NvbXAgY29tcCA9IHswfTsKPiAr ICAgICAgIGludCBlcnI7Cj4gKwo+ICsgICAgICAgZXJyID0gcGFkZXYtPm9wcy0+YWRtaW5xX2Nt ZChwYWRldiwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVuaW9uIHBk c19jb3JlX2FkbWlucV9jbWQgKikmY21kLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzaXplb2YoY21kKSwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKHVuaW9uIHBkc19jb3JlX2FkbWlucV9jb21wICopJmNvbXAsCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDApOwo+ICsgICAgICAgaWYgKGVycikKPiArICAgICAgICAg ICAgICAgZGV2X2VycihkZXYsICJGYWlsZWQgdG8gcmVzZXQgdnEgJWQsIHN0YXR1cyAlZDogJXBl XG4iLAo+ICsgICAgICAgICAgICAgICAgICAgICAgIHFpZCwgY29tcC5zdGF0dXMsIEVSUl9QVFIo ZXJyKSk7Cj4gKwo+ICsgICAgICAgcmV0dXJuIGVycjsKPiArfQo+ICsKPiAraW50IHBkc192ZHBh X2NtZF9zZXRfZmVhdHVyZXMoc3RydWN0IHBkc192ZHBhX2RldmljZSAqcGRzdiwgdTY0IGZlYXR1 cmVzKQo+ICt7Cj4gKyAgICAgICBzdHJ1Y3QgcGRzX2F1eGlsaWFyeV9kZXYgKnBhZGV2ID0gcGRz di0+dmRwYV9hdXgtPnBhZGV2Owo+ICsgICAgICAgc3RydWN0IGRldmljZSAqZGV2ID0gJnBhZGV2 LT5hdXhfZGV2LmRldjsKPiArICAgICAgIHN0cnVjdCBwZHNfdmRwYV9zZXRfZmVhdHVyZXNfY21k IGNtZCA9IHsKPiArICAgICAgICAgICAgICAgLm9wY29kZSA9IFBEU19WRFBBX0NNRF9TRVRfRkVB VFVSRVMsCj4gKyAgICAgICAgICAgICAgIC52ZHBhX2luZGV4ID0gcGRzdi0+dmRwYV9pbmRleCwK PiArICAgICAgICAgICAgICAgLnZmX2lkID0gY3B1X3RvX2xlMTYocGRzdi0+dmRwYV9hdXgtPnZm X2lkKSwKPiArICAgICAgICAgICAgICAgLmZlYXR1cmVzID0gY3B1X3RvX2xlNjQoZmVhdHVyZXMp LAo+ICsgICAgICAgfTsKPiArICAgICAgIHN0cnVjdCBwZHNfdmRwYV9jb21wIGNvbXAgPSB7MH07 Cj4gKyAgICAgICBpbnQgZXJyOwo+ICsKPiArICAgICAgIGVyciA9IHBhZGV2LT5vcHMtPmFkbWlu cV9jbWQocGFkZXYsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1bmlv biBwZHNfY29yZV9hZG1pbnFfY21kICopJmNtZCwKPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc2l6ZW9mKGNtZCksCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICh1bmlvbiBwZHNfY29yZV9hZG1pbnFfY29tcCAqKSZjb21wLAo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAwKTsKPiArICAgICAgIGlmIChlcnIpCj4gKyAgICAg ICAgICAgICAgIGRldl9lcnIoZGV2LCAiRmFpbGVkIHRvIHNldCBmZWF0dXJlcyAlI2xseCwgc3Rh dHVzICVkOiAlcGVcbiIsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgZmVhdHVyZXMsIGNvbXAu c3RhdHVzLCBFUlJfUFRSKGVycikpOwo+ICsKPiArICAgICAgIHJldHVybiBlcnI7Cj4gK30KPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy92ZHBhL3Bkcy9jbWRzLmggYi9kcml2ZXJzL3ZkcGEvcGRzL2Nt ZHMuaAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAwMDAwLi43MmUxOWY0 ZWZkZTYKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvZHJpdmVycy92ZHBhL3Bkcy9jbWRzLmgKPiBA QCAtMCwwICsxLDE2IEBACj4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9u bHkgKi8KPiArLyogQ29weXJpZ2h0KGMpIDIwMjMgQWR2YW5jZWQgTWljcm8gRGV2aWNlcywgSW5j ICovCj4gKwo+ICsjaWZuZGVmIF9WRFBBX0NNRFNfSF8KPiArI2RlZmluZSBfVkRQQV9DTURTX0hf Cj4gKwo+ICtpbnQgcGRzX3ZkcGFfaW5pdF9odyhzdHJ1Y3QgcGRzX3ZkcGFfZGV2aWNlICpwZHN2 KTsKPiArCj4gK2ludCBwZHNfdmRwYV9jbWRfcmVzZXQoc3RydWN0IHBkc192ZHBhX2RldmljZSAq cGRzdik7Cj4gK2ludCBwZHNfdmRwYV9jbWRfc2V0X21hYyhzdHJ1Y3QgcGRzX3ZkcGFfZGV2aWNl ICpwZHN2LCB1OCAqbWFjKTsKPiAraW50IHBkc192ZHBhX2NtZF9zZXRfbWF4X3ZxX3BhaXJzKHN0 cnVjdCBwZHNfdmRwYV9kZXZpY2UgKnBkc3YsIHUxNiBtYXhfdnFwKTsKPiAraW50IHBkc192ZHBh X2NtZF9pbml0X3ZxKHN0cnVjdCBwZHNfdmRwYV9kZXZpY2UgKnBkc3YsIHUxNiBxaWQsCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBwZHNfdmRwYV92cV9pbmZvICp2cV9pbmZvKTsK PiAraW50IHBkc192ZHBhX2NtZF9yZXNldF92cShzdHJ1Y3QgcGRzX3ZkcGFfZGV2aWNlICpwZHN2 LCB1MTYgcWlkKTsKPiAraW50IHBkc192ZHBhX2NtZF9zZXRfZmVhdHVyZXMoc3RydWN0IHBkc192 ZHBhX2RldmljZSAqcGRzdiwgdTY0IGZlYXR1cmVzKTsKPiArI2VuZGlmIC8qIF9WRFBBX0NNRFNf SF8gKi8KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy92ZHBhL3Bkcy92ZHBhX2Rldi5oIGIvZHJpdmVy cy92ZHBhL3Bkcy92ZHBhX2Rldi5oCj4gaW5kZXggOTdmYWI4MzNhMGFhLi4zMzI4NGViZTUzOGMg MTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy92ZHBhL3Bkcy92ZHBhX2Rldi5oCj4gKysrIGIvZHJpdmVy cy92ZHBhL3Bkcy92ZHBhX2Rldi5oCj4gQEAgLTQsMTEgKzQsNDUgQEAKPiAgI2lmbmRlZiBfVkRQ QV9ERVZfSF8KPiAgI2RlZmluZSBfVkRQQV9ERVZfSF8KPgo+IC0jZGVmaW5lIFBEU19WRFBBX01B WF9RVUVVRVMgICAgNjUKPiArI2luY2x1ZGUgPGxpbnV4L3BjaS5oPgo+ICsjaW5jbHVkZSA8bGlu dXgvdmRwYS5oPgo+ICsKPiArc3RydWN0IHBkc192ZHBhX3ZxX2luZm8gewo+ICsgICAgICAgYm9v bCByZWFkeTsKPiArICAgICAgIHU2NCBkZXNjX2FkZHI7Cj4gKyAgICAgICB1NjQgYXZhaWxfYWRk cjsKPiArICAgICAgIHU2NCB1c2VkX2FkZHI7Cj4gKyAgICAgICB1MzIgcV9sZW47Cj4gKyAgICAg ICB1MTYgcWlkOwo+ICsgICAgICAgaW50IGlycTsKPiArICAgICAgIGNoYXIgaXJxX25hbWVbMzJd Owo+ICsKPiArICAgICAgIHZvaWQgX19pb21lbSAqbm90aWZ5Owo+ICsgICAgICAgZG1hX2FkZHJf dCBub3RpZnlfcGE7Cj4gKwo+ICsgICAgICAgdTY0IGRvb3JiZWxsOwo+ICsgICAgICAgdTE2IGF2 YWlsX2lkeDsKPiArICAgICAgIHUxNiB1c2VkX2lkeDsKPiArCj4gKyAgICAgICB1OCBod19xdHlw ZTsKPiArICAgICAgIHUxNiBod19xaW5kZXg7Cj4KPiArICAgICAgIHN0cnVjdCB2ZHBhX2NhbGxi YWNrIGV2ZW50X2NiOwo+ICsgICAgICAgc3RydWN0IHBkc192ZHBhX2RldmljZSAqcGRzdjsKPiAr fTsKPiArCj4gKyNkZWZpbmUgUERTX1ZEUEFfTUFYX1FVRVVFUyAgICA2NQo+ICsjZGVmaW5lIFBE U19WRFBBX01BWF9RTEVOICAgICAgMzI3NjgKPiAgc3RydWN0IHBkc192ZHBhX2RldmljZSB7Cj4g ICAgICAgICBzdHJ1Y3QgdmRwYV9kZXZpY2UgdmRwYV9kZXY7Cj4gICAgICAgICBzdHJ1Y3QgcGRz X3ZkcGFfYXV4ICp2ZHBhX2F1eDsKPiArCj4gKyAgICAgICBzdHJ1Y3QgcGRzX3ZkcGFfdnFfaW5m byB2cXNbUERTX1ZEUEFfTUFYX1FVRVVFU107Cj4gKyAgICAgICB1NjQgcmVxX2ZlYXR1cmVzOyAg ICAgICAgICAgICAgIC8qIGZlYXR1cmVzIHJlcXVlc3RlZCBieSB2ZHBhICovCj4gKyAgICAgICB1 NjQgYWN0dWFsX2ZlYXR1cmVzOyAgICAgICAgICAgIC8qIGZlYXR1cmVzIG5lZ290aWF0ZWQgYW5k IGluIHVzZSAqLwo+ICsgICAgICAgdTggdmRwYV9pbmRleDsgICAgICAgICAgICAgICAgICAvKiBy c3ZkIGZvciBmdXR1cmUgc3ViZGV2aWNlIHVzZSAqLwo+ICsgICAgICAgdTggbnVtX3ZxczsgICAg ICAgICAgICAgICAgICAgICAvKiBudW0gdnFzIGluIHVzZSAqLwo+ICsgICAgICAgc3RydWN0IHZk cGFfY2FsbGJhY2sgY29uZmlnX2NiOwo+ICB9Owo+Cj4gIGludCBwZHNfdmRwYV9nZXRfbWdtdF9p bmZvKHN0cnVjdCBwZHNfdmRwYV9hdXggKnZkcGFfYXV4KTsKPiBkaWZmIC0tZ2l0IGEvaW5jbHVk ZS9saW51eC9wZHMvcGRzX3ZkcGEuaCBiL2luY2x1ZGUvbGludXgvcGRzL3Bkc192ZHBhLmgKPiBp bmRleCAzZjdjMDg1NTExNjMuLmI2YTRjYjRkM2M2YiAxMDA2NDQKPiAtLS0gYS9pbmNsdWRlL2xp bnV4L3Bkcy9wZHNfdmRwYS5oCj4gKysrIGIvaW5jbHVkZS9saW51eC9wZHMvcGRzX3ZkcGEuaAo+ IEBAIC0xMDEsNCArMTAxLDE3OSBAQCBzdHJ1Y3QgcGRzX3ZkcGFfaWRlbnRfY21kIHsKPiAgICAg ICAgIF9fbGUzMiBsZW47Cj4gICAgICAgICBfX2xlNjQgaWRlbnRfcGE7Cj4gIH07Cj4gKwo+ICsv KioKPiArICogc3RydWN0IHBkc192ZHBhX3N0YXR1c19jbWQgLSBTVEFUVVNfVVBEQVRFIGNvbW1h bmQKPiArICogQG9wY29kZTogICAgT3Bjb2RlIFBEU19WRFBBX0NNRF9TVEFUVVNfVVBEQVRFCj4g KyAqIEB2ZHBhX2luZGV4OiBJbmRleCBmb3IgdmRwYSBzdWJkZXZpY2UKPiArICogQHZmX2lkOiAg ICAgVkYgaWQKPiArICogQHN0YXR1czogICAgbmV3IHN0YXR1cyBiaXRzCj4gKyAqLwo+ICtzdHJ1 Y3QgcGRzX3ZkcGFfc3RhdHVzX2NtZCB7Cj4gKyAgICAgICB1OCAgICAgb3Bjb2RlOwo+ICsgICAg ICAgdTggICAgIHZkcGFfaW5kZXg7Cj4gKyAgICAgICBfX2xlMTYgdmZfaWQ7Cj4gKyAgICAgICB1 OCAgICAgc3RhdHVzOwo+ICt9Owo+ICsKPiArLyoqCj4gKyAqIGVudW0gcGRzX3ZkcGFfYXR0ciAt IExpc3Qgb2YgVkRQQSBkZXZpY2UgYXR0cmlidXRlcwo+ICsgKiBAUERTX1ZEUEFfQVRUUl9NQUM6 ICAgICAgICAgIE1BQyBhZGRyZXNzCj4gKyAqIEBQRFNfVkRQQV9BVFRSX01BWF9WUV9QQUlSUzog TWF4IHZpcnRxdWV1ZSBwYWlycwo+ICsgKi8KPiArZW51bSBwZHNfdmRwYV9hdHRyIHsKPiArICAg ICAgIFBEU19WRFBBX0FUVFJfTUFDICAgICAgICAgID0gMSwKPiArICAgICAgIFBEU19WRFBBX0FU VFJfTUFYX1ZRX1BBSVJTID0gMiwKPiArfTsKPiArCj4gKy8qKgo+ICsgKiBzdHJ1Y3QgcGRzX3Zk cGFfc2V0YXR0cl9jbWQgLSBTRVRfQVRUUiBjb21tYW5kCj4gKyAqIEBvcGNvZGU6ICAgICAgICAg ICAgT3Bjb2RlIFBEU19WRFBBX0NNRF9TRVRfQVRUUgo+ICsgKiBAdmRwYV9pbmRleDogICAgICAg ICAgICAgICAgSW5kZXggZm9yIHZkcGEgc3ViZGV2aWNlCj4gKyAqIEB2Zl9pZDogICAgICAgICAg ICAgVkYgaWQKPiArICogQGF0dHI6ICAgICAgICAgICAgICBhdHRyaWJ1dGUgdG8gYmUgY2hhbmdl ZCAoZW51bSBwZHNfdmRwYV9hdHRyKQo+ICsgKiBAcGFkOiAgICAgICAgICAgICAgIFdvcmQgYm91 bmRhcnkgcGFkZGluZwo+ICsgKiBAbWFjOiAgICAgICAgICAgICAgIG5ldyBtYWMgYWRkcmVzcyB0 byBiZSBhc3NpZ25lZCBhcyB2ZHBhIGRldmljZSBhZGRyZXNzCj4gKyAqIEBtYXhfdnFfcGFpcnM6 ICAgICAgbmV3IGxpbWl0IG9mIHZpcnRxdWV1ZSBwYWlycwo+ICsgKi8KPiArc3RydWN0IHBkc192 ZHBhX3NldGF0dHJfY21kIHsKPiArICAgICAgIHU4ICAgICBvcGNvZGU7Cj4gKyAgICAgICB1OCAg ICAgdmRwYV9pbmRleDsKPiArICAgICAgIF9fbGUxNiB2Zl9pZDsKPiArICAgICAgIHU4ICAgICBh dHRyOwo+ICsgICAgICAgdTggICAgIHBhZFszXTsKPiArICAgICAgIHVuaW9uIHsKPiArICAgICAg ICAgICAgICAgdTggbWFjWzZdOwo+ICsgICAgICAgICAgICAgICBfX2xlMTYgbWF4X3ZxX3BhaXJz Owo+ICsgICAgICAgfSBfX3BhY2tlZDsKPiArfTsKPiArCj4gKy8qKgo+ICsgKiBzdHJ1Y3QgcGRz X3ZkcGFfdnFfaW5pdF9jbWQgLSBxdWV1ZSBpbml0IGNvbW1hbmQKPiArICogQG9wY29kZTogT3Bj b2RlIFBEU19WRFBBX0NNRF9WUV9JTklUCj4gKyAqIEB2ZHBhX2luZGV4OiAgICAgICAgSW5kZXgg Zm9yIHZkcGEgc3ViZGV2aWNlCj4gKyAqIEB2Zl9pZDogICAgIFZGIGlkCj4gKyAqIEBxaWQ6ICAg ICAgIFF1ZXVlIGlkIChiaXQwIGNsZWFyID0gcngsIGJpdDAgc2V0ID0gdHgsIHFpZD1OIGlzIGN0 cmxxKQo+ICsgKiBAbGVuOiAgICAgICBsb2coMikgb2YgbWF4IGRlc2NyaXB0b3IgY291bnQKPiAr ICogQGRlc2NfYWRkcjogRE1BIGFkZHJlc3Mgb2YgZGVzY3JpcHRvciBhcmVhCj4gKyAqIEBhdmFp bF9hZGRyOiAgICAgICAgRE1BIGFkZHJlc3Mgb2YgYXZhaWxhYmxlIGRlc2NyaXB0b3JzIChha2Eg ZHJpdmVyIGFyZWEpCj4gKyAqIEB1c2VkX2FkZHI6IERNQSBhZGRyZXNzIG9mIHVzZWQgZGVzY3Jp cHRvcnMgKGFrYSBkZXZpY2UgYXJlYSkKPiArICogQGludHJfaW5kZXg6ICAgICAgICBpbnRlcnJ1 cHQgaW5kZXgKPiArICovCj4gK3N0cnVjdCBwZHNfdmRwYV92cV9pbml0X2NtZCB7Cj4gKyAgICAg ICB1OCAgICAgb3Bjb2RlOwo+ICsgICAgICAgdTggICAgIHZkcGFfaW5kZXg7Cj4gKyAgICAgICBf X2xlMTYgdmZfaWQ7Cj4gKyAgICAgICBfX2xlMTYgcWlkOwo+ICsgICAgICAgX19sZTE2IGxlbjsK PiArICAgICAgIF9fbGU2NCBkZXNjX2FkZHI7Cj4gKyAgICAgICBfX2xlNjQgYXZhaWxfYWRkcjsK PiArICAgICAgIF9fbGU2NCB1c2VkX2FkZHI7Cj4gKyAgICAgICBfX2xlMTYgaW50cl9pbmRleDsK Ckp1c3Qgd29uZGVyIGluIHdoaWNoIGNhc2UgaW50cl9pbmRleCBjYW4gYmUgZGlmZmVyZW50IGZy b20gcWlkLCBpbgpwZHNfdmRwYV9jbWRfaW5pdF92cSgpIHdlIGhhZDoKCiAgICAgICAgICAgICAg ICAuaW50cl9pbmRleCA9IGNwdV90b19sZTE2KHFpZCksCgpUaGFua3MKCgo+ICt9Owo+ICsKPiAr LyoqCj4gKyAqIHN0cnVjdCBwZHNfdmRwYV92cV9pbml0X2NvbXAgLSBxdWV1ZSBpbml0IGNvbXBs ZXRpb24KPiArICogQHN0YXR1czogICAgU3RhdHVzIG9mIHRoZSBjb21tYW5kIChlbnVtIHBkc19j b3JlX3N0YXR1c19jb2RlKQo+ICsgKiBAaHdfcXR5cGU6ICBIVyBxdWV1ZSB0eXBlLCB1c2VkIGlu IGRvb3JiZWxsIHNlbGVjdGlvbgo+ICsgKiBAaHdfcWluZGV4OiBIVyBxdWV1ZSBpbmRleCwgdXNl ZCBpbiBkb29yYmVsbCBzZWxlY3Rpb24KPiArICogQHJzdmQ6ICAgICAgV29yZCBib3VuZGFyeSBw YWRkaW5nCj4gKyAqIEBjb2xvcjogICAgIENvbG9yIGJpdAo+ICsgKi8KPiArc3RydWN0IHBkc192 ZHBhX3ZxX2luaXRfY29tcCB7Cj4gKyAgICAgICB1OCAgICAgc3RhdHVzOwo+ICsgICAgICAgdTgg ICAgIGh3X3F0eXBlOwo+ICsgICAgICAgX19sZTE2IGh3X3FpbmRleDsKPiArICAgICAgIHU4ICAg ICByc3ZkWzExXTsKPiArICAgICAgIHU4ICAgICBjb2xvcjsKPiArfTsKPiArCj4gKy8qKgo+ICsg KiBzdHJ1Y3QgcGRzX3ZkcGFfdnFfcmVzZXRfY21kIC0gcXVldWUgcmVzZXQgY29tbWFuZAo+ICsg KiBAb3Bjb2RlOiAgICBPcGNvZGUgUERTX1ZEUEFfQ01EX1ZRX1JFU0VUCj4gKyAqIEB2ZHBhX2lu ZGV4OiAgICAgICAgSW5kZXggZm9yIHZkcGEgc3ViZGV2aWNlCj4gKyAqIEB2Zl9pZDogICAgIFZG IGlkCj4gKyAqIEBxaWQ6ICAgICAgIFF1ZXVlIGlkCj4gKyAqLwo+ICtzdHJ1Y3QgcGRzX3ZkcGFf dnFfcmVzZXRfY21kIHsKPiArICAgICAgIHU4ICAgICBvcGNvZGU7Cj4gKyAgICAgICB1OCAgICAg dmRwYV9pbmRleDsKPiArICAgICAgIF9fbGUxNiB2Zl9pZDsKPiArICAgICAgIF9fbGUxNiBxaWQ7 Cj4gK307Cj4gKwo+ICsvKioKPiArICogc3RydWN0IHBkc192ZHBhX3NldF9mZWF0dXJlc19jbWQg LSBzZXQgaHcgZmVhdHVyZXMKPiArICogQG9wY29kZTogT3Bjb2RlIFBEU19WRFBBX0NNRF9TRVRf RkVBVFVSRVMKPiArICogQHZkcGFfaW5kZXg6ICAgICAgICBJbmRleCBmb3IgdmRwYSBzdWJkZXZp Y2UKPiArICogQHZmX2lkOiAgICAgVkYgaWQKPiArICogQHJzdmQ6ICAgICAgIFdvcmQgYm91bmRh cnkgcGFkZGluZwo+ICsgKiBAZmVhdHVyZXM6ICBGZWF0dXJlIGJpdCBtYXNrCj4gKyAqLwo+ICtz dHJ1Y3QgcGRzX3ZkcGFfc2V0X2ZlYXR1cmVzX2NtZCB7Cj4gKyAgICAgICB1OCAgICAgb3Bjb2Rl Owo+ICsgICAgICAgdTggICAgIHZkcGFfaW5kZXg7Cj4gKyAgICAgICBfX2xlMTYgdmZfaWQ7Cj4g KyAgICAgICBfX2xlMzIgcnN2ZDsKPiArICAgICAgIF9fbGU2NCBmZWF0dXJlczsKPiArfTsKPiAr Cj4gKy8qKgo+ICsgKiBzdHJ1Y3QgcGRzX3ZkcGFfdnFfc2V0X3N0YXRlX2NtZCAtIHNldCB2cSBz dGF0ZQo+ICsgKiBAb3Bjb2RlOiAgICBPcGNvZGUgUERTX1ZEUEFfQ01EX1ZRX1NFVF9TVEFURQo+ ICsgKiBAdmRwYV9pbmRleDogICAgICAgIEluZGV4IGZvciB2ZHBhIHN1YmRldmljZQo+ICsgKiBA dmZfaWQ6ICAgICBWRiBpZAo+ICsgKiBAcWlkOiAgICAgICBRdWV1ZSBpZAo+ICsgKiBAYXZhaWw6 ICAgICBEZXZpY2UgYXZhaWwgaW5kZXguCj4gKyAqIEB1c2VkOiAgICAgIERldmljZSB1c2VkIGlu ZGV4Lgo+ICsgKgo+ICsgKiBJZiB0aGUgdmlydHF1ZXVlIHVzZXMgcGFja2VkIGRlc2NyaXB0b3Ig Zm9ybWF0LCB0aGVuIHRoZSBhdmFpbCBhbmQgdXNlZAo+ICsgKiBpbmRleCBtdXN0IGhhdmUgYSB3 cmFwIGNvdW50LiAgVGhlIGJpdHMgc2hvdWxkIGJlIGFycmFuZ2VkIGxpa2UgdGhlIHVwcGVyCj4g KyAqIDE2IGJpdHMgaW4gdGhlIGRldmljZSBhdmFpbGFibGUgbm90aWZpY2F0aW9uIGRhdGE6IDE1 IGJpdCBpbmRleCwgMSBiaXQgd3JhcC4KPiArICovCj4gK3N0cnVjdCBwZHNfdmRwYV92cV9zZXRf c3RhdGVfY21kIHsKPiArICAgICAgIHU4ICAgICBvcGNvZGU7Cj4gKyAgICAgICB1OCAgICAgdmRw YV9pbmRleDsKPiArICAgICAgIF9fbGUxNiB2Zl9pZDsKPiArICAgICAgIF9fbGUxNiBxaWQ7Cj4g KyAgICAgICBfX2xlMTYgYXZhaWw7Cj4gKyAgICAgICBfX2xlMTYgdXNlZDsKPiArfTsKPiArCj4g Ky8qKgo+ICsgKiBzdHJ1Y3QgcGRzX3ZkcGFfdnFfZ2V0X3N0YXRlX2NtZCAtIGdldCB2cSBzdGF0 ZQo+ICsgKiBAb3Bjb2RlOiAgICBPcGNvZGUgUERTX1ZEUEFfQ01EX1ZRX0dFVF9TVEFURQo+ICsg KiBAdmRwYV9pbmRleDogICAgICAgIEluZGV4IGZvciB2ZHBhIHN1YmRldmljZQo+ICsgKiBAdmZf aWQ6ICAgICBWRiBpZAo+ICsgKiBAcWlkOiAgICAgICBRdWV1ZSBpZAo+ICsgKi8KPiArc3RydWN0 IHBkc192ZHBhX3ZxX2dldF9zdGF0ZV9jbWQgewo+ICsgICAgICAgdTggICAgIG9wY29kZTsKPiAr ICAgICAgIHU4ICAgICB2ZHBhX2luZGV4Owo+ICsgICAgICAgX19sZTE2IHZmX2lkOwo+ICsgICAg ICAgX19sZTE2IHFpZDsKPiArfTsKPiArCj4gKy8qKgo+ICsgKiBzdHJ1Y3QgcGRzX3ZkcGFfdnFf Z2V0X3N0YXRlX2NvbXAgLSBnZXQgdnEgc3RhdGUgY29tcGxldGlvbgo+ICsgKiBAc3RhdHVzOiAg ICBTdGF0dXMgb2YgdGhlIGNvbW1hbmQgKGVudW0gcGRzX2NvcmVfc3RhdHVzX2NvZGUpCj4gKyAq IEByc3ZkMDogICAgICBXb3JkIGJvdW5kYXJ5IHBhZGRpbmcKPiArICogQGF2YWlsOiAgICAgRGV2 aWNlIGF2YWlsIGluZGV4Lgo+ICsgKiBAdXNlZDogICAgICBEZXZpY2UgdXNlZCBpbmRleC4KPiAr ICogQHJzdmQ6ICAgICAgIFdvcmQgYm91bmRhcnkgcGFkZGluZwo+ICsgKiBAY29sb3I6ICAgICBD b2xvciBiaXQKPiArICoKPiArICogSWYgdGhlIHZpcnRxdWV1ZSB1c2VzIHBhY2tlZCBkZXNjcmlw dG9yIGZvcm1hdCwgdGhlbiB0aGUgYXZhaWwgYW5kIHVzZWQKPiArICogaW5kZXggd2lsbCBoYXZl IGEgd3JhcCBjb3VudC4gIFRoZSBiaXRzIHdpbGwgYmUgYXJyYW5nZWQgbGlrZSB0aGUgIm5leHQi Cj4gKyAqIHBhcnQgb2YgZGV2aWNlIGF2YWlsYWJsZSBub3RpZmljYXRpb24gZGF0YTogMTUgYml0 IGluZGV4LCAxIGJpdCB3cmFwLgo+ICsgKi8KPiArc3RydWN0IHBkc192ZHBhX3ZxX2dldF9zdGF0 ZV9jb21wIHsKPiArICAgICAgIHU4ICAgICBzdGF0dXM7Cj4gKyAgICAgICB1OCAgICAgcnN2ZDA7 Cj4gKyAgICAgICBfX2xlMTYgYXZhaWw7Cj4gKyAgICAgICBfX2xlMTYgdXNlZDsKPiArICAgICAg IHU4ICAgICByc3ZkWzldOwo+ICsgICAgICAgdTggICAgIGNvbG9yOwo+ICt9Owo+ICsKPiAgI2Vu ZGlmIC8qIF9QRFNfVkRQQV9JRl9IXyAqLwo+IC0tCj4gMi4xNy4xCj4KCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClZpcnR1YWxpemF0aW9uIG1haWxpbmcg bGlzdApWaXJ0dWFsaXphdGlvbkBsaXN0cy5saW51eC1mb3VuZGF0aW9uLm9yZwpodHRwczovL2xp c3RzLmxpbnV4Zm91bmRhdGlvbi5vcmcvbWFpbG1hbi9saXN0aW5mby92aXJ0dWFsaXphdGlvbg== 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 21CDEC61DA4 for ; Wed, 15 Mar 2023 07:07:33 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231142AbjCOHHa (ORCPT ); Wed, 15 Mar 2023 03:07:30 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37936 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231532AbjCOHHT (ORCPT ); Wed, 15 Mar 2023 03:07:19 -0400 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id AAACD67807 for ; Wed, 15 Mar 2023 00:05:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1678863948; 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=GK7ilReN9bo1OsYk8ynoSHPpp2q3aS8NUzPtNEQ8lp4=; b=IeyFyCQWsUaHtrbkjGiXx5O8gU9suj48uu2H8Fj8FRIlXo6TLzgFQwkqBGc5SF1O98rPPc h+rv06mYNcs6pl5Q4LSi9hnyBlOXIoMwO/9P42+qepK5ab6livUrN9+0EnUQWEML2deh/A AFCsfCid4RR0oNR5Bq79SlCyt3YS+D8= Received: from mail-oa1-f69.google.com (mail-oa1-f69.google.com [209.85.160.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-528-cMbP6cU3OA6GVIcbxfhAkQ-1; Wed, 15 Mar 2023 03:05:46 -0400 X-MC-Unique: cMbP6cU3OA6GVIcbxfhAkQ-1 Received: by mail-oa1-f69.google.com with SMTP id 586e51a60fabf-177c2fb86b7so4326556fac.20 for ; Wed, 15 Mar 2023 00:05:46 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1678863946; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=GK7ilReN9bo1OsYk8ynoSHPpp2q3aS8NUzPtNEQ8lp4=; b=zoM1IsaVsXdL3Ik1iUX0FeyT+EQQG4cO0tWUYGMAWlBbe+riCQBW/utX3EJo+FFy87 oNOdbSerUV90ybcSA8bvq+5pkbf9nxiSLm/nygVMhIPouRizHpKhp6PA+jdvLJ9aE4uQ ++Hvom0OtpZN1dONdMKOPjCFFnS2mHz4OiosZ9N522JFHd0QwlsbTAKIk3IbK7Q6QMTR SFXp1d/repEuRU5TuGwmX8YdA/hWlq00NSh6IDk1cxwn3qpscVCefkX/fOGwpko6WIJN mKCuskSp0Q32u0mMb919dBYvAqg2i4WwLJFDfcHjmVV778DKhOkafHyxCKhylMYVF1XG rKag== X-Gm-Message-State: AO0yUKVhMqAWZUHvPzpXhMQzPdvqSygSmA0jWHOD/9uBMESzOOdp9/xJ 1VDQzIcYQ7uEsDUUuDUSawKhUOQgfSAlUzAkU68UkGo+aQbneeuPgm0jNhJNrxLNeYwC5QVlmts 1Gw5JbuP79NfjHFOQ0/6nf0rAc2PmP6JW X-Received: by 2002:a05:6871:2315:b0:177:c2fb:8cec with SMTP id sf21-20020a056871231500b00177c2fb8cecmr3695926oab.9.1678863946008; Wed, 15 Mar 2023 00:05:46 -0700 (PDT) X-Google-Smtp-Source: AK7set8KcrM8dHG6jtPovHcgo7AZZgpEN+/caS9S8RyxwNkv4Yu3cybwCiwoENy0G0s2/va5dDJGuUWBkn5MNPJrwwM= X-Received: by 2002:a05:6871:2315:b0:177:c2fb:8cec with SMTP id sf21-20020a056871231500b00177c2fb8cecmr3695918oab.9.1678863945730; Wed, 15 Mar 2023 00:05:45 -0700 (PDT) MIME-Version: 1.0 References: <20230309013046.23523-1-shannon.nelson@amd.com> <20230309013046.23523-5-shannon.nelson@amd.com> In-Reply-To: <20230309013046.23523-5-shannon.nelson@amd.com> From: Jason Wang Date: Wed, 15 Mar 2023 15:05:34 +0800 Message-ID: Subject: Re: [PATCH RFC v2 virtio 4/7] pds_vdpa: add vdpa config client commands To: Shannon Nelson Cc: mst@redhat.com, virtualization@lists.linux-foundation.org, brett.creeley@amd.com, davem@davemloft.net, netdev@vger.kernel.org, kuba@kernel.org, drivers@pensando.io Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org On Thu, Mar 9, 2023 at 9:31=E2=80=AFAM Shannon Nelson wrote: > > These are the adminq commands that will be needed for > setting up and using the vDPA device. It's better to explain under which case the driver should use adminq, I see some functions overlap with common configuration capability. More below. > > Signed-off-by: Shannon Nelson > --- > drivers/vdpa/pds/Makefile | 1 + > drivers/vdpa/pds/cmds.c | 207 +++++++++++++++++++++++++++++++++++ > drivers/vdpa/pds/cmds.h | 16 +++ > drivers/vdpa/pds/vdpa_dev.h | 36 +++++- > include/linux/pds/pds_vdpa.h | 175 +++++++++++++++++++++++++++++ > 5 files changed, 434 insertions(+), 1 deletion(-) > create mode 100644 drivers/vdpa/pds/cmds.c > create mode 100644 drivers/vdpa/pds/cmds.h > > diff --git a/drivers/vdpa/pds/Makefile b/drivers/vdpa/pds/Makefile > index ca2efa8c6eb5..7211eba3d942 100644 > --- a/drivers/vdpa/pds/Makefile > +++ b/drivers/vdpa/pds/Makefile > @@ -4,6 +4,7 @@ > obj-$(CONFIG_PDS_VDPA) :=3D pds_vdpa.o > > pds_vdpa-y :=3D aux_drv.o \ > + cmds.o \ > virtio_pci.o \ > vdpa_dev.o > > diff --git a/drivers/vdpa/pds/cmds.c b/drivers/vdpa/pds/cmds.c > new file mode 100644 > index 000000000000..45410739107c > --- /dev/null > +++ b/drivers/vdpa/pds/cmds.c > @@ -0,0 +1,207 @@ > +// SPDX-License-Identifier: GPL-2.0-only > +/* Copyright(c) 2023 Advanced Micro Devices, Inc */ > + > +#include > +#include > + > +#include > +#include > +#include > +#include > + > +#include "vdpa_dev.h" > +#include "aux_drv.h" > +#include "cmds.h" > + > +int pds_vdpa_init_hw(struct pds_vdpa_device *pdsv) > +{ > + struct pds_auxiliary_dev *padev =3D pdsv->vdpa_aux->padev; > + struct device *dev =3D &padev->aux_dev.dev; > + struct pds_vdpa_init_cmd init_cmd =3D { > + .opcode =3D PDS_VDPA_CMD_INIT, > + .vdpa_index =3D pdsv->vdpa_index, > + .vf_id =3D cpu_to_le16(pdsv->vdpa_aux->vf_id), > + .len =3D cpu_to_le32(sizeof(struct virtio_net_config)), > + .config_pa =3D 0, /* we use the PCI space, not an alter= nate space */ > + }; > + struct pds_vdpa_comp init_comp =3D {0}; > + int err; > + > + /* Initialize the vdpa/virtio device */ > + err =3D padev->ops->adminq_cmd(padev, > + (union pds_core_adminq_cmd *)&init_c= md, > + sizeof(init_cmd), > + (union pds_core_adminq_comp *)&init_= comp, > + 0); > + if (err) > + dev_err(dev, "Failed to init hw, status %d: %pe\n", > + init_comp.status, ERR_PTR(err)); > + > + return err; > +} > + > +int pds_vdpa_cmd_reset(struct pds_vdpa_device *pdsv) > +{ This function is not used. And I wonder what's the difference between reset via adminq and reset via pds_vdpa_set_status(0) ? > + struct pds_auxiliary_dev *padev =3D pdsv->vdpa_aux->padev; > + struct device *dev =3D &padev->aux_dev.dev; > + struct pds_vdpa_cmd cmd =3D { > + .opcode =3D PDS_VDPA_CMD_RESET, > + .vdpa_index =3D pdsv->vdpa_index, > + .vf_id =3D cpu_to_le16(pdsv->vdpa_aux->vf_id), > + }; > + struct pds_vdpa_comp comp =3D {0}; > + int err; > + > + err =3D padev->ops->adminq_cmd(padev, > + (union pds_core_adminq_cmd *)&cmd, > + sizeof(cmd), > + (union pds_core_adminq_comp *)&comp, > + 0); > + if (err) > + dev_err(dev, "Failed to reset hw, status %d: %pe\n", > + comp.status, ERR_PTR(err)); It might be better to use deb_dbg() here since it can be triggered by the g= uest. > + > + return err; > +} > + > +int pds_vdpa_cmd_set_mac(struct pds_vdpa_device *pdsv, u8 *mac) > +{ > + struct pds_auxiliary_dev *padev =3D pdsv->vdpa_aux->padev; > + struct device *dev =3D &padev->aux_dev.dev; > + struct pds_vdpa_setattr_cmd cmd =3D { > + .opcode =3D PDS_VDPA_CMD_SET_ATTR, > + .vdpa_index =3D pdsv->vdpa_index, > + .vf_id =3D cpu_to_le16(pdsv->vdpa_aux->vf_id), > + .attr =3D PDS_VDPA_ATTR_MAC, > + }; > + struct pds_vdpa_comp comp =3D {0}; > + int err; > + > + ether_addr_copy(cmd.mac, mac); > + err =3D padev->ops->adminq_cmd(padev, > + (union pds_core_adminq_cmd *)&cmd, > + sizeof(cmd), > + (union pds_core_adminq_comp *)&comp, > + 0); > + if (err) > + dev_err(dev, "Failed to set mac address %pM, status %d: %= pe\n", > + mac, comp.status, ERR_PTR(err)); > + > + return err; > +} > + > +int pds_vdpa_cmd_set_max_vq_pairs(struct pds_vdpa_device *pdsv, u16 max_= vqp) > +{ > + struct pds_auxiliary_dev *padev =3D pdsv->vdpa_aux->padev; > + struct device *dev =3D &padev->aux_dev.dev; > + struct pds_vdpa_setattr_cmd cmd =3D { > + .opcode =3D PDS_VDPA_CMD_SET_ATTR, > + .vdpa_index =3D pdsv->vdpa_index, > + .vf_id =3D cpu_to_le16(pdsv->vdpa_aux->vf_id), > + .attr =3D PDS_VDPA_ATTR_MAX_VQ_PAIRS, > + .max_vq_pairs =3D cpu_to_le16(max_vqp), > + }; > + struct pds_vdpa_comp comp =3D {0}; > + int err; > + > + err =3D padev->ops->adminq_cmd(padev, > + (union pds_core_adminq_cmd *)&cmd, > + sizeof(cmd), > + (union pds_core_adminq_comp *)&comp, > + 0); > + if (err) > + dev_err(dev, "Failed to set max vq pairs %u, status %d: %= pe\n", > + max_vqp, comp.status, ERR_PTR(err)); > + > + return err; > +} > + > +int pds_vdpa_cmd_init_vq(struct pds_vdpa_device *pdsv, u16 qid, > + struct pds_vdpa_vq_info *vq_info) > +{ > + struct pds_auxiliary_dev *padev =3D pdsv->vdpa_aux->padev; > + struct device *dev =3D &padev->aux_dev.dev; > + struct pds_vdpa_vq_init_comp comp =3D {0}; > + struct pds_vdpa_vq_init_cmd cmd =3D { > + .opcode =3D PDS_VDPA_CMD_VQ_INIT, > + .vdpa_index =3D pdsv->vdpa_index, > + .vf_id =3D cpu_to_le16(pdsv->vdpa_aux->vf_id), > + .qid =3D cpu_to_le16(qid), > + .len =3D cpu_to_le16(ilog2(vq_info->q_len)), > + .desc_addr =3D cpu_to_le64(vq_info->desc_addr), > + .avail_addr =3D cpu_to_le64(vq_info->avail_addr), > + .used_addr =3D cpu_to_le64(vq_info->used_addr), > + .intr_index =3D cpu_to_le16(qid), > + }; > + int err; > + > + dev_dbg(dev, "%s: qid %d len %d desc_addr %#llx avail_addr %#llx = used_addr %#llx\n", > + __func__, qid, ilog2(vq_info->q_len), > + vq_info->desc_addr, vq_info->avail_addr, vq_info->used_ad= dr); > + > + err =3D padev->ops->adminq_cmd(padev, > + (union pds_core_adminq_cmd *)&cmd, > + sizeof(cmd), > + (union pds_core_adminq_comp *)&comp, > + 0); We map common cfg in pds_vdpa_probe_virtio, any reason for using adminq here? (I guess it might be faster?) > + if (err) { > + dev_err(dev, "Failed to init vq %d, status %d: %pe\n", > + qid, comp.status, ERR_PTR(err)); > + return err; > + } > + > + vq_info->hw_qtype =3D comp.hw_qtype; What does hw_qtype mean? > + vq_info->hw_qindex =3D le16_to_cpu(comp.hw_qindex); > + > + return 0; > +} > + > +int pds_vdpa_cmd_reset_vq(struct pds_vdpa_device *pdsv, u16 qid) > +{ > + struct pds_auxiliary_dev *padev =3D pdsv->vdpa_aux->padev; > + struct device *dev =3D &padev->aux_dev.dev; > + struct pds_vdpa_vq_reset_cmd cmd =3D { > + .opcode =3D PDS_VDPA_CMD_VQ_RESET, > + .vdpa_index =3D pdsv->vdpa_index, > + .vf_id =3D cpu_to_le16(pdsv->vdpa_aux->vf_id), > + .qid =3D cpu_to_le16(qid), > + }; > + struct pds_vdpa_comp comp =3D {0}; > + int err; > + > + err =3D padev->ops->adminq_cmd(padev, > + (union pds_core_adminq_cmd *)&cmd, > + sizeof(cmd), > + (union pds_core_adminq_comp *)&comp, > + 0); > + if (err) > + dev_err(dev, "Failed to reset vq %d, status %d: %pe\n", > + qid, comp.status, ERR_PTR(err)); > + > + return err; > +} > + > +int pds_vdpa_cmd_set_features(struct pds_vdpa_device *pdsv, u64 features= ) > +{ > + struct pds_auxiliary_dev *padev =3D pdsv->vdpa_aux->padev; > + struct device *dev =3D &padev->aux_dev.dev; > + struct pds_vdpa_set_features_cmd cmd =3D { > + .opcode =3D PDS_VDPA_CMD_SET_FEATURES, > + .vdpa_index =3D pdsv->vdpa_index, > + .vf_id =3D cpu_to_le16(pdsv->vdpa_aux->vf_id), > + .features =3D cpu_to_le64(features), > + }; > + struct pds_vdpa_comp comp =3D {0}; > + int err; > + > + err =3D padev->ops->adminq_cmd(padev, > + (union pds_core_adminq_cmd *)&cmd, > + sizeof(cmd), > + (union pds_core_adminq_comp *)&comp, > + 0); > + if (err) > + dev_err(dev, "Failed to set features %#llx, status %d: %p= e\n", > + features, comp.status, ERR_PTR(err)); > + > + return err; > +} > diff --git a/drivers/vdpa/pds/cmds.h b/drivers/vdpa/pds/cmds.h > new file mode 100644 > index 000000000000..72e19f4efde6 > --- /dev/null > +++ b/drivers/vdpa/pds/cmds.h > @@ -0,0 +1,16 @@ > +/* SPDX-License-Identifier: GPL-2.0-only */ > +/* Copyright(c) 2023 Advanced Micro Devices, Inc */ > + > +#ifndef _VDPA_CMDS_H_ > +#define _VDPA_CMDS_H_ > + > +int pds_vdpa_init_hw(struct pds_vdpa_device *pdsv); > + > +int pds_vdpa_cmd_reset(struct pds_vdpa_device *pdsv); > +int pds_vdpa_cmd_set_mac(struct pds_vdpa_device *pdsv, u8 *mac); > +int pds_vdpa_cmd_set_max_vq_pairs(struct pds_vdpa_device *pdsv, u16 max_= vqp); > +int pds_vdpa_cmd_init_vq(struct pds_vdpa_device *pdsv, u16 qid, > + struct pds_vdpa_vq_info *vq_info); > +int pds_vdpa_cmd_reset_vq(struct pds_vdpa_device *pdsv, u16 qid); > +int pds_vdpa_cmd_set_features(struct pds_vdpa_device *pdsv, u64 features= ); > +#endif /* _VDPA_CMDS_H_ */ > diff --git a/drivers/vdpa/pds/vdpa_dev.h b/drivers/vdpa/pds/vdpa_dev.h > index 97fab833a0aa..33284ebe538c 100644 > --- a/drivers/vdpa/pds/vdpa_dev.h > +++ b/drivers/vdpa/pds/vdpa_dev.h > @@ -4,11 +4,45 @@ > #ifndef _VDPA_DEV_H_ > #define _VDPA_DEV_H_ > > -#define PDS_VDPA_MAX_QUEUES 65 > +#include > +#include > + > +struct pds_vdpa_vq_info { > + bool ready; > + u64 desc_addr; > + u64 avail_addr; > + u64 used_addr; > + u32 q_len; > + u16 qid; > + int irq; > + char irq_name[32]; > + > + void __iomem *notify; > + dma_addr_t notify_pa; > + > + u64 doorbell; > + u16 avail_idx; > + u16 used_idx; > + > + u8 hw_qtype; > + u16 hw_qindex; > > + struct vdpa_callback event_cb; > + struct pds_vdpa_device *pdsv; > +}; > + > +#define PDS_VDPA_MAX_QUEUES 65 > +#define PDS_VDPA_MAX_QLEN 32768 > struct pds_vdpa_device { > struct vdpa_device vdpa_dev; > struct pds_vdpa_aux *vdpa_aux; > + > + struct pds_vdpa_vq_info vqs[PDS_VDPA_MAX_QUEUES]; > + u64 req_features; /* features requested by vdpa */ > + u64 actual_features; /* features negotiated and in use= */ > + u8 vdpa_index; /* rsvd for future subdevice use = */ > + u8 num_vqs; /* num vqs in use */ > + struct vdpa_callback config_cb; > }; > > int pds_vdpa_get_mgmt_info(struct pds_vdpa_aux *vdpa_aux); > diff --git a/include/linux/pds/pds_vdpa.h b/include/linux/pds/pds_vdpa.h > index 3f7c08551163..b6a4cb4d3c6b 100644 > --- a/include/linux/pds/pds_vdpa.h > +++ b/include/linux/pds/pds_vdpa.h > @@ -101,4 +101,179 @@ struct pds_vdpa_ident_cmd { > __le32 len; > __le64 ident_pa; > }; > + > +/** > + * struct pds_vdpa_status_cmd - STATUS_UPDATE command > + * @opcode: Opcode PDS_VDPA_CMD_STATUS_UPDATE > + * @vdpa_index: Index for vdpa subdevice > + * @vf_id: VF id > + * @status: new status bits > + */ > +struct pds_vdpa_status_cmd { > + u8 opcode; > + u8 vdpa_index; > + __le16 vf_id; > + u8 status; > +}; > + > +/** > + * enum pds_vdpa_attr - List of VDPA device attributes > + * @PDS_VDPA_ATTR_MAC: MAC address > + * @PDS_VDPA_ATTR_MAX_VQ_PAIRS: Max virtqueue pairs > + */ > +enum pds_vdpa_attr { > + PDS_VDPA_ATTR_MAC =3D 1, > + PDS_VDPA_ATTR_MAX_VQ_PAIRS =3D 2, > +}; > + > +/** > + * struct pds_vdpa_setattr_cmd - SET_ATTR command > + * @opcode: Opcode PDS_VDPA_CMD_SET_ATTR > + * @vdpa_index: Index for vdpa subdevice > + * @vf_id: VF id > + * @attr: attribute to be changed (enum pds_vdpa_attr) > + * @pad: Word boundary padding > + * @mac: new mac address to be assigned as vdpa device add= ress > + * @max_vq_pairs: new limit of virtqueue pairs > + */ > +struct pds_vdpa_setattr_cmd { > + u8 opcode; > + u8 vdpa_index; > + __le16 vf_id; > + u8 attr; > + u8 pad[3]; > + union { > + u8 mac[6]; > + __le16 max_vq_pairs; > + } __packed; > +}; > + > +/** > + * struct pds_vdpa_vq_init_cmd - queue init command > + * @opcode: Opcode PDS_VDPA_CMD_VQ_INIT > + * @vdpa_index: Index for vdpa subdevice > + * @vf_id: VF id > + * @qid: Queue id (bit0 clear =3D rx, bit0 set =3D tx, qid=3DN is = ctrlq) > + * @len: log(2) of max descriptor count > + * @desc_addr: DMA address of descriptor area > + * @avail_addr: DMA address of available descriptors (aka driver = area) > + * @used_addr: DMA address of used descriptors (aka device area) > + * @intr_index: interrupt index > + */ > +struct pds_vdpa_vq_init_cmd { > + u8 opcode; > + u8 vdpa_index; > + __le16 vf_id; > + __le16 qid; > + __le16 len; > + __le64 desc_addr; > + __le64 avail_addr; > + __le64 used_addr; > + __le16 intr_index; Just wonder in which case intr_index can be different from qid, in pds_vdpa_cmd_init_vq() we had: .intr_index =3D cpu_to_le16(qid), Thanks > +}; > + > +/** > + * struct pds_vdpa_vq_init_comp - queue init completion > + * @status: Status of the command (enum pds_core_status_code) > + * @hw_qtype: HW queue type, used in doorbell selection > + * @hw_qindex: HW queue index, used in doorbell selection > + * @rsvd: Word boundary padding > + * @color: Color bit > + */ > +struct pds_vdpa_vq_init_comp { > + u8 status; > + u8 hw_qtype; > + __le16 hw_qindex; > + u8 rsvd[11]; > + u8 color; > +}; > + > +/** > + * struct pds_vdpa_vq_reset_cmd - queue reset command > + * @opcode: Opcode PDS_VDPA_CMD_VQ_RESET > + * @vdpa_index: Index for vdpa subdevice > + * @vf_id: VF id > + * @qid: Queue id > + */ > +struct pds_vdpa_vq_reset_cmd { > + u8 opcode; > + u8 vdpa_index; > + __le16 vf_id; > + __le16 qid; > +}; > + > +/** > + * struct pds_vdpa_set_features_cmd - set hw features > + * @opcode: Opcode PDS_VDPA_CMD_SET_FEATURES > + * @vdpa_index: Index for vdpa subdevice > + * @vf_id: VF id > + * @rsvd: Word boundary padding > + * @features: Feature bit mask > + */ > +struct pds_vdpa_set_features_cmd { > + u8 opcode; > + u8 vdpa_index; > + __le16 vf_id; > + __le32 rsvd; > + __le64 features; > +}; > + > +/** > + * struct pds_vdpa_vq_set_state_cmd - set vq state > + * @opcode: Opcode PDS_VDPA_CMD_VQ_SET_STATE > + * @vdpa_index: Index for vdpa subdevice > + * @vf_id: VF id > + * @qid: Queue id > + * @avail: Device avail index. > + * @used: Device used index. > + * > + * If the virtqueue uses packed descriptor format, then the avail and us= ed > + * index must have a wrap count. The bits should be arranged like the u= pper > + * 16 bits in the device available notification data: 15 bit index, 1 bi= t wrap. > + */ > +struct pds_vdpa_vq_set_state_cmd { > + u8 opcode; > + u8 vdpa_index; > + __le16 vf_id; > + __le16 qid; > + __le16 avail; > + __le16 used; > +}; > + > +/** > + * struct pds_vdpa_vq_get_state_cmd - get vq state > + * @opcode: Opcode PDS_VDPA_CMD_VQ_GET_STATE > + * @vdpa_index: Index for vdpa subdevice > + * @vf_id: VF id > + * @qid: Queue id > + */ > +struct pds_vdpa_vq_get_state_cmd { > + u8 opcode; > + u8 vdpa_index; > + __le16 vf_id; > + __le16 qid; > +}; > + > +/** > + * struct pds_vdpa_vq_get_state_comp - get vq state completion > + * @status: Status of the command (enum pds_core_status_code) > + * @rsvd0: Word boundary padding > + * @avail: Device avail index. > + * @used: Device used index. > + * @rsvd: Word boundary padding > + * @color: Color bit > + * > + * If the virtqueue uses packed descriptor format, then the avail and us= ed > + * index will have a wrap count. The bits will be arranged like the "ne= xt" > + * part of device available notification data: 15 bit index, 1 bit wrap. > + */ > +struct pds_vdpa_vq_get_state_comp { > + u8 status; > + u8 rsvd0; > + __le16 avail; > + __le16 used; > + u8 rsvd[9]; > + u8 color; > +}; > + > #endif /* _PDS_VDPA_IF_H_ */ > -- > 2.17.1 >