diff options
author | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2018-06-12 11:38:05 +1000 |
---|---|---|
committer | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2018-06-12 11:38:05 +1000 |
commit | 1e0f2bb69f73b87e49aa15ba00d60a18736bc0b6 (patch) | |
tree | a434c5021a148fe5c7c38889f2c2cc904ffc2a32 /dist-bin | |
parent | 8028b238dd950e62ddd4c2336c7aac1e1a01400e (diff) | |
download | cf-fsi-1e0f2bb69f73b87e49aa15ba00d60a18736bc0b6.tar.gz cf-fsi-1e0f2bb69f73b87e49aa15ba00d60a18736bc0b6.zip |
Fix interrupt race
The current sequence is possible in the main command loop
and in the arbitration sequence:
- STOP enables interrupt and stops execution
- Interrupt occurs (stale from previous command)
- No command (or arbitration response)
- Command is written
- Interrupt occurs again, is taken, does nothing
- STOP executes, doesn't wake up
We need to ensure that we only take the interrupt on
STOP, so we need to re-mask after every STOP. (We could
alternatively modify the SR in the interrupt stack to
return from the handler with IRQs disabled but this is
easier).
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Diffstat (limited to 'dist-bin')
0 files changed, 0 insertions, 0 deletions