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 bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (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 257CEC54E5D for ; Tue, 19 Mar 2024 14:20:47 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References: Message-ID:Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=l9/kO/4HNyG+JArtuAwgYktNkjEfN2RT9WesW/IZ7h8=; b=NOykZwRhQUQNNI yBFValYDNIr6b2dbq8lVlPsulKb+fRyV2hrVusi196iNoXazkYlDSE8DuknHQM0n5VMNXqXHScjuU Yfu8/Y4EKj5FRuZMDjB4QmUnJ1rBDCd7dmupS+ehPwgjx+Ghim45uEILDUF9Di/SUxys2nNIuAYGP B8hVy4flOTnV9RckB1qiJrUzOiND278N3fGllI2ZEVxoGbkA34Httmovzgl01PesExd5+Cx89lfkR MVOqcTu47fH7Wpsffimqb2AtrD7vKvkf2UoFMQL9J/Ap27dHSIyQ67FEEJzSTu8WAzf/GMvgUkjQE 6ayMbLkxRAK5cqsWLWYQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1rmaKL-0000000CwiJ-3o0S; Tue, 19 Mar 2024 14:20:29 +0000 Received: from foss.arm.com ([217.140.110.172]) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1rmaKI-0000000CwhZ-2dnk for linux-arm-kernel@lists.infradead.org; Tue, 19 Mar 2024 14:20:28 +0000 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 4B88A106F; Tue, 19 Mar 2024 07:20:55 -0700 (PDT) Received: from bogus (e103737-lin.cambridge.arm.com [10.1.197.49]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 442423F762; Tue, 19 Mar 2024 07:20:19 -0700 (PDT) Date: Tue, 19 Mar 2024 14:20:16 +0000 From: Sudeep Holla To: Jens Wiklander Cc: Lorenzo Pieralisi , linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Sudeep Holla , Marc Bonnici , Olivier Deprez Subject: Re: [PATCH] firmware: arm_ffa: support running as a guest in a vm Message-ID: References: <20240307092132.943881-1-jens.wiklander@linaro.org> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240319_072026_808329_1A10492C X-CRM114-Status: GOOD ( 58.56 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org T24gRnJpLCBNYXIgMDgsIDIwMjQgYXQgMDE6MzU6MDVQTSArMDEwMCwgSmVucyBXaWtsYW5kZXIg d3JvdGU6Cj4gT24gRnJpLCBNYXIgOCwgMjAyNCBhdCAxMDo0NOKAr0FNIExvcmVuem8gUGllcmFs aXNpIDxscGllcmFsaXNpQGtlcm5lbC5vcmc+IHdyb3RlOgo+ID4KPiA+IE9uIFRodSwgTWFyIDA3 LCAyMDI0IGF0IDEwOjIxOjMyQU0gKzAxMDAsIEplbnMgV2lrbGFuZGVyIHdyb3RlOgo+ID4gPiBB ZGQgc3VwcG9ydCBmb3IgcnVubmluZyB0aGUgZHJpdmVyIGluIGEgZ3Vlc3QgdG8gYSBoeXBlcnZp c29yLiBUaGUgbWFpbgo+ID4gPiBkaWZmZXJlbmNlIGlzIHRoYXQgdGhlIG5vdGlmaWNhdGlvbiBp bnRlcnJ1cHQgaXMgcmV0cmlldmVkCj4gPiA+IHdpdGggRkZBX0ZFQVRfTk9USUZJQ0FUSU9OX1BF TkRJTkdfSU5UIGFuZCB0aGF0Cj4gPiA+IEZGQV9OT1RJRklDQVRJT05fQklUTUFQX0NSRUFURSBk b2Vzbid0IG5lZWQgdG8gYmUgY2FsbGVkLgo+ID4KPiA+IEkgaGF2ZSBhIGNvdXBsZSBvZiBxdWVz dGlvbnMgYWJvdXQgdGhlc2UgY2hhbmdlcywgY29tbWVudHMgYmVsb3cuCj4gPgo+ID4gPiBGRkFf RkVBVF9OT1RJRklDQVRJT05fUEVORElOR19JTlQgZ2l2ZXMgdGhlIGludGVycnVwdCB0aGUgaHlw ZXJ2aXNvciBoYXMKPiA+ID4gY2hvc2VuIHRvIG5vdGlmeSBpdHMgZ3Vlc3Qgb2YgcGVuZGluZyBu b3RpZmljYXRpb25zLgo+ID4gPgo+ID4gPiBTaWduZWQtb2ZmLWJ5OiBKZW5zIFdpa2xhbmRlciA8 amVucy53aWtsYW5kZXJAbGluYXJvLm9yZz4KPiA+ID4gLS0tCj4gPiA+ICBkcml2ZXJzL2Zpcm13 YXJlL2FybV9mZmEvZHJpdmVyLmMgfCA0NSArKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0t Cj4gPiA+ICAxIGZpbGUgY2hhbmdlZCwgMjcgaW5zZXJ0aW9ucygrKSwgMTggZGVsZXRpb25zKC0p Cj4gPiA+Cj4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2Zpcm13YXJlL2FybV9mZmEvZHJpdmVy LmMgYi9kcml2ZXJzL2Zpcm13YXJlL2FybV9mZmEvZHJpdmVyLmMKPiA+ID4gaW5kZXggZjI1NTZh OGU5NDAxLi5jMTgzYzdkMzljMGYgMTAwNjQ0Cj4gPiA+IC0tLSBhL2RyaXZlcnMvZmlybXdhcmUv YXJtX2ZmYS9kcml2ZXIuYwo+ID4gPiArKysgYi9kcml2ZXJzL2Zpcm13YXJlL2FybV9mZmEvZHJp dmVyLmMKPiA+ID4gQEAgLTEzMDYsMTcgKzEzMDYsMjggQEAgc3RhdGljIHZvaWQgZmZhX3NjaGVk X3JlY3ZfaXJxX3dvcmtfZm4oc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQo+ID4gPiAgICAgICBm ZmFfbm90aWZpY2F0aW9uX2luZm9fZ2V0KCk7Cj4gPiA+ICB9Cj4gPiA+Cj4gPiA+ICtzdGF0aWMg aW50IGZmYV9nZXRfbm90aWZfaW50aWQoaW50ICppbnRpZCkKPiA+ID4gK3sKPiA+ID4gKyAgICAg aW50IHJldDsKPiA+ID4gKwo+ID4gPiArICAgICByZXQgPSBmZmFfZmVhdHVyZXMoRkZBX0ZFQVRf U0NIRURVTEVfUkVDRUlWRVJfSU5ULCAwLCBpbnRpZCwgTlVMTCk7Cj4gPiA+ICsgICAgIGlmICgh cmV0KQo+ID4gPiArICAgICAgICAgICAgIHJldHVybiAwOwo+ID4gPiArICAgICByZXQgPSBmZmFf ZmVhdHVyZXMoRkZBX0ZFQVRfTk9USUZJQ0FUSU9OX1BFTkRJTkdfSU5ULCAwLCBpbnRpZCwgTlVM TCk7Cj4gPiA+ICsgICAgIGlmICghcmV0KQo+ID4gPiArICAgICAgICAgICAgIHJldHVybiAwOwo+ ID4KPiA+IEkgdGhpbmsgdGhhdCBib3RoIGludGVycnVwdHMgc2hvdWxkIGJlIHByb2JlZCBpbiBl ZyBhIGhvc3QgYW5kIHRoZQo+ID4gYWN0aW9ucyB0aGVpciBoYW5kbGVycyBzaG91bGQgdGFrZSBh cmUgZGlmZmVyZW50Lgo+ID4KCisxLCBJIGhhdmUgdGhlIHNhbWUgb3Bpbmlvbi4KCj4gPiA+ICsK PiA+ID4gKyAgICAgcHJfZXJyKCJGYWlsZWQgdG8gcmV0cmlldmUgb25lIG9mIHNjaGVkdWxlciBS eCBvciBub3RpZiBwZW5kaW5nIGludGVycnVwdHNcbiIpOwo+ID4gPiArICAgICByZXR1cm4gcmV0 Owo+ID4gPiArfQo+ID4gPiArCj4gPiA+ICBzdGF0aWMgaW50IGZmYV9zY2hlZF9yZWN2X2lycV9t YXAodm9pZCkKPiA+ID4gIHsKPiA+ID4gLSAgICAgaW50IHJldCwgaXJxLCBzcl9pbnRpZDsKPiA+ ID4gKyAgICAgaW50IHJldCwgaXJxLCBpbnRpZDsKPiA+ID4KPiA+ID4gLSAgICAgLyogVGhlIHJl dHVybmVkIHNyX2ludGlkIGlzIGFzc3VtZWQgdG8gYmUgU0dJIGRvbmF0ZWQgdG8gTlMgd29ybGQg Ki8KPiA+ID4gLSAgICAgcmV0ID0gZmZhX2ZlYXR1cmVzKEZGQV9GRUFUX1NDSEVEVUxFX1JFQ0VJ VkVSX0lOVCwgMCwgJnNyX2ludGlkLCBOVUxMKTsKPiA+ID4gLSAgICAgaWYgKHJldCA8IDApIHsK PiA+ID4gLSAgICAgICAgICAgICBpZiAocmV0ICE9IC1FT1BOT1RTVVBQKQo+ID4gPiAtICAgICAg ICAgICAgICAgICAgICAgcHJfZXJyKCJGYWlsZWQgdG8gcmV0cmlldmUgc2NoZWR1bGVyIFJ4IGlu dGVycnVwdFxuIik7Cj4gPiA+ICsgICAgIHJldCA9IGZmYV9nZXRfbm90aWZfaW50aWQoJmludGlk KTsKPiA+ID4gKyAgICAgaWYgKHJldCkKPiA+ID4gICAgICAgICAgICAgICByZXR1cm4gcmV0Owo+ ID4gPiAtICAgICB9Cj4gPiA+Cj4gPiA+ICAgICAgIGlmIChhY3BpX2Rpc2FibGVkKSB7Cj4gPiA+ ICAgICAgICAgICAgICAgc3RydWN0IG9mX3BoYW5kbGVfYXJncyBvaXJxID0ge307Cj4gPiA+IEBA IC0xMzI5LDEyICsxMzQwLDEyIEBAIHN0YXRpYyBpbnQgZmZhX3NjaGVkX3JlY3ZfaXJxX21hcCh2 b2lkKQo+ID4gPgo+ID4gPiAgICAgICAgICAgICAgIG9pcnEubnAgPSBnaWM7Cj4gPiA+ICAgICAg ICAgICAgICAgb2lycS5hcmdzX2NvdW50ID0gMTsKPiA+ID4gLSAgICAgICAgICAgICBvaXJxLmFy Z3NbMF0gPSBzcl9pbnRpZDsKPiA+ID4gKyAgICAgICAgICAgICBvaXJxLmFyZ3NbMF0gPSBpbnRp ZDsKPiA+ID4gICAgICAgICAgICAgICBpcnEgPSBpcnFfY3JlYXRlX29mX21hcHBpbmcoJm9pcnEp Owo+ID4gPiAgICAgICAgICAgICAgIG9mX25vZGVfcHV0KGdpYyk7Cj4gPiA+ICAjaWZkZWYgQ09O RklHX0FDUEkKPiA+ID4gICAgICAgfSBlbHNlIHsKPiA+ID4gLSAgICAgICAgICAgICBpcnEgPSBh Y3BpX3JlZ2lzdGVyX2dzaShOVUxMLCBzcl9pbnRpZCwgQUNQSV9FREdFX1NFTlNJVElWRSwKPiA+ ID4gKyAgICAgICAgICAgICBpcnEgPSBhY3BpX3JlZ2lzdGVyX2dzaShOVUxMLCBpbnRpZCwgQUNQ SV9FREdFX1NFTlNJVElWRSwKPiA+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBBQ1BJX0FDVElWRV9ISUdIKTsKPiA+ID4gICNlbmRpZgo+ID4KPiA+IFRoaXMgbWVhbnMg dGhhdCBmb3IgYm90aCBzY2hlZHVsZSByZWNlaXZlciBpbnRlcnJ1cHQgYW5kIG5vdGlmaWNhdGlv bgo+ID4gcGVuZGluZyBpbnRlcnJ1cHQgd2Ugd291bGQgZW5kIHVwIGNhbGxpbmcgRkZBX05PVElG SUNBVElPTl9JTkZPX0dFVCAoPyksCj4gPiB3aGljaCBpcyBub3QgY29ycmVjdCBBRkFJSywgZm9y IG1hbnkgcmVhc29ucy4KPiA+Cj4gPiBJZiB0aGVyZSBpcyBhIHBlbmRpbmcgbm90aWZpY2F0aW9u IGZvciBhIFZNLCBhIHNjaGVkdWxlciByZWNlaXZlcgo+ID4gaW50ZXJydXB0IGlzIHRyaWdnZXJl ZCBpbiB0aGUgaG9zdC4gVGhpcyB3b3VsZCBlbmQgdXAgY2FsbGluZwo+ID4gRkZBX05PVElGSUNB VElPTl9JTkZPX0dFVCgpLCB0aGF0IGlzIGRlc3RydWN0aXZlIChjYWxsaW5nIGl0IGFnYWluIGlu Cj4gPiB0aGUgbm90aWZpZWQgKmd1ZXN0KiAtIGluIHRoZSBpbnRlcnJ1cHQgaGFuZGxlciB0cmln Z2VyZWQgYnkgdGhlCj4gPiBoeXBlcnZpc29yIC0gd291bGQgbm90IHJldHVybiB0aGUgcGVuZGlu ZyBub3RpZmljYXRpb25zIGZvciBpdCkuCj4gPgo+ID4gVGhlcmVmb3JlLCB0aGUgYWN0aW9uIGZv ciB0aGUgcGVuZGluZyBub3RpZmljYXRpb24gaW50ZXJydXB0IHNob3VsZAo+ID4gYmUgZGlmZmVy ZW50IGFuZCBzaG91bGQganVzdCBjYWxsIEZGQV9OT1RJRklDQVRJT05fR0VULgo+ID4KPiA+IFBs ZWFzZSBsZXQgbWUga25vdyBpZiB0aGF0IG1hdGNoZXMgeW91ciB1bmRlcnN0YW5kaW5nLCB0aGlz Cj4gPiBodW5rIGlzIHVuY2xlYXIgdG8gbWUuCgpBcyB5b3UgY2FuIGV4cGVjdCwgdGhlIGFib3Zl IG1hdGNoZXMgbXkgdW5kZXJzdGFuZGluZyB0b28uCgo+Cj4gVGhpcyBwYXRjaCB3YXMgbWFkZSBm cm9tIHRoZSBhc3N1bXB0aW9uIHRoYXQgdGhpcyBGRi1BIGRyaXZlciBpcyBhCj4gZ3Vlc3QgZHJp dmVyLCB0aGF0IGlzLCBGRkFfTk9USUZJQ0FUSU9OX0lORk9fR0VUIGxhbmRzIGluIHRoZQo+IEh5 cGVydmlzb3IgYXQgRUwyLiBUaGUgRkZBX05PVElGSUNBVElPTl9JTkZPX0dFVCBjYWxsIGlzIG5l ZWRlZCB0bwo+IGtub3cgd2hpY2ggRkZBX05PVElGSUNBVElPTl9HRVQgY2FsbHMgc2hvdWxkIGJl IGRpc3BhdGNoZWQgaW4gdGhpcyBWTSwKPiB0byByZXRyaWV2ZSBnbG9iYWwgbm90aWZpY2F0aW9u cyBhbmQgcGVyIHZDUFUgbm90aWZpY2F0aW9ucy4KPgoKT0sgYW5kIEkgYXNzdW1lIHRoaXMgYWxp Z25zIHdpdGggdGhlIGJlbG93IGV4Y2VycHRzIGZyb20gdGhlIHNwZWMgYWJvdXQKRkZBX05PVElG SUNBVElPTl9JTkZPX0dFVDoKIgpUaGlzIEFCSSBpcyBpbnZva2VkIGJ5IGEgVk0gYXQgdGhlIE5v bi1zZWN1cmUgdmlydHVhbCBGRi1BIGluc3RhbmNlIHdpdGggdGhlClNNQyBvciBIVkMgY29uZHVp dHMgdG8gcmVxdWVzdCB0aGUgSHlwZXJ2aXNvciB0byByZXR1cm4gdGhlIGxpc3Qgb2YgU1BzIGFu ZApWTXMgdGhhdCBoYXZlIHBlbmRpbmcgbm90aWZpY2F0aW9ucy4gVGhlIEh5cGVydmlzb3IgcmV0 dXJucyB0aGUgbGlzdCBvZiB0aG9zZQplbmRwb2ludHMgd2hvc2Ugc2NoZWR1bGVycyBhcmUgaW1w bGVtZW50ZWQgaW4gdGhlIGNhbGxpbmcgVk0uCiIKCkJ1dCBpZiBPUFRFRSBkcml2ZXIgaW4gdGhl IFZNL2d1ZXN0IGlzIHRoZSBzY2hlZHVsZXIgZm9yIHRoZSBPUFRFRSBTUCwKdGhlbiBJIHdvdWxk IGV4cGVjdCB0aGUgRkYtQSBkcml2ZXIgdG8ganVzdCByZWdpc3RlciBmb3IgU1JJLiBJdCBjYW4n dCBiZQpOUEkgYXMgdGhhdCBjb250cmFkaWN0cyB3aXRoIGFib3ZlLgoKPiBJZiB0aGUgRkYtQSBk cml2ZXIgaXMgc3VwcG9zZWQgdG8gYmUgYSBob3N0IGRyaXZlciBpbnN0ZWFkLCB0aGVuIEkKPiB3 b25kZXIgd2hlcmUgd2Ugc2hvdWxkIGhhdmUgdGhlIGd1ZXN0IGRyaXZlci4KPgoKQXQgbGVhc3Qg c28gZmFyIHdlIGhhdmVuJ3QgZm91bmQgYSBzdHJvbmcgcmVhc29uIHRvIGhhdmUgZGlmZmVyZW50 IHZlcnNpb25zCmZvciBlYWNoLgoKPiBGb3IgY2xhcmlmaWNhdGlvbiwgbXkgc2V0dXAgaGFzIFhl biBhcyBoeXBlcnZpc29yIGF0IEVMMiAoZG9pbmcgdGhlCj4gaG9zdCBwcm9jZXNzaW5nKSwgVEYt QSBhcyBTUE1EIGF0IEVMMywgYW5kIE9QLVRFRSBhcyBTUE1DIGF0IFMtRUwxLgo+IEknbSB0ZXN0 aW5nIHRoaXMgb24gUUVNVS4gSSdtIGdvaW5nIHRvIHBvc3QgdGhlIFhlbiBwYXRjaGVzIHJlbGF0 aW5nCj4gdG8gdGhpcyBxdWl0ZSBzb29uLgo+CgpPSywgdGhhbmtzIGZvciB0aGUgc2V0dXAgaW5m by4KCj4gSSBiZWxpZXZlIHRoYXQgdW50aWwgbm93IHRoZSBGRi1BIGRyaXZlciBoYXMgd29ya2Vk IHVuZGVyIHRoZQo+IGFzc3VtcHRpb24gdGhhdCBpdCdzIGEgbm9uLXNlY3VyZSBwaHlzaWNhbCBG Ri1BIGluc3RhbmNlLiBXaXRoCj4gaHlwZXJ2aXNvciBhdCBFTDIgaXQgYmVjb21lcyBhIHZpcnR1 YWwgRkYtQSBpbnN0YW5jZS4KPgoKQWdyZWVkLgoKPiA+Cj4gPiA+ICAgICAgIH0KPiA+ID4gQEAg LTE0NDIsMTcgKzE0NTMsMTUgQEAgc3RhdGljIHZvaWQgZmZhX25vdGlmaWNhdGlvbnNfc2V0dXAo dm9pZCkKPiA+ID4gICAgICAgaW50IHJldCwgaXJxOwo+ID4gPgo+ID4gPiAgICAgICByZXQgPSBm ZmFfZmVhdHVyZXMoRkZBX05PVElGSUNBVElPTl9CSVRNQVBfQ1JFQVRFLCAwLCBOVUxMLCBOVUxM KTsKPiA+ID4gLSAgICAgaWYgKHJldCkgewo+ID4gPiAtICAgICAgICAgICAgIHByX2luZm8oIk5v dGlmaWNhdGlvbnMgbm90IHN1cHBvcnRlZCwgY29udGludWluZyB3aXRoIGl0IC4uXG4iKTsKPiA+ ID4gLSAgICAgICAgICAgICByZXR1cm47Cj4gPiA+IC0gICAgIH0KPiA+ID4gKyAgICAgaWYgKCFy ZXQpIHsKPiA+ID4KPiA+ID4gLSAgICAgcmV0ID0gZmZhX25vdGlmaWNhdGlvbl9iaXRtYXBfY3Jl YXRlKCk7Cj4gPiA+IC0gICAgIGlmIChyZXQpIHsKPiA+ID4gLSAgICAgICAgICAgICBwcl9pbmZv KCJOb3RpZmljYXRpb24gYml0bWFwIGNyZWF0ZSBlcnJvciAlZFxuIiwgcmV0KTsKPiA+ID4gLSAg ICAgICAgICAgICByZXR1cm47Cj4gPiA+ICsgICAgICAgICAgICAgcmV0ID0gZmZhX25vdGlmaWNh dGlvbl9iaXRtYXBfY3JlYXRlKCk7Cj4gPiA+ICsgICAgICAgICAgICAgaWYgKHJldCkgewo+ID4g PiArICAgICAgICAgICAgICAgICAgICAgcHJfZXJyKCJub3RpZmljYXRpb25fYml0bWFwX2NyZWF0 ZSBlcnJvciAlZFxuIiwgcmV0KTsKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgIHJldHVybjsK PiA+ID4gKyAgICAgICAgICAgICB9Cj4gPiA+ICsgICAgICAgICAgICAgZHJ2X2luZm8tPmJpdG1h cF9jcmVhdGVkID0gdHJ1ZTsKPiA+ID4gICAgICAgfQo+ID4gPiAtICAgICBkcnZfaW5mby0+Yml0 bWFwX2NyZWF0ZWQgPSB0cnVlOwo+ID4KPiA+IFRoaXMgYm9pbHMgZG93biB0byBzYXlpbmcgdGhh dCBGRkFfTk9USUZJQ0FUSU9OX0JJVE1BUF9DUkVBVEUgaXMgbm90Cj4gPiBpbXBsZW1lbnRlZCBm b3IgYSBWTSAoYmVjYXVzZSB0aGUgaHlwZXJ2aXNvciBzaG91bGQgdGFrZSBjYXJlIG9mIGlzc3Vp bmcKPiA+IHRoYXQgY2FsbCBiZWZvcmUgdGhlIFZNIGlzIGNyZWF0ZWQpLCBzbyBpZiB0aGUgZmVh dHVyZSBpcyBub3QgcHJlc2VudAo+ID4gdGhhdCBkb2VzIG5vdCBtZWFuIHRoYXQgbm90aWZpY2F0 aW9ucyBhcmVuJ3Qgc3VwcG9ydGVkLgo+ID4KPiA+IEl0IGlzIGp1c3QgYWJvdXQgcmVtb3Zpbmcg YSBzcHVyaW91cyBsb2cuCj4gPgo+ID4gSXMgdGhhdCBjb3JyZWN0ID8KPgo+IE5vLCB0aGlzIGlz IGFib3V0IG5vdCBhYm9ydGluZyBub3RpZmljYXRpb24gc2V0dXAganVzdCBiZWNhdXNlIHdlIGhh dmUKPiBhIGh5cGVydmlzb3IgdGhhdCBoYW5kbGVzIHRoZSBGRkFfTk9USUZJQ0FUSU9OX0JJVE1B UF9DUkVBVEUgY2FsbC4KClVuZGVyc3Rvb2QuCgo+IFdpdGggdGhpcyBwYXRjaCwgaWYgZmZhX2dl dF9ub3RpZl9pbnRpZCgpIGZhaWxzLCB0aGVuIHdlIGRvbid0IGhhdmUKPiBzdXBwb3J0IGZvciBu b3RpZmljYXRpb25zLgo+CgpCdXQgSSBzdGlsbCBkb24ndCB1bmRlcnN0YW5kIHRoZSBtaXh1cCBv ZiBTUkkgYW5kIE5QSSBpbiB5b3VyIHVzZWNhc2UKbW9kZWwuIEl0IHNob3VsZCBiZSBqdXN0IFNS SS4gTlBJIGhhbmRsZXIgbXVzdCBqdXN0IHVzZSBOT1RJRklDQVRJT05fR0VUCmFuZCBub3QgSU5G T19HRVQgYXMgTG9yZW56byBoYXMgZXhwbGFpbmVkIGFib3ZlLgoKLS0KUmVnYXJkcywKU3VkZWVw CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1h cm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5v cmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0t a2VybmVsCg== From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 3B0248120F for ; Tue, 19 Mar 2024 14:20:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.140.110.172 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710858023; cv=none; b=h/zCBhzqsw61J4YTZLND3J/dcf+sNPKLmafvkgfdT0Tp0iMGXgaT7qYCJaqQSTx6vhg7visefcgwO7qdYsLIm+CDvKVQVEg5KJgoQIK6ZJFF1qijPC/y880RvaHJx0x60ZQuy8LKQohjxMNs1SH0UnL153ddIRdPlq5l7K1w7h8= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710858023; c=relaxed/simple; bh=GLbxYrXg8mXxjrmR6+SdA9SoSheCqqhGIEidBHJPmR4=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=RT/UsayvCWF7zpXAPcBskwjpyOk/rOLGA2r3Rv4uilW95A/Tu2nY1dO6Bkd1Cx36Hm8RdgWxoGxsEDB8tcTSjQpvpt56nnlHEsof3mHL3k58Ep0yIv54+YITh0bIigMGpX6PL/EwEq1Z/hNVw6bpNYD1Wrxk5ZK1UmyZEM+H8vk= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; arc=none smtp.client-ip=217.140.110.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 4B88A106F; Tue, 19 Mar 2024 07:20:55 -0700 (PDT) Received: from bogus (e103737-lin.cambridge.arm.com [10.1.197.49]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 442423F762; Tue, 19 Mar 2024 07:20:19 -0700 (PDT) Date: Tue, 19 Mar 2024 14:20:16 +0000 From: Sudeep Holla To: Jens Wiklander Cc: Lorenzo Pieralisi , linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Sudeep Holla , Marc Bonnici , Olivier Deprez Subject: Re: [PATCH] firmware: arm_ffa: support running as a guest in a vm Message-ID: References: <20240307092132.943881-1-jens.wiklander@linaro.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: On Fri, Mar 08, 2024 at 01:35:05PM +0100, Jens Wiklander wrote: > On Fri, Mar 8, 2024 at 10:44 AM Lorenzo Pieralisi wrote: > > > > On Thu, Mar 07, 2024 at 10:21:32AM +0100, Jens Wiklander wrote: > > > Add support for running the driver in a guest to a hypervisor. The main > > > difference is that the notification interrupt is retrieved > > > with FFA_FEAT_NOTIFICATION_PENDING_INT and that > > > FFA_NOTIFICATION_BITMAP_CREATE doesn't need to be called. > > > > I have a couple of questions about these changes, comments below. > > > > > FFA_FEAT_NOTIFICATION_PENDING_INT gives the interrupt the hypervisor has > > > chosen to notify its guest of pending notifications. > > > > > > Signed-off-by: Jens Wiklander > > > --- > > > drivers/firmware/arm_ffa/driver.c | 45 ++++++++++++++++++------------- > > > 1 file changed, 27 insertions(+), 18 deletions(-) > > > > > > diff --git a/drivers/firmware/arm_ffa/driver.c b/drivers/firmware/arm_ffa/driver.c > > > index f2556a8e9401..c183c7d39c0f 100644 > > > --- a/drivers/firmware/arm_ffa/driver.c > > > +++ b/drivers/firmware/arm_ffa/driver.c > > > @@ -1306,17 +1306,28 @@ static void ffa_sched_recv_irq_work_fn(struct work_struct *work) > > > ffa_notification_info_get(); > > > } > > > > > > +static int ffa_get_notif_intid(int *intid) > > > +{ > > > + int ret; > > > + > > > + ret = ffa_features(FFA_FEAT_SCHEDULE_RECEIVER_INT, 0, intid, NULL); > > > + if (!ret) > > > + return 0; > > > + ret = ffa_features(FFA_FEAT_NOTIFICATION_PENDING_INT, 0, intid, NULL); > > > + if (!ret) > > > + return 0; > > > > I think that both interrupts should be probed in eg a host and the > > actions their handlers should take are different. > > +1, I have the same opinion. > > > + > > > + pr_err("Failed to retrieve one of scheduler Rx or notif pending interrupts\n"); > > > + return ret; > > > +} > > > + > > > static int ffa_sched_recv_irq_map(void) > > > { > > > - int ret, irq, sr_intid; > > > + int ret, irq, intid; > > > > > > - /* The returned sr_intid is assumed to be SGI donated to NS world */ > > > - ret = ffa_features(FFA_FEAT_SCHEDULE_RECEIVER_INT, 0, &sr_intid, NULL); > > > - if (ret < 0) { > > > - if (ret != -EOPNOTSUPP) > > > - pr_err("Failed to retrieve scheduler Rx interrupt\n"); > > > + ret = ffa_get_notif_intid(&intid); > > > + if (ret) > > > return ret; > > > - } > > > > > > if (acpi_disabled) { > > > struct of_phandle_args oirq = {}; > > > @@ -1329,12 +1340,12 @@ static int ffa_sched_recv_irq_map(void) > > > > > > oirq.np = gic; > > > oirq.args_count = 1; > > > - oirq.args[0] = sr_intid; > > > + oirq.args[0] = intid; > > > irq = irq_create_of_mapping(&oirq); > > > of_node_put(gic); > > > #ifdef CONFIG_ACPI > > > } else { > > > - irq = acpi_register_gsi(NULL, sr_intid, ACPI_EDGE_SENSITIVE, > > > + irq = acpi_register_gsi(NULL, intid, ACPI_EDGE_SENSITIVE, > > > ACPI_ACTIVE_HIGH); > > > #endif > > > > This means that for both schedule receiver interrupt and notification > > pending interrupt we would end up calling FFA_NOTIFICATION_INFO_GET (?), > > which is not correct AFAIK, for many reasons. > > > > If there is a pending notification for a VM, a scheduler receiver > > interrupt is triggered in the host. This would end up calling > > FFA_NOTIFICATION_INFO_GET(), that is destructive (calling it again in > > the notified *guest* - in the interrupt handler triggered by the > > hypervisor - would not return the pending notifications for it). > > > > Therefore, the action for the pending notification interrupt should > > be different and should just call FFA_NOTIFICATION_GET. > > > > Please let me know if that matches your understanding, this > > hunk is unclear to me. As you can expect, the above matches my understanding too. > > This patch was made from the assumption that this FF-A driver is a > guest driver, that is, FFA_NOTIFICATION_INFO_GET lands in the > Hypervisor at EL2. The FFA_NOTIFICATION_INFO_GET call is needed to > know which FFA_NOTIFICATION_GET calls should be dispatched in this VM, > to retrieve global notifications and per vCPU notifications. > OK and I assume this aligns with the below excerpts from the spec about FFA_NOTIFICATION_INFO_GET: " This ABI is invoked by a VM at the Non-secure virtual FF-A instance with the SMC or HVC conduits to request the Hypervisor to return the list of SPs and VMs that have pending notifications. The Hypervisor returns the list of those endpoints whose schedulers are implemented in the calling VM. " But if OPTEE driver in the VM/guest is the scheduler for the OPTEE SP, then I would expect the FF-A driver to just register for SRI. It can't be NPI as that contradicts with above. > If the FF-A driver is supposed to be a host driver instead, then I > wonder where we should have the guest driver. > At least so far we haven't found a strong reason to have different versions for each. > For clarification, my setup has Xen as hypervisor at EL2 (doing the > host processing), TF-A as SPMD at EL3, and OP-TEE as SPMC at S-EL1. > I'm testing this on QEMU. I'm going to post the Xen patches relating > to this quite soon. > OK, thanks for the setup info. > I believe that until now the FF-A driver has worked under the > assumption that it's a non-secure physical FF-A instance. With > hypervisor at EL2 it becomes a virtual FF-A instance. > Agreed. > > > > > } > > > @@ -1442,17 +1453,15 @@ static void ffa_notifications_setup(void) > > > int ret, irq; > > > > > > ret = ffa_features(FFA_NOTIFICATION_BITMAP_CREATE, 0, NULL, NULL); > > > - if (ret) { > > > - pr_info("Notifications not supported, continuing with it ..\n"); > > > - return; > > > - } > > > + if (!ret) { > > > > > > - ret = ffa_notification_bitmap_create(); > > > - if (ret) { > > > - pr_info("Notification bitmap create error %d\n", ret); > > > - return; > > > + ret = ffa_notification_bitmap_create(); > > > + if (ret) { > > > + pr_err("notification_bitmap_create error %d\n", ret); > > > + return; > > > + } > > > + drv_info->bitmap_created = true; > > > } > > > - drv_info->bitmap_created = true; > > > > This boils down to saying that FFA_NOTIFICATION_BITMAP_CREATE is not > > implemented for a VM (because the hypervisor should take care of issuing > > that call before the VM is created), so if the feature is not present > > that does not mean that notifications aren't supported. > > > > It is just about removing a spurious log. > > > > Is that correct ? > > No, this is about not aborting notification setup just because we have > a hypervisor that handles the FFA_NOTIFICATION_BITMAP_CREATE call. Understood. > With this patch, if ffa_get_notif_intid() fails, then we don't have > support for notifications. > But I still don't understand the mixup of SRI and NPI in your usecase model. It should be just SRI. NPI handler must just use NOTIFICATION_GET and not INFO_GET as Lorenzo has explained above. -- Regards, Sudeep