Received: by 2002:a25:ab43:0:0:0:0:0 with SMTP id u61csp8779425ybi; Thu, 6 Jun 2019 20:09:36 -0700 (PDT) X-Google-Smtp-Source: APXvYqxW0nvjBv5Il0ChaHJ5FlSGRbejhBb/QsARNQNSobhy8o2v9WUNgP9vpNRn6re8dMc1EnQP X-Received: by 2002:a63:6105:: with SMTP id v5mr886408pgb.312.1559876976373; Thu, 06 Jun 2019 20:09:36 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1559876976; cv=none; d=google.com; s=arc-20160816; b=J8RTtEoaURDZB5/c2YgT15nf3MNZh4n5aQYPDTWWzKv7nSCOifUyvC9120qmAqAvgh OtEuUf6GGUu3vr8ljb+KTDvPVuSGF4ybD4ev4Pp1v+zKEKEnsZOXtdNAQr/TgSgB36p/ QaFn9CoTwcadFnuItoTOyMWkbvWgK9LWDIGVCZEyLk+j7drUjfuYJuN5uKsR3rSq/ZK9 GzdtCTePlDsjtXFIben3GpTdwVg5WdgQ/LeRMoHNJsrcujtGRxDKPoUC3qgx/dWdqWsw x1ulnvXj/YxthyKxXBqBYaWnA2phWUPBqtpoWumEXtHTQCMIXcIinoojUYUFuki6PKOV q5sw== 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=OP/5HcXPO39lZBmwz/TKmqEHSGCcXshK7QEl3YE6azg=; b=UNSMsQcPlkv396FoRwHMLtaJJWSKn+mj/hB1SN8FcJmnksEGft+Jbv9vWL+fxgTNg7 aVujEYW0PPGjwzHbw+i5gMSj9rKKBtQ8EDkjAYMI2CdKUywrZyj2ovP/ZzMj7lVbUew3 19pJKgFYx3PsHI3odpw652hi3CDSIbeG5Y5EFGSjCAPiG0ujCCkCGVBe1rsByxkCpZxG BLw5kUwjyWBEuzfWs20bLzBjYPbtckWsVksqRY4yy+j2l7Q0pkAqxbsrI+SIHXfQO6Qc wGJAjFMRzhTESMONcAgEO5Cqoc95CMziLtFRotyzBfm/uwL0jOekT/AK7ACkAh1bSZsW DNyg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=nDoMzWqA; 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 c1si707910plo.203.2019.06.06.20.09.19; Thu, 06 Jun 2019 20:09:36 -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=nDoMzWqA; 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 S1726837AbfFGDH0 (ORCPT + 99 others); Thu, 6 Jun 2019 23:07:26 -0400 Received: from mail-pg1-f195.google.com ([209.85.215.195]:33659 "EHLO mail-pg1-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726519AbfFGDH0 (ORCPT ); Thu, 6 Jun 2019 23:07:26 -0400 Received: by mail-pg1-f195.google.com with SMTP id h17so375294pgv.0 for ; Thu, 06 Jun 2019 20:07:25 -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=OP/5HcXPO39lZBmwz/TKmqEHSGCcXshK7QEl3YE6azg=; b=nDoMzWqA+SQGNUjkHYCmMeluLcQ/NdfdL82xSfqhUQBkPAb1HTdTBXQtkYFkBxNe8b s/MTvZMK73j5tpNcHdbl9x/cuttENCnK+Exl49xh7MLnS3Nr11QufOjiICba0tLOfKbv vBvA0fLNHZdfU+jX/WJ+Lm1ymU5MYD+GY00BhTdFDvRvyu2ZfFGqH40ujcEPQdbfNmAw ENnwkGITftRCLihI1PKxhul0T7vvrjwFVeMmBch4K8J6nX4f3hKamfLWQU0shfml8tlw 6vj5jycWek+VMelH+RXPF82v2d5frMbz9Y9otJC/WAMP6EyJWfr0zMdimuYoZcHcsDG6 lSUw== 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=OP/5HcXPO39lZBmwz/TKmqEHSGCcXshK7QEl3YE6azg=; b=iWF+ev6McbR7qabrcwudo8GUO9I5fGe4zMVTtQkOwVekpbjTt2enoucWLN/X8+xOyL Tpr0Mc2L//RWRbuwm5D8z/k0eeHihCPCCbchIcLgiiBm3U+W+fqtpsFcgDi/Dse8UU7d wXLjeT3hohOv+CTSgyrV6cHfVqTQrx++9J3xCwno/pQo+iivj8Vy0ZelDxWfffr2l7Si PPj9wQlGcZevIgq2f0B5MNLrBl4dctS42TKtJxaMeUqlEnKO37unY5+g0+xanFRTDK5T lCDSyGqcSrn+o0SA0qlHbLZSWurvsHwCA0hQ16CM4LYDa98MCSk2LqXm9IAbh0glaoCU fDaA== X-Gm-Message-State: APjAAAWhBBmVw6j55aGganPIgYemCki5TkSayyJ8vyv3Db8X8jDFHQU/ m4c08CBXuYtD7oX6+SP8xlIEoZ/YKaU= X-Received: by 2002:a65:60cd:: with SMTP id r13mr902777pgv.58.1559876844279; Thu, 06 Jun 2019 20:07:24 -0700 (PDT) Received: from localhost.localdomain ([2601:1c2:680:1319:692:26ff:feda:3a81]) by smtp.gmail.com with ESMTPSA id f4sm506575pfn.118.2019.06.06.20.07.21 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 06 Jun 2019 20:07:22 -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 v5 0/5] DMA-BUF Heaps (destaging ION) Date: Fri, 7 Jun 2019 03:07:14 +0000 Message-Id: <20190607030719.77286-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 v5: * Actually not much that I'm submitting now. I've backed out the large order page allocation I added in v4 as using it with the pagelist structure in the helper buffers ended up leaking memory unless we split them, and then we didn't see any performance improvement. * I have spent a fair amount of time looking at allocation performance compared to ION, and I do have a patch stack that performs equal or better then ION (utilizing large order allocations, sgtables, and a page pool). However, Andrew convinced me that the extra complexity of these optimizations would distract reviewers from the core functionality, and we can submit those changes afterwards without any interface impact. WIP patches can be found here: https://git.linaro.org/people/john.stultz/android-dev.git/log/?h=dev/dma-buf-heap-WIP * Minor cleanups 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 | 237 ++++++++++++++++ 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 | 261 ++++++++++++++++++ drivers/dma-buf/heaps/heap-helpers.h | 55 ++++ drivers/dma-buf/heaps/system_heap.c | 123 +++++++++ include/linux/dma-heap.h | 59 ++++ include/uapi/linux/dma-heap.h | 56 ++++ tools/testing/selftests/dmabuf-heaps/Makefile | 11 + .../selftests/dmabuf-heaps/dmabuf-heap.c | 232 ++++++++++++++++ 14 files changed, 1251 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