diff --git a/src/amd/common/ac_linux_drm.c b/src/amd/common/ac_linux_drm.c index 777c1346530..21fb2c9e4e3 100644 --- a/src/amd/common/ac_linux_drm.c +++ b/src/amd/common/ac_linux_drm.c @@ -895,10 +895,8 @@ int ac_drm_query_sw_info(ac_drm_device *dev, enum amdgpu_sw_info info, void *value) { #ifdef HAVE_AMDGPU_VIRTIO - if (dev->is_virtio) { - assert(info == amdgpu_sw_info_address32_hi); + if (dev->is_virtio) return amdvgpu_query_sw_info(dev->vdev, info, value); - } #endif return amdgpu_query_sw_info(dev->adev, info, value); } diff --git a/src/amd/common/virtio/amdgpu_virtio.c b/src/amd/common/virtio/amdgpu_virtio.c index a5a6a860702..12d7b6cb5d3 100644 --- a/src/amd/common/virtio/amdgpu_virtio.c +++ b/src/amd/common/virtio/amdgpu_virtio.c @@ -16,6 +16,7 @@ #include #include "amdgpu_virtio_private.h" +#include "drm-uapi/amdgpu_drm.h" #include "util/log.h" #include "util/u_math.h" @@ -48,10 +49,14 @@ amdvgpu_query_info(amdvgpu_device_handle dev, struct drm_amdgpu_info *info) int amdvgpu_query_sw_info(amdvgpu_device_handle dev, enum amdgpu_sw_info info, void *value) { - if (info != amdgpu_sw_info_address32_hi) - return -EINVAL; - memcpy(value, &dev->vdev->caps.u.amdgpu.address32_hi, 4); - return 0; + if (info == amdgpu_sw_info_address32_hi) { + memcpy(value, &dev->vdev->caps.u.amdgpu.address32_hi, 4); + return 0; + } else if (info == amdgpu_sw_info_address_prt_wa_control_bit) { + return amdgpu_va_manager_query_sw_info(dev->va_mgr, amdgpu_va_manager_sw_info_address_prt_wa_control_bit, value); + } + assert(false); + return -1; } int