pan/kmod,panvk: use uint64_t and not size_t for device sizes

When the host process is 32-bit, size_t can not express all of the
device address space. Note that there's still a lot of code that
uses size_t for device sizes remaining. Cleaning that up is left
for future MRs.

Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/37288>
This commit is contained in:
Caterina Shablia 2025-09-09 23:03:13 +00:00 committed by Marge Bot
parent e9f23edf17
commit 1a0e7d18a2
9 changed files with 25 additions and 21 deletions

View file

@ -80,7 +80,7 @@ pan_kmod_dev_destroy(struct pan_kmod_dev *dev)
struct pan_kmod_bo *
pan_kmod_bo_alloc(struct pan_kmod_dev *dev, struct pan_kmod_vm *exclusive_vm,
size_t size, uint32_t flags)
uint64_t size, uint32_t flags)
{
struct pan_kmod_bo *bo;

View file

@ -125,7 +125,7 @@ struct pan_kmod_bo {
int32_t refcnt;
/* Size of the buffer object. */
size_t size;
uint64_t size;
/* Handle attached to the buffer object. */
uint32_t handle;
@ -295,7 +295,7 @@ struct pan_kmod_vm_op {
uint64_t start;
/* Size of the VA range */
size_t size;
uint64_t size;
} va;
union {
@ -377,7 +377,7 @@ struct pan_kmod_ops {
*/
struct pan_kmod_bo *(*bo_alloc)(struct pan_kmod_dev *dev,
struct pan_kmod_vm *exclusive_vm,
size_t size, uint32_t flags);
uint64_t size, uint32_t flags);
/* Free buffer object. */
void (*bo_free)(struct pan_kmod_bo *bo);
@ -386,7 +386,7 @@ struct pan_kmod_ops {
* Return NULL if the import fails for any reason.
*/
struct pan_kmod_bo *(*bo_import)(struct pan_kmod_dev *dev, uint32_t handle,
size_t size, uint32_t flags);
uint64_t size, uint32_t flags);
/* Post export operations.
* Return 0 on success, -1 otherwise.
@ -526,7 +526,7 @@ pan_kmod_dev_get_user_priv(struct pan_kmod_dev *dev)
struct pan_kmod_bo *pan_kmod_bo_alloc(struct pan_kmod_dev *dev,
struct pan_kmod_vm *exclusive_vm,
size_t size, uint32_t flags);
uint64_t size, uint32_t flags);
static inline struct pan_kmod_bo *
pan_kmod_bo_get(struct pan_kmod_bo *bo)
@ -616,7 +616,7 @@ pan_kmod_bo_mmap(struct pan_kmod_bo *bo, off_t bo_offset, size_t size, int prot,
{
off_t mmap_offset;
if (bo_offset + size > bo->size)
if ((uint64_t)bo_offset + (uint64_t)size > bo->size)
return MAP_FAILED;
mmap_offset = bo->dev->ops->bo_get_mmap_offset(bo);
@ -639,7 +639,7 @@ pan_kmod_set_bo_label(struct pan_kmod_dev *dev, struct pan_kmod_bo *bo, const ch
dev->ops->bo_set_label(dev, bo, label);
}
static inline size_t
static inline uint64_t
pan_kmod_bo_size(struct pan_kmod_bo *bo)
{
return bo->size;

View file

@ -75,7 +75,7 @@ pan_kmod_dev_free(const struct pan_kmod_dev *dev, void *data)
static inline void
pan_kmod_bo_init(struct pan_kmod_bo *bo, struct pan_kmod_dev *dev,
struct pan_kmod_vm *exclusive_vm, size_t size, uint32_t flags,
struct pan_kmod_vm *exclusive_vm, uint64_t size, uint32_t flags,
uint32_t handle)
{
bo->dev = dev;

View file

@ -237,9 +237,13 @@ to_panfrost_bo_flags(struct pan_kmod_dev *dev, uint32_t flags)
static struct pan_kmod_bo *
panfrost_kmod_bo_alloc(struct pan_kmod_dev *dev,
struct pan_kmod_vm *exclusive_vm, size_t size,
struct pan_kmod_vm *exclusive_vm, uint64_t size,
uint32_t flags)
{
/* The ioctl uses u32 for size. */
if ((uint64_t)(uint32_t)size != size)
return NULL;
/* We can't map GPU uncached. */
if (flags & PAN_KMOD_BO_FLAG_GPU_UNCACHED)
return NULL;
@ -276,7 +280,7 @@ panfrost_kmod_bo_free(struct pan_kmod_bo *bo)
}
static struct pan_kmod_bo *
panfrost_kmod_bo_import(struct pan_kmod_dev *dev, uint32_t handle, size_t size,
panfrost_kmod_bo_import(struct pan_kmod_dev *dev, uint32_t handle, uint64_t size,
uint32_t flags)
{
struct panfrost_kmod_bo *panfrost_bo =

View file

@ -38,7 +38,7 @@ struct panthor_kmod_va_collect {
uint64_t va;
/* Size of the VA range to release. */
size_t size;
uint64_t size;
};
struct panthor_kmod_vm {
@ -331,7 +331,7 @@ to_panthor_bo_flags(uint32_t flags)
static struct pan_kmod_bo *
panthor_kmod_bo_alloc(struct pan_kmod_dev *dev,
struct pan_kmod_vm *exclusive_vm, size_t size,
struct pan_kmod_vm *exclusive_vm, uint64_t size,
uint32_t flags)
{
/* We don't support allocating on-fault. */
@ -400,7 +400,7 @@ panthor_kmod_bo_free(struct pan_kmod_bo *bo)
}
static struct pan_kmod_bo *
panthor_kmod_bo_import(struct pan_kmod_dev *dev, uint32_t handle, size_t size,
panthor_kmod_bo_import(struct pan_kmod_dev *dev, uint32_t handle, uint64_t size,
uint32_t flags)
{
struct panthor_kmod_bo *panthor_bo =
@ -820,7 +820,7 @@ panthor_kmod_vm_destroy(struct pan_kmod_vm *vm)
}
static uint64_t
panthor_kmod_vm_alloc_va(struct panthor_kmod_vm *panthor_vm, size_t size)
panthor_kmod_vm_alloc_va(struct panthor_kmod_vm *panthor_vm, uint64_t size)
{
uint64_t va;
@ -837,7 +837,7 @@ panthor_kmod_vm_alloc_va(struct panthor_kmod_vm *panthor_vm, size_t size)
static void
panthor_kmod_vm_free_va(struct panthor_kmod_vm *panthor_vm, uint64_t va,
size_t size)
uint64_t size)
{
assert(panthor_vm->base.flags & PAN_KMOD_VM_FLAG_AUTO_VA);

View file

@ -46,7 +46,7 @@ struct panvk_subqueue {
struct {
struct pan_kmod_bo *bo;
size_t size;
uint64_t size;
struct {
uint64_t dev;
void *host;
@ -57,7 +57,7 @@ struct panvk_subqueue {
struct panvk_desc_ringbuf {
struct panvk_priv_mem syncobj;
struct pan_kmod_bo *bo;
size_t size;
uint64_t size;
struct {
uint64_t dev;
void *host;

View file

@ -16,7 +16,7 @@
#include "genxml/decode.h"
VkResult
panvk_priv_bo_create(struct panvk_device *dev, size_t size, uint32_t flags,
panvk_priv_bo_create(struct panvk_device *dev, uint64_t size, uint32_t flags,
VkSystemAllocationScope scope, struct panvk_priv_bo **out)
{
VkResult result;

View file

@ -25,7 +25,7 @@ struct panvk_priv_bo {
} addr;
};
VkResult panvk_priv_bo_create(struct panvk_device *dev, size_t size,
VkResult panvk_priv_bo_create(struct panvk_device *dev, uint64_t size,
uint32_t flags, VkSystemAllocationScope scope,
struct panvk_priv_bo **out);

View file

@ -36,7 +36,7 @@ panvk_utrace_create_buffer(struct u_trace_context *utctx, uint64_t size_B)
if (!addr_dev) {
mesa_loge("Couldn't allocate utrace buffer (size = 0x%" PRIx64 ")."
"Provide larger PANVK_UTRACE_CLONE_MEM_SIZE (current = 0x%zx)",
"Provide larger PANVK_UTRACE_CLONE_MEM_SIZE (current = 0x%" PRIx64 ")",
size_B, dev->utrace.copy_buf_heap_bo->bo->size);
return NULL;
}