On 10/01/2024 00:23, Randy Dunlap wrote:
Fix a build error when using GCC 13.2.0 from kernel.org crosstools by changing ARRAY_SIZE() to the macro PVR_MIPS_PT_PAGE_COUNT:
I assume you're referring to the x86_64 => aarch64 toolchain here?
drivers/gpu/drm/imagination/pvr_vm_mips.c: In function 'pvr_vm_mips_fini': ../include/linux/array_size.h:11:25: warning: overflow in conversion from 'long unsigned int' to 'int' changes value from '18446744073709551615' to '-1' [-Woverflow] 11 | #define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]) + __must_be_array(arr)) | ^ drivers/gpu/drm/imagination/pvr_vm_mips.c:105:24: note: in expansion of macro 'ARRAY_SIZE' 105 | for (page_nr = ARRAY_SIZE(mips_data->pt_pages) - 1; page_nr >= 0; page_nr--) { | ^~~~~~~~~~
I can't seem to reproduce this using the above toolchain (or any other), even with -Woverflow explicitly specified. The use of ARRAY_SIZE() in loop bounds is a pretty common construction – even within the pvr driver. Do you see similar warnings anywhere else? Regards, Matt -- Matt Coster Imagination Technologies
Fixes: 927f3e0253c1 ("drm/imagination: Implement MIPS firmware processor and MMU support") Signed-off-by: Randy Dunlap <rdunlap@xxxxxxxxxxxxx> Cc: Donald Robson <donald.robson@xxxxxxxxxx> Cc: Maxime Ripard <mripard@xxxxxxxxxx> Cc: Frank Binns <frank.binns@xxxxxxxxxx> Cc: Matt Coster <matt.coster@xxxxxxxxxx> Cc: Maarten Lankhorst <maarten.lankhorst@xxxxxxxxxxxxxxx> Cc: Thomas Zimmermann <tzimmermann@xxxxxxx> Cc: David Airlie <airlied@xxxxxxxxx> Cc: Daniel Vetter <daniel@xxxxxxxx> Cc: dri-devel@xxxxxxxxxxxxxxxxxxxxx --- drivers/gpu/drm/imagination/pvr_vm_mips.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff -- a/drivers/gpu/drm/imagination/pvr_vm_mips.c b/drivers/gpu/drm/imagination/pvr_vm_mips.c --- a/drivers/gpu/drm/imagination/pvr_vm_mips.c +++ b/drivers/gpu/drm/imagination/pvr_vm_mips.c @@ -46,7 +46,7 @@ pvr_vm_mips_init(struct pvr_device *pvr_ if (!mips_data) return -ENOMEM;- for (page_nr = 0; page_nr < ARRAY_SIZE(mips_data->pt_pages); page_nr++) {+ for (page_nr = 0; page_nr < PVR_MIPS_PT_PAGE_COUNT; page_nr++) { mips_data->pt_pages[page_nr] = alloc_page(GFP_KERNEL | __GFP_ZERO); if (!mips_data->pt_pages[page_nr]) { err = -ENOMEM; @@ -102,7 +102,7 @@ pvr_vm_mips_fini(struct pvr_device *pvr_ int page_nr;vunmap(mips_data->pt);- for (page_nr = ARRAY_SIZE(mips_data->pt_pages) - 1; page_nr >= 0; page_nr--) { + for (page_nr = PVR_MIPS_PT_PAGE_COUNT - 1; page_nr >= 0; page_nr--) { dma_unmap_page(from_pvr_device(pvr_dev)->dev, mips_data->pt_dma_addr[page_nr], PAGE_SIZE, DMA_TO_DEVICE);
Attachment:
OpenPGP_0x747F0A9036F90DFA.asc
Description: OpenPGP public key
Attachment:
OpenPGP_signature.asc
Description: OpenPGP digital signature