qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH qemu v7 06/14] spapr_iommu: Introduce "enabled"


From: Paolo Bonzini
Subject: Re: [Qemu-devel] [PATCH qemu v7 06/14] spapr_iommu: Introduce "enabled" state for TCE table
Date: Tue, 26 May 2015 16:03:56 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.6.0


On 26/05/2015 16:00, Alexey Kardashevskiy wrote:
> On 05/26/2015 11:48 PM, Paolo Bonzini wrote:
>>
>>
>> On 26/05/2015 15:42, Alexey Kardashevskiy wrote:
>>>
>>>
>>> The next patch of this patchset changes:
>>> spapr_tce_table_do_enable()
>>>      memory_region_init_iommu(&iommu)
>>>      memory_region_add_subregion(&root, &iommu)
>>>
>>> spapr_tce_table_disable()
>>>      memory_region_del_subregion(&root, &iommu)
>>>      object_unref(&iommu)
>>>
>>> These spapr_tce_xxx are called by request from the guest. &root is a
>>> container and exists as long as sPAPRTCETable exists.
>>>
>>> Where do I get a leaking child property here?
>>
>> When you unref iommu and not unparent it.  The next
>> memory_region_init_iommu creates a second child property, and the first
>> is gone.
> 
> But when do I get this child property? In memory_region_add_subregion()?
> And memory_region_del_subregion() does not do the opposite thing
> (unparent)?

In memory_region_init_iommu.

>> What is different between the various IOMMU regions, so that you cannot
>> create just one?
> 
> There are two DMA windows on the same PCI bus (in hardware too), at
> different offset and with a different page size.

Why do you need different regions?  Why can't you have always the same
IOMMU regions, and either:

1) create/destroy an alias to that region

2) change the behavior of the translation function, while keeping a
single region?

Paolo



reply via email to

[Prev in Thread] Current Thread [Next in Thread]