From: Jason Gunthorpe <jgg@nvidia.com> To: Alistair Popple <apopple@nvidia.com> Cc: Andrew Morton <akpm@linux-foundation.org>, will@kernel.org, catalin.marinas@arm.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org, robin.murphy@arm.com, nicolinc@nvidia.com, linux-arm-kernel@lists.infradead.org, kvm@vger.kernel.org, John Hubbard <jhubbard@nvidia.com>, zhi.wang.linux@gmail.com, Sean Christopherson <seanjc@google.com> Subject: Re: [PATCH 2/2] arm64: Notify on pte permission upgrades Date: Sat, 27 May 2023 21:02:13 -0300 [thread overview] Message-ID: <ZHKaBQt8623s9+VK@nvidia.com> (raw) In-Reply-To: <5d8e1f752051173d2d1b5c3e14b54eb3506ed3ef.1684892404.git-series.apopple@nvidia.com> On Wed, May 24, 2023 at 11:47:29AM +1000, Alistair Popple wrote: > ARM64 requires TLB invalidates when upgrading pte permission from > read-only to read-write. However mmu_notifiers assume upgrades do not > need notifications and none are sent. This causes problems when a > secondary TLB such as implemented by an ARM SMMU doesn't support > broadcast TLB maintenance (BTM) and caches a read-only PTE. I don't really like this design, but I see how you get here.. mmu notifiers behavior should not be tied to the architecture, they are supposed to be generic reflections of what the MM is doing so that they can be hooked into by general purpose drivers. If you want to hardwire invalidate_range to be only for SVA cases that actually share the page table itself and rely on some arch-defined invalidation, then we should give the op a much better name and discourage anyone else from abusing the new ops variable behavior. > As no notification is sent and the SMMU does not snoop TLB invalidates > it will continue to return read-only entries to a device even though > the CPU page table contains a writable entry. This leads to a > continually faulting device and no way of handling the fault. Doesn't the fault generate a PRI/etc? If we get a PRI maybe we should just have the iommu driver push an iotlb invalidation command before it acks it? PRI is already really slow so I'm not sure a pipelined invalidation is going to be a problem? Does the SMMU architecture permit negative caching which would suggest we need it anyhow? Jason
WARNING: multiple messages have this Message-ID (diff)
From: Jason Gunthorpe <jgg@nvidia.com> To: Alistair Popple <apopple@nvidia.com> Cc: Andrew Morton <akpm@linux-foundation.org>, will@kernel.org, catalin.marinas@arm.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org, robin.murphy@arm.com, nicolinc@nvidia.com, linux-arm-kernel@lists.infradead.org, kvm@vger.kernel.org, John Hubbard <jhubbard@nvidia.com>, zhi.wang.linux@gmail.com, Sean Christopherson <seanjc@google.com> Subject: Re: [PATCH 2/2] arm64: Notify on pte permission upgrades Date: Sat, 27 May 2023 21:02:13 -0300 [thread overview] Message-ID: <ZHKaBQt8623s9+VK@nvidia.com> (raw) In-Reply-To: <5d8e1f752051173d2d1b5c3e14b54eb3506ed3ef.1684892404.git-series.apopple@nvidia.com> On Wed, May 24, 2023 at 11:47:29AM +1000, Alistair Popple wrote: > ARM64 requires TLB invalidates when upgrading pte permission from > read-only to read-write. However mmu_notifiers assume upgrades do not > need notifications and none are sent. This causes problems when a > secondary TLB such as implemented by an ARM SMMU doesn't support > broadcast TLB maintenance (BTM) and caches a read-only PTE. I don't really like this design, but I see how you get here.. mmu notifiers behavior should not be tied to the architecture, they are supposed to be generic reflections of what the MM is doing so that they can be hooked into by general purpose drivers. If you want to hardwire invalidate_range to be only for SVA cases that actually share the page table itself and rely on some arch-defined invalidation, then we should give the op a much better name and discourage anyone else from abusing the new ops variable behavior. > As no notification is sent and the SMMU does not snoop TLB invalidates > it will continue to return read-only entries to a device even though > the CPU page table contains a writable entry. This leads to a > continually faulting device and no way of handling the fault. Doesn't the fault generate a PRI/etc? If we get a PRI maybe we should just have the iommu driver push an iotlb invalidation command before it acks it? PRI is already really slow so I'm not sure a pipelined invalidation is going to be a problem? Does the SMMU architecture permit negative caching which would suggest we need it anyhow? Jason _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2023-05-28 0:02 UTC|newest] Thread overview: 46+ messages / expand[flat|nested] mbox.gz Atom feed top 2023-05-24 1:47 [PATCH 1/2] mmu_notifiers: Restore documentation for .invalidate_range() Alistair Popple 2023-05-24 1:47 ` Alistair Popple 2023-05-24 1:47 ` [PATCH 2/2] arm64: Notify on pte permission upgrades Alistair Popple 2023-05-24 1:47 ` Alistair Popple 2023-05-28 0:02 ` Jason Gunthorpe [this message] 2023-05-28 0:02 ` Jason Gunthorpe 2023-05-30 8:05 ` Alistair Popple 2023-05-30 8:05 ` Alistair Popple 2023-05-30 11:54 ` Jason Gunthorpe 2023-05-30 11:54 ` Jason Gunthorpe 2023-05-30 12:14 ` Robin Murphy 2023-05-30 12:14 ` Robin Murphy 2023-05-30 12:52 ` Jason Gunthorpe 2023-05-30 12:52 ` Jason Gunthorpe 2023-05-30 13:44 ` Robin Murphy 2023-05-30 13:44 ` Robin Murphy 2023-05-30 14:06 ` Jason Gunthorpe 2023-05-30 14:06 ` Jason Gunthorpe 2023-05-30 21:44 ` Sean Christopherson 2023-05-30 21:44 ` Sean Christopherson 2023-05-30 23:08 ` Jason Gunthorpe 2023-05-30 23:08 ` Jason Gunthorpe 2023-05-31 0:30 ` Alistair Popple 2023-05-31 0:30 ` Alistair Popple 2023-05-31 0:32 ` Jason Gunthorpe 2023-05-31 0:32 ` Jason Gunthorpe 2023-05-31 2:46 ` Alistair Popple 2023-05-31 2:46 ` Alistair Popple 2023-05-31 15:30 ` Jason Gunthorpe 2023-05-31 15:30 ` Jason Gunthorpe 2023-05-31 23:56 ` Alistair Popple 2023-05-31 23:56 ` Alistair Popple [not found] ` <31cdd164783fefad4c9ef4a6d33c1e0094405d0f03added523a82dd9febdf15f@mu.id> 2023-06-09 2:06 ` Alistair Popple 2023-06-09 2:06 ` Alistair Popple 2023-06-09 6:05 ` Alistair Popple 2023-06-09 6:05 ` Alistair Popple 2023-05-24 2:20 ` [PATCH 1/2] mmu_notifiers: Restore documentation for .invalidate_range() John Hubbard 2023-05-24 2:20 ` John Hubbard 2023-05-24 4:45 ` Alistair Popple 2023-05-24 4:45 ` Alistair Popple 2023-05-27 23:56 ` Jason Gunthorpe 2023-05-27 23:56 ` Jason Gunthorpe 2023-05-24 3:48 ` Zhi Wang 2023-05-24 3:48 ` Zhi Wang 2023-05-24 4:57 ` Alistair Popple 2023-05-24 4:57 ` Alistair Popple
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=ZHKaBQt8623s9+VK@nvidia.com \ --to=jgg@nvidia.com \ --cc=akpm@linux-foundation.org \ --cc=apopple@nvidia.com \ --cc=catalin.marinas@arm.com \ --cc=jhubbard@nvidia.com \ --cc=kvm@vger.kernel.org \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-mm@kvack.org \ --cc=nicolinc@nvidia.com \ --cc=robin.murphy@arm.com \ --cc=seanjc@google.com \ --cc=will@kernel.org \ --cc=zhi.wang.linux@gmail.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.