Merge tag 'drm-misc-next-2018-06-21' of git://anongit.freedesktop.org/drm/drm-misc into drm-next
drm-misc-next for 4.19: UAPI Changes: - Add writeback connector (Brian Starkey/Liviu Dudau) - Add "content type" property to HDMI connectors (Stanislav Lisovskiy) Cross-subsystem Changes: - some devicetree Docs update - fix compile breakage on ION due to the dma-buf cleanups (Christian König) Core Changes: - Reject over-sized allocation requests early (Chris Wilson) - gem-fb-helper: Always do implicit sync (Daniel Vetter) - dma-buf cleanups (Christian König) Driver Changes: - Fixes for the otm8009a panel driver (Philippe Cornu) - Add Innolux TV123WAM panel driver support (Sandeep Panda) - Move GEM BO to drm_framebuffer in few drivers (Daniel Stone) - i915 pinning improvements (Chris Wilson) - Stop consulting plane->fb/crtc in a few drivers (Ville Syrjälä) Signed-off-by: Dave Airlie <airlied@redhat.com> Link: https://patchwork.freedesktop.org/patch/msgid/20180621105428.GA20795@juma
This commit is contained in:
@@ -1825,6 +1825,77 @@ err:
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int __igt_once(unsigned int mode)
|
||||
{
|
||||
struct drm_mm mm;
|
||||
struct drm_mm_node rsvd_lo, rsvd_hi, node;
|
||||
int err;
|
||||
|
||||
drm_mm_init(&mm, 0, 7);
|
||||
|
||||
memset(&rsvd_lo, 0, sizeof(rsvd_lo));
|
||||
rsvd_lo.start = 1;
|
||||
rsvd_lo.size = 1;
|
||||
err = drm_mm_reserve_node(&mm, &rsvd_lo);
|
||||
if (err) {
|
||||
pr_err("Could not reserve low node\n");
|
||||
goto err;
|
||||
}
|
||||
|
||||
memset(&rsvd_hi, 0, sizeof(rsvd_hi));
|
||||
rsvd_hi.start = 5;
|
||||
rsvd_hi.size = 1;
|
||||
err = drm_mm_reserve_node(&mm, &rsvd_hi);
|
||||
if (err) {
|
||||
pr_err("Could not reserve low node\n");
|
||||
goto err_lo;
|
||||
}
|
||||
|
||||
if (!drm_mm_hole_follows(&rsvd_lo) || !drm_mm_hole_follows(&rsvd_hi)) {
|
||||
pr_err("Expected a hole after lo and high nodes!\n");
|
||||
err = -EINVAL;
|
||||
goto err_hi;
|
||||
}
|
||||
|
||||
memset(&node, 0, sizeof(node));
|
||||
err = drm_mm_insert_node_generic(&mm, &node,
|
||||
2, 0, 0,
|
||||
mode | DRM_MM_INSERT_ONCE);
|
||||
if (!err) {
|
||||
pr_err("Unexpectedly inserted the node into the wrong hole: node.start=%llx\n",
|
||||
node.start);
|
||||
err = -EINVAL;
|
||||
goto err_node;
|
||||
}
|
||||
|
||||
err = drm_mm_insert_node_generic(&mm, &node, 2, 0, 0, mode);
|
||||
if (err) {
|
||||
pr_err("Could not insert the node into the available hole!\n");
|
||||
err = -EINVAL;
|
||||
goto err_hi;
|
||||
}
|
||||
|
||||
err_node:
|
||||
drm_mm_remove_node(&node);
|
||||
err_hi:
|
||||
drm_mm_remove_node(&rsvd_hi);
|
||||
err_lo:
|
||||
drm_mm_remove_node(&rsvd_lo);
|
||||
err:
|
||||
drm_mm_takedown(&mm);
|
||||
return err;
|
||||
}
|
||||
|
||||
static int igt_lowest(void *ignored)
|
||||
{
|
||||
return __igt_once(DRM_MM_INSERT_LOW);
|
||||
}
|
||||
|
||||
static int igt_highest(void *ignored)
|
||||
{
|
||||
return __igt_once(DRM_MM_INSERT_HIGH);
|
||||
}
|
||||
|
||||
static void separate_adjacent_colors(const struct drm_mm_node *node,
|
||||
unsigned long color,
|
||||
u64 *start,
|
||||
|
Reference in New Issue
Block a user