]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
Merge v6.8-rc1 into drm-misc-fixes
authorMaxime Ripard <mripard@kernel.org>
Mon, 22 Jan 2024 08:44:15 +0000 (09:44 +0100)
committerMaxime Ripard <mripard@kernel.org>
Mon, 22 Jan 2024 08:44:15 +0000 (09:44 +0100)
Let's kickstart the 6.8 fix cycle.

Signed-off-by: Maxime Ripard <mripard@kernel.org>
1  2 
drivers/gpu/drm/panel/Kconfig
drivers/gpu/drm/panel/panel-simple.c
drivers/gpu/drm/tests/drm_mm_test.c
drivers/gpu/drm/ttm/ttm_device.c

Simple merge
Simple merge
index 6803cb2eb8fd633e8e4d3665646d0a783b993e3b,4e9247cf9977f5677126ffbdcf56c97446c769b4..1eb0c304f9607f6ae4034638a2cf8e3ee8da06ca
@@@ -268,220 -209,8 +209,11 @@@ static void drm_test_mm_debug(struct ku
        KUNIT_ASSERT_FALSE_MSG(test, drm_mm_reserve_node(&mm, &nodes[1]),
                               "failed to reserve node[0] {start=%lld, size=%lld)\n",
                               nodes[0].start, nodes[0].size);
 +
 +      drm_mm_print(&mm, &p);
 +      KUNIT_SUCCEED(test);
  }
  
- static struct drm_mm_node *set_node(struct drm_mm_node *node,
-                                   u64 start, u64 size)
- {
-       node->start = start;
-       node->size = size;
-       return node;
- }
- static bool expect_reserve_fail(struct kunit *test, struct drm_mm *mm, struct drm_mm_node *node)
- {
-       int err;
-       err = drm_mm_reserve_node(mm, node);
-       if (likely(err == -ENOSPC))
-               return true;
-       if (!err) {
-               KUNIT_FAIL(test, "impossible reserve succeeded, node %llu + %llu\n",
-                          node->start, node->size);
-               drm_mm_remove_node(node);
-       } else {
-               KUNIT_FAIL(test,
-                          "impossible reserve failed with wrong error %d [expected %d], node %llu + %llu\n",
-                      err, -ENOSPC, node->start, node->size);
-       }
-       return false;
- }
- static bool noinline_for_stack check_reserve_boundaries(struct kunit *test, struct drm_mm *mm,
-                                                       unsigned int count,
-                                                       u64 size)
- {
-       const struct boundary {
-               u64 start, size;
-               const char *name;
-       } boundaries[] = {
- #define B(st, sz) { (st), (sz), "{ " #st ", " #sz "}" }
-               B(0, 0),
-               B(-size, 0),
-               B(size, 0),
-               B(size * count, 0),
-               B(-size, size),
-               B(-size, -size),
-               B(-size, 2 * size),
-               B(0, -size),
-               B(size, -size),
-               B(count * size, size),
-               B(count * size, -size),
-               B(count * size, count * size),
-               B(count * size, -count * size),
-               B(count * size, -(count + 1) * size),
-               B((count + 1) * size, size),
-               B((count + 1) * size, -size),
-               B((count + 1) * size, -2 * size),
- #undef B
-       };
-       struct drm_mm_node tmp = {};
-       int n;
-       for (n = 0; n < ARRAY_SIZE(boundaries); n++) {
-               if (!expect_reserve_fail(test, mm, set_node(&tmp, boundaries[n].start,
-                                                           boundaries[n].size))) {
-                       KUNIT_FAIL(test, "boundary[%d:%s] failed, count=%u, size=%lld\n",
-                                  n, boundaries[n].name, count, size);
-                       return false;
-               }
-       }
-       return true;
- }
- static int __drm_test_mm_reserve(struct kunit *test, unsigned int count, u64 size)
- {
-       DRM_RND_STATE(prng, random_seed);
-       struct drm_mm mm;
-       struct drm_mm_node tmp, *nodes, *node, *next;
-       unsigned int *order, n, m, o = 0;
-       int ret, err;
-       /* For exercising drm_mm_reserve_node(), we want to check that
-        * reservations outside of the drm_mm range are rejected, and to
-        * overlapping and otherwise already occupied ranges. Afterwards,
-        * the tree and nodes should be intact.
-        */
-       DRM_MM_BUG_ON(!count);
-       DRM_MM_BUG_ON(!size);
-       ret = -ENOMEM;
-       order = drm_random_order(count, &prng);
-       if (!order)
-               goto err;
-       nodes = vzalloc(array_size(count, sizeof(*nodes)));
-       KUNIT_ASSERT_TRUE(test, nodes);
-       ret = -EINVAL;
-       drm_mm_init(&mm, 0, count * size);
-       if (!check_reserve_boundaries(test, &mm, count, size))
-               goto out;
-       for (n = 0; n < count; n++) {
-               nodes[n].start = order[n] * size;
-               nodes[n].size = size;
-               err = drm_mm_reserve_node(&mm, &nodes[n]);
-               if (err) {
-                       KUNIT_FAIL(test, "reserve failed, step %d, start %llu\n",
-                                  n, nodes[n].start);
-                       ret = err;
-                       goto out;
-               }
-               if (!drm_mm_node_allocated(&nodes[n])) {
-                       KUNIT_FAIL(test, "reserved node not allocated! step %d, start %llu\n",
-                                  n, nodes[n].start);
-                       goto out;
-               }
-               if (!expect_reserve_fail(test, &mm, &nodes[n]))
-                       goto out;
-       }
-       /* After random insertion the nodes should be in order */
-       if (!assert_continuous(test, &mm, size))
-               goto out;
-       /* Repeated use should then fail */
-       drm_random_reorder(order, count, &prng);
-       for (n = 0; n < count; n++) {
-               if (!expect_reserve_fail(test, &mm, set_node(&tmp, order[n] * size, 1)))
-                       goto out;
-               /* Remove and reinsert should work */
-               drm_mm_remove_node(&nodes[order[n]]);
-               err = drm_mm_reserve_node(&mm, &nodes[order[n]]);
-               if (err) {
-                       KUNIT_FAIL(test, "reserve failed, step %d, start %llu\n",
-                                  n, nodes[n].start);
-                       ret = err;
-                       goto out;
-               }
-       }
-       if (!assert_continuous(test, &mm, size))
-               goto out;
-       /* Overlapping use should then fail */
-       for (n = 0; n < count; n++) {
-               if (!expect_reserve_fail(test, &mm, set_node(&tmp, 0, size * count)))
-                       goto out;
-       }
-       for (n = 0; n < count; n++) {
-               if (!expect_reserve_fail(test, &mm, set_node(&tmp, size * n, size * (count - n))))
-                       goto out;
-       }
-       /* Remove several, reinsert, check full */
-       for_each_prime_number(n, min(max_prime, count)) {
-               for (m = 0; m < n; m++) {
-                       node = &nodes[order[(o + m) % count]];
-                       drm_mm_remove_node(node);
-               }
-               for (m = 0; m < n; m++) {
-                       node = &nodes[order[(o + m) % count]];
-                       err = drm_mm_reserve_node(&mm, node);
-                       if (err) {
-                               KUNIT_FAIL(test, "reserve failed, step %d/%d, start %llu\n",
-                                          m, n, node->start);
-                               ret = err;
-                               goto out;
-                       }
-               }
-               o += n;
-               if (!assert_continuous(test, &mm, size))
-                       goto out;
-       }
-       ret = 0;
- out:
-       drm_mm_for_each_node_safe(node, next, &mm)
-               drm_mm_remove_node(node);
-       drm_mm_takedown(&mm);
-       vfree(nodes);
-       kfree(order);
- err:
-       return ret;
- }
- static void drm_test_mm_reserve(struct kunit *test)
- {
-       const unsigned int count = min_t(unsigned int, BIT(10), max_iterations);
-       int n;
-       for_each_prime_number_from(n, 1, 54) {
-               u64 size = BIT_ULL(n);
-               KUNIT_ASSERT_FALSE(test, __drm_test_mm_reserve(test, count, size - 1));
-               KUNIT_ASSERT_FALSE(test, __drm_test_mm_reserve(test, count, size));
-               KUNIT_ASSERT_FALSE(test, __drm_test_mm_reserve(test, count, size + 1));
-               cond_resched();
-       }
- }
  static bool expect_insert(struct kunit *test, struct drm_mm *mm,
                          struct drm_mm_node *node, u64 size, u64 alignment, unsigned long color,
                        const struct insert_mode *mode)
Simple merge