On 10/02/2017 10:43, Chris Wilson wrote:
On Fri, Feb 10, 2017 at 10:24:41AM +0000, Tvrtko Ursulin wrote:+static int igt_sg_alloc(void *ignored) +{ + IGT_TIMEOUT(end_time); + const unsigned long max_order = 20; /* approximating a 4GiB object */ + struct rnd_state prng; + unsigned long prime; + + for_each_prime_number(prime, max_order) { + unsigned long size = BIT(prime); + int offset; + + for (offset = -1; offset <= 1; offset++) { + unsigned long sz = size + offset; + const npages_fn_t *npages; + struct pfn_table pt; + int err; + + for (npages = npages_funcs; *npages; npages++) { + prandom_seed_state(&prng, + i915_selftest.random_seed); + if (!alloc_table(&pt, sz, sz, *npages, &prng)) + return 0; /* out of memory, give up */We need to define at least some amount of testing which must pass otherwise it is just too weak in my opinion. return prime < TBD ? -Esomething : 0; ?Following our last discussion, it does a minimum of one prime [2]. static int igt_sg_alloc(void *ignored) { IGT_TIMEOUT(end_time); const unsigned long max_order = 20; /* approximating a 4GiB object */ struct rnd_state prng; unsigned long prime; int alloc_error = -ENOMEM; for_each_prime_number(prime, max_order) { unsigned long size = BIT(prime); int offset; for (offset = -1; offset <= 1; offset++) { unsigned long sz = size + offset; const npages_fn_t *npages; struct pfn_table pt; int err; for (npages = npages_funcs; *npages; npages++) { prandom_seed_state(&prng, i915_selftest.random_seed); if (!alloc_table(&pt, sz, sz, *npages, &prng)) return alloc_error; prandom_seed_state(&prng, i915_selftest.random_seed); err = expect_pfn_sgtable(&pt, *npages, &prng, "sg_alloc_table", end_time); sg_free_table(&pt.st); if (err) return err; } } alloc_error = 0; } return 0; } Something like /* Make sure we test at least one continuation before accepting oom */ if (size > MAX_SG_PER_PAGE) /* can't remember what the define is! */ alloc_error = 0; ?
SG_MAX_SINGLE_ALLOC. Sounds good. r-b on that. Regards, Tvrtko _______________________________________________ Intel-gfx mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/intel-gfx
