From: Jason Gunthorpe <jgg@ziepe.ca>
To: Alex Williamson <alex.williamson@redhat.com>
Cc: Keith Busch <kbusch@meta.com>,
kvm@vger.kernel.org, Keith Busch <kbusch@kernel.org>
Subject: Re: [PATCH rfc] vfio-pci: Allow write combining
Date: Thu, 1 Aug 2024 14:53:39 -0300 [thread overview]
Message-ID: <20240801175339.GB4830@ziepe.ca> (raw)
In-Reply-To: <20240801113344.1d5b5bfe.alex.williamson@redhat.com>
On Thu, Aug 01, 2024 at 11:33:44AM -0600, Alex Williamson wrote:
> On Thu, 1 Aug 2024 14:13:55 -0300
> Jason Gunthorpe <jgg@ziepe.ca> wrote:
>
> > On Thu, Aug 01, 2024 at 10:52:18AM -0600, Alex Williamson wrote:
> > > > > vfio_region_info.flags in not currently tested for input therefore this
> > > > > proposal could lead to unexpected behavior for a caller that doesn't
> > > > > currently zero this field. It's intended as an output-only field.
> > > >
> > > > Perhaps a REGION_INFO2 then?
> > > >
> > > > I still think per-request is better than a global flag
> > >
> > > I don't understand why we'd need a REGION_INFO2, we already have
> > > support for defining new regions.
> >
> > It is not a new region, it is a modified mmap behavior for an existing
> > region.
>
> If we're returning a different offset into the vfio device file from
> which to get a WC mapping, what's the difference?
I think it is a pretty big difference.. The offset is just a "mmap
cookie", it doesn't have to be 1:1 with the idea of a region.
> A vfio "region" is
> describing a region or range of the vfio device file descriptor.
I'm thinking a region is describing an area of memory that is
available in the VFIO device. The offset output is just a "mmap
cookie" to tell userspace how to mmap it. Having N mmap cookies for 1
region is OK.
> > > We'd populate these new regions only for BARs that support prefetch and
> > > mmap
> >
> > That's not the point, prefetch has nothing to do with write combining.
>
> I was following the original proposal in this thread that added a
> prefetch flag to REGION_INFO and allowed enabling WC only for
> IORESOURCE_PREFETCH.
Oh, I didn't notice that, it shouldn't do that. Returning the
VFIO_REGION_FLAG_WRITE_COMBINE makes sense, but it shouldn't effect
what the kernel allows.
> > Doubling all the region indexes just for WC does not seem like a good
> > idea to me...
>
> Is the difference you see that in the REQ_WC proposal the user is
> effectively asking vfio to pop a WC region into existence vs here
> they're pre-populated?
?? This didn't create more regions AFAICT. It created a new global
+ bool bar_write_combine[PCI_STD_NUM_BARS];
Which controls what NC/WC the mmap creates when called:
+ if (vdev->bar_write_combine[index])
+ vma->vm_page_prot = pgprot_writecombine(vma->vm_page_prot);
+ else
+ vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
You get the same output from REGION_INFO, same number of regions.
It was the other proposal from long ago that created more regions.
This is what I like and would prefer to stick with. REGION_INFO
doesn't really change, we don't have two regions refering to the same
physical memory, and we find some way to request NC/WC of a region at
mmap time.
A global is a neat trick, but it would be cleaner to request
properties of the mmap when the "mmap cookie" is obtained.
> At the limit they're the same. We could use a
> DEVICE_FEATURE to ask vfio to selectively populate WC regions after
> which the user could re-enumerate additional regions, or in fact to
> switch on WC for a given region if we want to go that route. Thanks,
This is still adding more regions and reporting more stuff from
REGION_INFO, that is what I would like to avoid.
Jason
next prev parent reply other threads:[~2024-08-01 17:53 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-07-31 15:53 [PATCH rfc] vfio-pci: Allow write combining Keith Busch
2024-08-01 14:19 ` Jason Gunthorpe
2024-08-01 15:41 ` Alex Williamson
2024-08-01 16:11 ` Jason Gunthorpe
2024-08-01 16:52 ` Alex Williamson
2024-08-01 17:13 ` Jason Gunthorpe
2024-08-01 17:33 ` Alex Williamson
2024-08-01 17:53 ` Jason Gunthorpe [this message]
2024-08-01 18:16 ` Alex Williamson
2024-08-02 11:53 ` Jason Gunthorpe
2024-08-02 17:05 ` Alex Williamson
2024-08-06 16:53 ` Jason Gunthorpe
2024-08-06 18:43 ` Alex Williamson
2024-08-07 14:19 ` Jason Gunthorpe
2024-08-07 17:46 ` Alex Williamson
2024-08-13 18:02 ` Jason Gunthorpe
2024-08-02 14:24 ` Keith Busch
2024-08-02 14:33 ` Jason Gunthorpe
2024-08-06 7:19 ` Tian, Kevin
2024-08-06 16:47 ` Jason Gunthorpe
2024-08-15 5:05 ` Christoph Hellwig
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=20240801175339.GB4830@ziepe.ca \
--to=jgg@ziepe.ca \
--cc=alex.williamson@redhat.com \
--cc=kbusch@kernel.org \
--cc=kbusch@meta.com \
--cc=kvm@vger.kernel.org \
/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 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.