drm/test/shmem: set a DMA mask for the mock device

Message ID 20240226110028.28009-1-marpagan@redhat.com
State New
Headers
Series drm/test/shmem: set a DMA mask for the mock device |

Commit Message

Marco Pagani Feb. 26, 2024, 11 a.m. UTC
  Set a DMA mask for the mock device to avoid warnings generated in
dma_map_sgtable().

Reported-by: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: Marco Pagani <marpagan@redhat.com>
---
 drivers/gpu/drm/tests/drm_gem_shmem_test.c | 4 ++++
 1 file changed, 4 insertions(+)
  

Comments

Maxime Ripard Feb. 26, 2024, 11:26 a.m. UTC | #1
Hi,

On Mon, Feb 26, 2024 at 12:00:27PM +0100, Marco Pagani wrote:
> Set a DMA mask for the mock device to avoid warnings generated in
> dma_map_sgtable().
> 
> Reported-by: Guenter Roeck <linux@roeck-us.net>
> Signed-off-by: Marco Pagani <marpagan@redhat.com>

I've submitted last week this patch:
https://lore.kernel.org/all/20240221125324.718192-1-mripard@kernel.org/

Which should be equivalent, but fixes the issue for all users in the
tree.

Maxime
  
Marco Pagani Feb. 26, 2024, 3:48 p.m. UTC | #2
On 2024-02-26 12:26, Maxime Ripard wrote:
> Hi,
> 
> On Mon, Feb 26, 2024 at 12:00:27PM +0100, Marco Pagani wrote:
>> Set a DMA mask for the mock device to avoid warnings generated in
>> dma_map_sgtable().
>>
>> Reported-by: Guenter Roeck <linux@roeck-us.net>
>> Signed-off-by: Marco Pagani <marpagan@redhat.com>
> 
> I've submitted last week this patch:
> https://lore.kernel.org/all/20240221125324.718192-1-mripard@kernel.org/
> 
> Which should be equivalent, but fixes the issue for all users in the
> tree.

Hi, thanks for letting me know. Fixing this issue for all DRM tests that were
using platform devices through the helpers makes perfect sense to me. I'm a
little more thoughtful about setting the mask for all KUnit tests that use fake
devices since there may be specific use cases. Just one curiosity: why setting
the default mask manually instead of using one of the dma_set_*() functions?

Thanks,
Marco
  
Maxime Ripard Feb. 27, 2024, 4:25 p.m. UTC | #3
Hi,

On Mon, Feb 26, 2024 at 04:48:51PM +0100, Marco Pagani wrote:
> 
> On 2024-02-26 12:26, Maxime Ripard wrote:
> > Hi,
> > 
> > On Mon, Feb 26, 2024 at 12:00:27PM +0100, Marco Pagani wrote:
> >> Set a DMA mask for the mock device to avoid warnings generated in
> >> dma_map_sgtable().
> >>
> >> Reported-by: Guenter Roeck <linux@roeck-us.net>
> >> Signed-off-by: Marco Pagani <marpagan@redhat.com>
> > 
> > I've submitted last week this patch:
> > https://lore.kernel.org/all/20240221125324.718192-1-mripard@kernel.org/
> > 
> > Which should be equivalent, but fixes the issue for all users in the
> > tree.
> 
> Hi, thanks for letting me know. Fixing this issue for all DRM tests that were
> using platform devices through the helpers makes perfect sense to me. I'm a
> little more thoughtful about setting the mask for all KUnit tests that use fake
> devices since there may be specific use cases. Just one curiosity: why setting
> the default mask manually instead of using one of the dma_set_*() functions?

I think the (well, mine at least) expectation is that a kunit device is
a device that can be used in all reasonable contexts. Setting up the
device to be able to use any DMA-related function (or functions that use
a DMA-related function) makes total sense to me.

But it's a discussion worth having I think, so it would make sense to
raise this point with the kunit maintainers if you feel like it.

Maxime
  

Patch

diff --git a/drivers/gpu/drm/tests/drm_gem_shmem_test.c b/drivers/gpu/drm/tests/drm_gem_shmem_test.c
index 91202e40cde9..d691b29a4312 100644
--- a/drivers/gpu/drm/tests/drm_gem_shmem_test.c
+++ b/drivers/gpu/drm/tests/drm_gem_shmem_test.c
@@ -341,11 +341,15 @@  static int drm_gem_shmem_test_init(struct kunit *test)
 {
 	struct device *dev;
 	struct drm_device *drm_dev;
+	int ret;
 
 	/* Allocate a parent device */
 	dev = drm_kunit_helper_alloc_device(test);
 	KUNIT_ASSERT_NOT_ERR_OR_NULL(test, dev);
 
+	ret = dma_coerce_mask_and_coherent(dev, DMA_BIT_MASK(64));
+	KUNIT_EXPECT_EQ(test, ret, 0);
+
 	/*
 	 * The DRM core will automatically initialize the GEM core and create
 	 * a DRM Memory Manager object which provides an address space pool