Received: by 2002:a25:f815:0:0:0:0:0 with SMTP id u21csp2898727ybd; Mon, 24 Jun 2019 14:59:48 -0700 (PDT) X-Google-Smtp-Source: APXvYqzHR67joZqvQYkKhGsxvvxxwm9HkN2sXf42eW+X/gwH3T4I/grsknWY277rgaeTSpwZrWuB X-Received: by 2002:a63:5b1d:: with SMTP id p29mr33876241pgb.297.1561413588116; Mon, 24 Jun 2019 14:59:48 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1561413588; cv=none; d=google.com; s=arc-20160816; b=uGGQIegFc/7vFJDTG8DVPY6zn49BVGEC2mp70keazBS7X4VMJ71WUIMlsyNo6jv5Y/ ISTpcamCiCKyJy7BnU9dzU/5xSUdaERdWB6yw7XsM4bN+IzqxTETAQOH7hxhHPRF0373 EFVhCbiJNWjUpUPsrOqzOa9ZaSeONkXnLQcqgh61RphPTBgkoY7UoXETYjVcco/k6AP8 I9S0V12/jhSnaexpPXjIHnTq06ca0Nrrj5p6hWFLZLT82oLNXZu9z6ou4rSWz0o8IamZ h8bPSuRucnUFfexM5WImdn/herM/fP+K0zRjfhnPtQ4DZlaDcC4y4Iwm0hq6QLhrLA6D 0QAQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:date:subject:cc:to:from :dkim-signature; bh=dwFqV91KqH1mK3/9wT2wWG2wDV0aDU1ov+CsBgMWwUE=; b=rshlSawQ7PE9zZmjNi4xLQlFcQEuJMI00bfcXeaTAa00gAgrAibI9jMDzjqXvwQTja HN1woiqBjjT9+TyhN3BAJMWkK4UycT6UDsaOzVYXicGRX0l6JrXQ5YHGq1U7gJi2SNdH CWSJYMMY5/sxi4c+TLYYMNb/42UjXFfWZ5bbn7SJp4ToCD0Fu10swaydj+07nIomln61 WFQHQkUUc0UFquOa8p7H2NzRBM+1b0yl6KgLm5Aq1w5RLGOUXJFOv2y08C9T4jnm4SBJ mJ3iVN1v6xP8ItW11tha6P4t3sNkunM7kQ8P6WIM+gBShHRPGq2cVYaC0ATFQWCC1KG8 NeKQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=AmV7vfx5; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id q11si11319917pgb.78.2019.06.24.14.59.32; Mon, 24 Jun 2019 14:59:48 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=AmV7vfx5; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730598AbfFXTtP (ORCPT + 99 others); Mon, 24 Jun 2019 15:49:15 -0400 Received: from mail-pl1-f196.google.com ([209.85.214.196]:38210 "EHLO mail-pl1-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728473AbfFXTtP (ORCPT ); Mon, 24 Jun 2019 15:49:15 -0400 Received: by mail-pl1-f196.google.com with SMTP id g4so7463824plb.5 for ; Mon, 24 Jun 2019 12:49:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id; bh=dwFqV91KqH1mK3/9wT2wWG2wDV0aDU1ov+CsBgMWwUE=; b=AmV7vfx5CGF4aKpWDx8j1xkohSfbcl709wpiY009FPnbsIsKYfselAK2Etw4zf2ZLP i3bZ33PuHyn5iuOiL4oLrVl+1yDzI54MDbF5J6n6XTuDvmXysIQ1nd24fddXcouBdde4 KIOG5tyXCbQp+R0cz3ZrXNlvNPvN9//QMkSklcRkdM381MC2u0kY+cWy3s1ctPXi+l0C tAMsyXqhc5ZVA6LnqBxRuJU0cTufCVghODPcBh8Z8yxVcWmFGwDuPlSk254qXP8ZVCM9 +N+D2gVKYQ0jvRJBefC1fACRCunhwE5X0SAynWEibTGZikAl39h8a1xXbwTd3C1w4ICc 9MzA== 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; bh=dwFqV91KqH1mK3/9wT2wWG2wDV0aDU1ov+CsBgMWwUE=; b=MiXfzccJ5XTdcIROwckRWdv/5U9ZCfbiDRJa8IMIdmaZJwA4ncuYYDCRnweDpx5YSo d/8VDRvNIqbDrqeo2ypGp5OoNTjpUFyDc1bZpMUfqofrVuR7ZP7APehVp+O6jKWcx0Xz rnZwW4E5ciDVaL7U2T9u3/u+dM6FYQQHkcwBHZyXtdGGVGcjgYpTuaAY51muEBmA0LFm UoRLD/NL6YvpsFUC2nE1Fzx++gY0nCz9vY8ySiq3HWC+5E/JQXwZGqKSNgHQfhS+NoaM HM+P3L0VBWrrpDg7ZZtZtIwGTMhf5Bf073npjda8fz2O2Q2sU4VKF1ChjMetD6InQnmA S8ww== X-Gm-Message-State: APjAAAXH0JneRfX/a+F0AQTSEZC6nZQJyxo4XshuWY8qKdGnBosy+NQw q0Ga9RRF6rhFd6+YBsZzpSJsh/R4r4U= X-Received: by 2002:a17:902:e582:: with SMTP id cl2mr135278814plb.60.1561405753588; Mon, 24 Jun 2019 12:49:13 -0700 (PDT) Received: from localhost.localdomain ([2601:1c2:680:1319:692:26ff:feda:3a81]) by smtp.gmail.com with ESMTPSA id v3sm7957031pfm.188.2019.06.24.12.49.10 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Mon, 24 Jun 2019 12:49:12 -0700 (PDT) From: John Stultz To: lkml Cc: John Stultz , Laura Abbott , Benjamin Gaignard , Sumit Semwal , Liam Mark , Pratik Patel , Brian Starkey , Vincent Donnefort , Sudipto Paul , "Andrew F . Davis" , Christoph Hellwig , Chenbo Feng , Alistair Strachan , dri-devel@lists.freedesktop.org Subject: [PATCH v6 0/5] DMA-BUF Heaps (destaging ION) Date: Mon, 24 Jun 2019 19:49:03 +0000 Message-Id: <20190624194908.121273-1-john.stultz@linaro.org> X-Mailer: git-send-email 2.17.1 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Here is another pass at the dma-buf heaps patchset Andrew and I have been working on which tries to destage a fair chunk of ION functionality. The patchset implements per-heap devices which can be opened directly and then an ioctl is used to allocate a dmabuf from the heap. The interface is similar, but much simpler then IONs, only providing an ALLOC ioctl. Also, I've provided relatively simple system and cma heaps. I've booted and tested these patches with AOSP on the HiKey960 using the kernel tree here: https://git.linaro.org/people/john.stultz/android-dev.git/log/?h=dev/dma-buf-heap And the userspace changes here: https://android-review.googlesource.com/c/device/linaro/hikey/+/909436 Compared to ION, this patchset is missing the system-contig, carveout and chunk heaps, as I don't have a device that uses those, so I'm unable to do much useful validation there. Additionally we have no upstream users of chunk or carveout, and the system-contig has been deprecated in the common/andoid-* kernels, so this should be ok. I've also removed the stats accounting for now, since any such accounting should be implemented by dma-buf core or the heaps themselves. New in v6: * Number of cleanups and error path fixes suggested by Brian Starkey, many thanks for his close review and suggestions! Outstanding concerns: * Need to better understand various secure heap implementations. Some concern that heap private flags will be needed, but its also possible that dma-buf heaps can't solve everyone's needs, in which case, a vendor's secure buffer driver can implement their own dma-buf exporter. So I'm not too worried here. Thoughts and feedback would be greatly appreciated! thanks -john Cc: Laura Abbott Cc: Benjamin Gaignard Cc: Sumit Semwal Cc: Liam Mark Cc: Pratik Patel Cc: Brian Starkey Cc: Vincent Donnefort Cc: Sudipto Paul Cc: Andrew F. Davis Cc: Christoph Hellwig Cc: Chenbo Feng Cc: Alistair Strachan Cc: dri-devel@lists.freedesktop.org Andrew F. Davis (1): dma-buf: Add dma-buf heaps framework John Stultz (4): dma-buf: heaps: Add heap helpers dma-buf: heaps: Add system heap to dmabuf heaps dma-buf: heaps: Add CMA heap to dmabuf heaps kselftests: Add dma-heap test MAINTAINERS | 18 ++ drivers/dma-buf/Kconfig | 10 + drivers/dma-buf/Makefile | 2 + drivers/dma-buf/dma-heap.c | 249 +++++++++++++++++ drivers/dma-buf/heaps/Kconfig | 14 + drivers/dma-buf/heaps/Makefile | 4 + drivers/dma-buf/heaps/cma_heap.c | 169 +++++++++++ drivers/dma-buf/heaps/heap-helpers.c | 262 ++++++++++++++++++ drivers/dma-buf/heaps/heap-helpers.h | 54 ++++ drivers/dma-buf/heaps/system_heap.c | 121 ++++++++ include/linux/dma-heap.h | 59 ++++ include/uapi/linux/dma-heap.h | 55 ++++ tools/testing/selftests/dmabuf-heaps/Makefile | 9 + .../selftests/dmabuf-heaps/dmabuf-heap.c | 234 ++++++++++++++++ 14 files changed, 1260 insertions(+) create mode 100644 drivers/dma-buf/dma-heap.c create mode 100644 drivers/dma-buf/heaps/Kconfig create mode 100644 drivers/dma-buf/heaps/Makefile create mode 100644 drivers/dma-buf/heaps/cma_heap.c create mode 100644 drivers/dma-buf/heaps/heap-helpers.c create mode 100644 drivers/dma-buf/heaps/heap-helpers.h create mode 100644 drivers/dma-buf/heaps/system_heap.c create mode 100644 include/linux/dma-heap.h create mode 100644 include/uapi/linux/dma-heap.h create mode 100644 tools/testing/selftests/dmabuf-heaps/Makefile create mode 100644 tools/testing/selftests/dmabuf-heaps/dmabuf-heap.c -- 2.17.1