qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Halil Pasic <pasic@linux.vnet.ibm.com>
To: Cornelia Huck <cohuck@redhat.com>
Cc: thuth@redhat.com, zyimin@linux.vnet.ibm.com, david@redhat.com,
	pmorel@linux.vnet.ibm.com, agraf@suse.de, qemu-devel@nongnu.org,
	borntraeger@de.ibm.com
Subject: Re: [Qemu-devel] [PATCH v4 09/10] s390x/kvm: msi route fixup for non-pci
Date: Mon, 21 Aug 2017 17:10:41 +0200	[thread overview]
Message-ID: <aa499e7a-2692-d3b8-d3f5-c8bc1d5783d2@linux.vnet.ibm.com> (raw)
In-Reply-To: <20170821141353.32a1242c.cohuck@redhat.com>



On 08/21/2017 02:13 PM, Cornelia Huck wrote:
> On Mon, 21 Aug 2017 14:00:15 +0200
> Halil Pasic <pasic@linux.vnet.ibm.com> wrote:
> 
>> On 08/21/2017 11:16 AM, Cornelia Huck wrote:
>>> If we don't provide pci, we cannot have a pci device for which we
>>> have to translate to adapter routes: just return -ENODEV.
>>>
>>> Signed-off-by: Cornelia Huck <cohuck@redhat.com>
>>> ---
>>>  target/s390x/kvm.c | 6 ++++++
>>>  1 file changed, 6 insertions(+)
>>>
>>> diff --git a/target/s390x/kvm.c b/target/s390x/kvm.c
>>> index 9de165d8b1..d8db1cbf6e 100644
>>> --- a/target/s390x/kvm.c
>>> +++ b/target/s390x/kvm.c
>>> @@ -2424,6 +2424,12 @@ int kvm_arch_fixup_msi_route(struct kvm_irq_routing_entry *route,
>>>      uint32_t idx = data >> ZPCI_MSI_VEC_BITS;
>>>      uint32_t vec = data & ZPCI_MSI_VEC_MASK;
>>>
>>> +    if (!s390_has_feat(S390_FEAT_ZPCI)) {
>>> +        /* How can we get here without pci enabled? */
>>> +        g_assert(false);  
>>
>> You don't tell us about the g_assert in the commit message.
>> Do you expect G_DISABLE_ASSERT being defined for production 
>> builds. I've grepped for G_DISABLE_ASSERT and found nothing.
> 
> AFAIK this is set by distribution builds. I've also noticed that mingw
> builds treat (g_)assert() as if code flow continues, but I don't know
> whether asserts do anything there at all.
> 

After thinking some more,  I would prefer the the commit message being
modified so, that it's clear, what we really want is the assert; or this
assert being dropped or replaced with some kind of warning/tracing.

I assume no production QEMU should ever return -ENODEV here (and if it
does, it's due to an QEMU bug). So the assert is there to communicate
with the devel, and just in case if the client code fails to fulfill
their part of the contract.  In this case we shall fail fast and hard,
and no such QEMU should ship. The return -ENODEV is then 'just in case'
on the square -- a failsafe for the failsafe (which does make sense
to me).

On the contrary if we assume this is a legit error condition (and a part
of the contract) then according to HACKING 7.2 Handling errors we shall
not call exit() or abort() to handle an error that can be triggered by
the guest in particular and operation related errors in general. Makes
perfect sense to me.

Pierre helped me, kvm_arch_fixup_msi_route is guest triggered and also
considering this particular case killing off the QEMU, and the guest does
not seem like the lesser evil.

The situation is just complicated by the fact that there is code which
relies on assert(true) asserting for correctness (e.g. virtio goes so far
to make builds with normal asserts disabled fail). Thus for me it's hard
to assume that the assertion is guaranteed to be disabled in production.

But if it ain't disabled than it calls abort() which we should not
do (HACKING and IMHO common sense).

TL;DR

I'm for modifying the commit message so it tells us about
the assert.

>>
>> And why g_assert over assert (again no guidance in HACKING
>> mostly asking for my own learning)?
> 
> I do recall a recent(ish) discussion, but not the details. Anyway,
> using glib interfaces seems more consistent.

We can't live with NDEBUG is another reason for using g_assert (makes
my preferred solution work).

Regards,
Halil

[..]

  reply	other threads:[~2017-08-21 15:11 UTC|newest]

Thread overview: 44+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-08-21  9:16 [Qemu-devel] [PATCH v4 00/10] zpci detangling Cornelia Huck
2017-08-21  9:16 ` [Qemu-devel] [PATCH v4 01/10] 9pfs: fix dependencies Cornelia Huck
2017-08-21  9:16 ` [Qemu-devel] [PATCH v4 02/10] kvm: remove hard dependency on pci Cornelia Huck
2017-08-21 16:02   ` Pierre Morel
2017-08-22  9:04     ` Cornelia Huck
2017-08-23 11:05       ` Pierre Morel
2017-08-21  9:16 ` [Qemu-devel] [PATCH v4 03/10] s390x/pci: add stubs Cornelia Huck
2017-08-21  9:16 ` [Qemu-devel] [PATCH v4 04/10] s390x: chsc nt2 events are pci-only Cornelia Huck
2017-08-21 12:24   ` Thomas Huth
2017-08-21  9:16 ` [Qemu-devel] [PATCH v4 05/10] s390x/pci: do not advertise pci on non-pci builds Cornelia Huck
2017-08-21 12:29   ` Thomas Huth
2017-08-21  9:16 ` [Qemu-devel] [PATCH v4 06/10] s390x/ccw: create s390 phb conditionally Cornelia Huck
2017-08-21  9:16 ` [Qemu-devel] [PATCH v4 07/10] s390x/sclp: properly guard pci-specific functions Cornelia Huck
2017-08-21 11:41   ` Halil Pasic
2017-08-21 13:16     ` Cornelia Huck
2017-08-21 13:32       ` Halil Pasic
2017-08-21 13:36         ` Cornelia Huck
2017-08-21 14:58   ` Pierre Morel
2017-08-21 16:24     ` Halil Pasic
2017-08-22  8:39       ` Cornelia Huck
2017-08-22  9:20         ` Halil Pasic
2017-08-22  9:39           ` Cornelia Huck
2017-08-22 12:57             ` Cornelia Huck
2017-08-22 13:00               ` Halil Pasic
2017-08-22 12:58             ` Halil Pasic
2017-08-22 13:24               ` Cornelia Huck
2017-08-22 13:54                 ` Halil Pasic
2017-08-22 14:15                   ` Cornelia Huck
2017-08-22 14:34                     ` Halil Pasic
2017-08-22 15:10                       ` Cornelia Huck
2017-08-22 14:06                 ` Cornelia Huck
2017-08-22 14:27                   ` Halil Pasic
2017-08-22 14:34                     ` Cornelia Huck
2017-08-21  9:16 ` [Qemu-devel] [PATCH v4 08/10] s390x/pci: fence off instructions for non-pci Cornelia Huck
2017-08-23 14:10   ` Halil Pasic
2017-08-23 15:40     ` Cornelia Huck
2017-08-21  9:16 ` [Qemu-devel] [PATCH v4 09/10] s390x/kvm: msi route fixup " Cornelia Huck
2017-08-21 12:00   ` Halil Pasic
2017-08-21 12:13     ` Cornelia Huck
2017-08-21 15:10       ` Halil Pasic [this message]
2017-08-21 15:17         ` Thomas Huth
2017-08-21 15:30           ` Halil Pasic
2017-08-23 10:03             ` Cornelia Huck
2017-08-21  9:16 ` [Qemu-devel] [PATCH v4 10/10] s390x: refine pci dependencies Cornelia Huck

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=aa499e7a-2692-d3b8-d3f5-c8bc1d5783d2@linux.vnet.ibm.com \
    --to=pasic@linux.vnet.ibm.com \
    --cc=agraf@suse.de \
    --cc=borntraeger@de.ibm.com \
    --cc=cohuck@redhat.com \
    --cc=david@redhat.com \
    --cc=pmorel@linux.vnet.ibm.com \
    --cc=qemu-devel@nongnu.org \
    --cc=thuth@redhat.com \
    --cc=zyimin@linux.vnet.ibm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).