diff mbox series

cxl: Fix warning from emitting resoruce_size_t as long long int on 32bit systems

Message ID 20250228194402.3745766-1-dave.jiang@intel.com
State New
Headers show
Series cxl: Fix warning from emitting resoruce_size_t as long long int on 32bit systems | expand

Commit Message

Dave Jiang Feb. 28, 2025, 7:44 p.m. UTC
Reported by kernel test bot from an ARM build:
drivers/cxl/core/region.c:3263:26: warning: format '%lld' expects argument of type 'long long int', but argument 3 has type 'resource_size_t' {aka 'unsigned int'} [-Wformat=]

On a 32bit system, resoruce_size_t is defined as 32bit long vs on a 64bit
system it is defined as 64bit long. Define the variables as u64 instead to
make the size same across all archs.

Reported-by: kernel test robot <lkp@intel.com>
Closes: https://lore.kernel.org/oe-kbuild-all/202503010252.mIDhZ5kY-lkp@intel.com/
Fixes: 0ec9849b6333 ("acpi/hmat / cxl: Add extended linear cache support for CXL")
Signed-off-by: Dave Jiang <dave.jiang@intel.com>
---
 drivers/cxl/core/region.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

Comments

Alison Schofield Feb. 28, 2025, 8:31 p.m. UTC | #1
On Fri, Feb 28, 2025 at 12:44:02PM -0700, Dave Jiang wrote:
> Reported by kernel test bot from an ARM build:
> drivers/cxl/core/region.c:3263:26: warning: format '%lld' expects argument of type 'long long int', but argument 3 has type 'resource_size_t' {aka 'unsigned int'} [-Wformat=]
> 
> On a 32bit system, resoruce_size_t is defined as 32bit long vs on a 64bit

'resource' here and in commit msg.

> system it is defined as 64bit long. Define the variables as u64 instead to
> make the size same across all archs.
> 
> Reported-by: kernel test robot <lkp@intel.com>
> Closes: https://lore.kernel.org/oe-kbuild-all/202503010252.mIDhZ5kY-lkp@intel.com/
> Fixes: 0ec9849b6333 ("acpi/hmat / cxl: Add extended linear cache support for CXL")
> Signed-off-by: Dave Jiang <dave.jiang@intel.com>
> ---
>  drivers/cxl/core/region.c | 5 +++--
>  1 file changed, 3 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/cxl/core/region.c b/drivers/cxl/core/region.c
> index a83301f24fa2..958c15842b1e 100644
> --- a/drivers/cxl/core/region.c
> +++ b/drivers/cxl/core/region.c
> @@ -3235,14 +3235,15 @@ static int cxl_extended_linear_cache_resize(struct cxl_region *cxlr,
>  	struct cxl_root_decoder *cxlrd = to_cxl_root_decoder(cxlr->dev.parent);
>  	struct cxl_region_params *p = &cxlr->params;
>  	int nid = phys_to_target_node(res->start);
> -	resource_size_t size, cache_size, start;
> +	u64 size, cache_size, start;
>  	int rc;
>  
>  	size = resource_size(res);
>  	if (!size)
>  		return -EINVAL;
>  
> -	rc = cxl_acpi_get_extended_linear_cache_size(res, nid, &cache_size);
> +	rc = cxl_acpi_get_extended_linear_cache_size(res, nid,
> +						     (resource_size_t *)&cache_size);
>  	if (rc)
>  		return rc;

Ah...I was thinking this fixup would be either a %pa format or (u64)cast on
cache_size in the dev_warns, but this works too.

Do we also need to do this to avoid a complaint assigning to cxl_region_params:
-       p->cache_size = cache_size;
+       p->cache_size = (resource_size_t)cache_size;


>  
> -- 
> 2.48.1
> 
>
Dave Jiang Feb. 28, 2025, 8:33 p.m. UTC | #2
On 2/28/25 1:31 PM, Alison Schofield wrote:
> On Fri, Feb 28, 2025 at 12:44:02PM -0700, Dave Jiang wrote:
>> Reported by kernel test bot from an ARM build:
>> drivers/cxl/core/region.c:3263:26: warning: format '%lld' expects argument of type 'long long int', but argument 3 has type 'resource_size_t' {aka 'unsigned int'} [-Wformat=]
>>
>> On a 32bit system, resoruce_size_t is defined as 32bit long vs on a 64bit
> 
> 'resource' here and in commit msg.
> 
>> system it is defined as 64bit long. Define the variables as u64 instead to
>> make the size same across all archs.
>>
>> Reported-by: kernel test robot <lkp@intel.com>
>> Closes: https://lore.kernel.org/oe-kbuild-all/202503010252.mIDhZ5kY-lkp@intel.com/
>> Fixes: 0ec9849b6333 ("acpi/hmat / cxl: Add extended linear cache support for CXL")
>> Signed-off-by: Dave Jiang <dave.jiang@intel.com>
>> ---
>>  drivers/cxl/core/region.c | 5 +++--
>>  1 file changed, 3 insertions(+), 2 deletions(-)
>>
>> diff --git a/drivers/cxl/core/region.c b/drivers/cxl/core/region.c
>> index a83301f24fa2..958c15842b1e 100644
>> --- a/drivers/cxl/core/region.c
>> +++ b/drivers/cxl/core/region.c
>> @@ -3235,14 +3235,15 @@ static int cxl_extended_linear_cache_resize(struct cxl_region *cxlr,
>>  	struct cxl_root_decoder *cxlrd = to_cxl_root_decoder(cxlr->dev.parent);
>>  	struct cxl_region_params *p = &cxlr->params;
>>  	int nid = phys_to_target_node(res->start);
>> -	resource_size_t size, cache_size, start;
>> +	u64 size, cache_size, start;
>>  	int rc;
>>  
>>  	size = resource_size(res);
>>  	if (!size)
>>  		return -EINVAL;
>>  
>> -	rc = cxl_acpi_get_extended_linear_cache_size(res, nid, &cache_size);
>> +	rc = cxl_acpi_get_extended_linear_cache_size(res, nid,
>> +						     (resource_size_t *)&cache_size);
>>  	if (rc)
>>  		return rc;
> 
> Ah...I was thinking this fixup would be either a %pa format or (u64)cast on
> cache_size in the dev_warns, but this works too.
> 
> Do we also need to do this to avoid a complaint assigning to cxl_region_params:
> -       p->cache_size = cache_size;
> +       p->cache_size = (resource_size_t)cache_size;

Sure I can add that.

> 
> 
>>  
>> -- 
>> 2.48.1
>>
>>
diff mbox series

Patch

diff --git a/drivers/cxl/core/region.c b/drivers/cxl/core/region.c
index a83301f24fa2..958c15842b1e 100644
--- a/drivers/cxl/core/region.c
+++ b/drivers/cxl/core/region.c
@@ -3235,14 +3235,15 @@  static int cxl_extended_linear_cache_resize(struct cxl_region *cxlr,
 	struct cxl_root_decoder *cxlrd = to_cxl_root_decoder(cxlr->dev.parent);
 	struct cxl_region_params *p = &cxlr->params;
 	int nid = phys_to_target_node(res->start);
-	resource_size_t size, cache_size, start;
+	u64 size, cache_size, start;
 	int rc;
 
 	size = resource_size(res);
 	if (!size)
 		return -EINVAL;
 
-	rc = cxl_acpi_get_extended_linear_cache_size(res, nid, &cache_size);
+	rc = cxl_acpi_get_extended_linear_cache_size(res, nid,
+						     (resource_size_t *)&cache_size);
 	if (rc)
 		return rc;