From: Sui Jingfeng <suijingfeng@loongson.cn>
To: Lucas Stach <l.stach@pengutronix.de>,
Sui Jingfeng <18949883232@163.com>,
Russell King <linux+etnaviv@armlinux.org.uk>,
Christian Gmeiner <christian.gmeiner@gmail.com>,
David Airlie <airlied@gmail.com>, Daniel Vetter <daniel@ffwll.ch>
Cc: linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org,
etnaviv@lists.freedesktop.org,
Philipp Zabel <p.zabel@pengutronix.de>,
Bjorn Helgaas <bhelgaas@google.com>
Subject: Re: [PATCH v10 07/11] drm/etnaviv: Add support for the dma coherent device
Date: Wed, 21 Jun 2023 23:30:04 +0800 [thread overview]
Message-ID: <66fc74ae-299c-a5de-9cfb-07ae24fb3f07@loongson.cn> (raw)
In-Reply-To: <8f74f0962c8bab6c832919a5340667c54e1a7ddc.camel@pengutronix.de>
Hi,
On 2023/6/21 18:00, Lucas Stach wrote:
>> dma_sync_sgtable_for_cpu(dev->dev, etnaviv_obj->sgt,
>> etnaviv_op_to_dma_dir(op));
>> etnaviv_obj->last_cpu_prep_op = op;
>> @@ -408,8 +421,9 @@ int etnaviv_gem_cpu_fini(struct drm_gem_object *obj)
>> {
>> struct drm_device *dev = obj->dev;
>> struct etnaviv_gem_object *etnaviv_obj = to_etnaviv_bo(obj);
>> + struct etnaviv_drm_private *priv = dev->dev_private;
>>
>> - if (etnaviv_obj->flags & ETNA_BO_CACHED) {
>> + if (!priv->dma_coherent && etnaviv_obj->flags & ETNA_BO_CACHED) {
>> /* fini without a prep is almost certainly a userspace error */
>> WARN_ON(etnaviv_obj->last_cpu_prep_op == 0);
>> dma_sync_sgtable_for_device(dev->dev, etnaviv_obj->sgt,
>> diff --git a/drivers/gpu/drm/etnaviv/etnaviv_gem_prime.c b/drivers/gpu/drm/etnaviv/etnaviv_gem_prime.c
>> index 3524b5811682..754126992264 100644
>> --- a/drivers/gpu/drm/etnaviv/etnaviv_gem_prime.c
>> +++ b/drivers/gpu/drm/etnaviv/etnaviv_gem_prime.c
>> @@ -112,11 +112,16 @@ static const struct etnaviv_gem_ops etnaviv_gem_prime_ops = {
>> struct drm_gem_object *etnaviv_gem_prime_import_sg_table(struct drm_device *dev,
>> struct dma_buf_attachment *attach, struct sg_table *sgt)
>> {
>> + struct etnaviv_drm_private *priv = dev->dev_private;
>> struct etnaviv_gem_object *etnaviv_obj;
>> size_t size = PAGE_ALIGN(attach->dmabuf->size);
>> + u32 cache_flags = ETNA_BO_WC;
>> int ret, npages;
>>
>> - ret = etnaviv_gem_new_private(dev, size, ETNA_BO_WC,
>> + if (priv->dma_coherent)
>> + cache_flags = ETNA_BO_CACHED;
>> +
> Drop this change. Instead etnaviv_gem_new_impl() should do the upgrade
> from WC to CACHED as necessary by adding something like this:
I understand you are a profession person in vivante GPU driver domain.
I respect you reviews and instruction.
But, I'm really reluctant to agree with this, is there any space to
negotiate?
> /*
> * Upgrade WC to CACHED when the device is hardware coherent and the
> * platform doesn't allow mixing cached and writecombined mappings to
> * the same memory area.
> */
> if ((flags & ETNA_BO_CACHE_MASK) == ETNA_BO_WC &&
> dev_is_dma_coherent(dev) && !drm_arch_can_wc_memory())
> flags = (flags & ~ETNA_BO_CACHE_MASK) & ETNA_BO_CACHED;
This is policy, not a mechanism.
Using what cache property is a user-space program's choice.
While you are override the WC with CACHED mapping. This is not correct
in the concept!
you approach forbidden any possibility to use the WC BO at anywhere.
My approach need only check once, while you approach need at least 3
check plus
so much bit-wise logic operations, plus a function call (&, ==, &&,
&, ~, &) .
and every time you create a BO. This nasty judgement happens.
Please keep our original implement, it's simple and clear, Please?
--
Jingfeng
next prev parent reply other threads:[~2023-06-21 15:30 UTC|newest]
Thread overview: 65+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-06-20 9:47 [PATCH v10 00/11] drm/etnaviv: Add pci device driver support Sui Jingfeng
2023-06-20 9:47 ` [PATCH v10 01/11] drm/etnaviv: Add a dedicated function to register an irq handler Sui Jingfeng
2023-06-21 9:07 ` Lucas Stach
2023-06-21 9:20 ` Sui Jingfeng
2023-06-21 10:16 ` Lucas Stach
2023-06-24 15:53 ` Sui Jingfeng
2023-06-26 10:57 ` Lucas Stach
2023-06-21 9:34 ` Sui Jingfeng
2023-06-20 9:47 ` [PATCH v10 02/11] drm/etnaviv: Add a dedicated function to get various clocks Sui Jingfeng
2023-06-20 9:47 ` [PATCH v10 03/11] drm/etnaviv: Add dedicated functions to create and destroy platform device Sui Jingfeng
2023-06-21 9:15 ` Lucas Stach
2023-06-21 9:49 ` Sui Jingfeng
2023-06-21 10:23 ` Lucas Stach
2023-06-21 13:31 ` Sui Jingfeng
2023-06-21 14:00 ` Lucas Stach
2023-06-21 14:35 ` Sui Jingfeng
2023-06-21 14:38 ` Sui Jingfeng
2023-06-21 15:20 ` Lucas Stach
2023-06-21 16:12 ` Sui Jingfeng
2023-06-21 14:03 ` Sui Jingfeng
2023-06-20 9:47 ` [PATCH v10 04/11] drm/etnaviv: Add helpers for private data construction and destruction Sui Jingfeng
2023-06-21 9:22 ` Lucas Stach
2023-06-21 12:31 ` Sui Jingfeng
2023-06-20 9:47 ` [PATCH v10 05/11] drm/etnaviv: Allow bypass component framework Sui Jingfeng
2023-06-21 9:29 ` Lucas Stach
2023-06-21 13:04 ` Sui Jingfeng
2023-06-20 9:47 ` [PATCH v10 06/11] drm/etnaviv: Add driver support for the PCI devices Sui Jingfeng
2023-06-21 9:39 ` Lucas Stach
2023-06-21 12:02 ` Sui Jingfeng
2023-06-20 9:47 ` [PATCH v10 07/11] drm/etnaviv: Add support for the dma coherent device Sui Jingfeng
2023-06-21 10:00 ` Lucas Stach
2023-06-21 14:42 ` Sui Jingfeng
2023-06-21 14:44 ` Sui Jingfeng
2023-06-21 15:23 ` Lucas Stach
2023-06-21 15:41 ` Sui Jingfeng
2023-06-21 16:12 ` Lucas Stach
2023-06-21 16:33 ` Sui Jingfeng
2023-06-21 16:39 ` Sui Jingfeng
2023-06-21 14:45 ` Sui Jingfeng
2023-06-21 14:49 ` Sui Jingfeng
2023-06-21 15:00 ` Sui Jingfeng
2023-06-21 15:33 ` Lucas Stach
2023-06-21 15:54 ` Sui Jingfeng
2023-06-21 16:07 ` Lucas Stach
2023-06-21 17:31 ` Sui Jingfeng
2023-06-21 17:53 ` Lucas Stach
2023-06-25 4:04 ` Sui Jingfeng
2023-06-21 15:30 ` Sui Jingfeng [this message]
2023-06-21 15:58 ` Lucas Stach
2023-06-21 16:49 ` Sui Jingfeng
2023-06-21 17:21 ` Sui Jingfeng
2023-06-21 17:45 ` Lucas Stach
2023-06-24 16:10 ` Sui Jingfeng
2023-06-25 3:51 ` Sui Jingfeng
2023-06-26 11:08 ` Lucas Stach
2023-06-22 19:26 ` Sui Jingfeng
2023-06-23 11:52 ` Robin Murphy
2023-06-23 12:37 ` Sui Jingfeng
2023-06-20 9:47 ` [PATCH v10 08/11] drm/etnaviv: Add a dedicated function to create the virtual master Sui Jingfeng
2023-06-20 9:47 ` [PATCH v10 09/11] drm/etnaviv: Clean up etnaviv_pdev_probe() function Sui Jingfeng
2023-06-20 9:47 ` [PATCH v10 10/11] drm/etnaviv: Keep the curly brace aligned Sui Jingfeng
2023-06-21 7:55 ` [PATCH v10 00/11] drm/etnaviv: Add pci device driver support Christian Gmeiner
2023-06-21 8:02 ` Sui Jingfeng
2023-06-21 8:05 ` Sui Jingfeng
-- strict thread matches above, loose matches on Subject: below --
2023-06-19 12:41 Sui Jingfeng
2023-06-19 12:41 ` [PATCH v10 07/11] drm/etnaviv: Add support for the dma coherent device Sui Jingfeng
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=66fc74ae-299c-a5de-9cfb-07ae24fb3f07@loongson.cn \
--to=suijingfeng@loongson.cn \
--cc=18949883232@163.com \
--cc=airlied@gmail.com \
--cc=bhelgaas@google.com \
--cc=christian.gmeiner@gmail.com \
--cc=daniel@ffwll.ch \
--cc=dri-devel@lists.freedesktop.org \
--cc=etnaviv@lists.freedesktop.org \
--cc=l.stach@pengutronix.de \
--cc=linux+etnaviv@armlinux.org.uk \
--cc=linux-kernel@vger.kernel.org \
--cc=p.zabel@pengutronix.de \
/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®