[igt-dev] [Intel-gfx] [PATH i-g-t 2/2] tests: add slice power programming test
Chris Wilson
chris at chris-wilson.co.uk
Thu Sep 6 09:50:10 UTC 2018
Quoting Tvrtko Ursulin (2018-09-06 10:31:21)
>
> On 06/09/2018 08:00, Chris Wilson wrote:
> > Quoting Tvrtko Ursulin (2018-09-05 15:25:44)
> >> From: Lionel Landwerlin <lionel.g.landwerlin at intel.com>
> >>
> >> Verifies that the kernel programs slices correctly based by reading
> >> the value of PWR_CLK_STATE register or MI_SET_PREDICATE on platforms
> >> before Cannonlake.
> >>
> >> v2: Add subslice tests (Lionel)
> >> Use MI_SET_PREDICATE for further verification when available (Lionel)
> >>
> >> v3: Rename to gem_ctx_rpcs (Lionel)
> >>
> >> v4: Update kernel API (Lionel)
> >> Add 0 value test (Lionel)
> >> Exercise invalid values (Lionel)
> >>
> >> v5: Add perf tests (Lionel)
> >>
> >> v6: Add new sysfs entry tests (Lionel)
> >>
> >> v7: Test rsvd fields
> >> Update for kernel series changes
> >>
> >> v8: Drop test_no_sseu_support() test (Kelvin)
> >> Drop drm_intel_*() apis (Chris)
> >>
> >> v9: by Chris:
> >> Drop all do_ioctl/do_ioctl_err()
> >> Use gem_context_[gs]et_param()
> >> Use gem_read() instead of mapping memory
> >> by Lionel:
> >> Test dynamic sseu on/off more
> >>
> >> Tvrtko Ursulin:
> >>
> >> v10:
> >> * Various style tweaks and refactorings.
> >> * New test coverage.
> >
> > I didn't notice any testing of:
> > - param->size
>
> It exists in test_invalid_args.
>
> > - feeding garbage into param->value user pointer (always cleared before
> > use, perhaps just poison instead), along with abusive pointers.
>
> Also in test_invalid_args - but only the null pointer. I can add an
> unmapped or read-only one.
I think passing a pointer that starts valid and crosses into an unmapped
page is essential. That makes sure we are using copy_from_user
correctly. Another trivial one is param->value = -param->size + 1.
As for the garbage, I wasn't sure (because I'm fully cogniscent of the
sseu responses) if we would not interpret 0 as a valid response. If you
are happy that we can differentiate an output 0 after passing in 0,
that's all fine (as opposed to us forgetting to fill a value along some
path).
> > E.g., how does the code fare if we pass in an unfaulted GGTT mmap?
>
> Would not fare well. :I It would be best to be able to reject them but
> how? We'll hit the same problem in future other patches so to support
> this, I think we need to refactor
Do you want my patch to drop struct_mutex entirely here :) So then you
have to add it where you need it, which is after the copy_from_user() so
recursive faults are not a problem.
-Chris
More information about the igt-dev
mailing list