From: Julien Grall <julien@xen.org>
To: Stefano Stabellini <sstabellini@kernel.org>,
Oleksandr Tyshchenko <olekstysh@gmail.com>
Cc: robh+dt@kernel.org, Mark Rutland <mark.rutland@arm.com>,
devicetree@vger.kernel.org
Subject: Re: Clarification regarding updating "Xen hypervisor device tree bindings on Arm"
Date: Fri, 6 Aug 2021 23:03:35 +0100 [thread overview]
Message-ID: <0e11e898-b144-db04-a6cf-cc597191b65a@xen.org> (raw)
In-Reply-To: <f45250de-fdca-18c4-044b-276d0ff66b05@xen.org>
On 06/08/2021 23:00, Julien Grall wrote:
> Hi Stefano,
>
> On 06/08/2021 21:15, Stefano Stabellini wrote:
>> On Fri, 6 Aug 2021, Oleksandr Tyshchenko wrote:
>>> Hello, all.
>>>
>>> I would like to clarify some bits regarding a possible update for
>>> "Xen device tree bindings for the guest" [1].
>>>
>>> A bit of context:
>>> We are considering extending "reg" property under the hypervisor node
>>> and we would like to avoid breaking backward compatibility.
>>> So far, the "reg" was used to carry a single region for the grant
>>> table mapping only and it's size is quite small for the new improvement
>>> we are currently working on.
>>>
>>> What we want to do is to extend the current region [reg: 0] and add
>>> an extra regions [reg: 1-N] to be used as a safe address space for any
>>> Xen specific mappings. But, we need to be careful about running "new"
>>> guests (with the improvement being built-in already) on "old" Xen
>>> which is not aware of the extended regions, so we need the binding to
>>> be extended in a backward compatible way. In order to detect whether
>>> we are running on top of the "new" Xen (and it provides us enough
>>> space to be used for improvement), we definitely need some sign to
>>> indicate that.
>>>
>>> Could you please clarify, how do you expect the binding to be changed
>>> in the backward compatible way?
>>> - by adding an extra compatible (as it is a change of the binding
>>> technically)
>>> - by just adding new property (xen,***) to indicate that "reg"
>>> contains enough space
>>> - other option
>>
>> The current description is:
>>
>> - reg: specifies the base physical address and size of a region in
>> memory where the grant table should be mapped to, using an
>> HYPERVISOR_memory_op hypercall [...]
I actually forgot to reply on this one and only remembered now. There
are some funny things happening in Xen on Arm when mapping the grant
table. At the moment, we rely on the grant table to always be mapped for
all the components (toolstack, OS, firmware...) at the same place.
If the region end up to be re-used by something else, then it will end
up to unmap it... We would need to fix it before we can fully re-use the
region.
>>
>>
>> Although it says "a region" I think that adding multiple ranges would be
>> fine and shouldn't break backward compatibility.
>>
>> In addition, the purpose of the region was described as "where the grant
>> table should be mapped". In other words, it is a safe address range
>> where the OS can map Xen special pages.
>>
>> Your proposal is to extend the region to be bigger to allow the OS to
>> map more Xen special pages. I think it is a natural extension to the
>> binding, which should be backward compatible.
>
> I agree that extending the reg (or even adding a second region) should
> be fine for older OS.
>
>>
>> Rob, I am not sure what is commonly done in these cases. Maybe we just
>> need an update to the description of the binding? I am also fine with
>> adding a new compatible string if needed.
>
> So the trouble is how a newer Linux version knows that the region is big
> enough to deal with all the foreign/grant mapping?
>
> If you run on older Xen, then the region will only be 16MB. This means
> the Linux will have to fallback on stealing RAM as it is today.
>
> IOW, XSA-300 will still be a thing. On newer Xen (or toolstack), we
> ideally want the OS to not fallback on stealing RAM (and close XSA-300).
> This is where we need a way to advertise it.
>
> The question here is whether we want to use a property or a compatible
> for this.
>
> I am leaning towards the latter because this is an extension of the
> bindings. However, I wasn't entirely whether this was a normal way to do
> it.
>
> Cheers,
>
--
Julien Grall
next prev parent reply other threads:[~2021-08-06 22:36 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <CAPD2p-kPXFgaLtwy95ZswYUK3xCDaxC4L85vQw=EvTWgehJ7-A@mail.gmail.com>
2021-08-06 20:15 ` Clarification regarding updating "Xen hypervisor device tree bindings on Arm" Stefano Stabellini
2021-08-06 22:00 ` Julien Grall
2021-08-06 22:03 ` Julien Grall [this message]
2021-08-06 22:26 ` Stefano Stabellini
2021-08-06 22:57 ` Julien Grall
2021-08-27 13:06 ` Oleksandr
2021-08-28 0:05 ` Stefano Stabellini
2021-08-28 17:58 ` Oleksandr
2021-08-31 18:17 ` Julien Grall
2021-08-31 21:19 ` Stefano Stabellini
2021-08-31 21:50 ` Julien Grall
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=0e11e898-b144-db04-a6cf-cc597191b65a@xen.org \
--to=julien@xen.org \
--cc=devicetree@vger.kernel.org \
--cc=mark.rutland@arm.com \
--cc=olekstysh@gmail.com \
--cc=robh+dt@kernel.org \
--cc=sstabellini@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).