[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen master] tools/xenconsoled: Log Xen boot messages at startup.
commit e40f01f4d5181feb7e280410bf9bf05e8301279a Author: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> AuthorDate: Tue Jul 22 17:17:16 2014 +0100 Commit: Ian Campbell <ian.campbell@xxxxxxxxxx> CommitDate: Thu Jul 24 16:23:19 2014 +0100 tools/xenconsoled: Log Xen boot messages at startup. When xenconsoled starts, there will be log lines in the Xen console ring from boot, even though VIRQ_CON_RING is not yet pending. Add a force option to handle_hv_logs() which bypasses the event channel check, allowing xenconsoled to drain the Xen boot messages when it starts, rather than at the first subsequent time that VIRQ_CON_RING becomes set. Signed-off-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> CC: Ian Campbell <Ian.Campbell@xxxxxxxxxx> CC: Ian Jackson <Ian.Jackson@xxxxxxxxxxxxx> Acked-by: Ian Campbell <ian.campbell@xxxxxxxxxx> --- tools/console/daemon/io.c | 13 ++++++++----- 1 files changed, 8 insertions(+), 5 deletions(-) diff --git a/tools/console/daemon/io.c b/tools/console/daemon/io.c index b1268fa..ac08b5b 100644 --- a/tools/console/daemon/io.c +++ b/tools/console/daemon/io.c @@ -907,15 +907,15 @@ static void handle_xs(void) free(vec); } -static void handle_hv_logs(xc_evtchn *xce_handle) +static void handle_hv_logs(xc_evtchn *xce_handle, bool force) { static char buffer[1024*16]; char *bufptr = buffer; unsigned int size; static uint32_t index = 0; - evtchn_port_or_error_t port; + evtchn_port_or_error_t port = -1; - if ((port = xc_evtchn_pending(xce_handle)) == -1) + if (!force && ((port = xc_evtchn_pending(xce_handle)) == -1)) return; do @@ -938,7 +938,8 @@ static void handle_hv_logs(xc_evtchn *xce_handle) "%d (%s)", errno, strerror(errno)); } while (size == sizeof(buffer)); - (void)xc_evtchn_unmask(xce_handle, port); + if (port != -1) + (void)xc_evtchn_unmask(xce_handle, port); } static void handle_log_reload(void) @@ -1024,6 +1025,8 @@ void handle_io(void) "%d (%s)", errno, strerror(errno)); goto out; } + /* Log the boot dmesg even if VIRQ_CON_RING isn't pending. */ + handle_hv_logs(xce_handle, true); } xcg_handle = xc_gnttab_open(NULL, 0); @@ -1134,7 +1137,7 @@ void handle_io(void) errno, strerror(errno)); break; } else if (fds[xce_pollfd_idx].revents & POLLIN) - handle_hv_logs(xce_handle); + handle_hv_logs(xce_handle, false); xce_pollfd_idx = -1; } -- generated by git-patchbot for /home/xen/git/xen.git#master _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |