On Wed, Feb 20, 2019 at 05:06:24PM +0100, Marc-André Lureau wrote: > Hi,
Hi, > > The chardev context switching code is a bit fragile, as it works as if > the current context is properly synchronized with the new context. It > isn't so obvious to me that concurrent usage of chardev can't happen, > as there might be various main loop sources being dispatched during > the switch. > > Worried about the situation, I wrote those patches a while ago, I > think they are still worth to consider. I used to have some basic > test, but it now conflicts a lot with recent changes. I would like to > get some feedback about the series before I rewrite it. > > The importat patch is "chardev: make qemu_chr_fe_set_handlers() > context switching safer". It works by "freezing" the given contexts > while the chardev will "move" (recreate to the new context) the > various sources it owns. This looks quite ugly to me overall, but still > safer than today. > > This should allow to simplify the scary code from "monitor: set the > chardev context from the main context/thread". Indeed it's at least not that friendly to readers... so out of curiosity - is this the only reason for this series? > > Finally, "char-socket: restart the reconnect timer to switch context" > shows that we have chardev backends that do not switch fully yet. This seems irrelevant to the series, or am I wrong? Thanks, -- Peter Xu