On 19/02/2019 18:31, Julien Grall wrote: > Hi all, > > I have been looking at using Linux RT in Dom0. Once the guest is started, > the console is ending to have a lot of warning (see trace below). > > After some investigation, this is because the irq handler will now be > threaded. > I can reproduce the same error with the vanilla Linux when passing the option > 'threadirqs' on the command line (the trace below is from 5.0.0-rc7 that has > not RT support). > > FWIW, the interrupt for port 6 is used to for the guest to communicate with > xenstore. > > From my understanding, this is happening because the interrupt handler is now > run in a thread. So we can have the following happening. > > Interrupt context | Interrupt thread > | > receive interrupt port 6 | > clear the evtchn port | > set IRQF_RUNTHREAD | > kick interrupt thread | > | clear IRQF_RUNTHREAD > | call evtchn_interrupt > receive interrupt port 6 | > clear the evtchn port | > set IRQF_RUNTHREAD | > kick interrupt thread | > | disable interrupt port 6 > | evtchn->enabled = false > | [....] > | > | *** Handling the second interrupt *** > | clear IRQF_RUNTHREAD > | call evtchn_interrupt > | WARN(...) > > I am not entirely sure how to fix this. I have two solutions in mind: > > 1) Prevent the interrupt handler to be threaded. We would also need to > switch from spin_lock to raw_spin_lock as the former may sleep on RT-Linux. > > 2) Remove the warning
3) Split the handler (RT-only?) to a non-threaded part containing everything until the "evtchn->enabled = false" and only then kick the thread doing the rest, including the spin_lock(). Juergen _______________________________________________ Xen-devel mailing list Xen-devel@lists.xenproject.org https://lists.xenproject.org/mailman/listinfo/xen-devel