mirror of
https://github.com/torvalds/linux.git
synced 2026-05-27 16:44:58 +02:00
Driver Changes:
- Fix xe_validation_guard() not guarding (Thomas Hellström) - Do not wake device during a GT reset (Matthew Brost) -----BEGIN PGP SIGNATURE----- iQIzBAABCgAdFiEE6rM8lpABPHM5FqyDm6KlpjDL6lMFAmkDzSsACgkQm6KlpjDL 6lMSNA/+JoTAHBHlpwbM7XRO3kthFKyfPiqwezp4XJLKCTpO6/g9AZ9klDMJWZB/ t+yWHlQOHsGCN1CW8ycmpVOsMomYaDAhDbsWPYBWs+0sinG63M25rdydxTbetISV eLiiJPz4pLnvDdjZphLxteldAkeEfQU0Ulo/IzUdKGTa46AGqSSizwf0wDwI2WcB HEY/TtD5wbAELNsScRHd0sOfr91ZJcgHoi4yVHCEyz0ZXn01xV57cGyt097Q9dyP ctxYh5kmcxhgm5JlsQzv+DBtUFG3qyOl3JwH7t898SzgIAjcmLHftUPh1q51NXXW dSgZ6SOdSqiZsA/fuaM4niOW/XkYt6JUoHF+HFT/zwXsPB2fevy/PnWqoa/dj69+ +3s8yrgtqYJwITUHq7zqTbPTLUMmF1J/2pZhOt4ryXNUIzFHIYLaHLAUmIwxvVY5 4d9V+cIDgjCqHFoXX2e5RyafEv7H5auWDsJXkI+udwzXCknpyxE2GyZtwsc/B4ZK wzuBstwJRjtHmfT6dtPs/Fny0Fqlt1qyBlBqEOECNfYAiDD8hswetvSXWlDgwqUB 9/UKRIf/wtRN3c3MmPmbaRxjXdZvsWNKlvgoA9d/J9Q2K6rZ3x3dTU/nEk+Sgp4E +UExaCL1lSAdxOtkq+YJr2jsXdpFfE7qfCT8vYLk0BIuVsoEgl4= =7Aac -----END PGP SIGNATURE----- Merge tag 'drm-xe-fixes-2025-10-30' of https://gitlab.freedesktop.org/drm/xe/kernel into drm-fixes Driver Changes: - Fix xe_validation_guard() not guarding (Thomas Hellström) - Do not wake device during a GT reset (Matthew Brost) Signed-off-by: Simona Vetter <simona.vetter@ffwll.ch> From: Lucas De Marchi <lucas.demarchi@intel.com> Link: https://patch.msgid.link/o2b3lucyitafbbcd5bewpfqnslavtnnpc6ck4qatnou2wwukix@rz6seyfw75uy
This commit is contained in:
commit
41dacb39fe
|
|
@ -813,12 +813,16 @@ static int gt_reset(struct xe_gt *gt)
|
|||
unsigned int fw_ref;
|
||||
int err;
|
||||
|
||||
if (xe_device_wedged(gt_to_xe(gt)))
|
||||
return -ECANCELED;
|
||||
if (xe_device_wedged(gt_to_xe(gt))) {
|
||||
err = -ECANCELED;
|
||||
goto err_pm_put;
|
||||
}
|
||||
|
||||
/* We only support GT resets with GuC submission */
|
||||
if (!xe_device_uc_enabled(gt_to_xe(gt)))
|
||||
return -ENODEV;
|
||||
if (!xe_device_uc_enabled(gt_to_xe(gt))) {
|
||||
err = -ENODEV;
|
||||
goto err_pm_put;
|
||||
}
|
||||
|
||||
xe_gt_info(gt, "reset started\n");
|
||||
|
||||
|
|
@ -826,8 +830,6 @@ static int gt_reset(struct xe_gt *gt)
|
|||
if (!err)
|
||||
xe_gt_warn(gt, "reset block failed to get lifted");
|
||||
|
||||
xe_pm_runtime_get(gt_to_xe(gt));
|
||||
|
||||
if (xe_fault_inject_gt_reset()) {
|
||||
err = -ECANCELED;
|
||||
goto err_fail;
|
||||
|
|
@ -874,6 +876,7 @@ static int gt_reset(struct xe_gt *gt)
|
|||
xe_gt_err(gt, "reset failed (%pe)\n", ERR_PTR(err));
|
||||
|
||||
xe_device_declare_wedged(gt_to_xe(gt));
|
||||
err_pm_put:
|
||||
xe_pm_runtime_put(gt_to_xe(gt));
|
||||
|
||||
return err;
|
||||
|
|
@ -895,7 +898,9 @@ void xe_gt_reset_async(struct xe_gt *gt)
|
|||
return;
|
||||
|
||||
xe_gt_info(gt, "reset queued\n");
|
||||
queue_work(gt->ordered_wq, >->reset.worker);
|
||||
xe_pm_runtime_get_noresume(gt_to_xe(gt));
|
||||
if (!queue_work(gt->ordered_wq, >->reset.worker))
|
||||
xe_pm_runtime_put(gt_to_xe(gt));
|
||||
}
|
||||
|
||||
void xe_gt_suspend_prepare(struct xe_gt *gt)
|
||||
|
|
|
|||
|
|
@ -166,10 +166,10 @@ xe_validation_device_init(struct xe_validation_device *val)
|
|||
*/
|
||||
DEFINE_CLASS(xe_validation, struct xe_validation_ctx *,
|
||||
if (_T) xe_validation_ctx_fini(_T);,
|
||||
({_ret = xe_validation_ctx_init(_ctx, _val, _exec, _flags);
|
||||
_ret ? NULL : _ctx; }),
|
||||
({*_ret = xe_validation_ctx_init(_ctx, _val, _exec, _flags);
|
||||
*_ret ? NULL : _ctx; }),
|
||||
struct xe_validation_ctx *_ctx, struct xe_validation_device *_val,
|
||||
struct drm_exec *_exec, const struct xe_val_flags _flags, int _ret);
|
||||
struct drm_exec *_exec, const struct xe_val_flags _flags, int *_ret);
|
||||
static inline void *class_xe_validation_lock_ptr(class_xe_validation_t *_T)
|
||||
{return *_T; }
|
||||
#define class_xe_validation_is_conditional true
|
||||
|
|
@ -186,7 +186,7 @@ static inline void *class_xe_validation_lock_ptr(class_xe_validation_t *_T)
|
|||
* exhaustive eviction.
|
||||
*/
|
||||
#define xe_validation_guard(_ctx, _val, _exec, _flags, _ret) \
|
||||
scoped_guard(xe_validation, _ctx, _val, _exec, _flags, _ret) \
|
||||
scoped_guard(xe_validation, _ctx, _val, _exec, _flags, &_ret) \
|
||||
drm_exec_until_all_locked(_exec)
|
||||
|
||||
#endif
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user