gcc on i386 (when compile testing) warns:

 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 <j...@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

Reply via email to