mirror of
https://kernel.googlesource.com/pub/scm/linux/kernel/git/stable/linux-stable.git
synced 2025-10-21 11:48:53 +10:00
drm/amdkfd: clamp queue size to minimum
[ Upstream commit e90711946b
]
If queue size is less than minimum, clamp it to minimum to prevent
underflow when writing queue mqd.
Signed-off-by: David Yat Sin <David.YatSin@amd.com>
Reviewed-by: Jay Cornwall <jay.cornwall@amd.com>
Reviewed-by: Harish Kasiviswanathan <Harish.Kasiviswanathan@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
16961e025b
commit
82b6aaa867
@ -208,6 +208,11 @@ static int set_queue_properties_from_user(struct queue_properties *q_properties,
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
if (args->ring_size < KFD_MIN_QUEUE_RING_SIZE) {
|
||||
args->ring_size = KFD_MIN_QUEUE_RING_SIZE;
|
||||
pr_debug("Size lower. clamped to KFD_MIN_QUEUE_RING_SIZE");
|
||||
}
|
||||
|
||||
if (!access_ok((const void __user *) args->read_pointer_address,
|
||||
sizeof(uint32_t))) {
|
||||
pr_err("Can't access read pointer\n");
|
||||
@ -464,6 +469,11 @@ static int kfd_ioctl_update_queue(struct file *filp, struct kfd_process *p,
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
if (args->ring_size < KFD_MIN_QUEUE_RING_SIZE) {
|
||||
args->ring_size = KFD_MIN_QUEUE_RING_SIZE;
|
||||
pr_debug("Size lower. clamped to KFD_MIN_QUEUE_RING_SIZE");
|
||||
}
|
||||
|
||||
properties.queue_address = args->ring_base_address;
|
||||
properties.queue_size = args->ring_size;
|
||||
properties.queue_percent = args->queue_percentage;
|
||||
|
@ -55,6 +55,8 @@ struct kfd_ioctl_get_version_args {
|
||||
#define KFD_MAX_QUEUE_PERCENTAGE 100
|
||||
#define KFD_MAX_QUEUE_PRIORITY 15
|
||||
|
||||
#define KFD_MIN_QUEUE_RING_SIZE 1024
|
||||
|
||||
struct kfd_ioctl_create_queue_args {
|
||||
__u64 ring_base_address; /* to KFD */
|
||||
__u64 write_pointer_address; /* from KFD */
|
||||
|
Loading…
Reference in New Issue
Block a user