[PATCH 09/10] ACPI: IORT: Cast from ULL to phys_addr_t
Moritz Fischer
moritzf at google.com
Tue Nov 28 22:18:25 PST 2023
On Tue, Nov 28, 2023 at 08:48:05PM -0400, Jason Gunthorpe wrote:
> gcc on i386 (when compile testing) warns:
This is a weird test. The Makefile for drivers/acpi/arm64 is conditional
on CONFIG_ARM64. How does this happen?
> 8->8
obj-$(CONFIG_ARM64) += arm64/
> 8->8
> drivers/acpi/arm64/iort.c:2014:18: warning: implicit conversion
> from 'unsigned long long' to 'phys_addr_t' (aka 'unsigned int') changes
> value from 18446744073709551615 to 4294967295 [-Wconstant-conversion]
> local_limit =
> DMA_BIT_MASK(ncomp->memory_address_limit);
> Because DMA_BIT_MASK returns a large ULL constant. Explicitly truncate it
> to phys_addr_t.
> Signed-off-by: Jason Gunthorpe <jgg at nvidia.com>
> ---
> drivers/acpi/arm64/iort.c | 6 ++++--
> 1 file changed, 4 insertions(+), 2 deletions(-)
> diff --git a/drivers/acpi/arm64/iort.c b/drivers/acpi/arm64/iort.c
> index 6496ff5a6ba20d..bdaf9256870d92 100644
> --- a/drivers/acpi/arm64/iort.c
> +++ b/drivers/acpi/arm64/iort.c
> @@ -2011,7 +2011,8 @@ phys_addr_t __init
> acpi_iort_dma_get_max_cpu_address(void)
> case ACPI_IORT_NODE_NAMED_COMPONENT:
> ncomp = (struct acpi_iort_named_component *)node->node_data;
> - local_limit = DMA_BIT_MASK(ncomp->memory_address_limit);
> + local_limit = (phys_addr_t)DMA_BIT_MASK(
> + ncomp->memory_address_limit);
> limit = min_not_zero(limit, local_limit);
> break;
> @@ -2020,7 +2021,8 @@ phys_addr_t __init
> acpi_iort_dma_get_max_cpu_address(void)
> break;
> rc = (struct acpi_iort_root_complex *)node->node_data;
> - local_limit = DMA_BIT_MASK(rc->memory_address_limit);
> + local_limit = (phys_addr_t)DMA_BIT_MASK(
> + rc->memory_address_limit);
> limit = min_not_zero(limit, local_limit);
> break;
> }
> --
> 2.42.0
Cheers,
Moritz
More information about the linux-riscv
mailing list