All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jan Kiszka <jan.kiszka@web.de>
To: "Michael S. Tsirkin" <mst@redhat.com>
Cc: Alex Williamson <alex.williamson@redhat.com>,
	qemu-devel <qemu-devel@nongnu.org>
Subject: Re: [Qemu-devel] [PATCH 13/13] qdev-properties: Add pci-devaddr property
Date: Sun, 10 Jun 2012 12:52:45 +0200	[thread overview]
Message-ID: <4FD47C7D.8040706@web.de> (raw)
In-Reply-To: <20120610104929.GG6250@redhat.com>

[-- Attachment #1: Type: text/plain, Size: 3753 bytes --]

On 2012-06-10 12:49, Michael S. Tsirkin wrote:
> On Sun, Jun 10, 2012 at 12:14:36PM +0200, Jan Kiszka wrote:
>> On 2012-06-10 11:35, Michael S. Tsirkin wrote:
>>> On Mon, Jun 04, 2012 at 10:52:21AM +0200, Jan Kiszka wrote:
>>>> Add a property to receive a fully qualified PCI device address.
>>>>
>>>> Will be used by KVM device assignment.
>>>>
>>>> Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
>>>
>>> I'd like to ponder this a bit more.  What bothers me is that this mixes
>>> two things:
>>> 	- addressing of qemu devices
>>> 		Using full device addresses there is a legacy feature,
>>> 		users really should supply the parent bus and
>>> 		the bus local address.
>>> 	- addressing devices on the linux host for assignment
>>> 		It so happens that the syntax matches
>>> 		the legacy naming very closely,
>>> 		but conceptually is completely unrelated
>>
>> We can keep code duplications, of course.
>>
>>>
>>>> ---
>>>>  hw/qdev-properties.c |   48 ++++++++++++++++++++++++++++++++++++++++++++++++
>>>>  hw/qdev.h            |    3 +++
>>>>  2 files changed, 51 insertions(+), 0 deletions(-)
>>>>
>>>> diff --git a/hw/qdev-properties.c b/hw/qdev-properties.c
>>>> index 32e41f1..6634f22 100644
>>>> --- a/hw/qdev-properties.c
>>>> +++ b/hw/qdev-properties.c
>>>> @@ -946,6 +946,54 @@ PropertyInfo qdev_prop_pci_devfn = {
>>>>      .max   = 0xFFFFFFFFULL,
>>>>  };
>>>>  
>>>> +static void get_pci_devaddr(Object *obj, Visitor *v, void *opaque,
>>>> +                            const char *name, Error **errp)
>>>> +{
>>>> +    DeviceState *dev = DEVICE(obj);
>>>> +    Property *prop = opaque;
>>>> +    PCIDeviceAddress *addr = qdev_get_prop_ptr(dev, prop);
>>>> +    char buffer[10 + 3 + 1];
>>>> +    char *p = buffer;
>>>> +
>>>> +    snprintf(buffer, sizeof(buffer), "%04x:%02x:%02x.%02x",
>>>> +             addr->domain, addr->bus, addr->slot, addr->function);
>>>> +
>>>> +    visit_type_str(v, &p, name, errp);
>>>> +}
>>>> +
>>>> +static void set_pci_devaddr(Object *obj, Visitor *v, void *opaque,
>>>> +                            const char *name, Error **errp)
>>>> +{
>>>> +    DeviceState *dev = DEVICE(obj);
>>>> +    Property *prop = opaque;
>>>> +    PCIDeviceAddress *addr = qdev_get_prop_ptr(dev, prop);
>>>> +    Error *local_err = NULL;
>>>> +    char *str;
>>>> +
>>>> +    if (dev->state != DEV_STATE_CREATED) {
>>>> +        error_set(errp, QERR_PERMISSION_DENIED);
>>>> +        return;
>>>> +    }
>>>> +
>>>> +    visit_type_str(v, &str, name, &local_err);
>>>> +    if (local_err) {
>>>> +        error_propagate(errp, local_err);
>>>> +        return;
>>>> +    }
>>>> +
>>>> +    if (qemu_parse_pci_devaddr(str, addr,
>>>> +                               PCI_DEVADDR_WITH_DOM_BUS_OPT |
>>>> +                               PCI_DEVADDR_WITH_FUNC) < 0) {
>>>> +        error_set_from_qdev_prop_error(errp, EINVAL, dev, prop, str);
>>>> +    }
>>>> +}
>>>> +
>>>> +PropertyInfo qdev_prop_pci_devaddr = {
>>>> +    .name  = "pci-devaddr",
>>>
>>> This is a very confusing name.  Something like host-pci-address?
>>
>> That might be an option.
>>
>>> This also should be built on linux only.
>>
>> Why, what do we gain with #ifdefs? And isn't the addressing concept generic?
> 
> Not the XXX:XX.X format. And not the concept of a domain.
> 
>>> Can this be part of device assignment code instead of qdev?
>>
>> How does VFIO address their host devices?
> 
> You get an fd I think. I think you don't need to know the host address.

vfio_pci.c contains a nice function called "parse_hostaddr". You may
guess what it does. ;)

So we need this generic service. Let's called it pci-host-devaddr and be
fine?

Jan


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 262 bytes --]

  reply	other threads:[~2012-06-10 10:52 UTC|newest]

Thread overview: 88+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-06-04  8:52 [Qemu-devel] [PATCH 00/13] pci: Cleanups & preparations for KVM device assignment Jan Kiszka
2012-06-04  8:52 ` [Qemu-devel] [PATCH 01/13] pci: Refactor pci_change_irq_level Jan Kiszka
2012-06-10 11:28   ` Michael S. Tsirkin
2012-06-04  8:52 ` [Qemu-devel] [PATCH 02/13] pci: Fold pci_bus_new_inplace into pci_bus_new Jan Kiszka
2012-06-07 12:51   ` Andreas Färber
2012-06-07 15:07     ` Jan Kiszka
2012-06-04  8:52 ` [Qemu-devel] [PATCH 03/13] pci: Introduce cached device INTx routing Jan Kiszka
2012-06-10 11:28   ` Michael S. Tsirkin
2012-06-04  8:52 ` [Qemu-devel] [PATCH 04/13] pci: Rename map_irq to route_pin Jan Kiszka
2012-06-10 11:28   ` Michael S. Tsirkin
2012-06-10 13:23   ` Michael S. Tsirkin
2012-06-04  8:52 ` [Qemu-devel] [PATCH 05/13] pci: Add pci_device_route_intx_to_irq Jan Kiszka
2012-06-07 14:32   ` Michael S. Tsirkin
2012-06-07 15:10     ` Jan Kiszka
2012-06-07 16:28       ` Michael S. Tsirkin
2012-06-07 16:46         ` Jan Kiszka
2012-06-07 16:55           ` Michael S. Tsirkin
2012-06-10  9:55           ` Michael S. Tsirkin
2012-06-10 10:08             ` Jan Kiszka
2012-06-10 10:41               ` Michael S. Tsirkin
2012-06-10 10:49                 ` Jan Kiszka
2012-06-10 10:53                   ` Michael S. Tsirkin
2012-06-10 14:19                   ` Alex Williamson
2012-06-10 14:43                     ` Michael S. Tsirkin
2012-06-10 15:25                       ` Alex Williamson
2012-06-10 15:55                         ` Michael S. Tsirkin
2012-06-10 16:30                           ` Jan Kiszka
2012-06-10 16:50                             ` Michael S. Tsirkin
2012-06-10 17:04                               ` Michael S. Tsirkin
2012-06-04  8:52 ` [Qemu-devel] [PATCH 06/13] pci: Add INTx routing notifier Jan Kiszka
2012-06-07 13:14   ` Michael S. Tsirkin
2012-06-07 15:13     ` Jan Kiszka
2012-06-08 12:47   ` [Qemu-devel] [PATCH v2 " Jan Kiszka
2012-06-10  9:48   ` [Qemu-devel] [PATCH " Michael S. Tsirkin
2012-06-10 10:05     ` Jan Kiszka
2012-06-10 10:33       ` Michael S. Tsirkin
2012-06-10 10:44         ` Jan Kiszka
2012-06-10 11:11           ` Michael S. Tsirkin
2012-06-10 11:18             ` Jan Kiszka
2012-06-10 11:39               ` Michael S. Tsirkin
2012-06-10 12:09                 ` Jan Kiszka
2012-06-10 12:16                   ` Michael S. Tsirkin
2012-06-10 12:33                     ` Jan Kiszka
2012-06-10 12:42                       ` Michael S. Tsirkin
2012-06-10 12:47                         ` Jan Kiszka
2012-06-10 13:19                           ` Michael S. Tsirkin
2012-06-10 12:32               ` Michael S. Tsirkin
2012-06-04  8:52 ` [Qemu-devel] [PATCH 07/13] pci: Make domain and bus unsigned in pci_read_devaddr Jan Kiszka
2012-06-04  8:52 ` [Qemu-devel] [PATCH 08/13] pci: Export pci_parse_devaddr instead of pci_read_devaddr Jan Kiszka
2012-06-04  8:52 ` [Qemu-devel] [PATCH 09/13] pci: Introduce and apply PCIDeviceAddress Jan Kiszka
2012-06-10  9:37   ` Michael S. Tsirkin
2012-06-10 10:10     ` Jan Kiszka
2012-06-04  8:52 ` [Qemu-devel] [PATCH 10/13] pci: Fix coding style of pci_parse_devaddr Jan Kiszka
2012-06-04  8:52 ` [Qemu-devel] [PATCH 11/13] Move pci_parse_devaddr to qdev-properties Jan Kiszka
2012-06-07 12:57   ` Andreas Färber
2012-06-07 15:11     ` Jan Kiszka
2012-06-07 15:56       ` Andreas Färber
2012-06-08 10:57         ` Jan Kiszka
2012-06-08 12:03           ` Andreas Färber
2012-06-08 12:14             ` Jan Kiszka
2012-06-08 12:18               ` Andreas Färber
2012-06-08 12:45                 ` Jan Kiszka
2012-06-08 14:17                   ` Michael S. Tsirkin
2012-06-08 14:20                     ` Anthony Liguori
2012-06-08 13:55     ` Anthony Liguori
2012-06-08 19:21       ` Andreas Färber
2012-06-04  8:52 ` [Qemu-devel] [PATCH 12/13] qdev-properties: Use qemu_parse_pci_devaddr for pci-devfn property Jan Kiszka
2012-06-04  8:52 ` [Qemu-devel] [PATCH 13/13] qdev-properties: Add pci-devaddr property Jan Kiszka
2012-06-10  9:35   ` Michael S. Tsirkin
2012-06-10 10:14     ` Jan Kiszka
2012-06-10 10:49       ` Michael S. Tsirkin
2012-06-10 10:52         ` Jan Kiszka [this message]
2012-06-10 10:58           ` Michael S. Tsirkin
2012-06-10 11:00             ` Jan Kiszka
2012-06-10 11:17               ` Michael S. Tsirkin
2012-06-10 11:25                 ` Jan Kiszka
2012-06-10 12:01                   ` Michael S. Tsirkin
2012-06-10 13:41                     ` Alex Williamson
2012-06-10 14:03                       ` Michael S. Tsirkin
2012-06-10 14:41                         ` Alex Williamson
2012-06-10 14:54                           ` Michael S. Tsirkin
2012-06-10 15:15                             ` Alex Williamson
2012-06-10 15:37                               ` Michael S. Tsirkin
2012-06-10 15:58                                 ` Alex Williamson
2012-06-10 16:22                                   ` Michael S. Tsirkin
2012-06-10 17:29                                     ` Alex Williamson
2012-06-10 17:57                                       ` Michael S. Tsirkin
2012-06-10 13:49       ` Michael S. Tsirkin

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=4FD47C7D.8040706@web.de \
    --to=jan.kiszka@web.de \
    --cc=alex.williamson@redhat.com \
    --cc=mst@redhat.com \
    --cc=qemu-devel@nongnu.org \
    /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.