From: Julien Grall <julien.grall@arm.com>
To: Oleksandr Andrushchenko <Oleksandr_Andrushchenko@epam.com>,
Christoph Hellwig <hch@infradead.org>
Cc: "jgross@suse.com" <jgross@suse.com>,
Oleksandr Andrushchenko <andr2000@gmail.com>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"dri-devel@lists.freedesktop.org"
<dri-devel@lists.freedesktop.org>,
"noralf@tronnes.org" <noralf@tronnes.org>,
Gerd Hoffmann <kraxel@redhat.com>,
"daniel.vetter@intel.com" <daniel.vetter@intel.com>,
"xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
"boris.ostrovsky@oracle.com" <boris.ostrovsky@oracle.com>,
Stefano Stabellini <sstabellini@kernel.org>,
Robin Murphy <robin.murphy@arm.com>
Subject: Re: [Xen-devel] [PATCH v2] drm/xen-front: Make shmem backed display buffer coherent
Date: Tue, 22 Jan 2019 11:44:59 +0000 [thread overview]
Message-ID: <34a31bc8-96c6-2801-689c-3c4498b68ee8@arm.com> (raw)
In-Reply-To: <79ac0743-68bc-c2b7-d843-cf152c40d583@epam.com>
On 1/22/19 10:28 AM, Oleksandr Andrushchenko wrote:
> Hello, Julien!
Hi,
> On 1/21/19 7:09 PM, Julien Grall wrote:
> Well, I didn't get the attributes of pages at the backend side, but IMO
> those
> do not matter in my use-case (for simplicity I am not using zero-copying at
> backend side):
They are actually important no matter what is your use case. If you
access the same physical page with different attributes, then you are
asking for trouble.
This is why Xen imposes all the pages shared to have their memory
attributes following some rules. Actually, speaking with Mark R., we may
want to tight a bit more the attributes.
>
> 1. Frontend device allocates display buffer pages which come from shmem
> and have these attributes:
> !PTE_RDONLY + PTE_PXN + PTE_SHARED + PTE_AF + PTE_UXN +
> PTE_ATTRINDX(MT_NORMAL)
My knowledge of Xen DRM is inexistent. However, looking at the code in
5.0-rc2, I don't seem to find the same attributes. For instance
xen_drm_front_gem_prime_vmap and gem_mmap_obj are using
pgprot_writecombine. So it looks like, the mapping will be non-cacheable
on Arm64.
Can you explain how you came up to these attributes?
>
> 2. Frontend grants references to these pages and shares those with the
> backend
>
> 3. Backend is a user-space application (Weston client), so it uses
> gntdev kernel
> driver to mmap the pages. The pages, which are used by gntdev, are those
> coming
> from the Xen balloon driver and I believe they are all normal memory and
> shouldn't be non-cached.
>
> 4. Once the frontend starts displaying it flips the buffers and backend
> does *memcpy*
> from the frontend-backend shared buffer into Weston's buffer. This means
> no HW at the backend side touches the shared buffer.
>
> 5. I can see distorted picture.
>
> Previously I used setup with zero-copying, so then the picture becomes
> more complicated
> in terms of buffers and how those used by the backed, but anyways it
> seems that the
> very basic scenario with memory copying doesn't work for me.
>
> Using DMA API on frontend's side does help - no artifacts are seen.
> This is why I'm thinking that this is related to frontend/kernel side
> rather then to
> the backend side. This is why I'm thinking this is related to caches and
> trying to figure
> out what can be done here instead of using DMA API.
We actually never required to use cache flush in other PV protocol, so I
still don't understand why the PV DRM should be different here.
To me, it looks like that you are either missing some barriers or the
memory attributes are not correct.
Cheers,
--
Julien Grall
next prev parent reply other threads:[~2019-01-22 11:45 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-01-15 14:04 Oleksandr Andrushchenko
2019-01-16 6:30 ` Gerd Hoffmann
2019-01-16 6:36 ` Christoph Hellwig
2019-01-16 6:43 ` Oleksandr Andrushchenko
2019-01-17 9:18 ` Christoph Hellwig
2019-01-18 9:40 ` Oleksandr Andrushchenko
2019-01-18 11:43 ` [Xen-devel] " Julien Grall
2019-01-21 12:43 ` Oleksandr Andrushchenko
2019-01-21 17:09 ` Julien Grall
2019-01-22 10:28 ` Oleksandr Andrushchenko
2019-01-22 11:44 ` Julien Grall [this message]
2019-01-24 14:34 ` Oleksandr Andrushchenko
2019-01-24 15:02 ` Julien Grall
2019-01-29 14:46 ` Oleksandr Andrushchenko
2019-01-30 8:39 ` Oleksandr Andrushchenko
2019-01-16 6:37 ` Oleksandr Andrushchenko
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=34a31bc8-96c6-2801-689c-3c4498b68ee8@arm.com \
--to=julien.grall@arm.com \
--cc=Oleksandr_Andrushchenko@epam.com \
--cc=andr2000@gmail.com \
--cc=boris.ostrovsky@oracle.com \
--cc=daniel.vetter@intel.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=hch@infradead.org \
--cc=jgross@suse.com \
--cc=kraxel@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=noralf@tronnes.org \
--cc=robin.murphy@arm.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®