From patchwork Mon Jun 24 19:49:03 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: John Stultz X-Patchwork-Id: 167643 Delivered-To: patches@linaro.org Received: by 2002:a92:4782:0:0:0:0:0 with SMTP id e2csp4622362ilk; Mon, 24 Jun 2019 12:49:14 -0700 (PDT) X-Received: by 2002:a17:90a:1ac5:: with SMTP id p63mr26269392pjp.25.1561405754167; Mon, 24 Jun 2019 12:49:14 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1561405754; cv=none; d=google.com; s=arc-20160816; b=ecsqV3xRKDWkUWIFYX6mzBcYlhjDJ5+YUwj8vv/RgkHJ9/kDJnS/teUBmpdOMP9X0z aYF+L/DK7ouek7KNTFlFEFgLvHW1EbVI2ddOlsnBK1Zjt4vVrH2d8KJk+vMww7VXMRRg qFZIrDKyJEcCaPKAHqX+Yrw0/qVkIrtPQyQRoJ8mpNSoB9jdCCCiaZmyq+SOZfobHeZA WG/ijizHxBvfh5+gsZdKhT4tdUB3VDtCGoyHb5eN98poC6q3iGIYDl3j+JU3uedshkFD xRzl2dwRBNu5cLgpYSx4pAbWE1qjS9AWCQw+Kw4uL/FtSZZm3byyfw9klQMFLnEzbeSF 8BTw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=message-id:date:subject:cc:to:from:dkim-signature; bh=dwFqV91KqH1mK3/9wT2wWG2wDV0aDU1ov+CsBgMWwUE=; b=ckVZKy49khMMinBp2SyhQOb6dr7G6JD898e0oCrWYCdzsCY6DxKi1X2nlhcYekEmld VcZazIF7TdCgPbmcklI8RCxt7Hz6y2R9iGAkDjnNzC7UYwLg+x/+tF1QYd6z4BdFVA8w eel+StVohO0VO4ucmV+TEeZO8tXG11SrEp/Ubd1Gs7EFvOz3zVM7J7L7vB1P4cYM3xUl Uc6uWzWjttv8WQQf08GRU8uWpIJeU/I2ZrXSVdJBdcz19oiebOiRBkp2kqOJMc1NEcIt uDJo0m+bFUvbCG8XZZ8Lmjax1f0eBk6oIJJn91u90UWtEPVhHaj7C/DsYfziFnDjvhFL i1+w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=AmV7vfx5; spf=pass (google.com: domain of john.stultz@linaro.org designates 209.85.220.65 as permitted sender) smtp.mailfrom=john.stultz@linaro.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from mail-sor-f65.google.com (mail-sor-f65.google.com. [209.85.220.65]) by mx.google.com with SMTPS id a8sor14013347plp.4.2019.06.24.12.49.14 for (Google Transport Security); Mon, 24 Jun 2019 12:49:14 -0700 (PDT) Received-SPF: pass (google.com: domain of john.stultz@linaro.org designates 209.85.220.65 as permitted sender) client-ip=209.85.220.65; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=AmV7vfx5; spf=pass (google.com: domain of john.stultz@linaro.org designates 209.85.220.65 as permitted sender) smtp.mailfrom=john.stultz@linaro.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org 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=KmM7l76CgitHraP4Avtqje6ATp3k9Jf7gYB4q9FRs+U/oxHaeJfzrq4z3BiQyrzkcs 716tJs8vGXEq9CEXEfER9vJUi5JJf5TjnVEsIVKHAgqGkOhiqPOCddfb/2PQx12eF8FG BL3eAUDZEnq1RtQbCHZK0HDVTXuzWgFciK0CBEv9u5wTo1yTWSGbAhaXFauzmrhLluPB AGQkQP59cdqZZKf4uGE2NbGLR5j+9XbJugjpdbCT6POq8Ahfoc+U+2ZEufpBwAndaKx6 tvKwYLBr8EAS4/s6AnuGZYvPnXuhHo36QD06amn21uU45OXZVp3aTJOt6GIYNqwT70Z7 ZwBA== X-Gm-Message-State: APjAAAWhH5R3KRWXqgtRTZEmEXb2iidSn7cZgH9RGSar2jdy1KRwJ5pm Ew/LhgaM1e1o9bArvHPwv+VYi5YC X-Google-Smtp-Source: APXvYqzaURlUIDNW/F4nWEPzG6zzTznkqS21+reIy8WqS0zn3dfgfRnGgBpOQfK1xpINj35aHy63iw== X-Received: by 2002:a17:902:e582:: with SMTP id cl2mr135278814plb.60.1561405753588; Mon, 24 Jun 2019 12:49:13 -0700 (PDT) Return-Path: 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 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