From mboxrd@z Thu Jan 1 00:00:00 1970 From: Cornelia Huck Subject: Re: [PATCH 1/3] virtio: Basic implementation of virtio pstore driver Date: Mon, 18 Jul 2016 09:54:39 +0200 Message-ID: <20160718095439.1eabb340.cornelia.huck@de.ibm.com> References: <1468816661-6345-1-git-send-email-namhyung@kernel.org> <1468816661-6345-2-git-send-email-namhyung@kernel.org> Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: QUOTED-PRINTABLE Cc: LKML , Paolo Bonzini , Radim =?UTF-8?B?S3LEjW3DocWZ?= , "Michael S. Tsirkin" , Anthony Liguori , Anton Vorontsov , Colin Cross , Kees Cook , Tony Luck , Steven Rostedt , Ingo Molnar , Minchan Kim , kvm@vger.kernel.org, qemu-devel@nongnu.org, virtualization@lists.linux-foundation.org To: Namhyung Kim Return-path: Received: from mx0a-001b2d01.pphosted.com ([148.163.156.1]:51019 "EHLO mx0a-001b2d01.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751488AbcGRHyx convert rfc822-to-8bit (ORCPT ); Mon, 18 Jul 2016 03:54:53 -0400 Received: from pps.filterd (m0098409.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.16.0.11/8.16.0.11) with SMTP id u6I7rmVA024703 for ; Mon, 18 Jul 2016 03:54:52 -0400 Received: from e06smtp11.uk.ibm.com (e06smtp11.uk.ibm.com [195.75.94.107]) by mx0a-001b2d01.pphosted.com with ESMTP id 248nbhr33v-1 (version=TLSv1.2 cipher=AES256-SHA bits=256 verify=NOT) for ; Mon, 18 Jul 2016 03:54:52 -0400 Received: from localhost by e06smtp11.uk.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Mon, 18 Jul 2016 08:54:49 +0100 In-Reply-To: <1468816661-6345-2-git-send-email-namhyung@kernel.org> Sender: kvm-owner@vger.kernel.org List-ID: On Mon, 18 Jul 2016 13:37:39 +0900 Namhyung Kim wrote: > The virtio pstore driver provides interface to the pstore subsystem s= o > that the guest kernel's log/dump message can be saved on the host > machine. Users can access the log file directly on the host, or on t= he > guest at the next boot using pstore filesystem. It currently deals w= ith > kernel log (printk) buffer only, but we can extend it to have other > information (like ftrace dump) later. Like the idea. >=20 > It supports legacy PCI device using single order-2 page buffer. As a= ll There should not be anything in there that limits this to pci, no? > operation of pstore is synchronous, it would be fine IMHO. However I > don't know how to make write operation synchronous since it's called > with a spinlock held (from any context including NMI). >=20 > Cc: Paolo Bonzini > Cc: Radim Kr=C4=8Dm=C3=A1=C5=99 > Cc: "Michael S. Tsirkin" > Cc: Anthony Liguori > Cc: Anton Vorontsov > Cc: Colin Cross > Cc: Kees Cook > Cc: Tony Luck > Cc: Steven Rostedt > Cc: Ingo Molnar > Cc: Minchan Kim > Cc: kvm@vger.kernel.org > Cc: qemu-devel@nongnu.org > Cc: virtualization@lists.linux-foundation.org > Signed-off-by: Namhyung Kim > --- > drivers/virtio/Kconfig | 10 ++ > drivers/virtio/Makefile | 1 + > drivers/virtio/virtio_pstore.c | 317 +++++++++++++++++++++++++++= ++++++++++ > include/uapi/linux/Kbuild | 1 + > include/uapi/linux/virtio_ids.h | 1 + > include/uapi/linux/virtio_pstore.h | 53 +++++++ > 6 files changed, 383 insertions(+) > create mode 100644 drivers/virtio/virtio_pstore.c > create mode 100644 include/uapi/linux/virtio_pstore.h >=20 (...) > diff --git a/drivers/virtio/virtio_pstore.c b/drivers/virtio/virtio_p= store.c > new file mode 100644 > index 000000000000..6fe62c0f1508 > --- /dev/null > +++ b/drivers/virtio/virtio_pstore.c > @@ -0,0 +1,317 @@ > +#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt > + > +#include > +#include > +#include > +#include > +#include > +#include > +#include > + > +#define VIRT_PSTORE_ORDER 2 > +#define VIRT_PSTORE_BUFSIZE (4096 << VIRT_PSTORE_ORDER) It may make sense to make the size of the buffer configurable through the config space. (...) > diff --git a/include/uapi/linux/virtio_ids.h b/include/uapi/linux/vir= tio_ids.h > index 77925f587b15..cba63225d85a 100644 > --- a/include/uapi/linux/virtio_ids.h > +++ b/include/uapi/linux/virtio_ids.h > @@ -41,5 +41,6 @@ > #define VIRTIO_ID_CAIF 12 /* Virtio caif */ > #define VIRTIO_ID_GPU 16 /* virtio GPU */ > #define VIRTIO_ID_INPUT 18 /* virtio input */ > +#define VIRTIO_ID_PSTORE 19 /* virtio pstore */ This id is already used by one of the new device types queued but not yet in the standard. IIRC, 22 is the next free one. Speaking of the standard: I think it makes sense to at least reserve a device id for pstore, as the idea is sound. Maybe prepare a patch to the standard as well if you have time? > =20 > #endif /* _LINUX_VIRTIO_IDS_H */