Message ID | 9-v1-720585788a7d+811b-iommu_fwspec_p1_jgg@nvidia.com (mailing list archive) |
---|---|
State | Handled Elsewhere, archived |
Headers | show |
Series | IOMMU related FW parsing cleanup | expand |
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@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
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; }
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 <jgg@nvidia.com> --- drivers/acpi/arm64/iort.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-)