[LTP] [PATCH] Fix hugeshmat05 test failure on lpar with 1GB hugepages.

Andrea Cervesato andrea.cervesato@suse.com
Tue Jun 9 09:54:59 CEST 2026


Hi Pavithra,

> +	tst_res(TINFO, "Page size: %ld bytes", page_size);
> +	tst_res(TINFO, "Hugepage size: %ld bytes (%ld MB)",
> +		hpage_size, hpage_size / (1024 * 1024));
>  }

[...]

>  
> -void shm_test(int size)
> +void shm_test(long size)
>  {
>  	int shmid;
>  	char *shmaddr;
> @@ -56,7 +60,7 @@ void shm_test(int size)
>  	}
>  
>  	shmaddr[0] = 1;
> -	tst_res(TINFO, "allocated %d huge bytes", size);
> +	tst_res(TINFO, "allocated %ld huge bytes", size);
>  
>  	if (shmdt((const void *)shmaddr) != 0) {
>  		shmctl(shmid, IPC_RMID, NULL);
> @@ -69,13 +73,23 @@ void shm_test(int size)
>  static void test_hugeshmat(void)
>  {
>  	unsigned int i;
> +	long multiplier;
> +	long tst_sizes[4];
> +
> +	/*
> +	 * For large hugepage sizes (e.g., 1GB), use N/2 multiplier to avoid
> +	 * excessive memory requirements (4GB for N=4 with 1GB pages) while
> +	 * still testing alignment boundary conditions with multiple pages.
> +	 */
> +	if (hpage_size >= 1024 * 1024 * 1024)
> +		multiplier = N / 2;
> +	else
> +		multiplier = N;
>  
> -	const int tst_sizes[] = {
> -		N * hpage_size - page_size,
> -		N * hpage_size - page_size - 1,
> -		hpage_size,
> -		hpage_size + 1
> -	};
> +	tst_sizes[0] = multiplier * hpage_size - page_size;
> +	tst_sizes[1] = multiplier * hpage_size - page_size - 1;
> +	tst_sizes[2] = hpage_size;
> +	tst_sizes[3] = hpage_size + 1;
>  

Are you still working on this patch? If yes, please update it according
to the agent review, before sending a v2. Also, in LTP we have TST_KB,
TST_MB, TST_GB, so you can avoid using `1024 * 1024 ..` format.

Please rebase to master and send a new version, I will move this patch
into Changes Requested before proceeding to the proper review.

Regards,
--
Andrea Cervesato
SUSE QE Automation Engineer Linux
andrea.cervesato@suse.com


More information about the ltp mailing list