From: Nick Kossifidis <mick@ics.forth.gr> To: Guo Ren <guoren@kernel.org> Cc: "Nick Kossifidis" <mick@ics.forth.gr>, "Christoph Hellwig" <hch@lst.de>, "Drew Fustini" <drew@beagleboard.org>, "Anup Patel" <anup.patel@wdc.com>, "Palmer Dabbelt" <palmerdabbelt@google.com>, wefu@redhat.com, "Wei Wu (吴伟)" <lazyparser@gmail.com>, linux-riscv <linux-riscv@lists.infradead.org>, "Linux Kernel Mailing List" <linux-kernel@vger.kernel.org>, linux-arch <linux-arch@vger.kernel.org>, linux-sunxi@lists.linux.dev, "Guo Ren" <guoren@linux.alibaba.com>, "Paul Walmsley" <paul.walmsley@sifive.com>, "Benjamin Koch" <snowball@c3pb.de>, "Matteo Croce" <mcroce@linux.microsoft.com>, "Wei Fu" <tekkamanninja@gmail.com> Subject: Re: [PATCH RFC 0/3] riscv: Add DMA_COHERENT support Date: Mon, 07 Jun 2021 11:35:55 +0300 [thread overview] Message-ID: <7347df23102503c77c5da10b48afcf9a@mailhost.ics.forth.gr> (raw) In-Reply-To: <CAJF2gTQuQ5bE6HeGSoNaDynA0o3+KEo4snwft42YGzE=+DjKOQ@mail.gmail.com> Στις 2021-06-07 06:19, Guo Ren έγραψε: >> The C-bit was recently dropped, there is a new proposal for Page Based >> Memory Attributes (PBMT) that we can work on / push for. > C-bit still needs discussion, we shouldn't drop it directly. > You can always participate on the discussion on virtmem mailing list. > Raise a page fault won't solve anything. We still need access to the > page with proper performance. > The point is that future hw implementations will be required to return a page fault in case we tamper with those reserved bits, they won't just ignore them. Supporting custom values there means supporting non-compliant implementations. > > We need PTEs to provide a non-coherency solution, and only CMO > instructions are not enough. We can't modify so many Linux drivers to > fit it. > From Linux non-coherency view, we need: > - Non-cache + Strong Order PTE attributes to deal with drivers' DMA > descriptors > - Non-cache + weak order to deal with framebuffer drivers > - CMO dma_sync to sync cache with DMA devices > - Userspace icache_sync solution, which prevents calls to S-mode with > IPI fence.i. (Necessary to JIT java scenarios.) > > All above are not in spec, but the real chips are done. > (Actually, these have been talked about for more than five years, we > still haven't the uniform idea.) > > The idea of C-bit is really important for us which prevents our chips > violates the spec. Have you checked the PBMT proposal ? It defines (so far) the following attributes that can be set on PTEs to override the PMAs of the underlying physical memory: Bits [62:61] 00 (WB) -> Cacheable, default ordering 01 (NC) -> Noncacheable, default ordering 10 (IO) -> Noncacheable, strong ordering So it'll cover the use cases you mention.
WARNING: multiple messages have this Message-ID (diff)
From: Nick Kossifidis <mick@ics.forth.gr> To: Guo Ren <guoren@kernel.org> Cc: "Nick Kossifidis" <mick@ics.forth.gr>, "Christoph Hellwig" <hch@lst.de>, "Drew Fustini" <drew@beagleboard.org>, "Anup Patel" <anup.patel@wdc.com>, "Palmer Dabbelt" <palmerdabbelt@google.com>, wefu@redhat.com, "Wei Wu (吴伟)" <lazyparser@gmail.com>, linux-riscv <linux-riscv@lists.infradead.org>, "Linux Kernel Mailing List" <linux-kernel@vger.kernel.org>, linux-arch <linux-arch@vger.kernel.org>, linux-sunxi@lists.linux.dev, "Guo Ren" <guoren@linux.alibaba.com>, "Paul Walmsley" <paul.walmsley@sifive.com>, "Benjamin Koch" <snowball@c3pb.de>, "Matteo Croce" <mcroce@linux.microsoft.com>, "Wei Fu" <tekkamanninja@gmail.com> Subject: Re: [PATCH RFC 0/3] riscv: Add DMA_COHERENT support Date: Mon, 07 Jun 2021 11:35:55 +0300 [thread overview] Message-ID: <7347df23102503c77c5da10b48afcf9a@mailhost.ics.forth.gr> (raw) In-Reply-To: <CAJF2gTQuQ5bE6HeGSoNaDynA0o3+KEo4snwft42YGzE=+DjKOQ@mail.gmail.com> Στις 2021-06-07 06:19, Guo Ren έγραψε: >> The C-bit was recently dropped, there is a new proposal for Page Based >> Memory Attributes (PBMT) that we can work on / push for. > C-bit still needs discussion, we shouldn't drop it directly. > You can always participate on the discussion on virtmem mailing list. > Raise a page fault won't solve anything. We still need access to the > page with proper performance. > The point is that future hw implementations will be required to return a page fault in case we tamper with those reserved bits, they won't just ignore them. Supporting custom values there means supporting non-compliant implementations. > > We need PTEs to provide a non-coherency solution, and only CMO > instructions are not enough. We can't modify so many Linux drivers to > fit it. > From Linux non-coherency view, we need: > - Non-cache + Strong Order PTE attributes to deal with drivers' DMA > descriptors > - Non-cache + weak order to deal with framebuffer drivers > - CMO dma_sync to sync cache with DMA devices > - Userspace icache_sync solution, which prevents calls to S-mode with > IPI fence.i. (Necessary to JIT java scenarios.) > > All above are not in spec, but the real chips are done. > (Actually, these have been talked about for more than five years, we > still haven't the uniform idea.) > > The idea of C-bit is really important for us which prevents our chips > violates the spec. Have you checked the PBMT proposal ? It defines (so far) the following attributes that can be set on PTEs to override the PMAs of the underlying physical memory: Bits [62:61] 00 (WB) -> Cacheable, default ordering 01 (NC) -> Noncacheable, default ordering 10 (IO) -> Noncacheable, strong ordering So it'll cover the use cases you mention. _______________________________________________ linux-riscv mailing list linux-riscv@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-riscv
next prev parent reply other threads:[~2021-06-07 8:36 UTC|newest] Thread overview: 112+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-05-19 5:04 [PATCH RFC 0/3] riscv: Add DMA_COHERENT support guoren 2021-05-19 5:04 ` guoren 2021-05-19 5:04 ` [PATCH RFC 1/3] riscv: pgtable.h: Fixup _PAGE_CHG_MASK usage guoren 2021-05-19 5:04 ` guoren 2021-05-19 5:04 ` [PATCH RFC 2/3] riscv: Add DMA_COHERENT for custom PTE attributes guoren 2021-05-19 5:04 ` guoren 2021-05-19 5:04 ` [PATCH RFC 3/3] riscv: Add SYNC_DMA_FOR_CPU/DEVICE for DMA_COHERENT guoren 2021-05-19 5:04 ` guoren 2021-05-19 6:32 ` Guo Ren 2021-05-19 6:32 ` Guo Ren 2021-05-19 5:20 ` [PATCH RFC 0/3] riscv: Add DMA_COHERENT support Christoph Hellwig 2021-05-19 5:20 ` Christoph Hellwig 2021-05-19 5:48 ` Guo Ren 2021-05-19 5:48 ` Guo Ren 2021-05-19 5:55 ` Christoph Hellwig 2021-05-19 5:55 ` Christoph Hellwig 2021-05-19 6:09 ` Guo Ren 2021-05-19 6:09 ` Guo Ren 2021-05-19 6:44 ` Drew Fustini 2021-05-19 6:44 ` Drew Fustini 2021-05-19 6:53 ` Christoph Hellwig 2021-05-19 6:53 ` Christoph Hellwig 2021-05-20 1:45 ` Guo Ren 2021-05-20 1:45 ` Guo Ren 2021-05-20 5:48 ` Christoph Hellwig 2021-05-20 5:48 ` Christoph Hellwig 2021-06-06 18:14 ` Nick Kossifidis 2021-06-06 18:14 ` Nick Kossifidis 2021-06-07 0:04 ` Guo Ren 2021-06-07 0:04 ` Guo Ren 2021-06-07 2:16 ` Nick Kossifidis 2021-06-07 2:16 ` Nick Kossifidis 2021-06-07 3:19 ` Guo Ren 2021-06-07 3:19 ` Guo Ren 2021-06-07 6:27 ` Christoph Hellwig 2021-06-07 6:27 ` Christoph Hellwig 2021-06-07 6:41 ` Guo Ren 2021-06-07 6:41 ` Guo Ren 2021-06-07 6:51 ` Christoph Hellwig 2021-06-07 6:51 ` Christoph Hellwig 2021-06-07 7:46 ` Guo Ren 2021-06-07 7:46 ` Guo Ren 2021-06-08 15:00 ` David Laight 2021-06-08 15:00 ` David Laight 2021-06-08 15:32 ` 'Christoph Hellwig' 2021-06-08 15:32 ` 'Christoph Hellwig' 2021-06-08 16:11 ` David Laight 2021-06-08 16:11 ` David Laight 2021-06-07 8:35 ` Nick Kossifidis [this message] 2021-06-07 8:35 ` Nick Kossifidis 2021-06-09 3:28 ` Guo Ren 2021-06-09 3:28 ` Guo Ren 2021-06-09 6:05 ` Jisheng Zhang 2021-06-09 6:05 ` Jisheng Zhang 2021-06-09 9:45 ` Nick Kossifidis 2021-06-09 9:45 ` Nick Kossifidis 2021-06-09 12:43 ` Guo Ren 2021-06-09 12:43 ` Guo Ren 2021-05-19 6:05 ` Guo Ren 2021-05-19 6:05 ` Guo Ren 2021-05-19 6:06 ` Christoph Hellwig 2021-05-19 6:06 ` Christoph Hellwig 2021-05-19 6:11 ` Guo Ren 2021-05-19 6:11 ` Guo Ren 2021-05-19 6:54 ` Drew Fustini 2021-05-19 6:54 ` Drew Fustini 2021-05-19 6:56 ` Christoph Hellwig 2021-05-19 6:56 ` Christoph Hellwig 2021-05-19 7:14 ` Anup Patel 2021-05-19 7:14 ` Anup Patel 2021-05-19 8:25 ` Damien Le Moal 2021-05-19 8:25 ` Damien Le Moal 2021-05-20 1:47 ` Guo Ren 2021-05-20 1:47 ` Guo Ren 2021-05-20 1:59 ` Guo Ren 2021-05-20 1:59 ` Guo Ren 2021-05-22 0:36 ` Guo Ren 2021-05-22 0:36 ` Guo Ren 2021-05-30 0:30 ` Palmer Dabbelt 2021-05-30 0:30 ` Palmer Dabbelt 2021-06-03 4:13 ` Palmer Dabbelt 2021-06-03 4:13 ` Palmer Dabbelt 2021-06-03 6:00 ` Anup Patel 2021-06-03 6:00 ` Anup Patel 2021-06-03 15:39 ` Palmer Dabbelt 2021-06-03 15:39 ` Palmer Dabbelt 2021-06-04 9:02 ` David Laight 2021-06-04 9:02 ` David Laight 2021-06-04 9:53 ` Arnd Bergmann 2021-06-04 9:53 ` Arnd Bergmann 2021-06-04 14:47 ` Guo Ren 2021-06-04 14:47 ` Guo Ren 2021-06-04 16:12 ` Palmer Dabbelt 2021-06-04 16:12 ` Palmer Dabbelt 2021-06-04 21:26 ` Arnd Bergmann 2021-06-04 21:26 ` Arnd Bergmann 2021-06-04 22:10 ` Palmer Dabbelt 2021-06-04 22:10 ` Palmer Dabbelt 2021-06-08 12:26 ` Guo Ren 2021-06-08 12:26 ` Guo Ren 2021-06-06 17:11 ` Guo Ren 2021-06-06 17:11 ` Guo Ren 2021-06-07 3:38 ` Anup Patel 2021-06-07 3:38 ` Anup Patel 2021-06-07 4:22 ` Guo Ren 2021-06-07 4:22 ` Guo Ren 2021-06-07 4:47 ` Anup Patel 2021-06-07 4:47 ` Anup Patel 2021-06-07 5:08 ` Guo Ren 2021-06-07 5:08 ` Guo Ren 2021-06-07 5:13 ` Guo Ren 2021-06-07 5:13 ` Guo Ren
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=7347df23102503c77c5da10b48afcf9a@mailhost.ics.forth.gr \ --to=mick@ics.forth.gr \ --cc=anup.patel@wdc.com \ --cc=drew@beagleboard.org \ --cc=guoren@kernel.org \ --cc=guoren@linux.alibaba.com \ --cc=hch@lst.de \ --cc=lazyparser@gmail.com \ --cc=linux-arch@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-riscv@lists.infradead.org \ --cc=linux-sunxi@lists.linux.dev \ --cc=mcroce@linux.microsoft.com \ --cc=palmerdabbelt@google.com \ --cc=paul.walmsley@sifive.com \ --cc=snowball@c3pb.de \ --cc=tekkamanninja@gmail.com \ --cc=wefu@redhat.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.