[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [RFC v1 3/5] xen/arm: introduce SCMI-SMC mediator driver
On Wed, 19 Jan 2022, Oleksii Moisieiev wrote: > On Thu, Jan 06, 2022 at 04:04:34PM +0000, Julien Grall wrote: > > On 06/01/2022 15:43, Oleksii Moisieiev wrote: > > > On Thu, Jan 06, 2022 at 02:02:10PM +0000, Julien Grall wrote: > > > > On 06/01/2022 13:53, Oleksii Moisieiev wrote: > > > > > Hi Julien, > > > > > > > > > > On Mon, Jan 03, 2022 at 01:14:17PM +0000, Julien Grall wrote: > > > > > > Hi, > > > > > > > > > > > > On 24/12/2021 17:02, Oleksii Moisieiev wrote: > > > > > > > On Fri, Dec 24, 2021 at 03:42:42PM +0100, Julien Grall wrote: > > > > > > > > On 20/12/2021 16:41, Oleksii Moisieiev wrote: > > > > > > > > > > 2) What are the expected memory attribute for the > > > > > > > > > > regions? > > > > > > > > > > > > > > > > > > xen uses iommu_permit_access to pass agent page to the guest. > > > > > > > > > So guest can access the page directly. > > > > > > > > > > > > > > > > I think you misunderstood my comment. Memory can be mapped with > > > > > > > > various type > > > > > > > > (e.g. Device, Memory) and attribute (cacheable, > > > > > > > > non-cacheable...). What will > > > > > > > > the firmware expect? What will the guest OS usually? > > > > > > > > > > > > > > > > The reason I am asking is the attributes have to matched to > > > > > > > > avoid any > > > > > > > > coherency issues. At the moment, if you use > > > > > > > > XEN_DOMCTL_memory_mapping, Xen > > > > > > > > will configure the stage-2 to use Device nGnRnE. As the result, > > > > > > > > the result > > > > > > > > memory access will be Device nGnRnE which is very strict. > > > > > > > > :w > > > > > > > > > > > > > > Let me share with you the configuration example: > > > > > > > scmi expects memory to be configured in the device-tree: > > > > > > > > > > > > > > cpu_scp_shm: scp-shmem@0xXXXXXXX { > > > > > > > compatible = "arm,scmi-shmem"; > > > > > > > reg = <0x0 0xXXXXXX 0x0 0x1000>; > > > > > > > }; > > > > > > > > > > > > > > where XXXXXX address I allocate in alloc_magic_pages function. > > > > > > > > > > > > The goal of alloc_magic_pages() is to allocate RAM. However, what > > > > > > you want > > > > > > is a guest physical address and then map a part of the shared page. > > > > > > > > > > Do you mean that I can't use alloc_magic_pages to allocate shared > > > > > memory region for SCMI? > > > > Correct. alloc_magic_pages() will allocate a RAM page and then assign > > > > to the > > > > guest. From your description, this is not what you want because you will > > > > call XEN_DOMCTL_memory_mapping (and therefore replace the mapping). > > > > > > > > > > Ok thanks, I will refactor this part in v2. > > > > > > > > > > > > > > > > > > > > I can see two options here: > > > > > > 1) Hardcode the SCMI region in the memory map > > > > > > 2) Create a new region in the memory map that can be used for > > > > > > reserving > > > > > > memory for mapping. > > > > > > > > > > Could you please explain what do you mean under the "new region in the > > > > > memory map"? > > > > > > > > I mean reserving some guest physical address that could be used for map > > > > host > > > > physical address (e.g. SCMI region, GIC CPU interface...). > > > > > > > > So rather than hardcoding the address, we have something more flexible. > > > > > > > > > > Ok, I will fix that in v2. > > > > Just for avoidance of doubt. I was clarify option 2 and not requesting to > > implement. That said, if you want to implement option 2 I would be happy to > > review it. > > > > I'm thinking about the best way to reserve address for the domain. > We have xen_pfn_t shared_info_pfn in struct xc_dom_image which is not > used for Arm architecture. It can be set from shared_info_arm callback, > defined in xg_dom_arm.c. > I can use shared_info to store address of the SCMI and then use map_sci_page > to > call XEN_DOMCTL_memory_mapping. > > This will allow me to reuse existing functionality and do not allocate > extra RAM. > > What do you think about that? I cannot speak for Julien but I think he meant something else (Julien please correct me if I am wrong.) Exposing addresses via device tree is not a problem. Normally we pick a fixed address for guest resources, for instance GUEST_GICD_BASE, see xen/include/public/arch-arm.h. We could do that for SCMI as well and it is basically approach 1). However, it is a bit inflexible and could cause issues with things like direct-map (https://marc.info/?l=xen-devel&m=163997768108997). A more flexible way would be for the SCMI guest address to be dynamically generated somehow. I am not sure how Julien envisioned the address to be generated exactly. Thanks to Oleksandr's work we have a way to find large regions of "free" address space. It is currently used for grant-table mappings. Maybe we could use a subset of it for SCMI? It might be best to wait for Julien's answer as he might have a better idea.
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |