Received: by 2002:a05:6a10:a841:0:0:0:0 with SMTP id d1csp972127pxy; Thu, 22 Apr 2021 19:05:32 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzbWf9hLqWLgIrhmp60Iu5Xshgiu6ivG3hnC2jO/Aonk3HyLkrQh178hs6UxOuwuf93GKID X-Received: by 2002:a05:6402:26c9:: with SMTP id x9mr1615411edd.322.1619143532131; Thu, 22 Apr 2021 19:05:32 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1619143532; cv=none; d=google.com; s=arc-20160816; b=IMEcInCAf4zhypsUVnhgdakKQrz2oCbD1bzbwag/FhVQyhugBYZfMHySMhPO0EciQt qCtNoQvcwcdhfKoIl+i9rkQk76t/lOnhGrkUWsoexnI/e8eAAC1TctUU808wcgXDr+qA 5ob5Tgt7CCxXJ8sMXbq8lTsEqtXsNoDySREs1Eo9XiqCNtg0CEj8LBKdkO6Ica/bwXyB TdDFNeGxtCEW+LXndHUjvKEW7PPm6kA8rKux+8+1zD54xEPlq2MYFGGdQ6S1o7ifYbSe mVNRKua1+nQOf6cih8PnPIk30azxATliM0z5M/giJfURBANCymIwAR0Dqp4iTvDfgp8s 5ZAQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=Pjxat++qid3Snrnv9iGB86a7fL2TIKbO8d9d/vb9leA=; b=cdR0prEER2pPcQcwO7YOBQQINTj9kjJPLu0RdLXvnRNmZ+VO7WTsY0y2Qok0Aua2V/ 1cc/HGiJJAeQae4uhDLGprT0qbu3OPmoZ1MaXkJpQzWJLqSMEA1RMzUj8wtgtRjmbx1z 5XyegpTkD76BtbvmrhM9aUqgjPiT3sk6ttATRnQIO+XNKkL6dTnkHmH10xp6jChMZr9L SRc4MdGHZbN3+IxMpl5gEi1XGq5su9Qs+wDXXmqDGsdmFxIdeDLg6qgjX271NxpPVLJD cVnfDv3nklnVopxzUxIwRyWUBHqxIUHugFW6mJOHJ+v2C0f7nMPec87KERMF5rggjJ35 xnHg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=uSMoZqin; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id v5si3766746edq.440.2021.04.22.19.05.08; Thu, 22 Apr 2021 19:05:32 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=uSMoZqin; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S240381AbhDWCEX (ORCPT + 99 others); Thu, 22 Apr 2021 22:04:23 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48296 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236601AbhDWCEW (ORCPT ); Thu, 22 Apr 2021 22:04:22 -0400 Received: from mail-pg1-x535.google.com (mail-pg1-x535.google.com [IPv6:2607:f8b0:4864:20::535]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 32080C061574 for ; Thu, 22 Apr 2021 19:03:47 -0700 (PDT) Received: by mail-pg1-x535.google.com with SMTP id t22so2706279pgu.0 for ; Thu, 22 Apr 2021 19:03:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=Pjxat++qid3Snrnv9iGB86a7fL2TIKbO8d9d/vb9leA=; b=uSMoZqinrID/ieHXwKegfwYKAseNeYetW4oKipjMDtL7lt96m6nkhdJvXR14ZADRXG nnXq+MAfnd8XUyyOaYF2QVKvMoFDBH4nWAMBLJwhBF7PJIs7uqIr8lcITTF78Wr89k7b ytRh1NkCjYVAeFsTKhFY3oLtVIW2J++Yudi641j746Tnv8j8l0WT3m2NCClMbCBjiQaF f4xO8XsYfhnQRu72jgGXxhITeFxGdKcYRyFHYRt/S48zPTfcimkLtUsGSGM5ss0Zoc1A heMH2FKNOWpW8QecS/Xw3tul+sQI+WlCcSezPOZmVzvZONM1m/ui1SWtmimA8kVjzM4p /hWA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=Pjxat++qid3Snrnv9iGB86a7fL2TIKbO8d9d/vb9leA=; b=tjtU8wnPM3kvKCPapiDDUlbxOCfchiocyoYs6napRDcMN+uBLIDDa0Y4r2mdcJjC21 mZG1A3jxG7oKqnf/4zq/LCJLdY34i8hAkWRb3cv2vXsAt8OjCQsPvoOVzjAksF/v2lUP 0g1YVWU8lXBrb+zEhg4U+te83nMRZDxbXnF8kQrhm0Qfbt3fZ2gc/hwZ04oHHWD/7t7X AA/IL7ywKIuGHIaC8syXH9OU+ktbcQx5NzNkFcfGcqCKqK58Egk4izmwz7xX7r6R0QIT Ka70We7aFMpOauWqXZagWDG/+ivB4Za1Od2HyV5pGGpX8kPmizQ7ypBBUibRIoJPtWJz XcXg== X-Gm-Message-State: AOAM5338vjD3s8Pm01YV2XOzb5t9W4X3N/pFQ9Q8MwQpaJtKDB8qSIPN 1KWhiiTlzPUo7ldNApyDT1M= X-Received: by 2002:a63:f451:: with SMTP id p17mr1537169pgk.150.1619143426734; Thu, 22 Apr 2021 19:03:46 -0700 (PDT) Received: from localhost.localdomain (097-094-025-122.res.spectrum.com. [97.94.25.122]) by smtp.gmail.com with ESMTPSA id u25sm3067793pgk.34.2021.04.22.19.03.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 22 Apr 2021 19:03:46 -0700 (PDT) From: Joseph Kogut To: dri-devel@lists.freedesktop.org Cc: Joseph Kogut , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Daniel Vetter , Sam Ravnborg , Lee Jones , linux-kernel@vger.kernel.org Subject: [PATCH 1/2] drm: remove usage of drm_pci_alloc/free Date: Thu, 22 Apr 2021 19:02:43 -0700 Message-Id: <20210423020248.3427369-1-joseph.kogut@gmail.com> X-Mailer: git-send-email 2.31.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Remove usage of legacy dma-api abstraction in preparation for removal Signed-off-by: Joseph Kogut --- Checkpatch warns here that r128 is marked obsolete, and asks for no unnecessary modifications. This series aims to address the FIXME in drivers/gpu/drm/drm_pci.c explaining that drm_pci_alloc/free is a needless abstraction of the dma-api, and it should be removed. Unfortunately, doing this requires removing the usage from an obsolete driver as well. If this patch is rejected for modifying an obsolete driver, would it be appropriate to follow up removing the FIXME from drm_pci? drivers/gpu/drm/drm_bufs.c | 19 ++++++++++++++++--- drivers/gpu/drm/drm_dma.c | 8 +++++++- drivers/gpu/drm/r128/ati_pcigart.c | 22 ++++++++++++++++++---- 3 files changed, 41 insertions(+), 8 deletions(-) diff --git a/drivers/gpu/drm/drm_bufs.c b/drivers/gpu/drm/drm_bufs.c index e3d77dfefb0a..94bc1f6049c9 100644 --- a/drivers/gpu/drm/drm_bufs.c +++ b/drivers/gpu/drm/drm_bufs.c @@ -674,12 +674,17 @@ int drm_legacy_rmmap_ioctl(struct drm_device *dev, void *data, static void drm_cleanup_buf_error(struct drm_device *dev, struct drm_buf_entry *entry) { + drm_dma_handle_t *dmah; int i; if (entry->seg_count) { for (i = 0; i < entry->seg_count; i++) { if (entry->seglist[i]) { - drm_pci_free(dev, entry->seglist[i]); + dmah = entry->seglist[i]; + dma_free_coherent(dev->dev, + dmah->size, + dmah->vaddr, + dmah->busaddr); } } kfree(entry->seglist); @@ -978,10 +983,18 @@ int drm_legacy_addbufs_pci(struct drm_device *dev, page_count = 0; while (entry->buf_count < count) { + dmah = kmalloc(sizeof(drm_dma_handle_t), GFP_KERNEL); + if (!dmah) + return -ENOMEM; - dmah = drm_pci_alloc(dev, PAGE_SIZE << page_order, 0x1000); + dmah->size = total; + dmah->vaddr = dma_alloc_coherent(dev->dev, + dmah->size, + &dmah->busaddr, + GFP_KERNEL); + if (!dmah->vaddr) { + kfree(dmah); - if (!dmah) { /* Set count correctly so we free the proper amount. */ entry->buf_count = count; entry->seg_count = count; diff --git a/drivers/gpu/drm/drm_dma.c b/drivers/gpu/drm/drm_dma.c index d07ba54ec945..eb6b741a6f99 100644 --- a/drivers/gpu/drm/drm_dma.c +++ b/drivers/gpu/drm/drm_dma.c @@ -81,6 +81,7 @@ int drm_legacy_dma_setup(struct drm_device *dev) void drm_legacy_dma_takedown(struct drm_device *dev) { struct drm_device_dma *dma = dev->dma; + drm_dma_handle_t *dmah; int i, j; if (!drm_core_check_feature(dev, DRIVER_HAVE_DMA) || @@ -100,7 +101,12 @@ void drm_legacy_dma_takedown(struct drm_device *dev) dma->bufs[i].seg_count); for (j = 0; j < dma->bufs[i].seg_count; j++) { if (dma->bufs[i].seglist[j]) { - drm_pci_free(dev, dma->bufs[i].seglist[j]); + dmah = dma->bufs[i].seglist[j]; + dma_free_coherent(dev->dev, + dmah->size, + dmah->vaddr, + dmah->busaddr); + kfree(dmah); } } kfree(dma->bufs[i].seglist); diff --git a/drivers/gpu/drm/r128/ati_pcigart.c b/drivers/gpu/drm/r128/ati_pcigart.c index 1234ec60c0af..fbb0cfd79758 100644 --- a/drivers/gpu/drm/r128/ati_pcigart.c +++ b/drivers/gpu/drm/r128/ati_pcigart.c @@ -45,18 +45,32 @@ static int drm_ati_alloc_pcigart_table(struct drm_device *dev, struct drm_ati_pcigart_info *gart_info) { - gart_info->table_handle = drm_pci_alloc(dev, gart_info->table_size, - PAGE_SIZE); - if (gart_info->table_handle == NULL) + drm_dma_handle_t *dmah = kmalloc(sizeof(drm_dma_handle_t), GFP_KERNEL); + + if (!dmah) + return -ENOMEM; + + dmah->size = gart_info->table_size; + dmah->vaddr = dma_alloc_coherent(dev->dev, + dmah->size, + &dmah->busaddr, + GFP_KERNEL); + + if (!dmah->vaddr) { + kfree(dmah); return -ENOMEM; + } + gart_info->table_handle = dmah; return 0; } static void drm_ati_free_pcigart_table(struct drm_device *dev, struct drm_ati_pcigart_info *gart_info) { - drm_pci_free(dev, gart_info->table_handle); + drm_dma_handle_t *dmah = gart_info->table_handle; + + dma_free_coherent(dev->dev, dmah->size, dmah->vaddr, dmah->busaddr); gart_info->table_handle = NULL; } -- 2.31.1