Hi Alvin,
> +
> + pub(crate) fn vm_destroy(
> + ddev: &TyrDrmDevice<Registered>,
> + _reg_data: &TyrDrmRegistrationData<'_>,
> + vmdestroy: &mut uapi::drm_panthor_vm_destroy,
> + file: &TyrDrmFile,
> + ) -> Result<u32> {
> + if vmdestroy.pad != 0 {
> + dev_err!(
> + ddev.as_ref(),
> + "Invalid VM destroy pad: {:#x}\n",
> + vmdestroy.pad
> + );
For invalid userspace arguments, let’s try to use dev_dbg instead.
Same for other places.
> + return Err(EINVAL);
> + }
> +
> + let ret: Result<u32, Error> = file.inner_with(|pfile| {
> + let vm = pfile.vm_pool.remove(vmdestroy.id)?;
> + vm.kill();
> + Ok(0)
> + });
> + ret
> + }
> +
> + pub(crate) fn vm_bind(
> + ddev: &TyrDrmDevice<Registered>,
> + _reg_data: &TyrDrmRegistrationData<'_>,
> + vmbind: &mut uapi::drm_panthor_vm_bind,
> + file: &TyrDrmFile,
> + ) -> Result<u32> {
> + let async_flag =
> uapi::drm_panthor_vm_bind_flags_DRM_PANTHOR_VM_BIND_ASYNC;
> +
> + if vmbind.flags & !async_flag != 0 {
> + dev_err!(
> + ddev.as_ref(),
> + "Invalid VM_BIND flags: {:#x}\n",
> + vmbind.flags
> + );
> + return Err(EINVAL);
> + }
> +
> + if vmbind.flags & async_flag != 0 {
> + dev_err!(ddev.as_ref(), "Async VM_BIND not supported\n");
> + return Err(ENOTSUPP);
IIRC ioctls should not return this, but EOPNOTSUPP instead.
With the changes above,
Reviewed-by: Daniel Almeida <[email protected]>