All of lore.kernel.org
 help / color / mirror / Atom feed
From: Julien Grall <julien.grall@arm.com>
To: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Oleksandr Andrushchenko <andr2000@gmail.com>
Cc: jgross@suse.com, dongwon.kim@intel.com,
	linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org,
	daniel.vetter@intel.com, xen-devel@lists.xenproject.org,
	Boris Ostrovsky <boris.ostrovsky@oracle.com>,
	matthew.d.roper@intel.com, linux-media@vger.kernel.org
Subject: Re: [PATCH v2 5/9] xen/gntdev: Allow mappings for DMA buffers
Date: Mon, 11 Jun 2018 18:46:45 +0100	[thread overview]
Message-ID: <33984b9b-966a-78bb-0472-37af23b8ba9d__38367.3880635344$1528739148$gmane$org@arm.com> (raw)
In-Reply-To: <baab493d-bcba-f053-4b48-0f97fb5723b2@epam.com>

Hi,

On 06/11/2018 06:16 PM, Oleksandr Andrushchenko wrote:
> On 06/11/2018 07:51 PM, Stefano Stabellini wrote:
>> On Mon, 11 Jun 2018, Oleksandr Andrushchenko wrote:
>>> On 06/08/2018 10:21 PM, Boris Ostrovsky wrote:
>>>> On 06/08/2018 01:59 PM, Stefano Stabellini wrote:
>>>>>>>>>>>>       @@ -325,6 +401,14 @@ static int map_grant_pages(struct
>>>>>>>>>>>> grant_map
>>>>>>>>>>>> *map)
>>>>>>>>>>>>               map->unmap_ops[i].handle =
>>>>>>>>>>>> map->map_ops[i].handle;
>>>>>>>>>>>>               if (use_ptemod)
>>>>>>>>>>>>                   map->kunmap_ops[i].handle =
>>>>>>>>>>>> map->kmap_ops[i].handle;
>>>>>>>>>>>> +#ifdef CONFIG_XEN_GRANT_DMA_ALLOC
>>>>>>>>>>>> +        else if (map->dma_vaddr) {
>>>>>>>>>>>> +            unsigned long mfn;
>>>>>>>>>>>> +
>>>>>>>>>>>> +            mfn = __pfn_to_mfn(page_to_pfn(map->pages[i]));
>>>>>>>>>>> Not pfn_to_mfn()?
>>>>>>>>>> I'd love to, but pfn_to_mfn is only defined for x86, not ARM:
>>>>>>>>>> [1]
>>>>>>>>>> and [2]
>>>>>>>>>> Thus,
>>>>>>>>>>
>>>>>>>>>> drivers/xen/gntdev.c:408:10: error: implicit declaration of
>>>>>>>>>> function
>>>>>>>>>> ‘pfn_to_mfn’ [-Werror=implicit-function-declaration]
>>>>>>>>>>         mfn = pfn_to_mfn(page_to_pfn(map->pages[i]));
>>>>>>>>>>
>>>>>>>>>> So, I'll keep __pfn_to_mfn
>>>>>>>>> How will this work on non-PV x86?
>>>>>>>> So, you mean I need:
>>>>>>>> #ifdef CONFIG_X86
>>>>>>>> mfn = pfn_to_mfn(page_to_pfn(map->pages[i]));
>>>>>>>> #else
>>>>>>>> mfn = __pfn_to_mfn(page_to_pfn(map->pages[i]));
>>>>>>>> #endif
>>>>>>>>
>>>>>>> I'd rather fix it in ARM code. Stefano, why does ARM uses the
>>>>>>> underscored version?
>>>>>> Do you want me to add one more patch for ARM to wrap __pfn_to_mfn
>>>>>> with static inline for ARM? e.g.
>>>>>> static inline ...pfn_to_mfn(...)
>>>>>> {
>>>>>>       __pfn_to_mfn();
>>>>>> }
>>>>> A Xen on ARM guest doesn't actually know the mfns behind its own
>>>>> pseudo-physical pages. This is why we stopped using pfn_to_mfn and
>>>>> started using pfn_to_bfn instead, which will generally return "pfn",
>>>>> unless the page is a foreign grant. See include/xen/arm/page.h.
>>>>> pfn_to_bfn was also introduced on x86. For example, see the usage of
>>>>> pfn_to_bfn in drivers/xen/swiotlb-xen.c. Otherwise, if you don't care
>>>>> about other mapped grants, you can just use pfn_to_gfn, that always
>>>>> returns pfn.
>>>> I think then this code needs to use pfn_to_bfn().
>>> Ok
>>>>
>>>>> Also, for your information, we support different page granularities in
>>>>> Linux as a Xen guest, see the comment at include/xen/arm/page.h:
>>>>>
>>>>>     /*
>>>>>      * The pseudo-physical frame (pfn) used in all the helpers is 
>>>>> always
>>>>> based
>>>>>      * on Xen page granularity (i.e 4KB).
>>>>>      *
>>>>>      * A Linux page may be split across multiple non-contiguous Xen 
>>>>> page so
>>>>> we
>>>>>      * have to keep track with frame based on 4KB page granularity.
>>>>>      *
>>>>>      * PV drivers should never make a direct usage of those helpers
>>>>> (particularly
>>>>>      * pfn_to_gfn and gfn_to_pfn).
>>>>>      */
>>>>>
>>>>> A Linux page could be 64K, but a Xen page is always 4K. A granted page
>>>>> is also 4K. We have helpers to take into account the offsets to map
>>>>> multiple Xen grants in a single Linux page, see for example
>>>>> drivers/xen/grant-table.c:gnttab_foreach_grant. Most PV drivers have
>>>>> been converted to be able to work with 64K pages correctly, but if I
>>>>> remember correctly gntdev.c is the only remaining driver that doesn't
>>>>> support 64K pages yet, so you don't have to deal with it if you don't
>>>>> want to.
>>>> I believe somewhere in this series there is a test for PAGE_SIZE vs.
>>>> XEN_PAGE_SIZE. Right, Oleksandr?
>>> Not in gntdev. You might have seen this in xen-drmfront/xen-sndfront,
>>> but I didn't touch gntdev for that. Do you want me to add yet another 
>>> patch
>>> in the series to check for that?
>> gntdev.c is already not capable of handling PAGE_SIZE != XEN_PAGE_SIZE,
>> so you are not going to break anything that is not already broken :-) If
>> your new gntdev.c code relies on PAGE_SIZE == XEN_PAGE_SIZE, it might be
>> good to add an in-code comment about it, just to make it easier to fix
>> the whole of gntdev.c in the future.
>>
> Yes, I just mean I can add something like [1] as a separate patch to the 
> series,
> so we are on the safe side here

See my comment on Stefano's e-mail. I believe gntdev is able to handle 
PAGE_SIZE != XEN_PAGE_SIZE. So I would rather keep the behavior we have 
today for such case.

Cheers,

-- 
Julien Grall

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel

  parent reply	other threads:[~2018-06-11 17:47 UTC|newest]

Thread overview: 135+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-06-01 11:41 [PATCH v2 0/9] xen: dma-buf support for grant device Oleksandr Andrushchenko
2018-06-01 11:41 ` Oleksandr Andrushchenko
2018-06-01 11:41 ` [PATCH v2 1/9] xen/grant-table: Export gnttab_{alloc|free}_pages as GPL Oleksandr Andrushchenko
2018-06-01 11:41   ` Oleksandr Andrushchenko
2018-06-04  9:27   ` Juergen Gross
2018-06-04  9:27   ` Juergen Gross
2018-06-19 13:04   ` Juergen Gross
2018-06-19 13:04   ` Juergen Gross
2018-06-01 11:41 ` Oleksandr Andrushchenko
2018-06-01 11:41 ` [PATCH v2 2/9] xen/grant-table: Make set/clear page private code shared Oleksandr Andrushchenko
2018-06-01 11:41   ` Oleksandr Andrushchenko
2018-06-01 11:44   ` Oleksandr Andrushchenko
2018-06-01 11:44   ` Oleksandr Andrushchenko
2018-06-01 11:44     ` Oleksandr Andrushchenko
2018-06-04 15:43   ` Boris Ostrovsky
2018-06-04 15:43   ` Boris Ostrovsky
2018-06-01 11:41 ` Oleksandr Andrushchenko
2018-06-01 11:41 ` [PATCH v2 3/9] xen/balloon: Share common memory reservation routines Oleksandr Andrushchenko
2018-06-01 11:41 ` Oleksandr Andrushchenko
2018-06-01 11:41   ` Oleksandr Andrushchenko
2018-06-04 16:37   ` Boris Ostrovsky
2018-06-04 17:07     ` Oleksandr Andrushchenko
2018-06-04 17:07     ` Oleksandr Andrushchenko
2018-06-04 17:07       ` Oleksandr Andrushchenko
2018-06-06  7:24     ` Oleksandr Andrushchenko
2018-06-06  7:24       ` Oleksandr Andrushchenko
2018-06-06 21:09       ` Boris Ostrovsky
2018-06-07  5:32         ` Oleksandr Andrushchenko
2018-06-07  5:32         ` Oleksandr Andrushchenko
2018-06-07  5:32           ` Oleksandr Andrushchenko
2018-06-06 21:09       ` Boris Ostrovsky
2018-06-06  7:24     ` Oleksandr Andrushchenko
2018-06-04 16:37   ` Boris Ostrovsky
2018-06-01 11:41 ` [PATCH v2 4/9] xen/grant-table: Allow allocating buffers suitable for DMA Oleksandr Andrushchenko
2018-06-01 11:41 ` Oleksandr Andrushchenko
2018-06-01 11:41   ` Oleksandr Andrushchenko
2018-06-04 18:46   ` Boris Ostrovsky
2018-06-06  7:51     ` Oleksandr Andrushchenko
2018-06-06  7:51     ` Oleksandr Andrushchenko
2018-06-06  7:51       ` Oleksandr Andrushchenko
2018-06-04 18:46   ` Boris Ostrovsky
2018-06-01 11:41 ` [PATCH v2 5/9] xen/gntdev: Allow mappings for DMA buffers Oleksandr Andrushchenko
2018-06-01 11:41   ` Oleksandr Andrushchenko
2018-06-04 20:12   ` Boris Ostrovsky
2018-06-04 20:12   ` Boris Ostrovsky
2018-06-06  8:14     ` Oleksandr Andrushchenko
2018-06-06  8:14     ` [Xen-devel] " Oleksandr Andrushchenko
2018-06-06  8:14       ` Oleksandr Andrushchenko
2018-06-06 21:19       ` Boris Ostrovsky
2018-06-06 21:19       ` [Xen-devel] " Boris Ostrovsky
2018-06-07  6:39         ` Oleksandr Andrushchenko
2018-06-07  6:39         ` [Xen-devel] " Oleksandr Andrushchenko
2018-06-07  6:39           ` Oleksandr Andrushchenko
2018-06-07 21:46           ` Boris Ostrovsky
2018-06-08 11:33             ` Oleksandr Andrushchenko
2018-06-08 17:59               ` Stefano Stabellini
2018-06-08 17:59               ` [Xen-devel] " Stefano Stabellini
2018-06-08 17:59                 ` Stefano Stabellini
2018-06-08 19:21                 ` Boris Ostrovsky
2018-06-11 13:13                   ` Oleksandr Andrushchenko
2018-06-11 13:13                     ` Oleksandr Andrushchenko
2018-06-11 16:51                     ` Stefano Stabellini
2018-06-11 16:51                     ` [Xen-devel] " Stefano Stabellini
2018-06-11 16:51                       ` Stefano Stabellini
2018-06-11 17:16                       ` Oleksandr Andrushchenko
2018-06-11 17:16                       ` [Xen-devel] " Oleksandr Andrushchenko
2018-06-11 17:46                         ` Julien Grall
2018-06-11 17:49                           ` Oleksandr Andrushchenko
2018-06-11 17:56                             ` Julien Grall
2018-06-11 17:56                             ` [Xen-devel] " Julien Grall
2018-06-11 17:49                           ` Oleksandr Andrushchenko
2018-06-11 17:46                         ` Julien Grall [this message]
2018-06-11 17:41                       ` Julien Grall
2018-06-11 17:41                       ` [Xen-devel] " Julien Grall
2018-06-11 13:13                   ` Oleksandr Andrushchenko
2018-06-08 19:21                 ` Boris Ostrovsky
2018-06-08 11:33             ` Oleksandr Andrushchenko
2018-06-07 21:46           ` Boris Ostrovsky
2018-06-01 11:41 ` Oleksandr Andrushchenko
2018-06-01 11:41 ` [PATCH v2 6/9] xen/gntdev: Add initial support for dma-buf UAPI Oleksandr Andrushchenko
2018-06-01 11:41 ` Oleksandr Andrushchenko
2018-06-04 20:49   ` Boris Ostrovsky
2018-06-06  9:06     ` Oleksandr Andrushchenko
2018-06-06  9:06     ` Oleksandr Andrushchenko
2018-06-06  9:06       ` Oleksandr Andrushchenko
2018-06-06 21:32       ` Boris Ostrovsky
2018-06-06 21:32       ` Boris Ostrovsky
2018-06-07  7:17         ` Oleksandr Andrushchenko
2018-06-07  7:17         ` Oleksandr Andrushchenko
2018-06-07 22:26           ` Boris Ostrovsky
2018-06-08 11:38             ` Oleksandr Andrushchenko
2018-06-08 11:38             ` Oleksandr Andrushchenko
2018-06-08 11:38               ` Oleksandr Andrushchenko
2018-06-07 22:26           ` Boris Ostrovsky
2018-06-04 20:49   ` Boris Ostrovsky
2018-06-01 11:41 ` [PATCH v2 7/9] xen/gntdev: Implement dma-buf export functionality Oleksandr Andrushchenko
2018-06-01 11:41 ` Oleksandr Andrushchenko
2018-06-01 11:41   ` Oleksandr Andrushchenko
2018-06-04 22:07   ` Boris Ostrovsky
2018-06-06 12:10     ` Oleksandr Andrushchenko
2018-06-06 12:10     ` Oleksandr Andrushchenko
2018-06-06 12:10       ` Oleksandr Andrushchenko
2018-06-06 21:48       ` Boris Ostrovsky
2018-06-06 21:48       ` Boris Ostrovsky
2018-06-07  8:44         ` Oleksandr Andrushchenko
2018-06-07  8:44         ` Oleksandr Andrushchenko
2018-06-07  8:44           ` Oleksandr Andrushchenko
2018-06-07 22:30           ` Boris Ostrovsky
2018-06-07 22:30           ` Boris Ostrovsky
2018-06-08 11:34             ` Oleksandr Andrushchenko
2018-06-08 11:34             ` Oleksandr Andrushchenko
2018-06-08 11:34               ` Oleksandr Andrushchenko
2018-06-04 22:07   ` Boris Ostrovsky
2018-06-01 11:41 ` [PATCH v2 8/9] xen/gntdev: Implement dma-buf import functionality Oleksandr Andrushchenko
2018-06-01 11:41 ` Oleksandr Andrushchenko
2018-06-01 11:41   ` Oleksandr Andrushchenko
2018-06-04 22:28   ` Boris Ostrovsky
2018-06-04 22:28   ` Boris Ostrovsky
2018-06-06 12:38     ` Oleksandr Andrushchenko
2018-06-06 12:38     ` Oleksandr Andrushchenko
2018-06-01 11:41 ` [PATCH v2 9/9] xen/gntdev: Expose gntdev's dma-buf API for in-kernel use Oleksandr Andrushchenko
2018-06-01 11:41 ` Oleksandr Andrushchenko
2018-06-04 22:36   ` Boris Ostrovsky
2018-06-04 22:36   ` Boris Ostrovsky
2018-06-06 12:46     ` Oleksandr Andrushchenko
2018-06-06 12:46     ` Oleksandr Andrushchenko
2018-06-06 12:46       ` Oleksandr Andrushchenko
2018-06-06 21:51       ` Boris Ostrovsky
2018-06-06 21:51       ` [Xen-devel] " Boris Ostrovsky
2018-06-06 22:05         ` Dongwon Kim
2018-06-06 22:05           ` Dongwon Kim
2018-06-07  7:33           ` Oleksandr Andrushchenko
2018-06-07  7:33             ` Oleksandr Andrushchenko
2018-06-07  7:33           ` Oleksandr Andrushchenko
2018-06-06 22:05         ` Dongwon Kim

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='33984b9b-966a-78bb-0472-37af23b8ba9d__38367.3880635344$1528739148$gmane$org@arm.com' \
    --to=julien.grall@arm.com \
    --cc=andr2000@gmail.com \
    --cc=boris.ostrovsky@oracle.com \
    --cc=daniel.vetter@intel.com \
    --cc=dongwon.kim@intel.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=jgross@suse.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-media@vger.kernel.org \
    --cc=matthew.d.roper@intel.com \
    --cc=oleksandr_andrushchenko@epam.com \
    --cc=sstabellini@kernel.org \
    --cc=xen-devel@lists.xenproject.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.