From patchwork Fri Sep 6 18:47:07 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: John Stultz X-Patchwork-Id: 173281 Delivered-To: patches@linaro.org Received: by 2002:a05:6e02:ce:0:0:0:0 with SMTP id r14csp1107560ilq; Fri, 6 Sep 2019 11:47:18 -0700 (PDT) X-Received: by 2002:a62:583:: with SMTP id 125mr12824548pff.69.1567795638813; Fri, 06 Sep 2019 11:47:18 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1567795638; cv=none; d=google.com; s=arc-20160816; b=vTJD07T/xCHOtJwHO2BUz9EhRwfIZVtOru+ZgCIJV+CnZpCQiA6fWN9h+6SSbI3GdK qInByVh3/DAoeB8liVuQvsxXykM4aaKEyMvXoiDThfYZPtGisz/vWThcs7pSPKZTrVva opIEQf3hPoVhh/y2a1Flb9ae4GvfrlwAQt/filqW1hzuJd1f3zUd1ekEI1G421KOf0Ly lWc1/KFFer4B/Adgy2NetXWWEfOTtEfZ++QaLfas01uJfRYUNuOjFryFFkU3zjtBtxzk 7lSMT4oVKHS7vBU83aQUn91WYOZGlOItH9KmD6rAmNIBDkVddUQSdFmJFzxDmD8DSqfI Z5pQ== 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=VOZZOrGg6L6zs/kqLAEDcFQ/G6TwFrFjhvhOfcqmmpYowMBvQ0NpUD3n4Btwc/+sjU H5PQGYaFXFlm7pGE16Ma/6Md8QySVvk39LKs7rK73tjd//bKO6iRWq3vucbLnJk5O2qc fHhxpUQllhy1yQJ9d8cCToXcVF/nHzS5ekQ3V0d8S/u2PwPHnplIME8LXrociIUCf9Ub bZab6TMGj5LNHEVjjke60JdFMq34y5h4brtTikOfaIUsMq5WmRdKzE2MqAnDrecPEPzd G4dSTEm3sVb8fG+LktP4Oa5GIsLU1EUv9kTxt+UNgVSKRiA+wyHIgZeiCu2lUqxrADUu qXLQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=v5tjzjee; 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 c2sor7910830pfd.66.2019.09.06.11.47.18 for (Google Transport Security); Fri, 06 Sep 2019 11:47:18 -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=v5tjzjee; 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=v5tjzjee9XCrwsAWLSx2DbjrGRiM8X6w/A7Nr6rwn9E7619shZjoGo0+eh1YtG0wy5 NOydPAc1//zWmgNhxQ0RD9/jUVukWm8Qy/er4VKYJoUVC0oGtfWOcMfyWoW7amQocGuY crNauJ/YBM4g5Hv/nJg9z4FWroXttlb2U3r3GlQH93WyJOB1skX8ZxtZKHYl9+QPfhVl Rv5FCoNuchZlGjgMncrswQpBH59EGVCjKWGdr1WCw7zzNKX7hu4B27+QIdVeBU0mMRrH 26VZXFhJXzpwYsVOW91h/mnIzY8pvbzGfPEtC+08tAxioiNn7m+0SgHuPhZID9UkryRg NWdw== 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=sYoNmhhZJGnAxAitvdqmvlWtxg6gqZGFMztldnrLmtENqPnt4wDTJiCpgqro6DKb58 bV4GPehDOdW11XaWGwJnTp8CPSguwihkEwQfRMuHL23wab3FJ6rrE1oPXjWe1LiBCk4X mjFh9lx78ctkWT0h1jEUjJ4EdyXtsvSHKRrWz2V/NHv8et8iJYHj4TNRlNfiau5uU33g YiM0SaihZKjkhASjyahe48otlPnh3RBgtJluGKTtPdqSQT1RHahDJnwHfhLwLRb3MsUL qUAV5hXNgt3pKTd/p5O/7dip7N75PFFJeTsEylY7J67t2tRcvsbkE597uHwL+LJsnhoc 79oQ== X-Gm-Message-State: APjAAAXxDnyom2KPoNADc1L5eZMyJ190wuYK4VoTS/3mkgM80OQs92FY lt4n5h96cjqHYlOAUzSrZdRPTq8e X-Google-Smtp-Source: APXvYqzwiHW5Dl9BkLPwxd4zUluXR77pWbZha7lV+2J4rKMNHOTMqoQ7Z+jsIz8DW0FLEYRjo59cLA== X-Received: by 2002:a62:87c8:: with SMTP id i191mr12487069pfe.133.1567795638125; Fri, 06 Sep 2019 11:47:18 -0700 (PDT) Return-Path: Received: from localhost.localdomain ([2601:1c2:680:1319:692:26ff:feda:3a81]) by smtp.gmail.com with ESMTPSA id o35sm4889462pgm.29.2019.09.06.11.47.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 06 Sep 2019 11:47:17 -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: [RESEND][PATCH v8 0/5] DMA-BUF Heaps (destaging ION) Date: Fri, 6 Sep 2019 18:47:07 +0000 Message-Id: <20190906184712.91980-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