/** * struct heci_gsc_def - graphics security controller heci interface definitions * * @name: name of the heci device * @bar: address of the mmio bar * @bar_size: size of the mmio bar * @use_polling: indication of using polling mode for the device * @slow_firmware: indication of whether the device is slow (needs longer timeouts)
*/ struct heci_gsc_def { constchar *name; unsignedlong bar;
size_t bar_size; bool use_polling; bool slow_firmware;
};
if (!def || !def->name) {
drm_warn(&xe->drm, "HECI is not implemented!\n"); return0;
}
ret = devm_add_action_or_reset(xe->drm.dev, xe_heci_gsc_fini, heci_gsc); if (ret) return ret;
if (!def->use_polling && !xe_survivability_mode_is_enabled(xe)) {
ret = heci_gsc_irq_setup(xe); if (ret) return ret;
}
return heci_gsc_add_device(xe, def);
}
void xe_heci_gsc_irq_handler(struct xe_device *xe, u32 iir)
{ int ret;
if ((iir & GSC_IRQ_INTF(1)) == 0) return;
if (!xe->info.has_heci_gscfi) {
drm_warn_once(&xe->drm, "GSC irq: not supported"); return;
}
if (xe->heci_gsc.irq < 0) return;
ret = generic_handle_irq(xe->heci_gsc.irq); if (ret)
drm_err_ratelimited(&xe->drm, "error handling GSC irq: %d\n", ret);
}
void xe_heci_csc_irq_handler(struct xe_device *xe, u32 iir)
{ int ret;
if ((iir & CSC_IRQ_INTF(1)) == 0) return;
if (!xe->info.has_heci_cscfi) {
drm_warn_once(&xe->drm, "CSC irq: not supported"); return;
}
if (xe->heci_gsc.irq < 0) return;
ret = generic_handle_irq(xe->heci_gsc.irq); if (ret)
drm_err_ratelimited(&xe->drm, "error handling GSC irq: %d\n", ret);
}
Messung V0.5 in Prozent
¤ Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.0.0Bemerkung:
(vorverarbeitet am 2026-06-08)
¤