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

Re: [Xen-devel] [PATCH] dom0 linux: Reassign memory resources to device for pci passthrough.

Yuji Shimada wrote:
On Thu, 9 Oct 2008 11:21:22 +0800
"Zhao, Yu" <yu.zhao@xxxxxxxxx> wrote:

On Thursday, October 09, 2008 7:44 AM, Yuji Shimada wrote:
There is a similar function enabled by pci-mem-align boot
parameter. Currently it is kept. But if many people agree with me, I'd
like to remove it from dom0 linux, because there are two problems.

   - pci-mem-align reassigns all devices' memory resources if they are
     not page-aligned. This is not safe, because some devices are
     used by firmware.
   - pci-mem-align can't expand resource window of PCI-PCI bridge.
Why the resource windows can't be expended? I think the
pci_bus_size_bridges takes care of this. So it shouldn't be a
problem and your pci_update_bridge appears unnecessary.

Current pci_bus_size_bridges calculates the size and minimal alignment
of resource window based on actual resource size. The values of them
will be not changed if pci-mem-align is enabled.

Yes, that's a problem in pbus_size_mem, and should be fixed there -- say, make it consistent with pci_bus_alloc_resource by fixing up the alignment.

But if we make memory resource page-aligned, we need more space. My
patch rounds up resource size to page size, on calculating the size
of resource windows.

The calculation of the window size is incorrect because it's still based on wrong values from pbus_size_mem. And the base addresses may be overwritten by pci_setup_bridge ultimately.

Regarding the first problem you mentioned, it could be easily fixed
by merging your "rassigndev=" parameter to quirk_align_mem_resources
so the function can selective twist the devices.

If my "rassigndev=" parameter is merged to quirk_align_mem_resources,
problem will occurs. Current quirk_align_mem_resources shifts
resources simply. Resources will conflict easily. If confliction
occurs, kernel reassigns conflicting resources. As a result, the
resources of device which are not specified are reassigned.

The quirk function should deassign the resource (set resource start to 0) instead of shifting it. Then it could fall into same scenario as your patch.

Additionally, the reassigned resource is not page-aligned.

Yuji Shimada

Xen-devel mailing list



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