From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:45081) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZoZ0O-0002Wm-21 for qemu-devel@nongnu.org; Tue, 20 Oct 2015 11:39:21 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZoZ08-0003FR-8N for qemu-devel@nongnu.org; Tue, 20 Oct 2015 11:39:05 -0400 Received: from mx1.redhat.com ([209.132.183.28]:51776) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZoZ08-0003FK-3i for qemu-devel@nongnu.org; Tue, 20 Oct 2015 11:39:00 -0400 Date: Tue, 20 Oct 2015 13:38:56 -0200 From: Eduardo Habkost Message-ID: <20151020153856.GH4914@thinpad.lan.raisama.net> References: <1445279965-19667-1-git-send-email-ehabkost@redhat.com> <562547C2.2070803@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: Subject: Re: [Qemu-devel] [PATCH] xen-platform: Replace assert() with appropriate error reporting List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Stefano Stabellini Cc: pbonzini@redhat.com, qemu-devel@nongnu.org On Tue, Oct 20, 2015 at 11:01:16AM +0100, Stefano Stabellini wrote: > On Mon, 19 Oct 2015, Paolo Bonzini wrote: > > On 19/10/2015 20:39, Eduardo Habkost wrote: > > > Commit dbb7405d8caad0814ceddd568cb49f163a847561 made it possible to > > > trigger an assert using "-device xen-platform". Replace it with > > > appropriate error reporting. > > > > > > Before: > > > > > > $ qemu-system-x86_64 -device xen-platform > > > qemu-system-x86_64: hw/i386/xen/xen_platform.c:391: xen_platform_initfn: Assertion `xen_enabled()' failed. > > > Aborted (core dumped) > > > $ > > > > > > After: > > > > > > $ qemu-system-x86_64 -device xen-platform > > > qemu-system-x86_64: -device xen-platform: xen-platform device requires the Xen accelerator > > > qemu-system-x86_64: -device xen-platform: Device initialization failed > > > $ > > > > > > Signed-off-by: Eduardo Habkost > > > --- > > > hw/i386/xen/xen_platform.c | 6 +++++- > > > 1 file changed, 5 insertions(+), 1 deletion(-) > > > > > > diff --git a/hw/i386/xen/xen_platform.c b/hw/i386/xen/xen_platform.c > > > index 8682c42..5667f29 100644 > > > --- a/hw/i386/xen/xen_platform.c > > > +++ b/hw/i386/xen/xen_platform.c > > > @@ -33,6 +33,7 @@ > > > #include "trace.h" > > > #include "exec/address-spaces.h" > > > #include "sysemu/block-backend.h" > > > +#include "qemu/error-report.h" > > > > > > #include > > > > > > @@ -388,7 +389,10 @@ static int xen_platform_initfn(PCIDevice *dev) > > > uint8_t *pci_conf; > > > > > > /* Device will crash on reset if xen is not initialized */ > > > - assert(xen_enabled()); > > > + if (!xen_enabled()) { > > > + error_report("xen-platform device requires the Xen accelerator"); > > > > You can use PCIDeviceClass's realize (see Stefano's > > http://thread.gmane.org/gmane.comp.emulators.qemu/369998) to achieve > > better error propagation. > Oops, I misunderstood the previous message and I thought Paolo meant the xen_enabled() check was being done too early, and not at realize time. I wasn't aware that PCIDeviceClass::realize existed. > Eduardo, if you are happy with that, I'll wait for your respin :-) Yes, I will send a new version based on your conversion to k->realize. Thanks! -- Eduardo