Re: [PATCH] kunit: drm: make DRM buddy test compatible with other pages sizes
From: Nico Pache
Date: Mon Jun 26 2023 - 11:28:21 EST
Hi Christian,
Thanks for the information! I am not very familiar with the inner
workings of DRM, so I'm not really in a position to make any large or
systematic changes to the test regarding the points you made. I am
mainly trying to allow the tests to be run on more diverse hardware.
>From the looks of it this test has been adapted from an older test, so
perhaps this rule was set in place in the past.
Either way, I dont think my changes are going to break anything, so
for the time being I think this small change is the best approach.
Please let me know if you think otherwise.
David, do you still have this on your radar? We've been carrying this
as a RHEL-only since I originally posted it and have not noticed any
issues due to it.
Cheers,
-- Nico
On Wed, Apr 19, 2023 at 4:30 AM Christian König
<christian.koenig@xxxxxxx> wrote:
>
> Am 18.04.23 um 19:15 schrieb Nico Pache:
> > The DRM buddy test uses a fixed 12 bit shift to covert from pages to
> > bytes. This number is then used to confirm that (chunk_size < PAGE_SIZE)
> > which can lead to a failing drm_buddy_init on systems with PAGE_SIZE > 4k.
>
> Since the buddy allocator is used for resources which are independent of
> the CPU PAGE size the later check is actually the broken one.
>
> E.g. neither in the buddy allocator nor in it's test cases we should
> have any of PAGE_SHIFT or PAGE_SIZE.
>
> Otherwise the allocator wouldn't work correctly on systems with a
> PAGE_SIZE different than 4k.
>
> Regards,
> Christian.
>
> >
> > Fixes: 92937f170d3f ("drm/selftests: add drm buddy alloc range testcase")
> > Signed-off-by: Nico Pache <npache@xxxxxxxxxx>
> > ---
> > drivers/gpu/drm/tests/drm_buddy_test.c | 4 ++--
> > 1 file changed, 2 insertions(+), 2 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/tests/drm_buddy_test.c b/drivers/gpu/drm/tests/drm_buddy_test.c
> > index 09ee6f6af896..a62b2690d3c2 100644
> > --- a/drivers/gpu/drm/tests/drm_buddy_test.c
> > +++ b/drivers/gpu/drm/tests/drm_buddy_test.c
> > @@ -318,8 +318,8 @@ static void mm_config(u64 *size, u64 *chunk_size)
> > s &= -ms;
> >
> > /* Convert from pages to bytes */
> > - *chunk_size = (u64)ms << 12;
> > - *size = (u64)s << 12;
> > + *chunk_size = (u64)ms << PAGE_SHIFT;
> > + *size = (u64)s << PAGE_SHIFT;
> > }
> >
> > static void drm_test_buddy_alloc_pathological(struct kunit *test)
>