[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
>
|