From patchwork Fri Aug 23 23:47:42 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: John Stultz X-Patchwork-Id: 172131 Delivered-To: patches@linaro.org Received: by 2002:a92:d204:0:0:0:0:0 with SMTP id y4csp1322085ily; Fri, 23 Aug 2019 16:47:52 -0700 (PDT) X-Received: by 2002:a63:2685:: with SMTP id m127mr6089205pgm.6.1566604072730; Fri, 23 Aug 2019 16:47:52 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1566604072; cv=none; d=google.com; s=arc-20160816; b=lN1hgUd4/RlZRUdHBe+FQiSmc7cDIOnr2UXOucmPIK8Kbs6NOTDAhK+LOwtoPJi41q 4YJ2UAwSn7LaZgfq7oStRsOxFCKR92FTzdrPLindZryWGAEG3oOZp0GSOAnB9n4FqkOx fQlIKj79fqo0HrHB8b4jnWWICY+AzCpfQ7xbfdZRfWgU1LahwqDWe9cwvd2HxwIIh2lS erTSEJ2tL4mIFgxg2lOZHPT1UsvEEzLd8vCybzWq6Bxq2KCeohdgeTXjeG2j7SLBi0k8 SmxwQreoEE69CNKejwaPMddKhackWsVEMEhubIecByhDt44qpZ1OpgsQ65kzCvjbrWIj TnyA== 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=jm07RF4qOusTFQQs40dCbcyWy1wVMhan2978N/Kfrcc=; b=uWd/B2LK3r9e0/2FX6+r5XTo0SCHPebxnk4wSlf5fjbnbN6MzsNNfkYhug18QArAO/ UbL2q543wzvl7mNN932ed46yRUQDTuKQVxMwxkNq9wKpHAFfQ+Y1r7lWQs7xMA85bL1N TDgFl/jKhGigLd+pFMoNbd93hxgNmiX/ig77z6vvDAySpzu8coaw86UkkZgt5gj35X8B +fLYfxn2JRatqm6ZWCJZ3VAumG/TVk9O9IMG+CoZQihxmRAH5F6cGUdRCIUiUht9bgCS b94kOEwTBaLmYuC+LWlRqMTtNCJdtzV8V0hC1qWCkVGlSRIfpXQolnxbTtoN1cuo7PQS zR8g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=oPvGjT+w; 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 p9sor5538642plr.10.2019.08.23.16.47.52 for (Google Transport Security); Fri, 23 Aug 2019 16:47:52 -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=oPvGjT+w; 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=jm07RF4qOusTFQQs40dCbcyWy1wVMhan2978N/Kfrcc=; b=oPvGjT+wXZIm32bCnvYe7n+EdH+cZadBw4KcwlK7j7Uoun4/J395B863RX59hQb0GA Xzhumg44jkma63ncg85ZZx7OB1ppD2gqjq42nF1FchQAIGPBardEt9gBw4Lw7eLPH8/A lGcTS23lemjnWvjzZ3gPXvLs5hE4G7JlQYEeHHc8TMYa+MUOR2JBP5mTN/c6gJirBhwy FE2m+t8RE9w5O5iYgLTcLhcGUUMRw8B/GlVcPPltT/c/Un3Y3IwOmosN44t0UvFVUDub HLczlAOpNyU4DS0SJS7bp7WqCZxfuzTOmpVxvOL53wqZKjkOAf2OywhUuUY3o/GO9YBL BKfA== 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=jm07RF4qOusTFQQs40dCbcyWy1wVMhan2978N/Kfrcc=; b=WNNqIbWm+W8a7iXQXiSmDYiDnP+ZJtG6M0q6oPbWsd/DjkwHzsNNcMjqwEEFB/hAg+ T5+3/Cb2uIIspah9tV/mj1abOQwny5rkPdqhYlJRQIvMmtBr82RvxcDYOBebt//6ZiPR 0FI2dEMJ6sbcrcU8ryXbnSfKnznE2XzGcD3zdK5nTUNCEy/Xb2dZbqn4Mq4xnxvKzGx/ I0r0p535ql6ku4DNy2Sya/TBUOELTDQOpn6msGVDn+4dhq2TNZNQQgchhk+CobqH7mzA s2qRcsXVy/VaOpke0U9Z5riBeMRTDFVflcorVpE4Ix3hbdC7/08DcbyO6midE0E2v+e0 5PHg== X-Gm-Message-State: APjAAAWvIg9JO1mRFSqZF8p5FCz5+u1NH9QFQyQOoAVFgU4sLLz2B2G1 dEMMxOMRC7uUBPyscaugFuFsTy4F X-Google-Smtp-Source: APXvYqwEL3meLDNfEXETd/ZHDzt1FmSXZAuyCYXbh5gXIyYuYtsrTjQ6pGGf/KZb4J75y0roYhiuFw== X-Received: by 2002:a17:902:2d24:: with SMTP id o33mr7511537plb.269.1566604072188; Fri, 23 Aug 2019 16:47:52 -0700 (PDT) Return-Path: Received: from localhost.localdomain ([2601:1c2:680:1319:692:26ff:feda:3a81]) by smtp.gmail.com with ESMTPSA id a5sm3185097pjs.31.2019.08.23.16.47.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 23 Aug 2019 16:47:51 -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 , Hridya Valsaraju , dri-devel@lists.freedesktop.org Subject: [PATCH v8 0/5] DMA-BUF Heaps (destaging ION) Date: Fri, 23 Aug 2019 23:47:42 +0000 Message-Id: <20190823234747.106510-1-john.stultz@linaro.org> X-Mailer: git-send-email 2.17.1 Here is yet 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, since any such accounting should be implemented by dma-buf core or the heaps themselves. Most of the changes in this revision are adddressing the more concrete feedback from Christoph (many thanks!). Though I'm not sure if some of the less specific feedback was completely resolved in discussion last time around. Please let me know! New in v8: * Make struct dma_heap_ops consts (Suggested by Christoph) * Add flush_kernel_vmap_range/invalidate_kernel_vmap_range calls (suggested by Christoph) * Condense dma_heap_buffer and heap_helper_buffer (suggested by Christoph) * Get rid of needless struct system_heap (suggested by Christoph) * Fix indentation by using shorter argument names (suggested by Christoph) * Remove unused private_flags value * Add forgotten include file to fix build issue on x86 * Checkpatch whitespace fixups 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: Hridya Valsaraju 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 | 11 + drivers/dma-buf/Makefile | 2 + drivers/dma-buf/dma-heap.c | 250 ++++++++++++++++ drivers/dma-buf/heaps/Kconfig | 14 + drivers/dma-buf/heaps/Makefile | 4 + drivers/dma-buf/heaps/cma_heap.c | 164 +++++++++++ drivers/dma-buf/heaps/heap-helpers.c | 269 ++++++++++++++++++ drivers/dma-buf/heaps/heap-helpers.h | 55 ++++ drivers/dma-buf/heaps/system_heap.c | 122 ++++++++ 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 | 230 +++++++++++++++ 14 files changed, 1262 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