Merge tag 'drm-for-v4.15-part2-fixes' of git://people.freedesktop.org/~airlied/linux
Pull drm fixes from Dave Airlie: - TTM regression fix for some virt gpus (bochs vga) - a few i915 stable fixes - one vc4 fix - one uapi fix * tag 'drm-for-v4.15-part2-fixes' of git://people.freedesktop.org/~airlied/linux: drm/ttm: don't attempt to use hugepages if dma32 requested (v2) drm/vblank: Pass crtc_id to page_flip_ioctl. drm/i915: Fix init_clock_gating for resume drm/i915: Mark the userptr invalidate workqueue as WQ_MEM_RECLAIM drm/i915: Clear breadcrumb node when cancelling signaling drm/i915/gvt: ensure -ve return value is handled correctly drm/i915: Re-register PMIC bus access notifier on runtime resume drm/i915: Fix false-positive assert_rpm_wakelock_held in i915_pmic_bus_access_notifier v2 drm/edid: Don't send non-zero YQ in AVI infoframe for HDMI 1.x sinks drm/vc4: Account for interrupts in flight
This commit is contained in:
@@ -744,12 +744,14 @@ static void ttm_put_pages(struct page **pages, unsigned npages, int flags,
|
||||
}
|
||||
|
||||
#ifdef CONFIG_TRANSPARENT_HUGEPAGE
|
||||
for (j = 0; j < HPAGE_PMD_NR; ++j)
|
||||
if (p++ != pages[i + j])
|
||||
break;
|
||||
if (!(flags & TTM_PAGE_FLAG_DMA32)) {
|
||||
for (j = 0; j < HPAGE_PMD_NR; ++j)
|
||||
if (p++ != pages[i + j])
|
||||
break;
|
||||
|
||||
if (j == HPAGE_PMD_NR)
|
||||
order = HPAGE_PMD_ORDER;
|
||||
if (j == HPAGE_PMD_NR)
|
||||
order = HPAGE_PMD_ORDER;
|
||||
}
|
||||
#endif
|
||||
|
||||
if (page_count(pages[i]) != 1)
|
||||
@@ -865,20 +867,22 @@ static int ttm_get_pages(struct page **pages, unsigned npages, int flags,
|
||||
|
||||
i = 0;
|
||||
#ifdef CONFIG_TRANSPARENT_HUGEPAGE
|
||||
while (npages >= HPAGE_PMD_NR) {
|
||||
gfp_t huge_flags = gfp_flags;
|
||||
if (!(gfp_flags & GFP_DMA32)) {
|
||||
while (npages >= HPAGE_PMD_NR) {
|
||||
gfp_t huge_flags = gfp_flags;
|
||||
|
||||
huge_flags |= GFP_TRANSHUGE;
|
||||
huge_flags &= ~__GFP_MOVABLE;
|
||||
huge_flags &= ~__GFP_COMP;
|
||||
p = alloc_pages(huge_flags, HPAGE_PMD_ORDER);
|
||||
if (!p)
|
||||
break;
|
||||
huge_flags |= GFP_TRANSHUGE;
|
||||
huge_flags &= ~__GFP_MOVABLE;
|
||||
huge_flags &= ~__GFP_COMP;
|
||||
p = alloc_pages(huge_flags, HPAGE_PMD_ORDER);
|
||||
if (!p)
|
||||
break;
|
||||
|
||||
for (j = 0; j < HPAGE_PMD_NR; ++j)
|
||||
pages[i++] = p++;
|
||||
for (j = 0; j < HPAGE_PMD_NR; ++j)
|
||||
pages[i++] = p++;
|
||||
|
||||
npages -= HPAGE_PMD_NR;
|
||||
npages -= HPAGE_PMD_NR;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
|
Reference in New Issue
Block a user