Skip to content
Discussion options

You must be logged in to vote

@mungewell please have a look at discussion/10638.
My hypothesis, more elaborated, is that the irq_handler(m) is running on both cores in parallel.
You may test this by evaluating mem32[0xd0000000], the CPU core id register. Store it's value an a preallocated array, while in the irq_handler(m) ...
If this hypothesis is true then we have a case for which no precaution was taken against yet. It could be that parallel/overlapping
machine.disable_irq() 's and machine.enable_irq(disable) 's are the culprit. You might try to prevent such a race condition by
another use of acquire()/release() locking within the ISR although I have no idea if this is allowable :-) - interesting new territory, it…

Replies: 3 comments 8 replies

Comment options

You must be logged in to vote
1 reply
@mungewell
Comment options

Comment options

You must be logged in to vote
6 replies
@mungewell
Comment options

@rkompass
Comment options

Answer selected by mungewell
@mungewell
Comment options

@mungewell
Comment options

@rkompass
Comment options

@mungewell
Comment options

Comment options

You must be logged in to vote
1 reply
@mungewell
Comment options

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
3 participants