From patchwork Mon Jan 11 11:00:52 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chris Wilson X-Patchwork-Id: 8002331 Return-Path: X-Original-To: patchwork-intel-gfx@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork1.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by patchwork1.web.kernel.org (Postfix) with ESMTP id AAC949F8AA for ; Mon, 11 Jan 2016 11:03:59 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id D6CB5202E9 for ; Mon, 11 Jan 2016 11:03:58 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) by mail.kernel.org (Postfix) with ESMTP id EB75D202F0 for ; Mon, 11 Jan 2016 11:03:57 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 6E3366E491; Mon, 11 Jan 2016 03:03:53 -0800 (PST) X-Original-To: intel-gfx@lists.freedesktop.org Delivered-To: intel-gfx@lists.freedesktop.org Received: from mail-wm0-f65.google.com (mail-wm0-f65.google.com [74.125.82.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id AA9A46E477 for ; Mon, 11 Jan 2016 03:01:52 -0800 (PST) Received: by mail-wm0-f65.google.com with SMTP id b14so25765288wmb.1 for ; Mon, 11 Jan 2016 03:01:52 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references; bh=hZA+M+gnYVDpZZdkBQjoFp/zCJf7StDGJAGHy+nMZI8=; b=rfuNLb9mgtb+4htkMw7GhmR1DTKYEfBS1H6TvhsRbpun42UNZHy0LYPsQkPp0kJAfe X+mohVsFQxCr7TDwAJdoUfdwaCShbYY33AQuQLPlaAqHh4toAiDtYvRzF0CQcfMRgMWD FuK29904kz+PtC3PBNNCE/H0UYBlYhG93qXozIPZQpRshUbT+/n5llaQhu1mN7fWuLFh Bfg/AuJErfgTyB0fqzOkjG2LEjI4s1RWFKn4O4XGjn4y16A63k7QZaDsxRYdols6hcP3 sgQmpEjxZuNilyEEK91OwsDme3X7n+3jKrHSMg0XDFAt4G48NvE7zsObO/0he6/f+CwV 5fjw== X-Received: by 10.194.57.100 with SMTP id h4mr129582884wjq.21.1452510111485; Mon, 11 Jan 2016 03:01:51 -0800 (PST) Received: from haswell.alporthouse.com ([78.156.65.138]) by smtp.gmail.com with ESMTPSA id 73sm12311579wmm.7.2016.01.11.03.01.50 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Mon, 11 Jan 2016 03:01:50 -0800 (PST) From: Chris Wilson To: intel-gfx@lists.freedesktop.org Date: Mon, 11 Jan 2016 11:00:52 +0000 Message-Id: <1452510091-6833-10-git-send-email-chris@chris-wilson.co.uk> X-Mailer: git-send-email 2.7.0.rc3 In-Reply-To: <1452510091-6833-1-git-send-email-chris@chris-wilson.co.uk> References: <1452503961-14837-1-git-send-email-chris@chris-wilson.co.uk> <1452510091-6833-1-git-send-email-chris@chris-wilson.co.uk> Subject: [Intel-gfx] [PATCH 151/190] drm/i915: Allow DMA pagetables to use highmem X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" X-Spam-Status: No, score=-4.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, RCVD_IN_DNSWL_MED,RP_MATCHES_RCVD,T_DKIM_INVALID,UNPARSEABLE_RELAY autolearn=unavailable version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP As we never need to directly access the pages we allocate for scratch and the pagetables, and always remap them into the GTT through the dma remapper, we do not need to limit the allocations to lowmem i.e. we can pass in the __GFP_HIGHMEM flag to the page allocation. For backwards compatibility, e.g. certain old GPUs not liking highmem for certain functions that may be accidentally mapped to the scratch page by userspace, keep the GMCH probe as only allocating form DMA32. Signed-off-by: Chris Wilson --- drivers/gpu/drm/i915/i915_gem_gtt.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/drivers/gpu/drm/i915/i915_gem_gtt.c b/drivers/gpu/drm/i915/i915_gem_gtt.c index fa7dedd395ee..faee28c807f2 100644 --- a/drivers/gpu/drm/i915/i915_gem_gtt.c +++ b/drivers/gpu/drm/i915/i915_gem_gtt.c @@ -32,6 +32,8 @@ #include "i915_trace.h" #include "intel_drv.h" +#define I915_GFP_DMA (GFP_KERNEL | __GFP_HIGHMEM) + /** * DOC: Global GTT views * @@ -330,7 +332,7 @@ static int __setup_page_dma(struct drm_device *dev, static int setup_page_dma(struct drm_device *dev, struct i915_page_dma *p) { - return __setup_page_dma(dev, p, GFP_KERNEL); + return __setup_page_dma(dev, p, I915_GFP_DMA); } static void cleanup_page_dma(struct drm_device *dev, struct i915_page_dma *p) @@ -393,9 +395,9 @@ static void fill_page_dma_32(struct drm_device *dev, struct i915_page_dma *p, } static int -setup_scratch_page(struct drm_device *dev, struct i915_page_dma *scratch) +setup_scratch_page(struct drm_device *dev, struct i915_page_dma *scratch, gfp_t gfp) { - return __setup_page_dma(dev, scratch, GFP_DMA32 | __GFP_ZERO); + return __setup_page_dma(dev, scratch, gfp | __GFP_ZERO); } static void cleanup_scratch_page(struct drm_device *dev, @@ -849,7 +851,7 @@ static int gen8_init_scratch(struct i915_address_space *vm) struct drm_device *dev = vm->dev; int ret; - ret = setup_scratch_page(dev, &vm->scratch_page); + ret = setup_scratch_page(dev, &vm->scratch_page, I915_GFP_DMA); if (ret) return ret; @@ -1927,7 +1929,7 @@ static int gen6_init_scratch(struct i915_address_space *vm) struct drm_device *dev = vm->dev; int ret; - ret = setup_scratch_page(dev, &vm->scratch_page); + ret = setup_scratch_page(dev, &vm->scratch_page, I915_GFP_DMA); if (ret) return ret; @@ -2879,7 +2881,7 @@ static int ggtt_probe_common(struct drm_device *dev, return -ENOMEM; } - ret = setup_scratch_page(dev, &dev_priv->gtt.base.scratch_page); + ret = setup_scratch_page(dev, &dev_priv->gtt.base.scratch_page, GFP_DMA32); if (ret) { DRM_ERROR("Scratch setup failed\n"); /* iounmap will also get called at remove, but meh */