[DTrace-devel] [PATCH] uregs: Account for larger page sizes on some older ARM kernels

Kris Van Hees kris.van.hees at oracle.com
Fri May 26 18:00:56 UTC 2023


On Fri, May 26, 2023 at 12:02:31PM -0400, eugene.loh--- via DTrace-devel wrote:
> From: Eugene Loh <eugene.loh at oracle.com>
> 
> Signed-off-by: Eugene Loh <eugene.loh at oracle.com>

Reviewed-by: Kris Van Hees <kris.van.hees at oracle.com>

> ---
>  libdtrace/dt_cg.c | 30 +++++++++++++++++++-----------
>  1 file changed, 19 insertions(+), 11 deletions(-)
> 
> diff --git a/libdtrace/dt_cg.c b/libdtrace/dt_cg.c
> index 0e6ec0b3..dec92c33 100644
> --- a/libdtrace/dt_cg.c
> +++ b/libdtrace/dt_cg.c
> @@ -4242,20 +4242,28 @@ dt_cg_uregs(unsigned int idx, dt_node_t *dnp, dt_irlist_t *dlp, dt_regset_t *drp
>  #undef MY_THREAD_SIZE
>  
>  #elif defined(__aarch64__)
> +		{
> +			int tmp = getpagesize(), page_shift = 0;
> +			int kasan_thread_shift, min_thread_shift, thread_shift, thread_size;
>  
> -/* arch/arm64/include/asm/memory.h */
> -#define MY_KASAN_THREAD_SHIFT 0                             /* for CONFIG_KASAN not set */
> -#define MY_MIN_THREAD_SHIFT (14 + MY_KASAN_THREAD_SHIFT)
> -#define MY_THREAD_SHIFT MY_MIN_THREAD_SHIFT
> -#define MY_THREAD_SIZE (1 << MY_THREAD_SHIFT)
> -
> -		offset += MY_THREAD_SIZE;
> +			/* Discover PAGE_SHIFT, set in arch/arm64/include/asm/page-def.h */
> +			while (tmp > 1) {
> +				page_shift++;
> +				tmp >>= 1;
> +			}
>  
> -#undef MY_KASAN_THREAD_SHIFT
> -#undef MY_MIN_THREAD_SHIFT
> -#undef MY_THREAD_SHIFT
> -#undef MY_THREAD_SIZE
> +			/* Work through logic of arch/arm64/include/asm/memory.h */
> +			kasan_thread_shift = 0;                     /* for CONFIG_KASAN not set */
> +			min_thread_shift = 14 + kasan_thread_shift;
> +			if (min_thread_shift < page_shift)          /* for CONFIG_VMAP_STACK */
> +				thread_shift = page_shift;
> +			else
> +				thread_shift = min_thread_shift;
> +			thread_size = 1 << thread_shift;
>  
> +			/* Now we have the offset. */
> +			offset += thread_size;
> +		}
>  #else
>  # error ISA not supported
>  #endif
> -- 
> 2.18.4
> 
> 
> _______________________________________________
> DTrace-devel mailing list
> DTrace-devel at oss.oracle.com
> https://oss.oracle.com/mailman/listinfo/dtrace-devel



More information about the DTrace-devel mailing list