• M
    chardev: fix CHR_EVENT_OPENED events for mux chardevs · 7b7ab18d
    Michael Roth 提交于
    As of bd5c51ee, chardevs no longer use
    bottom-halves to issue CHR_EVENT_OPENED events. To maintain past
    semantics, we instead defer the CHR_EVENT_OPENED events toward the end
    of chardev initialization.
    
    For muxes, this isn't good enough, since a range of FEs must be able
    to attach to the mux prior to any CHR_EVENT_OPENED being issued, else
    each FE will immediately print it's initial output (prompts, banners,
    etc.) just prior to us switching to the next FE as part of
    initialization.
    
    The is new and confusing behavior for users, as they'll see output for
    things like the HMP monitor, even though their the current mux focus
    may be a guest serial port with potentially no output.
    
    We fix this by further deferring CHR_EVENT_OPENED events for FEs
    associated with muxes until after machine init by flagging mux chardevs
    with 'explicit_be_open', which suppresses emission of CHR_EVENT_OPENED
    events until we explicitly set the mux as opened later.
    
    Currently, we must defer till after machine init since we potentially
    associate FEs with muxes as part of realize (for instance,
    serial_isa_realizefn).
    Signed-off-by: NMichael Roth <mdroth@linux.vnet.ibm.com>
    Message-id: 1375207462-8141-1-git-send-email-mdroth@linux.vnet.ibm.com
    Cc: qemu-stable@nongnu.org
    Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
    7b7ab18d
char.h 8.7 KB