All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Michael S. Tsirkin" <mst@redhat.com>
To: Markus Armbruster <armbru@redhat.com>
Cc: 'Paolo Bonzini' <pbonzini@redhat.com>,
	qemu-devel@nongnu.org, SeokYeon Hwang <syeon.hwang@samsung.com>
Subject: Re: [Qemu-devel] [PATCH] pci: fixed mismatch of error-handling between pci_qdev_init() and qdev
Date: Thu, 6 Nov 2014 11:26:05 +0200	[thread overview]
Message-ID: <20141106092605.GB15186@redhat.com> (raw)
In-Reply-To: <87wq784rdr.fsf@blackfin.pond.sub.org>

On Thu, Nov 06, 2014 at 10:20:32AM +0100, Markus Armbruster wrote:
> SeokYeon Hwang <syeon.hwang@samsung.com> writes:
> 
> >> -----Original Message-----
> >> From: Paolo Bonzini [mailto:paolo.bonzini@gmail.com] On Behalf Of Paolo
> >> Bonzini
> >> Sent: Wednesday, November 05, 2014 11:55 PM
> >> To: Michael S. Tsirkin
> >> Cc: Markus Armbruster; SeokYeon Hwang; qemu-devel@nongnu.org
> >> Subject: Re: [Qemu-devel] [PATCH] pci: fixed mismatch of error-handling
> >> between pci_qdev_init() and qdev
> >> 
> >> 
> >> 
> >> On 05/11/2014 14:28, Michael S. Tsirkin wrote:
> >> > > I think bypassing the question by converting to realize makes the
> >> > > most sense...
> >> >
> >> > I'm fine with doing that but Markus's patches wouldn't yet have solved
> >> > the problem by themselves since init is still around, right?
> >> >
> >> > This probably means fixing this bug can't justify merging the realize
> >> > patchset after freeze.
> >> 
> >> Yes, I agree.  I meant that the API is not very well defined.  I would
> >> handle everything else on a case-by-case basis, by reviewing each init
> >> function that is converted to realize.
> >> 
> >> Since the patch was for an out-of-tree device, it can wait for 2.3 anyway.
> >> 
> >> Paolo
> >
> > I cannot fully understand your conversation.
> 
> You appear to have a PCIDeviceClass method init() returning a positive
> value.  Doesn't work.  Only values <= 0 do.
> 
> Your proposed fix is to make its caller treat a positive value like a
> negative one.
> 
> Paolo points out that init()'s contract is unclear.  His preferred way
> of clarifying it is to convert PCI from init() to realize(), which has a
> sufficiently clear contract.
> 
> Doesn't help you now.  My "pci: Partial conversion to realize" series,
> will help you once it lands, but only if you convert your device.
> 
> You obviously want a solution earlier.  The one you proposed implicitly
> clarifies the PCIDeviceClass init() contract to "zero means success,
> anything else failure".  I don't think that's a good idea, because it
> makes PCIDeviceClass's init() differ from DeviceClass's.  There,
> non-negative value means success, negative means failure (see
> device_realize()).
> 
> Fix your device not to return positive values instead.
> 
> You could additionally fix pci_qdev_init() to treat positive numbers as
> success, for consistency with device_realize(), but that requires
> auditing all existing PCIDeviceClass init() methods.  Waste of your
> time, because they all go away when we convert to realize().
> 
> > But, I think this patch is still worth before all 'init()' convert to
> > 'realize()'.
> > Moreover, It has no side effect at all.
> 
> I don't like it, because it makes PCIDeviceClass's init() inconsistent
> with DeviceClass's.

I agree with Markus here. A positive return value should not indicate an
error.

-- 
MST

  reply	other threads:[~2014-11-06  9:26 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-11-05 10:11 [Qemu-devel] [PATCH] pci: fixed mismatch of error-handling between pci_qdev_init() and qdev SeokYeon Hwang
2014-11-05 10:59 ` Paolo Bonzini
2014-11-05 12:46 ` Michael S. Tsirkin
2014-11-05 13:16   ` Markus Armbruster
2014-11-05 13:18     ` Paolo Bonzini
2014-11-05 13:28       ` Michael S. Tsirkin
2014-11-05 14:55         ` Paolo Bonzini
2014-11-06  2:26           ` SeokYeon Hwang
2014-11-06  9:20             ` Markus Armbruster
2014-11-06  9:26               ` Michael S. Tsirkin [this message]
2014-11-06  9:41               ` SeokYeon Hwang
2014-11-06  9:23             ` Michael S. Tsirkin
2014-11-07  4:17               ` SeokYeon Hwang
2014-11-07  7:45                 ` Markus Armbruster
2014-11-10  8:24                   ` SeokYeon Hwang
2014-11-10  8:50                     ` Markus Armbruster
2014-11-05 13:28   ` SeokYeon Hwang

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=20141106092605.GB15186@redhat.com \
    --to=mst@redhat.com \
    --cc=armbru@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=syeon.hwang@samsung.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.