All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Michael S. Tsirkin" <mst@redhat.com>
To: Jesse Barnes <jbarnes@virtuousgeek.org>
Cc: Amos Kong <akong@redhat.com>,
	linux-pci@vger.kernel.org, kvm@vger.kernel.org,
	jasowang@redhat.com, scott@spiteful.org, mtosatti@redhat.com,
	Shaohua Li <shaohua.li@intel.com>,
	Prarit Bhargava <prarit@redhat.com>,
	"Rafael J. Wysocki" <rjw@sisk.pl>
Subject: Re: [PATCH] PCI: Can continually add funcs after adding func0
Date: Wed, 14 Mar 2012 12:31:50 +0200	[thread overview]
Message-ID: <20120314103149.GA7714@redhat.com> (raw)
In-Reply-To: <20120127091721.1e7bb56d@jbarnes-desktop>

On Fri, Jan 27, 2012 at 09:17:21AM -0800, Jesse Barnes wrote:
> On Mon, 5 Dec 2011 11:21:24 -0800
> Jesse Barnes <jbarnes@virtuousgeek.org> wrote:
> 
> > On Fri, 25 Nov 2011 15:03:07 +0800
> > Amos Kong <akong@redhat.com> wrote:
> > 
> > > Boot up a KVM guest, and hotplug multifunction
> > > devices(func1,func2,func0,func3) to guest.
> > > 
> > > for i in 1 2 0 3;do
> > > qemu-img create /tmp/resize$i.qcow2 1G -f qcow2
> > > (qemu) drive_add 0x11.$i id=drv11$i,if=none,file=/tmp/resize$i.qcow2
> > > (qemu) device_add virtio-blk-pci,id=dev11$i,drive=drv11$i,addr=0x11.$i,multifunction=on
> > > done
> > > 
> > > In linux kernel, when func0 of the slot is hot-added, the whole
> > > slot will be marked as 'enabled', then driver will ignore other new
> > > hotadded funcs.
> > > But in Win7 & WinXP, we can continaully add other funcs after adding
> > > func0, all funcs will be added in guest.
> > > 
> > > drivers/pci/hotplug/acpiphp_glue.c:
> > > static int acpiphp_check_bridge(struct acpiphp_bridge *bridge)
> > > {
> > > ....
> > >         for (slot = bridge->slots; slot; slot = slot->next) {
> > >                 if (slot->flags & SLOT_ENABLED) {
> > >                         acpiphp_disable_slot()
> > >                 else
> > >                         acpiphp_enable_slot()
> > > ....                              |
> > > }                                 v
> > >                             enable_device()
> > >                                   |
> > >                                   v
> > >         //only don't enable slot if func0 is not added
> > > 	list_for_each_entry(func, &slot->funcs, sibling) {
> > >                ...
> > >         }
> > >        slot->flags |= SLOT_ENABLED; //mark slot to 'enabled'
> > > 
> > > This patch just make pci driver can continaully add funcs after adding
> > > func 0. Only mark slot to 'enabled' when all funcs are added.
> > > 
> > > For pci multifunction hotplug, we can add functions one by one(func 0 is
> > > necessary), and all functions will be removed in one time.
> > > 
> > > Signed-off-by: Amos Kong <akong@redhat.com>
> > > ---
> > 
> > Rafael, Prarit or Shaohua, any comments?  Would be good to get some
> > tested-bys too.
> 
> Missed the last merge window, but there have been no comments so I'm
> assuming people are ok with this and applying to -next.
> 
> Thanks,

I finally found this supporting statement in the acpi spec:

"For any device, the BIOS provides only information that is added to the
device in a non-hardware standard manner."
Since extra functions can be enumerated in a hardware-standard manner,
it seems clear that it's ok to skip their description in ACPI.

So, belatedly
Acked-by: Michael S. Tsirkin <mst@redhat.com>

> -- 
> Jesse Barnes, Intel Open Source Technology Center



      parent reply	other threads:[~2012-03-14 10:32 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-11-25  7:03 [PATCH] PCI: Can continually add funcs after adding func0 Amos Kong
     [not found] ` <20111205112124.2e7d2ff9@jbarnes-desktop>
     [not found]   ` <20120127091721.1e7bb56d@jbarnes-desktop>
2012-03-14 10:31     ` Michael S. Tsirkin [this message]

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=20120314103149.GA7714@redhat.com \
    --to=mst@redhat.com \
    --cc=akong@redhat.com \
    --cc=jasowang@redhat.com \
    --cc=jbarnes@virtuousgeek.org \
    --cc=kvm@vger.kernel.org \
    --cc=linux-pci@vger.kernel.org \
    --cc=mtosatti@redhat.com \
    --cc=prarit@redhat.com \
    --cc=rjw@sisk.pl \
    --cc=scott@spiteful.org \
    --cc=shaohua.li@intel.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.