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

Re: [PATCH v2 3/7] xen/arm: Introduce frame_table and virt_to_page


  • To: "Orzel, Michal" <michal.orzel@xxxxxxx>
  • From: Luca Fancellu <Luca.Fancellu@xxxxxxx>
  • Date: Mon, 17 Mar 2025 09:33:50 +0000
  • Accept-language: en-GB, en-US
  • Arc-authentication-results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 63.35.35.123) smtp.rcpttodomain=lists.xenproject.org smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com] dmarc=[1,1,header.from=arm.com])
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none
  • Arc-message-signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=tav3N0ktQnSBMpaNGTn9cRj3dRSw2YBmPVjT9UQHIrg=; b=w5gOgIluIahB1V6WEMUwobGpYA+ol6PorOfs5K8Dl7ngYcLMUTJOmJLTTJfscjAyddkzdrli559bKFq9gMs4i3MSjxmL6G+VOG/9FEHrHcJF3wiGgODL8me2SAYR9qtZyI7svEzaEe0SxDRmqVdhpqwHym0Z7TYAB9qE7SrHEnGsvnRgnp2WNW7oCO5EkZaIK1KG2NTsv1euhBpeYZbNRE/A/qOPWt4HpkrPrR2hzt8fG61P0wcyLZt2IFMpOmF2Il0IdViln0H3KWckYiiO1SvrgWux/PLShkzSq8NtrklDZFPjOSdYgg+soamSf8CiQPweIRavB9NohUiIzzalyA==
  • Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=tav3N0ktQnSBMpaNGTn9cRj3dRSw2YBmPVjT9UQHIrg=; b=eiB1f6cCIgntbqmE4r8b5tdGh8ctQOUoF9DhQ34XOpvFE4wCar3sGgWLT/u/tXHHeuXaMdmTyLACnfotOrzJUbQL0SFYt2Xw7nFjHhkcOJ+7MXsg+8Jmp9SNEIfVHkmdR3qgq9QiTOxjp1omY42HSw45C2iJ+2hc5FrmgqcoV2qYq58/DId5Cl0Wd25ebkKmeJzsrZCaHOB7bwFMX2Qvq4uRi79+hUxFsofiMRvm/4GvwDci8WZMswMXqgHEhXxicT1BNnuwM4lCdcRMsK2DgmLgiit3aRkxadMX232Y54NbreBTczkn/NUcvKVBdJnAgc4vQgzbBn0ZvNb+fAI5VA==
  • Arc-seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass; b=tuhPbmi+X3aWZtgu9QPpnIB9+skhmFh5uJWtAWsLnf9ApN7fGnJFWjf6nRhHibB/1vSSM1QFD0x4bBniAE6SVLyfqKO/HBeHydrE8wBvWPF4E4ZglxLcab96reaOjxO4pJ2tc93uSc99gazxWYz1ctLq6yqRYyO5NYw4oJVo9lswvHtI/e8uRKD3kDDWdKKXfePh9HRfgOSh5voC8qAlq7iwZQqE5Qu1YJNidCmES4VS8CNW/8Dx7GvHtNBPMJR0AaM50t+dERMAl9cHjQwWvnEmMI7HeMC99xvqNAz5NH2K7D+W0sx4+b4nguwUaPoiZ0BOcB6+evdx+4uj4BBS7Q==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=JelzoZDBtEbWKrIpzj2GnOpKAy1pb694rfq1qp1DM3xtY4S5OYo3q7k07m1x0VwjDgJa+mhgbPZrM7A8nd1yJb99k7HmY3gUmGMeGYNmYPffuDFc/vjVjUEasbmTdJ2QOG+ocWpT6HEG1IbDOq6ObVXfZSfOKxLC2IdrXMw95/xDnTf/ZCADI8QXKdq7GFcc7afUmB0wUnNI2ikB8a2m3mItDZUw0UyYfS0VXF0yipKwKjtPd5kBBeo9yFqR0opG3yYRmFS7SCKUhTIT3QdcdQl/pS+kwRuFVaM6A/Kau7YVP3xFxLulYQArOXX1iAkslj3t3a9LDmNDuv6zJEopyw==
  • Authentication-results-original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com;
  • Cc: "xen-devel@xxxxxxxxxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxxxxxxxxx>, Stefano Stabellini <sstabellini@xxxxxxxxxx>, Julien Grall <julien@xxxxxxx>, Bertrand Marquis <Bertrand.Marquis@xxxxxxx>, Volodymyr Babchuk <Volodymyr_Babchuk@xxxxxxxx>
  • Delivery-date: Mon, 17 Mar 2025 09:34:13 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>
  • Nodisclaimer: true
  • Original-authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com;
  • Thread-index: AQHblqk5MPCSPLAoTkeN9izbg86F2bN3ENyAgAABDgA=
  • Thread-topic: [PATCH v2 3/7] xen/arm: Introduce frame_table and virt_to_page

Hi Michal,

> On 17 Mar 2025, at 09:29, Orzel, Michal <michal.orzel@xxxxxxx> wrote:
> 
> 
> 
> On 16/03/2025 20:24, Luca Fancellu wrote:
>> 
>> 
>> Introduce frame_table in order to provide the implementation of
>> virt_to_page for MPU system, move the MMU variant in mmu/mm.h.
>> 
>> Introduce FRAMETABLE_NR that is required for 'pdx_group_valid' in
>> pdx.c, but leave the initialisation of the frame table to a later
>> stage.
>> Define FRAMETABLE_SIZE for MPU to support up to 1TB of ram, as the
>> only current implementation of armv8-r aarch64, which is cortex R82,
>> can address up to that memory.
> When mentioning support statements like this one, it'd be beneficial to 
> provide
> a reference to a doc of some sort.

So the only reference I have is this: 
https://developer.arm.com/Processors/Cortex-R82

but I would not be confident to use the link in the commit message as it could 
go stale
very quickly. So I’m not sure about what I can do more.

> 
> Also, shouldn't this be occasion to clarify SUPPORT statement as for max RAM
> supported for ARMv8R-AArch64? ARMv8R support is experimental, so I'm not 100%
> sure if we need to provide support statement for it at this stage though. 
> Better
> check with others.
> 

Ok, I’ll stay tuned for the opinion of the others


>> 
>> diff --git a/xen/arch/arm/include/asm/mpu/mm.h 
>> b/xen/arch/arm/include/asm/mpu/mm.h
>> index 6cfd0f5cd2c2..3a0a60dbfa18 100644
>> --- a/xen/arch/arm/include/asm/mpu/mm.h
>> +++ b/xen/arch/arm/include/asm/mpu/mm.h
>> @@ -3,9 +3,13 @@
>> #ifndef __ARM_MPU_MM_H__
>> #define __ARM_MPU_MM_H__
>> 
>> +#include <xen/bug.h>
>> #include <xen/macros.h>
>> #include <xen/page-size.h>
>> #include <xen/types.h>
>> +#include <asm/mm.h>
>> +
>> +extern struct page_info *frame_table;
>> 
>> #define virt_to_maddr(va) ((paddr_t)((vaddr_t)(va) & PADDR_MASK))
>> 
>> @@ -15,6 +19,17 @@ static inline void *maddr_to_virt(paddr_t ma)
>>     return _p(ma);
>> }
>> 
>> +/* Convert between virtual address to page-info structure. */
>> +static inline struct page_info *virt_to_page(const void *v)
>> +{
>> +    paddr_t paddr = virt_to_maddr(v);
>> +    unsigned long pdx = paddr_to_pdx(paddr);
>> +
>> +    ASSERT(mfn_valid(maddr_to_mfn(paddr)));
>> +
>> +    return frame_table + pdx - frametable_base_pdx;
>> +}
> This could be simplified (and number of conversions reduced) by doing sth 
> like:
> mfn_t mfn = virt_to_mfn(v);
> 
> ASSERT(mfn_valid(mfn));
> 
> return mfn_to_page(mfn);

Right, I’ll test these and I’ll use them.


> 
> Other than that:
> Reviewed-by: Michal Orzel <michal.orzel@xxxxxxx>

Thanks!

> 
> ~Michal
> 


 


Rackspace

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