On Wed, Jul 20, 2016 at 09:29:06AM +0100, Stefan Hajnoczi wrote: > On Mon, Jul 18, 2016 at 11:21:18PM +0900, Namhyung Kim wrote: > > On Mon, Jul 18, 2016 at 11:03:53AM +0100, Stefan Hajnoczi wrote: > > > On Mon, Jul 18, 2016 at 01:37:40PM +0900, Namhyung Kim wrote: > > > > From: Namhyung Kim <namhyung@xxxxxxxxx> > > > > > > > > Add virtio pstore device to allow kernel log files saved on the host. > > > > It will save the log files on the directory given by pstore device > > > > option. > > > > > > > > $ qemu-system-x86_64 -device virtio-pstore,directory=dir-xx ... > > > > > > > > (guest) # echo c > /proc/sysrq-trigger > > > > > > > > $ ls dir-xx > > > > dmesg-0.enc.z dmesg-1.enc.z > > > > > > > > The log files are usually compressed using zlib. Users can see the log > > > > messages directly on the host or on the guest (using pstore filesystem). > > > > > > The implementation is synchronous (i.e. can pause guest code execution), > > > does not handle write errors, and does not limit the amount of data the > > > guest can write. This is sufficient for ad-hoc debugging and usage with > > > trusted guests. > > > > > > If you want this to be available in environments where the guest isn't > > > trusted then there must be a limit on how much the guest can write or > > > some kind of log rotation. > > > > Right. The synchronous IO is required by the pstore subsystem > > implementation AFAIK (it uses a single psinfo->buf in the loop). > > The pstore subsystem in Linux may be synchronous but the QEMU device > emulation does not have to be synchronous. > > Synchronous device emulation means that no other vcpu or QEMU main loop > processing can occur while device emulation is blocked in a syscall. > This can make the QEMU monitor unavailable for libvirt and management > tools. The guest can experience jitter since vcpus freeze if they > vmexit while device emulation is blocked (it holds the QEMU global > mutex and prevents other QEMU threads from making progress). Thanks for your detailed explanation. I'll try to change pstore implementation to deal with async devices. Thanks, Namhyung > > You could use include/io.h for asynchronous I/O (qio_channel_add_watch()). > > Stefan _______________________________________________ Virtualization mailing list Virtualization@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linuxfoundation.org/mailman/listinfo/virtualization