public inbox for kvm@vger.kernel.org
 help / color / mirror / Atom feed
From: Jason Gunthorpe <jgg@nvidia.com>
To: Lorenzo Pieralisi <lpieralisi@kernel.org>
Cc: Catalin Marinas <catalin.marinas@arm.com>,
	Marc Zyngier <maz@kernel.org>,
	ankita@nvidia.com,
	Shameerali Kolothum Thodi <shameerali.kolothum.thodi@huawei.com>,
	oliver.upton@linux.dev, suzuki.poulose@arm.com,
	yuzenghui@huawei.com, will@kernel.org, ardb@kernel.org,
	akpm@linux-foundation.org, gshan@redhat.com, aniketa@nvidia.com,
	cjia@nvidia.com, kwankhede@nvidia.com, targupta@nvidia.com,
	vsethi@nvidia.com, acurrid@nvidia.com, apopple@nvidia.com,
	jhubbard@nvidia.com, danw@nvidia.com, mochs@nvidia.com,
	kvmarm@lists.linux.dev, kvm@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH v2 1/1] KVM: arm64: allow the VM to select DEVICE_* and NORMAL_NC for IO memory
Date: Thu, 7 Dec 2023 09:38:25 -0400	[thread overview]
Message-ID: <20231207133825.GI2692119@nvidia.com> (raw)
In-Reply-To: <ZXGa4A6rfxLtkTB2@lpieralisi>

On Thu, Dec 07, 2023 at 11:13:52AM +0100, Lorenzo Pieralisi wrote:
> > > What about the other way around - would we have a prefetchable BAR that
> > > has portions which are unprefetchable?
> > 
> > I would say possibly.
> > 
> > Prefetch is a dead concept in PCIe, it was obsoleted in PCI-X about 20
> > years ago. No PCIe system has ever done prefetch.
> > 
> > There is a strong incentive to mark BAR's as prefetchable because it
> > allows 64 bit addressing in configurations with bridges.
> 
> If by strong incentive you mean the "Additional guidance on the
> Prefetchable Bit in Memory Space BARs" in the PCI express specifications,
> I think it has been removed from the spec and the criteria that had to be
> met to implement it were basically impossible to fulfill on ARM systems,
> it did not make any sense in the first place.

No, I mean many systems don't have room to accommodate large 32 bit
BARs and the only real way to make stuff work is to have a 64 bit BAR
by setting prefetchable. Given mis-marking a read-side-effect region
as prefetchable has no actual consequence on PCI-E I would not be
surprised to learn people have done this.

> I agree on your statement related to the prefetchable concept but I
> believe that a prefetchable BAR containing regions that have
> read side-effects is essentially a borked design unless at system level
> speculative reads are prevented (as far as I understand the
> implementation note this could only be an endpoint integrated in a
> system where read speculation can't just happen (?)).

IMHO the PCIe concept of prefetchable has no intersection with the
CPU. The CPU chooses entirely on its own what rules to apply to the
PCI MMIO regions and no OS should drive that decision based on the
prefetchable BAR flag.

The *only* purpose of the prefetchable flag was to permit a classical
33/66MHz PCI bridge to prefetch reads because the physical bus
protocol back then did not include a read length.

For any system that does not have an ancient PCI bridge the indication
is totally useless.

Jason

  reply	other threads:[~2023-12-07 13:38 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-12-05  3:30 [PATCH v2 1/1] KVM: arm64: allow the VM to select DEVICE_* and NORMAL_NC for IO memory ankita
2023-12-05  9:21 ` Marc Zyngier
2023-12-05 11:40   ` Catalin Marinas
2023-12-05 13:05     ` Jason Gunthorpe
2023-12-05 14:37       ` Lorenzo Pieralisi
2023-12-05 14:44         ` Jason Gunthorpe
2023-12-05 16:24           ` Catalin Marinas
2023-12-05 17:10             ` Jason Gunthorpe
2023-12-05 16:22       ` Catalin Marinas
2023-12-05 16:43         ` Jason Gunthorpe
2023-12-05 17:01           ` Marc Zyngier
2023-12-05 17:33             ` Catalin Marinas
2023-12-05 17:50               ` Marc Zyngier
2023-12-05 18:40                 ` Catalin Marinas
2023-12-06 11:39                   ` Marc Zyngier
2023-12-06 12:14                     ` Catalin Marinas
2023-12-06 15:16                       ` Jason Gunthorpe
2023-12-06 16:31                         ` Catalin Marinas
2023-12-06 17:20                           ` Jason Gunthorpe
2023-12-06 18:58                             ` Catalin Marinas
2023-12-06 19:03                               ` Jason Gunthorpe
2023-12-06 19:06                                 ` Catalin Marinas
2023-12-07  2:53                                   ` Ankit Agrawal
2023-12-06 11:52                   ` Lorenzo Pieralisi
2023-12-05 19:24           ` Catalin Marinas
2023-12-05 19:48             ` Jason Gunthorpe
2023-12-06 14:49               ` Catalin Marinas
2023-12-06 15:05                 ` Jason Gunthorpe
2023-12-06 15:18                   ` Lorenzo Pieralisi
2023-12-06 15:38                     ` Jason Gunthorpe
2023-12-06 16:23                       ` Catalin Marinas
2023-12-06 16:48                         ` Jason Gunthorpe
2023-12-07 10:13                           ` Lorenzo Pieralisi
2023-12-07 13:38                             ` Jason Gunthorpe [this message]
2023-12-07 14:50                               ` Lorenzo Pieralisi
2023-12-05 13:28     ` Lorenzo Pieralisi
2023-12-05 14:16     ` Shameerali Kolothum Thodi
2023-12-06  8:17       ` Shameerali Kolothum Thodi
2023-12-05 11:48 ` Catalin Marinas

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=20231207133825.GI2692119@nvidia.com \
    --to=jgg@nvidia.com \
    --cc=acurrid@nvidia.com \
    --cc=akpm@linux-foundation.org \
    --cc=aniketa@nvidia.com \
    --cc=ankita@nvidia.com \
    --cc=apopple@nvidia.com \
    --cc=ardb@kernel.org \
    --cc=catalin.marinas@arm.com \
    --cc=cjia@nvidia.com \
    --cc=danw@nvidia.com \
    --cc=gshan@redhat.com \
    --cc=jhubbard@nvidia.com \
    --cc=kvm@vger.kernel.org \
    --cc=kvmarm@lists.linux.dev \
    --cc=kwankhede@nvidia.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=lpieralisi@kernel.org \
    --cc=maz@kernel.org \
    --cc=mochs@nvidia.com \
    --cc=oliver.upton@linux.dev \
    --cc=shameerali.kolothum.thodi@huawei.com \
    --cc=suzuki.poulose@arm.com \
    --cc=targupta@nvidia.com \
    --cc=vsethi@nvidia.com \
    --cc=will@kernel.org \
    --cc=yuzenghui@huawei.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: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox