[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [RFC v1 3/5] xen/arm: introduce SCMI-SMC mediator driver


  • To: Julien Grall <julien@xxxxxxx>
  • From: Oleksii Moisieiev <Oleksii_Moisieiev@xxxxxxxx>
  • Date: Thu, 6 Jan 2022 13:53:29 +0000
  • Accept-language: en-US
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com; dkim=pass header.d=epam.com; arc=none
  • Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=d3/EeVGGR9TVnkhJX98pVW672igX0DoBOOdHvgyMcvk=; b=GzSkwwqcwFKkAIBjs33Zrn7ClIn/CspoUDA04oiCgLt/ptthMpQqBrEQWEMzk6Ejcw7BR7qb4uDMbaWm62HHNu6VQPAPpr4HPZhieCIuI1HC0w9Bm2ZJy+n31LK1WvG0j4fwmQblahZ/xruOzJ0KRR1JGGtm/2gpB9GLZgilG1O4tdMfB2qvCEVP0PPzk50SmZWGu5cj3TK0BmNvbQM064fH3x+8CPvVcwIiROOCxnXeNMngHjlWBvzhQcEjRPbmdYaUI4zJPbicHus9bEXr+xqbLhJmBRw73tIiXyn+ywVRlUOqcXlYuDFWYOPEd/NO3tHbJcalVnptwydi08QO4Q==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=SXrpjAXxKS4DNHhsFYKYBXSjxKVkyg62gojWHlbYq2BFjVK8WOgfZXBCOF9yvhkqFYrxQIwiDuY4tBrOgyoHiC105MrBbRdj7D4ioXt8jSyrXlPb6+2MDdG67EfbsKW6AiK9Bpq/OLbZowwKNLMsP2E/icY2kHc0HNJCiQfzjx314Do6laQfoSWvKE7lJaGwe5NTOmaJLvbJuUSMT8p8/qJOtFen4qY6HuvlS0D70jhk1CExvwmUfiqdrGBVudiSs6MhElvfLx/3RtaYkxygbX+7ywTj+6UNRXU4Pm1N5BD20dkRGQUQ5D6N4RID+Cli28ZbWPUeU5qMNGQ7tBNimA==
  • Cc: Oleksandr <olekstysh@xxxxxxxxx>, "xen-devel@xxxxxxxxxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxxxxxxxxx>, Stefano Stabellini <sstabellini@xxxxxxxxxx>, Volodymyr Babchuk <Volodymyr_Babchuk@xxxxxxxx>, Bertrand Marquis <bertrand.marquis@xxxxxxx>
  • Delivery-date: Thu, 06 Jan 2022 13:53:51 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>
  • Thread-index: AQHX8M3JF7Ng56/tV0+8/7pODiaWfKw2ks6AgAAeBwCAAAQPgIAABfaAgAAsl4CABKcNgIAGOOkAgAAnH4CAD3d9gIAEwfEA
  • Thread-topic: [RFC v1 3/5] xen/arm: introduce SCMI-SMC mediator driver

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.
> > > 
> > 
> > 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?

> 
> 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"?

> 
> We still have plenty of space in the guest memory map. So the former is
> probably going to be fine for now.
> 
> > Then I get paddr of the scmi channel for this domain and use
> > XEN_DOMCTL_memory_mapping to map scmi channel address to gfn.
> >  > Hope I wass able to answer your question.
> 
> What you provided me is how the guest OS will locate the shared memory. This
> still doesn't tell me which memory attribute will be used to map the page in
> Stage-1 (guest page-tables).
> 
> To find that out, you want to look at the driver and how the mapping is
> done. The Linux driver (drivers/firmware/arm_scmi) is using devm_ioremap()
> (see smc_chan_setup()).
> 
> Under the hood, the function devm_ioremap() is using PROT_DEVICE_nGnRE
> (arm64) which is one of the most restrictive memory attribute.
> 
> This means the firmware should be able to deal with the most restrictive
> attribute and therefore using XEN_DOMCTL_memory_mapping to map the shared
> page in stage-2 should be fine.
> 

I'm using vmap call to map channel memory (see smc_create_channel()).
vmap call sets PAGE_HYPERVISOR flag which sets MT_NORMAL (0x7) flag.
Considering that protocol is synchronous and only one agent per channel is
expected - this works fine for now.
But I agree that the same memory attributes should be used in xen and
kernel. I fill fix that in v2.

Best regards,
Oleksii.


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.