Linux IOMMU Development
 help / color / mirror / Atom feed
From: Eric Auger <eric.auger-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
To: Alexander Graf <agraf-l3A5Bk7waGM@public.gmane.org>
Cc: Peter Maydell
	<peter.maydell-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>,
	"iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org"
	<iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org>,
	"eric.auger-qxv4g6HH51o@public.gmane.org"
	<eric.auger-qxv4g6HH51o@public.gmane.org>,
	"tech-lrHrjnjw1UfHK3s98zE1ajGjJy/sRE9J@public.gmane.org"
	<tech-lrHrjnjw1UfHK3s98zE1ajGjJy/sRE9J@public.gmane.org>,
	"kvmarm-FPEHb7Xf0XXUo1n7N8X6UoWGPAHP3yOg@public.gmane.org"
	<kvmarm-FPEHb7Xf0XXUo1n7N8X6UoWGPAHP3yOg@public.gmane.org>,
	Christoffer Dall
	<christoffer.dall-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
Subject: Re: Building assigned device guest dt node from host device tree ...
Date: Tue, 01 Sep 2015 19:16:22 +0200	[thread overview]
Message-ID: <55E5DD66.8010000@linaro.org> (raw)
In-Reply-To: <83D37F6C-FFE9-4C3C-AA1C-F12603954C2A-l3A5Bk7waGM@public.gmane.org>

Hi Alex,
On 09/01/2015 07:00 PM, Alexander Graf wrote:
> 
> 
>> Am 01.09.2015 um 17:29 schrieb Eric Auger <eric.auger-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>:
>>
>> Dear all,
>>
>> I am currently investigating the usage of sysfs to retrieve info from
>> the host device tree to build guest dt node for assigned devices (just
>> to explain a bit of context for Peter & Alex added in cc). For more
>> complex devices we could typically copy host settings on guest side (mac
>> @, various speeds, functional modes, ...).
>>
>> This follows the "Re: [RFC PATCH v3 0/3] vfio: platform: return device
>> properties for a platform device" thread.
>>
>> I have some questions:
>>
>> - the device directory can be somewhere in /sys/devices/platform, ie.
>> can be in sub-directories. The first difficulty is to locate it. Do you
>> know any C routing doing find-file matching a file name pattern? Didn't
>> find any in qemu, nor in glib.
> 
> Best path imho is to have the vfio fd expose its path via an ioctl. Didn't we have that?
no we don't. We may extend VFIO_DEVICE_GET_INFO ioctl though?
> 
>>
>> - I currently prototype this functionality using popen + find. That
>> works but relies on "find" executable availability. Is it a valid
>> assumption?
> 
> No :)
You can't win if you don't play ;-)
> 
>>
>> - I would need to build various utility functions such as
>> read_u32_array_prop(char *path, const char *prop_name,
>>                               uint32_t *props, uint32 num)
>> path being the of_node directory path, prop_name being the name of the
>> property to get the value; this for each type of property I need to
>> fetch and assign to the guest ... Is it the right direction?
> 
> I don't know yet. Start with very specific needs for very specific devices first, create a list for your use case. Then go through each property and see whether you really need to get it from the host and how many there really are.
OK. I will do that shortly.

Many thanks for your reply

Eric
> 
> Alex
> 
>>
>> Putting things on kernel - VOSYS approach - and exposing new VFIO IOTCL
>> enable to use std kernel APIs and remove the problem of finding data on
>> the fs ...
>>
>> Please advise on the direction to follow, continue exploring the sysfs
>> method or revert to VOSYS approach?
>>
>> Thank you in advance
>>
>> Best Regards
>>
>> Eric
>>
>>
>>
>>> On 09/01/2015 11:28 AM, Christoffer Dall wrote:
>>> Hi Eric,
>>>
>>> On Tue, Sep 01, 2015 at 09:31:56AM +0200, Eric Auger wrote:
>>>
>>> [...]
>>>
>>>>>>> Can you reiterate why QEMU and VFIO don't already have the information
>>>>>>> necessary to setup resources and present a DT to the guest that the
>>>>>>> guest can use?
>>>>>> A vfio-platform driver was bound to the passthrough'ed device. QEMU
>>>>>> current knows the compat string of the device and the node's name and
>>>>>> that's it.
>>>>>>
>>>>>> The VFIO platform driver currently does not allow to return device
>>>>>> specific information. It just returns generic info such as resource
>>>>>> info. The driver is HW agnostic.
>>>>>>
>>>>>>
>>>>>> The QEMU VFIO device should be able to check some characteristics of the
>>>>>> host device tree. Typically if the host node does not comply with some
>>>>>> constraints it may not be possible to assign the device.
>>>>>>
>>>>>> We do not want the QEMU end-user to have in-depth knowledge of the HW so
>>>>>> passing the info in the QEMU command line does not sound to be the good
>>>>>> solution.
>>>>>>
>>>>>>
>>>>>> As you mentioned /proc/device-tree depends on kernel option. I am able
>>>>>> to find the properties in sysfs too but can we systematically rely on
>>>>>> sysfs (CONFIG_SYSFS)? Also I would have expected the values to be human
>>>>>> readable but they are not. Currently investigating open/read from qemu
>>>>>> but is better than an ioctl API? ...
>>>>> Yeah it does, but I thought we originally planned that the driver for a
>>>>> specific platform device in QEMU should know these details,
>>>> Yes that's the objective to put this intelligence in the QEMU VFIO
>>>> device or more precisely in the associated function that builds its
>>>> guest dt node.
>>>>
>>>> Let's take an example. Assuming an xgmac supports different speeds, you
>>>> need to set those on guest. Either you put arbitrary values or you reuse
>>>> the values that were set on host. Typically some values may not be
>>>> supported by the HW.
>>>
>>> I see.  I'm no expert here, but I could imagine that drivers could
>>> overwrite some things in the DT or do some advanced probing of the
>>> hardware which is then only exported in the sysfs and not the DT, so I
>>> would go the sysfs approach myself.
>>>
>>>> Idea of genericity was ruled out indeed meaning each device needs to
>>>> have a specialized QEMU VFIO device and an associated dt node creation
>>>> function. Now this does not prevent from exploiting host dt information.
>>>> Does that make sense?
>>> Yes, thanks for the explanation.
>>>
>>> -Christoffer
>>

  parent reply	other threads:[~2015-09-01 17:16 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-12-19 21:20 [RFC PATCH v3 0/3] vfio: platform: return device properties for a platform device Antonios Motakis
     [not found] ` <1419024032-1269-1-git-send-email-a.motakis-lrHrjnjw1UfHK3s98zE1ajGjJy/sRE9J@public.gmane.org>
2014-12-19 21:20   ` [RFC PATCH v3 1/3] vfio: platform: add device properties skeleton and user API Antonios Motakis
     [not found]     ` <1419024032-1269-2-git-send-email-a.motakis-lrHrjnjw1UfHK3s98zE1ajGjJy/sRE9J@public.gmane.org>
2015-09-03 16:48       ` Eric Auger
2014-12-19 21:20   ` [RFC PATCH v3 2/3] vfio: platform: access device property as a list of strings Antonios Motakis
2015-09-03 16:49     ` Eric Auger
2014-12-19 21:20   ` [RFC PATCH v3 3/3] vfio: platform: return device properties as arrays of unsigned integers Antonios Motakis
     [not found]     ` <1419024032-1269-4-git-send-email-a.motakis-lrHrjnjw1UfHK3s98zE1ajGjJy/sRE9J@public.gmane.org>
2015-09-03 16:49       ` Eric Auger
2015-08-27 12:52   ` [RFC PATCH v3 0/3] vfio: platform: return device properties for a platform device Eric Auger
2015-08-27 13:36     ` Antonios Motakis
     [not found]       ` <55DF124F.8020801-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>
2015-08-27 13:49         ` Eric Auger
     [not found]     ` <55DF07F0.3070405-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2015-08-27 14:27       ` Christian Pinto
     [not found]         ` <55DF1E4B.6040604-lrHrjnjw1UfHK3s98zE1ajGjJy/sRE9J@public.gmane.org>
2015-08-27 14:55           ` Eric Auger
2015-08-27 16:11       ` Alex Williamson
2015-08-27 17:16         ` Eric Auger
     [not found]           ` <55DF45D0.5040704-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2015-08-30 14:06             ` Christoffer Dall
2015-08-31 17:02               ` Eric Auger
     [not found]                 ` <55E48897.4090907-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2015-08-31 17:33                   ` Christoffer Dall
2015-09-01  7:31                     ` Eric Auger
2015-09-01  9:28                       ` Christoffer Dall
2015-09-01 15:29                         ` Building assigned device guest dt node from host device tree Eric Auger
2015-09-01 15:49                           ` Peter Maydell
2015-09-01 17:00                           ` Alexander Graf
     [not found]                             ` <83D37F6C-FFE9-4C3C-AA1C-F12603954C2A-l3A5Bk7waGM@public.gmane.org>
2015-09-01 17:16                               ` Eric Auger [this message]
2015-09-01 15:32                         ` [RFC PATCH v3 0/3] vfio: platform: return device properties for a platform device Baptiste Reynal
     [not found]                           ` <CAN9JPjGfuv_YOBEdZA_AD13oHej7wMCR50=zQTZmgzHx-jBj_A-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-09-01 15:52                             ` Christoffer Dall
2015-09-02  7:21                               ` Baptiste Reynal
     [not found]                                 ` <CAN9JPjFwsiYzR6RtDA-5UZYoNALGu8crXVyA+m6ptsWv=qJi5A-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-09-02  9:21                                   ` Christoffer Dall
2015-09-02  9:49                                     ` Baptiste Reynal
2015-09-02 10:32                                       ` Christoffer Dall
2015-09-02 13:42                                         ` Baptiste Reynal
2015-09-02 16:52                                       ` Alex Williamson
     [not found]                                         ` <1441212724.20355.306.camel-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2015-09-03  7:42                                           ` Baptiste Reynal
     [not found]                                             ` <CAN9JPjF0Lex2wD=_iiriTaYdukva+rxhdwPTQnGqC5kQFCEYGg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-09-03  8:49                                               ` Christoffer Dall
2015-09-03 14:18                                                 ` Alex Williamson
2015-09-03 16:46                                             ` Eric Auger

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=55E5DD66.8010000@linaro.org \
    --to=eric.auger-qsej5fyqhm4dnm+yrofe0a@public.gmane.org \
    --cc=agraf-l3A5Bk7waGM@public.gmane.org \
    --cc=christoffer.dall-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org \
    --cc=eric.auger-qxv4g6HH51o@public.gmane.org \
    --cc=iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org \
    --cc=kvmarm-FPEHb7Xf0XXUo1n7N8X6UoWGPAHP3yOg@public.gmane.org \
    --cc=peter.maydell-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org \
    --cc=tech-lrHrjnjw1UfHK3s98zE1ajGjJy/sRE9J@public.gmane.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox