Seems like `static_cast<u32>(hint) & 0xFF == event.ident` here, and doing those right shifts on the event.ident winds up breaking stuff.
Without this change, the if always fails because event_id was getting set to 0 instead.
This commit is contained in:
Stephen Miller 2025-02-02 14:46:05 -06:00
parent 3db766fb12
commit eed81bebcb

View File

@ -86,10 +86,9 @@ struct EqueueEvent {
is_triggered = true; is_triggered = true;
auto hint = reinterpret_cast<u64>(data); auto hint = reinterpret_cast<u64>(data);
if (hint != 0) { if (hint != 0) {
auto event_id = event.ident >> 48;
auto hint_h = static_cast<u32>(hint >> 8) & 0xFFFFFF; auto hint_h = static_cast<u32>(hint >> 8) & 0xFFFFFF;
auto ident_h = static_cast<u32>(event.ident >> 40); auto ident_h = static_cast<u32>(event.ident >> 40);
if ((static_cast<u32>(hint) & 0xFF) == event_id && event_id != 0xFE && if ((static_cast<u32>(hint) & 0xFF) == event.ident && event.ident != 0xFE &&
((hint_h ^ ident_h) & 0xFF) == 0) { ((hint_h ^ ident_h) & 0xFF) == 0) {
auto time = Common::FencedRDTSC(); auto time = Common::FencedRDTSC();
auto mask = 0xF000; auto mask = 0xF000;