Attention is currently required from: Raul Rangel, Furquan Shaikh, Tim Wawrzynczak, Julius Werner, Rob Barnes, Karthik Ramasubramanian. Kyösti Mälkki has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/59021 )
Change subject: arch/x86/smp/spinlock: Fix threading when !STAGE_HAS_SPINLOCKS ......................................................................
Patch Set 2:
(1 comment)
File src/arch/x86/include/arch/smp/spinlock.h:
https://review.coreboot.org/c/coreboot/+/59021/comment/e2730ed6_46b1a561 PS2, Line 50: thread_coop_disable();
I can remove the __always_inline. Not really sure why we need it. […]
I can tell you with certainty that AMD codebase has had places where __always_inline was mandatory. So you would be willing to, without argumentation or hesitation, drop an optimisation (or even a requirement) from under arch/ to fulfill the optimisation requirement on your particular platform?!
A context switch is a call to thread_yield(), correct? There is no timer or interrupt driven time-slicing, but the requirement of udelay() calls for context switches to ever happen? With thread_coop_disable() having been called for vprintk() you need something else calling udelay() then? And that vprintk() was never guaranteed to reach thread_yield() anyways. not guaranteed to ever hit an udelay() either.
With the above in mind, how much in parallel will the DMA actually proceed when it is not guaranteed continue_spi_dma_transaction() is called at semi-regular intervals.