On 07/03/22 8:15 pm, Jani Nikula wrote: > On Mon, 07 Mar 2022, Arunpravin <Arunpravin.PaneerSelvam@xxxxxxx> wrote: >> place BUG_ON(order < min_order) outside do..while >> loop as it fails Unigine Heaven benchmark. >> >> Unigine Heaven has buffer allocation requests for >> example required pages are 161 and alignment request >> is 128. To allocate the remaining 33 pages, continues >> the iteration to find the order value which is 5 and >> when it compares with min_order = 7, enables the >> BUG_ON(). To avoid this problem, placed the BUG_ON >> check outside of do..while loop. > > How about turning these BUG_ON()s to WARN_ON()s with an error return? > What's the point in oopsing? > yes, we will use WARN_ON with an error return Thanks, Arun > BR, > Jani. > > >> >> Signed-off-by: Arunpravin <Arunpravin.PaneerSelvam@xxxxxxx> >> --- >> drivers/gpu/drm/drm_buddy.c | 3 ++- >> 1 file changed, 2 insertions(+), 1 deletion(-) >> >> diff --git a/drivers/gpu/drm/drm_buddy.c b/drivers/gpu/drm/drm_buddy.c >> index 72f52f293249..ed94c56b720f 100644 >> --- a/drivers/gpu/drm/drm_buddy.c >> +++ b/drivers/gpu/drm/drm_buddy.c >> @@ -669,10 +669,11 @@ int drm_buddy_alloc_blocks(struct drm_buddy *mm, >> order = fls(pages) - 1; >> min_order = ilog2(min_page_size) - ilog2(mm->chunk_size); >> >> + BUG_ON(order < min_order); >> + >> do { >> order = min(order, (unsigned int)fls(pages) - 1); >> BUG_ON(order > mm->max_order); >> - BUG_ON(order < min_order); >> >> do { >> if (flags & DRM_BUDDY_RANGE_ALLOCATION) >> >> base-commit: 8025c79350b90e5a8029234d433578f12abbae2b >