All of lore.kernel.org
 help / color / mirror / Atom feed
From: Cornelia Huck <cohuck@redhat.com>
To: Collin Walling <walling@linux.ibm.com>
Cc: David Hildenbrand <david@redhat.com>,
	Christian Borntraeger <borntraeger@de.ibm.com>,
	"Michael S . Tsirkin" <mst@redhat.com>,
	Alexander Graf <agraf@suse.de>,
	qemu-devel@nongnu.org, qemu-s390x@nongnu.org,
	Thomas Huth <thuth@redhat.com>,
	Igor Mammedov <imammedo@redhat.com>,
	Richard Henderson <rth@twiddle.net>
Subject: Re: [Qemu-devel] [PATCH v1 2/4] s390x/zpci: use hotplug_dev instead of looking up the host bridge
Date: Thu, 8 Nov 2018 12:07:41 +0100	[thread overview]
Message-ID: <20181108120741.2e463fe2.cohuck@redhat.com> (raw)
In-Reply-To: <c2c3c667-e04e-9498-c4d7-05eaeedf0a26@linux.ibm.com>

On Wed, 7 Nov 2018 15:28:31 -0500
Collin Walling <walling@linux.ibm.com> wrote:

> On 11/5/18 6:50 AM, David Hildenbrand wrote:
> > On 05.11.18 12:40, Christian Borntraeger wrote:  
> >>
> >>
> >> On 11/05/2018 12:37 PM, David Hildenbrand wrote:  
> >>> On 05.11.18 12:21, Cornelia Huck wrote:  
> >>>> On Mon,  5 Nov 2018 12:03:11 +0100
> >>>> David Hildenbrand <david@redhat.com> wrote:
> >>>>  
> >>>>> We directly have it in our hands.
> >>>>>
> >>>>> Signed-off-by: David Hildenbrand <david@redhat.com>
> >>>>> ---
> >>>>>  hw/s390x/s390-pci-bus.c | 4 ++--
> >>>>>  1 file changed, 2 insertions(+), 2 deletions(-)
> >>>>>
> >>>>> diff --git a/hw/s390x/s390-pci-bus.c b/hw/s390x/s390-pci-bus.c
> >>>>> index 1eaae3aca6..68660eac74 100644
> >>>>> --- a/hw/s390x/s390-pci-bus.c
> >>>>> +++ b/hw/s390x/s390-pci-bus.c
> >>>>> @@ -814,9 +814,9 @@ static bool s390_pci_alloc_idx(S390pciState *s, S390PCIBusDevice *pbdev)
> >>>>>  static void s390_pcihost_plug(HotplugHandler *hotplug_dev, DeviceState *dev,
> >>>>>                                Error **errp)
> >>>>>  {
> >>>>> +    S390pciState *s = S390_PCI_HOST_BRIDGE(hotplug_dev);
> >>>>>      PCIDevice *pdev = NULL;
> >>>>>      S390PCIBusDevice *pbdev = NULL;
> >>>>> -    S390pciState *s = s390_get_phb();
> >>>>>  
> >>>>>      if (object_dynamic_cast(OBJECT(dev), TYPE_PCI_BRIDGE)) {
> >>>>>          BusState *bus;
> >>>>> @@ -924,11 +924,11 @@ static void s390_pcihost_timer_cb(void *opaque)
> >>>>>  static void s390_pcihost_unplug(HotplugHandler *hotplug_dev, DeviceState *dev,
> >>>>>                                  Error **errp)
> >>>>>  {
> >>>>> +    S390pciState *s = S390_PCI_HOST_BRIDGE(hotplug_dev);
> >>>>>      PCIDevice *pci_dev = NULL;
> >>>>>      PCIBus *bus;
> >>>>>      int32_t devfn;
> >>>>>      S390PCIBusDevice *pbdev = NULL;
> >>>>> -    S390pciState *s = s390_get_phb();
> >>>>>  
> >>>>>      if (object_dynamic_cast(OBJECT(dev), TYPE_PCI_BRIDGE)) {
> >>>>>          error_setg(errp, "PCI bridge hot unplug currently not supported");  
> >>>>
> >>>> Not sure whether that is an improvement (s390_get_phb() caches the
> >>>> value, and is called from multiple other places as well.)
> >>>>  
> >>>
> >>> Looking up a variable that is directly passed as an argument doesn't
> >>> look clean to me.  
> >>
> >> I think there was a reason for this caching, namely that qom resolution can
> >> be quite expensive. For the hotplug case this obviously does not matter but
> >> for all the other cases it might. So do we really want to have different 
> >> places use different methods?
> >>  
> > 
> > Caching resolution is fine (as that is expensive), caching a downcast is
> > as far as I remember not necessary. Especially, as you said, for hotplug
> > handlers.

Yes, the complete QOM cast was the expensive thing AFAIR.

> > 
> > Anyhow, if there are strong feelings to this change, I can drop this
> > patch. There are certainly more important things to do in zPCI hotplug code.
> > 
> >   
> 
> Truthfully, I'm not in favor of one over the other. As long as the device handlers
> are consistent, I think either is fine.

I don't feel *that* strong about this change here, either :) Your call.

> 
> However, it would be nice if at some point during plug we cache the PHB somewhere.
> That would be some sort of best-of-both-worlds approach.

Not sure if caching-from-a-downcast would be conceptionally clean. I'd
vote for either taking this patch or dropping it completely.

  reply	other threads:[~2018-11-08 11:08 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-11-05 11:03 [Qemu-devel] [PATCH v1 0/4] s390x/zpci: some hotplug handler cleanups David Hildenbrand
2018-11-05 11:03 ` [Qemu-devel] [PATCH v1 1/4] s390x/zpci: drop msix.available David Hildenbrand
2018-11-05 11:19   ` Cornelia Huck
2018-11-07 16:26     ` [Qemu-devel] [qemu-s390x] " Collin Walling
2018-11-08 10:54       ` Cornelia Huck
2018-11-05 11:25   ` [Qemu-devel] " Thomas Huth
2018-11-12 17:12   ` Cornelia Huck
2018-11-05 11:03 ` [Qemu-devel] [PATCH v1 2/4] s390x/zpci: use hotplug_dev instead of looking up the host bridge David Hildenbrand
2018-11-05 11:21   ` Cornelia Huck
2018-11-05 11:37     ` David Hildenbrand
2018-11-05 11:40       ` Christian Borntraeger
2018-11-05 11:50         ` David Hildenbrand
2018-11-07 20:28           ` Collin Walling
2018-11-08 11:07             ` Cornelia Huck [this message]
2018-11-08 11:56               ` David Hildenbrand
2018-11-05 11:03 ` [Qemu-devel] [PATCH v1 3/4] s390x/zpci: move some hotplug checks to the pre_plug handler David Hildenbrand
2018-11-05 11:50   ` David Hildenbrand
2018-11-07 19:34     ` [Qemu-devel] [qemu-s390x] " Collin Walling
2018-11-07 19:36       ` David Hildenbrand
2018-11-07 19:46         ` Collin Walling
2018-11-05 11:03 ` [Qemu-devel] [PATCH v1 4/4] s390x/zpci: properly fail if the zPCI device cannot be created David Hildenbrand
2018-11-05 12:04   ` Thomas Huth
2018-11-05 12:41     ` Cornelia Huck
2018-11-05 12:46       ` David Hildenbrand
2018-11-08 11:14         ` Cornelia Huck
2018-11-07 20:15   ` Collin Walling
2018-11-08 13:35   ` Cornelia Huck
2018-11-08 13:58     ` David Hildenbrand
2018-11-12 17:14 ` [Qemu-devel] [PATCH v1 0/4] s390x/zpci: some hotplug handler cleanups Cornelia Huck
2018-11-12 17:34   ` David Hildenbrand
2018-11-13  9:03     ` Cornelia Huck
2018-11-13 12:06       ` [Qemu-devel] [qemu-s390x] " David Hildenbrand

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=20181108120741.2e463fe2.cohuck@redhat.com \
    --to=cohuck@redhat.com \
    --cc=agraf@suse.de \
    --cc=borntraeger@de.ibm.com \
    --cc=david@redhat.com \
    --cc=imammedo@redhat.com \
    --cc=mst@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=qemu-s390x@nongnu.org \
    --cc=rth@twiddle.net \
    --cc=thuth@redhat.com \
    --cc=walling@linux.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 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.