[Intel-gfx] [PATCH v2 12/40] drm: kselftest for drm_mm_insert_node()
Chris Wilson
chris at chris-wilson.co.uk
Fri Dec 16 14:59:22 UTC 2016
On Fri, Dec 16, 2016 at 04:02:12PM +0200, Joonas Lahtinen wrote:
> On pe, 2016-12-16 at 07:46 +0000, Chris Wilson wrote:
> > Exercise drm_mm_insert_node(), check that we can't overfill a range and
> > that the lists are correct after reserving/removing.
> >
> > v2: Extract helpers for the repeated tests
> > v3: Iterate over all allocation flags
> >
> > Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
>
> <SNIP>
>
> > +static u64 misaligned(struct drm_mm_node *node, u64 alignment)
>
> I'm not sure if 'misalignment' would be better name or not. This makes
> me think of bool returning one.
>
> > +static bool expect_insert_fail(struct drm_mm *mm, u64 size)
> > +{
> > + struct drm_mm_node tmp = {};
> > + int err;
> > +
> > + err = drm_mm_insert_node(mm, &tmp, size, 0, DRM_MM_SEARCH_DEFAULT);
> > + if (err != -ENOSPC) {
>
> For speed (this function gets called a lot);
>
> if (likely(err == -ENOSPC))
> return true;
>
> > +static int __igt_insert(unsigned int count, u64 size)
> > +{
>
> <SNIP>
>
> >
> > + for (mode = insert_modes; mode->name; mode++) {
> > + for (n = 0; n < count; n++) {
> > + node = &nodes[n];
> > + err = drm_mm_insert_node_generic(&mm, node, size, 0, n,
> > + mode->search_flags,
> > + mode->create_flags);
> > + if (err || !assert_node(node, &mm, size, 0, n)) {
> > + pr_err("%s insert failed, size %llu step %d\n",
> > + mode->name, size, n);
> > + ret = err ?: -EINVAL;
> > + goto out;
> > + }
>
> This construct is three times in this patch; Could be
> expect_insert_generic?
In this patch alone, indeed it gets used again and again. I resisted
making it an insert and check function simply because I didn't want to
fall into the trap of using it everywhere and so missing out exercising
drm_mm_insert_node and friends.
However, 3 occurences of the same in one patch...
-Chris
--
Chris Wilson, Intel Open Source Technology Centre
More information about the Intel-gfx
mailing list