From: Mikulas Patocka <mpatocka@redhat.com> To: Matt Sealey <neko@bakuhatsu.net> Cc: Catalin Marinas <catalin.marinas@arm.com>, Russell King <linux@armlinux.org.uk>, Thomas Petazzoni <thomas.petazzoni@free-electrons.com>, Will Deacon <will.deacon@arm.com>, libc-alpha@sourceware.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: Re: framebuffer corruption due to overlapping stp instructions on arm64 Date: Fri, 3 Aug 2018 02:35:46 -0400 (EDT) [thread overview] Message-ID: <alpine.LRH.2.02.1808030212340.17672@file01.intranet.prod.int.rdu2.redhat.com> (raw) In-Reply-To: <CAHCPf3tFGqkYEcWNN4LaWThw_rVqT316pzLv6T7RfxwO-eZ0EA@mail.gmail.com> On Thu, 2 Aug 2018, Matt Sealey wrote: > The easiest explanation for this would be that the memory isn?t mapped > correctly. You can?t use PCIe memory spaces with anything other than > Device-nGnRE or stricter mappings. That?s just differences between the > AMBA and PCIe (posted/unposted) memory models. I've tried to use Device-nGnRE mapping and I've got unaligned access traps. Gcc have store-merging pass so that it generates unaligned accesses even in code that has none explicit unaligned accesses. Perhaps it would be possible to recompile the kernel without the store-merging pass, but recompiling all the userspace code is impossible. Should we catch the unaligned access traps in the kernel and emulate them? There are a lot of instructions that access memory in the ARMv8 ISA, so the emulator would be quite complicated. > Normal memory (cacheable or uncacheable, which Linux tends to call > ?memory? and ?writecombine? respectively) is not a good idea. > > There are two options; make sure Links maps it?s framebuffer as Device > memory, or the driver, or both - and make sure that only aligned > accesses happen (otherwise you?ll just get a synchronous exception) and > there isn?t a Normal memory alias. > > Alternatively, tell the PCIe driver that the framebuffer is in system > memory But how would the graphics card display from it? You'd have to periodically copy the framebuffer from the system memory to the real videoram. I'm not an expert in graphics drivers, I don't know if the graphics drivers have this possibility. > - you can map it however you like but there?ll be a performance > hit if you start to use GPU acceleration, but a significant performance > boost from the PoV of the CPU. Only memory accessed from the PCIe master > interface (i.e. reads and writes generated by the card itself - telling > the GPU to pull from system memory or other DMA) can be in Normal memory > and this allows PCIe to be cache coherent with the right interconnect. > The slave port on a PCIe root complex (i.e. CPU writes) can?t be used > with Normal, or reorderable, and therefore your 2GB of graphics memory > is going to be slow from the point of view of the CPU. > > To find the correct mapping you?ll need to know just how cache coherent > the PCIe RC is... > > Ta, > Matt Mikulas
WARNING: multiple messages have this Message-ID (diff)
From: mpatocka@redhat.com (Mikulas Patocka) To: linux-arm-kernel@lists.infradead.org Subject: framebuffer corruption due to overlapping stp instructions on arm64 Date: Fri, 3 Aug 2018 02:35:46 -0400 (EDT) [thread overview] Message-ID: <alpine.LRH.2.02.1808030212340.17672@file01.intranet.prod.int.rdu2.redhat.com> (raw) In-Reply-To: <CAHCPf3tFGqkYEcWNN4LaWThw_rVqT316pzLv6T7RfxwO-eZ0EA@mail.gmail.com> On Thu, 2 Aug 2018, Matt Sealey wrote: > The easiest explanation for this would be that the memory isn?t mapped > correctly. You can?t use PCIe memory spaces with anything other than > Device-nGnRE or stricter mappings. That?s just differences between the > AMBA and PCIe (posted/unposted) memory models. I've tried to use Device-nGnRE mapping and I've got unaligned access traps. Gcc have store-merging pass so that it generates unaligned accesses even in code that has none explicit unaligned accesses. Perhaps it would be possible to recompile the kernel without the store-merging pass, but recompiling all the userspace code is impossible. Should we catch the unaligned access traps in the kernel and emulate them? There are a lot of instructions that access memory in the ARMv8 ISA, so the emulator would be quite complicated. > Normal memory (cacheable or uncacheable, which Linux tends to call > ?memory? and ?writecombine? respectively) is not a good idea. > > There are two options; make sure Links maps it?s framebuffer as Device > memory, or the driver, or both - and make sure that only aligned > accesses happen (otherwise you?ll just get a synchronous exception) and > there isn?t a Normal memory alias. > > Alternatively, tell the PCIe driver that the framebuffer is in system > memory But how would the graphics card display from it? You'd have to periodically copy the framebuffer from the system memory to the real videoram. I'm not an expert in graphics drivers, I don't know if the graphics drivers have this possibility. > - you can map it however you like but there?ll be a performance > hit if you start to use GPU acceleration, but a significant performance > boost from the PoV of the CPU. Only memory accessed from the PCIe master > interface (i.e. reads and writes generated by the card itself - telling > the GPU to pull from system memory or other DMA) can be in Normal memory > and this allows PCIe to be cache coherent with the right interconnect. > The slave port on a PCIe root complex (i.e. CPU writes) can?t be used > with Normal, or reorderable, and therefore your 2GB of graphics memory > is going to be slow from the point of view of the CPU. > > To find the correct mapping you?ll need to know just how cache coherent > the PCIe RC is... > > Ta, > Matt Mikulas
next prev parent reply other threads:[~2018-08-03 6:35 UTC|newest] Thread overview: 238+ messages / expand[flat|nested] mbox.gz Atom feed top 2018-08-02 19:31 framebuffer corruption due to overlapping stp instructions on arm64 Mikulas Patocka 2018-08-02 19:31 ` Mikulas Patocka [not found] ` <CAHCPf3tFGqkYEcWNN4LaWThw_rVqT316pzLv6T7RfxwO-eZ0EA@mail.gmail.com> 2018-08-03 6:35 ` Mikulas Patocka [this message] 2018-08-03 6:35 ` Mikulas Patocka 2018-08-03 7:16 ` Ard Biesheuvel 2018-08-03 7:16 ` Ard Biesheuvel 2018-08-03 9:41 ` Will Deacon 2018-08-03 9:41 ` Will Deacon 2018-08-03 17:09 ` Mikulas Patocka 2018-08-03 17:09 ` Mikulas Patocka 2018-08-03 17:09 ` Mikulas Patocka 2018-08-03 17:32 ` Sinan Kaya 2018-08-03 17:32 ` Sinan Kaya 2018-08-03 17:32 ` Sinan Kaya 2018-08-03 17:33 ` Ard Biesheuvel 2018-08-03 17:33 ` Ard Biesheuvel 2018-08-03 17:33 ` Ard Biesheuvel 2018-08-03 18:25 ` Mikulas Patocka 2018-08-03 18:25 ` Mikulas Patocka 2018-08-03 18:25 ` Mikulas Patocka 2018-08-03 20:44 ` Matt Sealey 2018-08-03 20:44 ` Matt Sealey 2018-08-03 20:44 ` Matt Sealey 2018-08-03 21:20 ` Ard Biesheuvel 2018-08-03 21:20 ` Ard Biesheuvel 2018-08-03 21:20 ` Ard Biesheuvel 2018-08-06 10:25 ` Mikulas Patocka 2018-08-06 10:25 ` Mikulas Patocka 2018-08-06 10:25 ` Mikulas Patocka 2018-08-06 12:42 ` Robin Murphy 2018-08-06 12:42 ` Robin Murphy 2018-08-06 12:42 ` Robin Murphy 2018-08-06 12:53 ` Ard Biesheuvel 2018-08-06 12:53 ` Ard Biesheuvel 2018-08-06 12:53 ` Ard Biesheuvel 2018-08-06 13:41 ` Marcin Wojtas 2018-08-06 13:41 ` Marcin Wojtas 2018-08-06 13:41 ` Marcin Wojtas 2018-08-06 13:48 ` Ard Biesheuvel 2018-08-06 13:48 ` Ard Biesheuvel 2018-08-06 13:48 ` Ard Biesheuvel 2018-08-06 14:07 ` Marcin Wojtas 2018-08-06 14:07 ` Marcin Wojtas 2018-08-06 14:07 ` Marcin Wojtas 2018-08-06 14:13 ` Mikulas Patocka 2018-08-06 14:13 ` Mikulas Patocka 2018-08-06 14:13 ` Mikulas Patocka 2018-08-06 15:47 ` Ard Biesheuvel 2018-08-06 15:47 ` Ard Biesheuvel 2018-08-06 15:47 ` Ard Biesheuvel 2018-08-06 17:09 ` Mikulas Patocka 2018-08-06 17:09 ` Mikulas Patocka 2018-08-06 17:09 ` Mikulas Patocka 2018-08-06 17:21 ` Ard Biesheuvel 2018-08-06 17:21 ` Ard Biesheuvel 2018-08-06 17:21 ` Ard Biesheuvel 2018-08-06 19:54 ` Mikulas Patocka 2018-08-06 19:54 ` Mikulas Patocka 2018-08-06 19:54 ` Mikulas Patocka 2018-08-06 20:11 ` Ard Biesheuvel 2018-08-06 20:11 ` Ard Biesheuvel 2018-08-06 20:11 ` Ard Biesheuvel 2018-08-06 20:31 ` Mikulas Patocka 2018-08-06 20:31 ` Mikulas Patocka 2018-08-06 20:31 ` Mikulas Patocka 2018-08-07 16:40 ` Marcin Wojtas 2018-08-07 16:40 ` Marcin Wojtas 2018-08-07 16:40 ` Marcin Wojtas 2018-08-07 17:39 ` Mikulas Patocka 2018-08-07 17:39 ` Mikulas Patocka 2018-08-07 17:39 ` Mikulas Patocka 2018-08-07 18:07 ` Ard Biesheuvel 2018-08-07 18:07 ` Ard Biesheuvel 2018-08-07 18:07 ` Ard Biesheuvel 2018-08-07 18:17 ` Mikulas Patocka 2018-08-07 18:17 ` Mikulas Patocka 2018-08-07 18:17 ` Mikulas Patocka [not found] ` <CAPv3WKcKoEe=Qysp6Oac2C=G9bUhUQf1twSRCY+_qJ6XEC-iag@mail.gmail.com> 2018-08-08 14:10 ` Mikulas Patocka 2018-08-08 14:10 ` Mikulas Patocka 2018-08-08 14:10 ` Mikulas Patocka 2018-08-06 17:13 ` Catalin Marinas 2018-08-06 17:13 ` Catalin Marinas 2018-08-06 17:13 ` Catalin Marinas 2018-08-06 17:19 ` Mikulas Patocka 2018-08-06 17:19 ` Mikulas Patocka 2018-08-06 17:19 ` Mikulas Patocka 2018-08-08 18:31 ` Mikulas Patocka 2018-08-08 18:31 ` Mikulas Patocka 2018-08-08 18:31 ` Mikulas Patocka 2018-08-04 13:29 ` Mikulas Patocka 2018-08-04 13:29 ` Mikulas Patocka 2018-08-04 13:29 ` Mikulas Patocka 2018-08-08 12:16 ` Catalin Marinas 2018-08-08 12:16 ` Catalin Marinas 2018-08-08 12:16 ` Catalin Marinas 2018-08-08 13:02 ` David Laight 2018-08-08 13:02 ` David Laight 2018-08-08 13:02 ` David Laight 2018-08-08 13:46 ` Mikulas Patocka 2018-08-08 13:46 ` Mikulas Patocka 2018-08-08 13:46 ` Mikulas Patocka 2018-08-08 14:26 ` David Laight 2018-08-08 14:26 ` David Laight 2018-08-08 14:26 ` David Laight 2018-08-08 14:50 ` Catalin Marinas 2018-08-08 14:50 ` Catalin Marinas 2018-08-08 14:50 ` Catalin Marinas 2018-08-08 16:21 ` Mikulas Patocka 2018-08-08 16:21 ` Mikulas Patocka 2018-08-08 16:21 ` Mikulas Patocka 2018-08-08 16:31 ` Arnd Bergmann 2018-08-08 16:31 ` Arnd Bergmann 2018-08-08 16:31 ` Arnd Bergmann 2018-08-08 16:43 ` David Laight 2018-08-08 16:43 ` David Laight 2018-08-08 16:43 ` David Laight 2018-08-08 18:56 ` Mikulas Patocka 2018-08-08 18:56 ` Mikulas Patocka 2018-08-08 18:56 ` Mikulas Patocka 2018-08-08 18:37 ` Mikulas Patocka 2018-08-08 18:37 ` Mikulas Patocka 2018-08-08 18:37 ` Mikulas Patocka 2018-08-08 11:39 ` Catalin Marinas 2018-08-08 11:39 ` Catalin Marinas 2018-08-08 11:39 ` Catalin Marinas 2018-08-08 14:12 ` Mikulas Patocka 2018-08-08 14:12 ` Mikulas Patocka 2018-08-08 14:12 ` Mikulas Patocka 2018-08-08 14:28 ` Catalin Marinas 2018-08-08 14:28 ` Catalin Marinas 2018-08-08 14:28 ` Catalin Marinas 2018-08-08 18:40 ` Mikulas Patocka 2018-08-08 18:40 ` Mikulas Patocka 2018-08-08 18:40 ` Mikulas Patocka 2018-08-08 15:01 ` Richard Earnshaw (lists) 2018-08-08 15:01 ` Richard Earnshaw (lists) 2018-08-08 15:01 ` Richard Earnshaw (lists) 2018-08-08 15:14 ` Catalin Marinas 2018-08-08 15:14 ` Catalin Marinas 2018-08-08 15:14 ` Catalin Marinas 2018-08-08 16:01 ` Arnd Bergmann 2018-08-08 16:01 ` Arnd Bergmann 2018-08-08 16:01 ` Arnd Bergmann 2018-08-08 18:25 ` Mikulas Patocka 2018-08-08 18:25 ` Mikulas Patocka 2018-08-08 18:25 ` Mikulas Patocka 2018-08-08 21:51 ` Arnd Bergmann 2018-08-08 21:51 ` Arnd Bergmann 2018-08-08 21:51 ` Arnd Bergmann 2018-08-09 15:29 ` Arnd Bergmann 2018-08-09 15:29 ` Arnd Bergmann 2018-08-09 15:29 ` Arnd Bergmann 2018-08-03 7:11 ` Andrew Pinski 2018-08-03 7:11 ` Andrew Pinski 2018-08-03 7:53 ` Florian Weimer 2018-08-03 7:53 ` Florian Weimer 2018-08-03 9:12 ` Szabolcs Nagy 2018-08-03 9:12 ` Szabolcs Nagy 2018-08-03 9:15 ` Ramana Radhakrishnan 2018-08-03 9:15 ` Ramana Radhakrishnan 2018-08-03 9:29 ` Ard Biesheuvel 2018-08-03 9:29 ` Ard Biesheuvel 2018-08-03 9:37 ` Ramana Radhakrishnan 2018-08-03 9:37 ` Ramana Radhakrishnan 2018-08-03 9:42 ` Richard Earnshaw (lists) 2018-08-03 9:42 ` Richard Earnshaw (lists) 2018-08-04 0:58 ` Mikulas Patocka 2018-08-04 0:58 ` Mikulas Patocka 2018-08-04 1:13 ` Andrew Pinski 2018-08-04 1:13 ` Andrew Pinski 2018-08-04 11:04 ` Mikulas Patocka 2018-08-04 11:04 ` Mikulas Patocka 2018-08-05 18:33 ` Florian Weimer 2018-08-05 18:33 ` Florian Weimer 2018-08-06 8:02 ` Mikulas Patocka 2018-08-06 8:02 ` Mikulas Patocka 2018-08-06 8:10 ` Ard Biesheuvel 2018-08-06 8:10 ` Ard Biesheuvel 2018-08-06 10:31 ` Mikulas Patocka 2018-08-06 10:31 ` Mikulas Patocka 2018-08-06 10:37 ` Ard Biesheuvel 2018-08-06 10:37 ` Ard Biesheuvel 2018-08-06 10:42 ` Mikulas Patocka 2018-08-06 10:42 ` Mikulas Patocka 2018-08-06 10:48 ` Ard Biesheuvel 2018-08-06 10:48 ` Ard Biesheuvel 2018-08-06 12:09 ` Mikulas Patocka 2018-08-06 12:09 ` Mikulas Patocka 2018-08-06 12:19 ` Ard Biesheuvel 2018-08-06 12:19 ` Ard Biesheuvel 2018-08-06 12:22 ` Ard Biesheuvel 2018-08-06 12:22 ` Ard Biesheuvel 2018-08-07 14:14 ` Mikulas Patocka 2018-08-07 14:14 ` Mikulas Patocka 2018-08-07 14:40 ` Ard Biesheuvel 2018-08-07 14:40 ` Ard Biesheuvel 2018-08-08 19:15 ` Mikulas Patocka 2018-08-08 19:15 ` Mikulas Patocka 2018-08-06 11:19 ` Siddhesh Poyarekar 2018-08-06 11:19 ` Siddhesh Poyarekar 2018-08-06 11:29 ` Ard Biesheuvel 2018-08-06 11:29 ` Ard Biesheuvel 2018-08-06 14:26 ` Tulio Magno Quites Machado Filho 2018-08-06 14:26 ` Tulio Magno Quites Machado Filho 2018-08-05 21:51 ` Pavel Machek 2018-08-05 21:51 ` Pavel Machek 2018-08-06 14:30 ` Mikulas Patocka 2018-08-06 14:30 ` Mikulas Patocka 2018-08-03 11:24 ` David Laight 2018-08-03 11:24 ` David Laight 2018-08-03 12:04 ` Mikulas Patocka 2018-08-03 12:04 ` Mikulas Patocka 2018-08-03 13:04 ` David Laight 2018-08-03 13:04 ` David Laight 2018-08-05 14:36 ` Mikulas Patocka 2018-08-05 14:36 ` Mikulas Patocka 2018-08-06 10:18 ` David Laight 2018-08-06 10:18 ` David Laight 2018-08-07 14:07 ` Mikulas Patocka 2018-08-07 14:07 ` Mikulas Patocka 2018-08-07 14:33 ` David Laight 2018-08-07 14:33 ` David Laight 2018-08-08 14:21 ` Mikulas Patocka 2018-08-08 14:21 ` Mikulas Patocka 2018-08-03 13:20 ` Mikulas Patocka 2018-08-03 13:20 ` Mikulas Patocka 2018-08-03 13:31 ` Mikulas Patocka 2018-08-03 13:31 ` Mikulas Patocka 2018-08-03 14:17 ` Richard Earnshaw (lists) 2018-08-03 14:17 ` Richard Earnshaw (lists) 2018-08-05 21:36 ` Pavel Machek 2018-08-05 21:36 ` Pavel Machek 2018-08-06 8:04 ` Ramana Radhakrishnan 2018-08-06 8:04 ` Ramana Radhakrishnan 2018-08-06 8:44 ` Pavel Machek 2018-08-06 8:44 ` Pavel Machek 2018-08-06 9:11 ` Ard Biesheuvel 2018-08-06 9:11 ` Ard Biesheuvel
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=alpine.LRH.2.02.1808030212340.17672@file01.intranet.prod.int.rdu2.redhat.com \ --to=mpatocka@redhat.com \ --cc=catalin.marinas@arm.com \ --cc=libc-alpha@sourceware.org \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux@armlinux.org.uk \ --cc=neko@bakuhatsu.net \ --cc=thomas.petazzoni@free-electrons.com \ --cc=will.deacon@arm.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.