[PATCH 5/6] powerpc/rtas: rename RTAS_RMOBUF_MAX to RTAS_USER_REGION_SIZE
Alexey Kardashevskiy
aik at ozlabs.ru
Fri Jan 15 15:38:23 AEDT 2021
On 15/01/2021 09:00, Nathan Lynch wrote:
> RTAS_RMOBUF_MAX doesn't actually describe a "maximum" value in any
> sense. It represents the size of an area of memory set aside for user
> space to use as work areas for certain RTAS calls.
>
> Rename it to RTAS_USER_REGION, and express the value in terms of the
> number of work areas allocated.
>
> Signed-off-by: Nathan Lynch <nathanl at linux.ibm.com>
>
> squash! powerpc/rtas: rename RTAS_RMOBUF_MAX to RTAS_USER_REGION_SIZE
> ---
> arch/powerpc/include/asm/rtas.h | 9 ++++++---
> arch/powerpc/kernel/rtas-proc.c | 2 +-
> arch/powerpc/kernel/rtas.c | 2 +-
> 3 files changed, 8 insertions(+), 5 deletions(-)
>
> diff --git a/arch/powerpc/include/asm/rtas.h b/arch/powerpc/include/asm/rtas.h
> index 332e1000ca0f..1aa7ab1cbc84 100644
> --- a/arch/powerpc/include/asm/rtas.h
> +++ b/arch/powerpc/include/asm/rtas.h
> @@ -19,8 +19,11 @@
> #define RTAS_UNKNOWN_SERVICE (-1)
> #define RTAS_INSTANTIATE_MAX (1ULL<<30) /* Don't instantiate rtas at/above this value */
>
> -/* Buffer size for ppc_rtas system call. */
> -#define RTAS_RMOBUF_MAX (64 * 1024)
> +/* Work areas shared with RTAS must be 4K, naturally aligned. */
Why exactly 4K and not (for example) PAGE_SIZE?
> +#define RTAS_WORK_AREA_SIZE 4096
> +
> +/* Work areas allocated for user space access. */
> +#define RTAS_USER_REGION_SIZE (RTAS_WORK_AREA_SIZE * 16)
This is still 64K but no clarity why. There is 16 of something, what is it?
>
> /* RTAS return status codes */
> #define RTAS_BUSY -2 /* RTAS Busy */
> @@ -357,7 +360,7 @@ extern void rtas_take_timebase(void);
> static inline int page_is_rtas_user_buf(unsigned long pfn)
> {
> unsigned long paddr = (pfn << PAGE_SHIFT);
> - if (paddr >= rtas_rmo_buf && paddr < (rtas_rmo_buf + RTAS_RMOBUF_MAX))
> + if (paddr >= rtas_rmo_buf && paddr < (rtas_rmo_buf + RTAS_USER_REGION_SIZE))
> return 1;
> return 0;
> }
> diff --git a/arch/powerpc/kernel/rtas-proc.c b/arch/powerpc/kernel/rtas-proc.c
> index d2b0d99824a4..6857a5b0a1c3 100644
> --- a/arch/powerpc/kernel/rtas-proc.c
> +++ b/arch/powerpc/kernel/rtas-proc.c
> @@ -767,6 +767,6 @@ static int ppc_rtas_tone_volume_show(struct seq_file *m, void *v)
> */
> static int ppc_rtas_rmo_buf_show(struct seq_file *m, void *v)
> {
> - seq_printf(m, "%016lx %x\n", rtas_rmo_buf, RTAS_RMOBUF_MAX);
> + seq_printf(m, "%016lx %x\n", rtas_rmo_buf, RTAS_USER_REGION_SIZE);
> return 0;
> }
> diff --git a/arch/powerpc/kernel/rtas.c b/arch/powerpc/kernel/rtas.c
> index 55f6aa170e57..da65faadbbb2 100644
> --- a/arch/powerpc/kernel/rtas.c
> +++ b/arch/powerpc/kernel/rtas.c
> @@ -1204,7 +1204,7 @@ void __init rtas_initialize(void)
> if (firmware_has_feature(FW_FEATURE_LPAR))
> rtas_region = min(ppc64_rma_size, RTAS_INSTANTIATE_MAX);
> #endif
> - rtas_rmo_buf = memblock_phys_alloc_range(RTAS_RMOBUF_MAX, PAGE_SIZE,
> + rtas_rmo_buf = memblock_phys_alloc_range(RTAS_USER_REGION_SIZE, PAGE_SIZE,
> 0, rtas_region);
> if (!rtas_rmo_buf)
> panic("ERROR: RTAS: Failed to allocate %lx bytes below %pa\n",
>
--
Alexey
More information about the Linuxppc-dev
mailing list