Commit 750fae23 authored by Ville Syrjälä's avatar Ville Syrjälä

i915: Fix obj size vs. alignment for drm_pci_alloc()

drm_pci_alloc() refuses to cooperate if the passed alignment exceeds the
object size. So round up the obj size to the next power of two as well
to make this actually work.

Obviously things work just fine as long as the size was a power of two
to begin with. However kms_cursor_crc doesn't always use power of two
sizes so we hit a failure when we try to allocate the phys memory.

Testcase: igt/kms_cursor_crc
Signed-off-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20170907143203.13055-1-ville.syrjala@linux.intel.comReviewed-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
parent d7a133d8
...@@ -179,7 +179,7 @@ i915_gem_object_get_pages_phys(struct drm_i915_gem_object *obj) ...@@ -179,7 +179,7 @@ i915_gem_object_get_pages_phys(struct drm_i915_gem_object *obj)
* the alignment of the buddy allocation will naturally match. * the alignment of the buddy allocation will naturally match.
*/ */
phys = drm_pci_alloc(obj->base.dev, phys = drm_pci_alloc(obj->base.dev,
obj->base.size, roundup_pow_of_two(obj->base.size),
roundup_pow_of_two(obj->base.size)); roundup_pow_of_two(obj->base.size));
if (!phys) if (!phys)
return ERR_PTR(-ENOMEM); return ERR_PTR(-ENOMEM);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment