On 15/03/2023 11:31, Kirill A. Shutemov wrote:
MAX_ORDER is not inclusive: the maximum allocation order buddy allocator
can deliver is MAX_ORDER-1.
This looks to be true on inspection:
__alloc_pages():
..
if (WARN_ON_ONCE_GFP(order >= MAX_ORDER, gfp))
So a bit of a misleading name "max".. For the i915 patch:
Acked-by: Tvrtko Ursulin <tvrtko.ursulin@xxxxxxxxx>
I don't however see the whole series to understand the context, or how
you want to handle the individual patches. Is it a tree wide cleanup of
the same mistake?
Regards,
Tvrtko
Fix MAX_ORDER usage in i915_gem_object_get_pages_internal().
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@xxxxxxxxxxxxxxx>
Cc: Jani Nikula <jani.nikula@xxxxxxxxxxxxxxx>
Cc: Joonas Lahtinen <joonas.lahtinen@xxxxxxxxxxxxxxx>
Cc: Rodrigo Vivi <rodrigo.vivi@xxxxxxxxx>
Cc: Tvrtko Ursulin <tvrtko.ursulin@xxxxxxxxxxxxxxx>
---
drivers/gpu/drm/i915/gem/i915_gem_internal.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/i915/gem/i915_gem_internal.c b/drivers/gpu/drm/i915/gem/i915_gem_internal.c
index 6bc26b4b06b8..eae9e9f6d3bf 100644
--- a/drivers/gpu/drm/i915/gem/i915_gem_internal.c
+++ b/drivers/gpu/drm/i915/gem/i915_gem_internal.c
@@ -36,7 +36,7 @@ static int i915_gem_object_get_pages_internal(struct drm_i915_gem_object *obj)
struct sg_table *st;
struct scatterlist *sg;
unsigned int npages; /* restricted by sg_alloc_table */
- int max_order = MAX_ORDER;
+ int max_order = MAX_ORDER - 1;
unsigned int max_segment;
gfp_t gfp;