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

Re: [PATCH v1 1/3] xen/riscv: introduce setup_initial_pages


  • To: Oleksii Kurochko <oleksii.kurochko@xxxxxxxxx>, xen-devel@xxxxxxxxxxxxxxxxxxxx
  • From: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
  • Date: Fri, 24 Feb 2023 15:23:51 +0000
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=citrix.com; dmarc=pass action=none header.from=citrix.com; dkim=pass header.d=citrix.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=t2hCQnm3TZvBvFpIF9lO32P5+ojF4fZG0l5NOWjcCMI=; b=PVD3WhtMaAl1juAWo7gBk1AUKRKv/cL+mORqCmDkDPMEa2VRomSUI1qRSCmx07jK/KGcW1QZQhYxXTqf2TbMaE5NhYgBwpm/5QEYpBO1Ys9NT1n1bWuZcPKAu4/JLPHDSol3NgCfg9kGR4R97wMyqZnCF6lfgBO3dMhpRociQrvjgChSCl3CtcLwJVnwa/ErFDEB+O9QV3Ivbz4UA8+OJqCJJjN711tjv3Bz9jJ85gXaYrAK9wUQeqpmSJ8EJ/c9XzF77GRhgNFJMJXrsb5MTX3vbcUEFpGdstudu7QFc8fUAm2moE1uApQVBUa2y3pgmxpPlgfKkP6+N2UgK59BZg==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Btp6KrTG9pMhsgk+RfqYkUAvH08rVCXeJqOdEnrhOHsLXWN59MKDfP/5Ljnm02FEiDDqRZCURtM99r6vYfuejRrE3r2QTLZlqcYgugbd36jR3vsK+L7gEX9vL6+sn1jG3uIbg0Mt0TXwWQEzprV6L3JDluwpDw2zKtK6lpZiABj5/O1nChv7wOSvtvASL8vN2XD7Usydzt8k3ALg++jufn1yW3c/P1xv2WTUiBoJS5t8A+q0EHoJLLMTgd9wMPAMShbjTk994v0yJ0YtD8ZJc7re+uoPkZWvz8TBrqk//8XUb5PtI5rEoURgas+6Bobq2pfelafZ36RO5uYkTzXWSA==
  • Authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=citrix.com;
  • Cc: Stefano Stabellini <sstabellini@xxxxxxxxxx>, Gianluca Guida <gianluca@xxxxxxxxxxxx>, Bob Eshleman <bobbyeshleman@xxxxxxxxx>, Alistair Francis <alistair.francis@xxxxxxx>, Connor Davis <connojdavis@xxxxxxxxx>
  • Delivery-date: Fri, 24 Feb 2023 15:24:11 +0000
  • Ironport-data: A9a23:P5PrpagAN+LnQtGMH9tXDP4xX161+BEKZh0ujC45NGQN5FlHY01je htvX2qOb62ONzf9LtEjadizpEsPupfSnYRrHVRqrS9kFS8b9cadCdqndUqhZCn6wu8v7q5Ex 55HNoSfdpBcolv0/ErF3m3J9CEkvU2wbuOgTrWCYmYpHlUMpB4J0XpLg/Q+jpNjne+3CgaMv cKai8DEMRqu1iUc3lg8sspvkzsy+qWt0N8klgZmP6sT5gWCzyJ94K83fsldEVOpGuG4IcbiL wrz5OnR1n/U+R4rFuSknt7TGqHdauePVeQmoiM+t5mK2nCulARrukoIHKN0hXNsoyeIh7hMJ OBl7vRcf+uL0prkw4zxWzEAe8130DYvFLXveRBTuuTLp6HKnueFL1yDwyjaMKVBktubD12i+ tRfIQlQUS+ci9uHxYqRa+5h2vUMJfbSadZ3VnFIlVk1DN4AaLWaGeDmwIEd2z09wMdTAfzZe swVLyJ1awjNaAFOPVFRD48imOCvhT/0dDgwRFC9/PJrpTSMilEgluGybbI5efTTLSlRtm+eq njL4CLSBRYCOcbE4TGE7mitlqnEmiaTtIc6Re3jraM23Ab7Kmo7VzAnX1CkuqeD20PuWvNzE n4y+gA8sv1nnKCsZpynN/Gim1aDuhMfQNtRVe4n8gaGyqnTywmcD2kACDVGbbQOpMIwADAny FKNt9foHiB09q2YT2qH8bWZpi/0PjIaRUcZfjMNRwYB59jloakwgwjJQ9IlF7S65vX6GDj2x y2BpQAkhqsUls8N3OOw+lWvqzirrJLYQxU14gjSV2SN4QZwZYrjbIutgXDS6fdbMI+YVB+Pp nECkMmFxP8CBteGkynlaO4KGreu5fqMLjzHqVFqFpglsT+q/haekZt45Th/IAJlN5gCcDqwO kvL41oOudlUIWegarJxb8SpEcM2wKP8FNPjEPfJct5JZZs3fwiClM1zWXOtM6nWuBBEuckC1 V2zKK5A0V5y5Xxb8QeL
  • Ironport-hdrordr: A9a23:58G7gaATiXE9VsrlHemo55DYdb4zR+YMi2TDgXoBLSC9E/b5qy nApp8mPHPP4gr5O0tApTnjAsa9qCjnhPtICOAqVN+ftW/d1VdAR7sN0WKN+VHd84KVzJ876U /NGZIOa+EZrDJB/KTH3DU=
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>

On 24/02/2023 3:06 pm, Oleksii Kurochko wrote:
> diff --git a/xen/arch/riscv/include/asm/page.h 
> b/xen/arch/riscv/include/asm/page.h
> new file mode 100644
> index 0000000000..fabbe1305f
> --- /dev/null
> +++ b/xen/arch/riscv/include/asm/page.h
> @@ -0,0 +1,90 @@
> +#ifndef _ASM_RISCV_PAGE_H
> +#define _ASM_RISCV_PAGE_H
> +
> +#include <xen/const.h>
> +#include <xen/types.h>
> +
> +#define PAGE_ENTRIES            512
> +#define VPN_BITS                (9)
> +#define VPN_MASK                ((unsigned long)((1 << VPN_BITS) - 1))
> +
> +#ifdef CONFIG_RISCV_64
> +/* L3 index Bit[47:39] */
> +#define THIRD_SHIFT             (39)
> +#define THIRD_MASK              (VPN_MASK << THIRD_SHIFT)
> +/* L2 index Bit[38:30] */
> +#define SECOND_SHIFT            (30)
> +#define SECOND_MASK             (VPN_MASK << SECOND_SHIFT)
> +/* L1 index Bit[29:21] */
> +#define FIRST_SHIFT             (21)
> +#define FIRST_MASK              (VPN_MASK << FIRST_SHIFT)
> +/* L0 index Bit[20:12] */
> +#define ZEROETH_SHIFT           (12)
> +#define ZEROETH_MASK            (VPN_MASK << ZEROETH_SHIFT)

Don't name these with words.  That's an error ultimately inherited from
an architectural mistake ARM.

These should be named L1 (4k) thru L4 (512T), and don't need separate
separate masks or shifts because it looks like RISC-V designed their
pagetables in a coherent and uniform way.

You'll find the code simplifies substantially if you have
PAGETABLE_ORDER 9 somewhere in here.

The shift is always (PAGE_ORDER + level * PAGETABLE_ORDER), and it's
rare that you need something other than "(addr >> shift) & mask".  About
the only time you need a virtual address masked but unshifted is for
debugging.

~Andrew



 


Rackspace

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