|
@@ -241,15 +241,15 @@ int radeon_cs_parser_init(struct radeon_cs_parser *p, void *data)
|
|
|
return -EINVAL;
|
|
|
}
|
|
|
|
|
|
- /* we only support VM on SI+ */
|
|
|
- if ((p->rdev->family >= CHIP_TAHITI) &&
|
|
|
- ((p->cs_flags & RADEON_CS_USE_VM) == 0)) {
|
|
|
- DRM_ERROR("VM required on SI+!\n");
|
|
|
+ if (radeon_cs_get_ring(p, ring, priority))
|
|
|
return -EINVAL;
|
|
|
- }
|
|
|
|
|
|
- if (radeon_cs_get_ring(p, ring, priority))
|
|
|
+ /* we only support VM on some SI+ rings */
|
|
|
+ if ((p->rdev->asic->ring[p->ring].cs_parse == NULL) &&
|
|
|
+ ((p->cs_flags & RADEON_CS_USE_VM) == 0)) {
|
|
|
+ DRM_ERROR("Ring %d requires VM!\n", p->ring);
|
|
|
return -EINVAL;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
/* deal with non-vm */
|