[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH v2] x86/hvmloader: round up memory BAR size to 4K



On Tue, Jan 21, 2020 at 05:15:20PM +0100, Jan Beulich wrote:
> On 21.01.2020 16:57, Roger Pau Monné wrote:
> > On Tue, Jan 21, 2020 at 11:43:58AM +0100, Jan Beulich wrote:
> >> On 21.01.2020 11:29, Roger Pau Monné wrote:
> >>> So I'm not sure how to progress with this patch, are we fine with
> >>> those limitations?
> >>
> >> I'm afraid this depends on ...
> >>
> >>> As I said, Xen hasn't got enough knowledge to correctly isolate the
> >>> BARs, and hence we have to rely on dom0 DTRT. We could add checks in
> >>> Xen to make sure no BARs share a page, but it's a non-trivial amount
> >>> of scanning and sizing each possible BAR on the system.
> >>
> >> ... whether Dom0 actually "DTRT", which in turn is complicated by there
> >> not being a specific Dom0 kernel incarnation to check against. Perhaps
> >> rather than having Xen check _all_ BARs, Xen or the tool stack could
> >> check BARs of devices about to be handed to a guest? Perhaps we need to
> >> pass auxiliary information to hvmloader to be able to judge whether a
> >> BAR shares a page with another one? Perhaps there also needs to be a
> >> way for hvmloader to know what offset into a page has to be maintained
> >> for any particular BAR, as follows from Jason's recent reply?
> > 
> > Linux has an option to force resource alignment (as reported by
> > Jason), maybe we could force all BARs to be aligned to page size in
> > order to be passed through?
> > 
> > That would make it easier to check (as Xen/Qemu would only need to
> > assert that the BAR address is aligned), and won't require much extra
> > work in Xen apart from the check itself.
> > 
> > Do you think this would be an acceptable solution?
> 
> In principle yes, but there are loose ends:
> - What do you mean by "we could force"? We have no control over the
>   Dom0 kernel.

I should rephrase:

... maybe we should require dom0 to align all memory BARs to page size
in order to be passed through?

Ie: Xen should refuse to pass through any memory BAR that's not page
aligned. How the alignment is accomplished is out of the scope to Xen,
as long as memory BARs are aligned.

> - What about non-Linux Dom0?

Other OSes would have to provide similar functionality in order to
align the memory BARs. Right now Linux is the only dom0 that supports
PCI passthrough AFAIK.

> Also, apart from extra resource (address space) consumption,

The PCI spec actually recommends memory BARs to be at least of page
size, but that's not a strict requirement. I would hope there aren't
that many devices with memory BARs smaller than a page.

> what's
> the point of forcing a single device's BARs to separate pages?

Makes the placement logic in hvmloader easier IMO, and I don't think
that would be such a waste of space since I expect most devices will
follow the PCI spec recommendation and round up memory BAR sizes to a
page size.

> (I'm
> assuming here that hvmloader would have a way to know of the
> potentially resulting non-zero offsets into a page. And I'm still
> puzzled that the lack thereof hasn't been reported as a bug by
> anyone, afaik.)

As said above I would like to think that most devices have memory BARs
at least of page size, as recommended by the PCI spec, and hence
that's why we haven't got any reports so far.

Thanks, Roger.

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.