All of lore.kernel.org
 help / color / mirror / Atom feed
From: Julien Grall <julien@xen.org>
To: Stefano Stabellini <sstabellini@kernel.org>,
	Penny Zheng <Penny.Zheng@arm.com>
Cc: xen-devel@lists.xenproject.org, wei.chen@arm.com,
	Bertrand Marquis <bertrand.marquis@arm.com>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
Subject: Re: [PATCH v2 8/9] xen/arm: create shared memory nodes in guest device tree
Date: Sat, 7 May 2022 12:26:05 +0100	[thread overview]
Message-ID: <ec3379a9-e182-4358-ccf8-e07712ea9dcd@xen.org> (raw)
In-Reply-To: <alpine.DEB.2.22.394.2205061750400.43560@ubuntu-linux-20-04-desktop>

Hi,

On 07/05/2022 02:09, Stefano Stabellini wrote:
> On Fri, 6 May 2022, Penny Zheng wrote:
>> We expose the shared memory to the domU using the "xen,shared-memory-v1"
>> reserved-memory binding. See
>> Documentation/devicetree/bindings/reserved-memory/xen,shared-memory.txt
>> in Linux for the corresponding device tree binding.
>>
>> To save the cost of re-parsing shared memory device tree configuration when
>> creating shared memory nodes in guest device tree, this commit adds new field
>> "shm_mem" to store shm-info per domain.
>>
>> For each shared memory region, a range is exposed under
>> the /reserved-memory node as a child node. Each range sub-node is
>> named xen-shmem@<address> and has the following properties:
>> - compatible:
>>          compatible = "xen,shared-memory-v1"
>> - reg:
>>          the base guest physical address and size of the shared memory region
>> - xen,id:
>>          a string that identifies the shared memory region.
>>
>> Signed-off-by: Penny Zheng <penny.zheng@arm.com>
>> ---
>> v2 change:
>> - using xzalloc
>> - shm_id should be uint8_t
>> - make reg a local variable
>> - add #address-cells and #size-cells properties
>> - fix alignment
>> ---
>>   xen/arch/arm/domain_build.c       | 144 ++++++++++++++++++++++++++++++
>>   xen/arch/arm/include/asm/domain.h |   1 +
>>   xen/arch/arm/include/asm/setup.h  |   1 +
>>   3 files changed, 146 insertions(+)
>>
>> diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c
>> index 8d299a3616..f08606d2c0 100644
>> --- a/xen/arch/arm/domain_build.c
>> +++ b/xen/arch/arm/domain_build.c
>> @@ -894,6 +894,26 @@ static int __init allocate_shared_memory(struct domain *d,
>>       return ret;
>>   }
>>   
>> +static int __init append_shm_bank_to_domain(struct domain *d,
>> +                                            paddr_t start, paddr_t size,
>> +                                            u32 shm_id)
>> +{
>> +    /* Allocate memory at first insertion. */
>> +    if ( d->arch.shm_mem == NULL )
>> +    {
>> +        d->arch.shm_mem = xzalloc(struct meminfo);
>> +        if ( d->arch.shm_mem == NULL )
>> +            return -ENOMEM;
>> +    }
>> +
>> +    d->arch.shm_mem->bank[d->arch.shm_mem->nr_banks].start = start;
>> +    d->arch.shm_mem->bank[d->arch.shm_mem->nr_banks].size = size;
>> +    d->arch.shm_mem->bank[d->arch.shm_mem->nr_banks].shm_id = shm_id;
>> +    d->arch.shm_mem->nr_banks++;

bank[] is a fixed size array. So we should check we don't overflow.

>> +
>> +    return 0;
>> +}
> 
> Can we call xfree(d->arch.shm_mem) at domain destruction?
> 
> Even better, we might be able to call it earlier, soon after the
> make_resv_memory_node() call because we don't need it any longer after
> that?

If this is only used during domain build, then the field should move to 
kernel_info. With that, there will also be no concern on whether we need 
to allocate the structure or not.

Cheers,

-- 
Julien Grall


  reply	other threads:[~2022-05-07 11:26 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-05-06  7:24 [PATCH v2 0/9] static shared memory on dom0less system Penny Zheng
2022-05-06  7:24 ` [PATCH v2 1/9] xen/arm: introduce static shared memory Penny Zheng
2022-05-07  1:08   ` Stefano Stabellini
2022-05-07  6:43     ` Penny Zheng
2022-05-06  7:24 ` [PATCH v2 2/9] xen/arm: allocate static shared memory to the default owner dom_io Penny Zheng
2022-05-06 10:13   ` Jan Beulich
2022-05-07  1:08   ` Stefano Stabellini
2022-05-06  7:24 ` [PATCH v2 3/9] xen/arm: allocate static shared memory to a specific owner domain Penny Zheng
2022-05-07  1:08   ` Stefano Stabellini
2022-05-06  7:24 ` [PATCH v2 4/9] xen/arm: introduce put_page_nr and get_page_nr Penny Zheng
2022-05-07  1:08   ` Stefano Stabellini
2022-05-07  8:04     ` Penny Zheng
2022-05-09 19:10       ` Stefano Stabellini
2022-05-07  9:10   ` Julien Grall
2022-05-06  7:24 ` [PATCH v2 5/9] xen/arm: Add additional reference to owner domain when the owner is allocated Penny Zheng
2022-05-07  1:09   ` Stefano Stabellini
2022-05-06  7:24 ` [PATCH v2 6/9] xen/arm: add P2M type parameter in guest_physmap_add_pages Penny Zheng
2022-05-07  1:09   ` Stefano Stabellini
2022-05-07  9:00   ` Julien Grall
2022-05-07  9:20     ` Penny Zheng
2022-05-06  7:25 ` [PATCH v2 7/9] xen/arm: set up shared memory foreign mapping for borrower domain Penny Zheng
2022-05-07  1:09   ` Stefano Stabellini
2022-05-06  7:25 ` [PATCH v2 8/9] xen/arm: create shared memory nodes in guest device tree Penny Zheng
2022-05-07  1:09   ` Stefano Stabellini
2022-05-07 11:26     ` Julien Grall [this message]
2022-05-06  7:25 ` [PATCH v2 9/9] xen/arm: enable statically shared memory on Dom0 Penny Zheng
2022-05-07  1:09   ` Stefano Stabellini

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=ec3379a9-e182-4358-ccf8-e07712ea9dcd@xen.org \
    --to=julien@xen.org \
    --cc=Penny.Zheng@arm.com \
    --cc=Volodymyr_Babchuk@epam.com \
    --cc=bertrand.marquis@arm.com \
    --cc=sstabellini@kernel.org \
    --cc=wei.chen@arm.com \
    --cc=xen-devel@lists.xenproject.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.