Re: [RFC PATCH V3 06/17] ppc/pnv: allocate pe->iommu_table dynamically
From: Alexey Kardashevskiy <hidden>
Date: 2014-06-25 10:30:48
Also in:
linux-pci
On 06/25/2014 07:20 PM, David Laight wrote:
From: Wei Yangquoted
On Wed, Jun 25, 2014 at 02:12:34PM +1000, Alexey Kardashevskiy wrote:quoted
On 06/25/2014 11:12 AM, Wei Yang wrote:quoted
On Tue, Jun 24, 2014 at 08:06:32PM +1000, Alexey Kardashevskiy wrote:quoted
On 06/10/2014 11:56 AM, Wei Yang wrote:quoted
Current iommu_table of a PE is a static field. This will have a problem when iommu_free_table is called.What kind of problem? This table is per PE and PE is not going anywhere.Yes, for Bus PE, they will always sit in the system. When VF PE introduced, they could be released on the fly. When they are released, so do the iommu table for the PE.iommu_table is a part of PE struct. When PE is released, iommu_table will go with it as well. Why to make is a pointer? I would understand it if you added reference counting there but no - iommu_table's lifetime is equal to PE lifetime.Yes, iommu_talbe's life time equals to PE lifetime, so when releasing a PE we need to release the iommu table. Currently, there is one function to release the iommu table, iommu_free_table() which takes a pointer of the iommu_table and release it. If the iommu table in PE is just a part of PE, it will have some problem to release it with iommu_free_table(). That's why I make it a pointer in PE structure.What are the sizes of the iommu table and the PE structure?
This is all about iommu_table struct (which is just a descriptor), not IOMMU table per se (which may be megabytes) :)
If the table is a round number of pages then you probably don't want to embed it inside the PE structure.
-- Alexey