public inbox for passt-dev@passt.top
 help / color / mirror / code / Atom feed
From: Stefano Brivio <sbrivio@redhat.com>
To: Andrea Bolognani <abologna@redhat.com>
Cc: passt-dev@passt.top, Alona Paz <alkaplan@redhat.com>
Subject: Re: [PATCH] qrap: Pass PCI device numbers to qemu in base 10, not in base 16
Date: Wed, 22 Feb 2023 11:45:08 +0100	[thread overview]
Message-ID: <20230222114508.10c0fd74@elisabeth> (raw)
In-Reply-To: <CABJz62Op3xZyh9Gbqw9J7b-F7SpY3ziW33B8g4M00BU7z-4C7g@mail.gmail.com>

On Wed, 22 Feb 2023 02:40:32 -0800
Andrea Bolognani <abologna@redhat.com> wrote:

> On Tue, Feb 21, 2023 at 08:24:25PM +0100, Stefano Brivio wrote:
> >  		if (!has_json) {
> >  			snprintf(dev_str, ARG_MAX,
> > -			         "%s,%s%x%s,netdev=hostnet0,x-txburst=4096",
> > +			         "%s,%s%i%s,netdev=hostnet0,x-txburst=4096",
> >  			         dev->name, dev->template, i, dev->template_post);
> >  		} else {
> >  			snprintf(dev_str, ARG_MAX,
> > -			         "{\"driver\":\"%s\",%s%x\"%s,\"netdev\":\"hostnet0\",\"x-txburst\":4096}",
> > +			         "{\"driver\":\"%s\",%s%i\"%s,\"netdev\":\"hostnet0\",\"x-txburst\":4096}",
> >  			         dev->name, dev->template_json, i, dev->template_json_post);
> >  		}  
> 
> I don't think this is going to work.
> 
> The problem is that, while PCI buses are indeed named with increasing
> numbers in integer format (pci.9, pci.10 and so on), PCI slots are
> addressed using hexadecimal format (0x9, 0xa and so on). libvirt uses
> this naming convention because it matches QEMU's.
> 
> So if you have an i440fx machine with many devices, they will all[1]
> be put on pci.0, the corresponding arguments will look like
> 
>   -device virtio-net-pci,bus=pci.0,addr=0xa
> 
> and the original version of the code will work correctly.
> 
> If the machine is q35, however, devices will not be put on pcie.0
> directly but rather attached to pcie-root-ports, each one of which
> creates a separate PCI bus. So the arguments will look like
> 
>   -device virtio-net-pci,bus=pci.10,addr=0x0
> 
> where it is the new version of the code that would do the right
> thing.

Oh, oops, I didn't know that.

> What I think needs to happen, is that each pci_dev should contain a
> base value (16 for i440fx and 10 for q35), which is used both in the
> strtol() call used to parse the command line produced by libvirt and
> to decide whether %x or %i should be used with snprintf() to generate
> qrap's own arguments.

Right, I think it makes sense. Will you prepare a patch in this sense
or should I try?

-- 
Stefano


  reply	other threads:[~2023-02-22 10:45 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-02-21 19:24 [PATCH] qrap: Pass PCI device numbers to qemu in base 10, not in base 16 Stefano Brivio
2023-02-22  0:27 ` David Gibson
2023-02-22 10:40 ` Andrea Bolognani
2023-02-22 10:45   ` Stefano Brivio [this message]
2023-02-22 12:47     ` Andrea Bolognani
2023-02-22 13:02       ` Stefano Brivio
2023-02-22 22:27   ` David Gibson
2023-02-23 14:06     ` Andrea Bolognani
2023-02-24  7:14       ` Stefano Brivio
2023-02-24 19:05         ` Andrea Bolognani
2023-02-24 19:32           ` Stefano Brivio
2023-02-25  1:44             ` David Gibson

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=20230222114508.10c0fd74@elisabeth \
    --to=sbrivio@redhat.com \
    --cc=abologna@redhat.com \
    --cc=alkaplan@redhat.com \
    --cc=passt-dev@passt.top \
    /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.
Code repositories for project(s) associated with this public inbox

	https://passt.top/passt

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 IMAP folder(s).