From: "Michael S. Tsirkin" <mst@redhat.com>
To: Thomas Huth <thuth@redhat.com>
Cc: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
qemu-devel <qemu-devel@nongnu.org>,
David Gibson <david@gibson.dropbear.id.au>,
Marcel Apfelbaum <marcel@redhat.com>
Subject: Re: [Qemu-devel] pci_nic_init_nofail() only works on root PCI buses?
Date: Wed, 21 Jun 2017 04:39:05 +0300 [thread overview]
Message-ID: <20170621043236-mutt-send-email-mst@kernel.org> (raw)
In-Reply-To: <384e0431-5c29-dee4-a99c-19c350ebba57@redhat.com>
On Wed, Jun 21, 2017 at 03:00:31AM +0200, Thomas Huth wrote:
> On 11.06.2017 17:08, Mark Cave-Ayland wrote:
> > Hi all,
> >
> > Playing around with trying to set up PCI bridges for sun4u, I noticed
> > that I get an assert with the following diff which simply moves the
> > default NIC behind a PCI bridge rather than being directly on the root
> > PCI bus:
> >
> > diff --git a/hw/sparc64/sun4u.c b/hw/sparc64/sun4u.c
> > index 69f565d..0b17f2e 100644
> > --- a/hw/sparc64/sun4u.c
> > +++ b/hw/sparc64/sun4u.c
> > @@ -465,7 +465,7 @@ static void sun4uv_init(MemoryRegion *address_space_mem,
> > parallel_hds_isa_init(isa_bus, MAX_PARALLEL_PORTS);
> >
> > for(i = 0; i < nb_nics; i++)
> > - pci_nic_init_nofail(&nd_table[i], pci_bus, "ne2k_pci", NULL);
> > + pci_nic_init_nofail(&nd_table[i], pci_bus3, "ne2k_pci", NULL);
> >
> > ide_drive_get(hd, ARRAY_SIZE(hd));
> >
> >
> > $ ./qemu-system-sparc64 -nographic
> > qemu-system-sparc64: hw/pci/pci.c:682: pci_get_bus_devfn: Assertion
> > `!root->parent_dev' failed.
> > Aborted
> >
> > Is there any particular reason why the assert() is set to fail if the
> > NIC isn't being instantiated on the root PCI bus?
>
> Sounds strange indeed. At least the patch description of the commit that
> introduce the assert() says that using anything else seems to be an error:
>
> http://git.qemu.org/?p=qemu.git;a=commitdiff;h=85c6e4fabb4c26e5cd8a0
>
> Not sure whether that's still true nowadays, since that commit is
> already 4 years old...
>
> Thomas
pci_get_bus_devfn is not a sensible interface. It uses bus numbers which
are guest assigned in the machine monitor interface.
We keep it around for compatibility reasons.
Just avoid legacy APIs is my advice. New machine types should create
device instances with -device or similar.
--
MST
prev parent reply other threads:[~2017-06-21 1:39 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-06-11 15:08 [Qemu-devel] pci_nic_init_nofail() only works on root PCI buses? Mark Cave-Ayland
2017-06-21 1:00 ` Thomas Huth
2017-06-21 1:39 ` 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=20170621043236-mutt-send-email-mst@kernel.org \
--to=mst@redhat.com \
--cc=david@gibson.dropbear.id.au \
--cc=marcel@redhat.com \
--cc=mark.cave-ayland@ilande.co.uk \
--cc=qemu-devel@nongnu.org \
--cc=thuth@redhat.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).