On 5 October 2012 18:30, Jan Kiszka <[email protected]> wrote:
> This is nasty, but there is no better way given current mux logic:
>
> As setting up the block device will trigger a qemu_bh_poll while there
> are qemu_chr open events in the queue, we have to register the UARTs
> and everything else that might be mux'ed first so that the right active
> frontend is already registered when the bottom-half is finally
> processed.
So I guess this comes down to what the semantics of bottom halves are.
I can see two plausible options:
1. bottom halves are a mechanism provided by our cpu/device
simulation framework, and so will never be run before the
simulation is fully initialised
* this means devices can register BHs which set irq lines,
send events to chr mux front ends etc etc
* it also means that device setup mustn't trigger a bh_poll
(so we'd need to track down the bit of the block device
setup that's causing this)
2. bottom halves are a generic mechanism that you can use
not just as part of the simulation, and so BHs may run
as soon as they're registered
* this would let us use them for arbitrary purposes in init
* we'd need to audit and fix all the current uses to check
whether they're safe to run early or if they need to have
a 'do nothing if simulation not running' check
Any opinions?
-- PMM