qemu-devel
[Top][All Lists]
Advanced

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

Re: [PATCH] memory: Do not allow subregion out of the parent region rang


From: Christophe de Dinechin
Subject: Re: [PATCH] memory: Do not allow subregion out of the parent region range
Date: Tue, 17 Dec 2019 12:58:11 +0100


> On 17 Dec 2019, at 11:51, Paolo Bonzini <address@hidden> wrote:
> 
> On 16/12/19 18:46, Philippe Mathieu-Daudé wrote:
>>>> 
>>> 
>>> I think in some cases this could be intentional, for example if you have
>>> different models with different BAR sizes and you organize this with the
>>> same tree of MemoryRegion and different sizes for the parent.
>> 
>> But if a child is outside of the parent range, it can't be reached,
>> right? I'm confused, maybe AddressSpace can do that, but MemoryRegion
>> shouldn't?
> 
> Yes, the idea is that you could have for one version of the device
> 
>   parent 0x000-0x7ff
>     stuff 0x000-0x3ff
>     morestuff 0x400-0x7ff
> 
> and for another
> 
>   parent 0x000-0x3ff
>     stuff 0x000-0x3ff
>     morestuff 0x400-0x7ff
> 
> where parent is the BAR, and you can share the code to generate the tree
> underneath parent.

I can see why you would have code reuse reasons to do that,
but frankly it looks buggy and confusing. In the rare cases
where this is indented, maybe add a flag making it explicit?

> 
>> In the PCI case, you will simply alias a subregion with
>> memory_region_init_alias(..., size), and size has to be <= parent size.
>> But you won't add the PCI region, you'll add the alias, so the assert
>> won't fire.
> 
> Yes, this is a workaround though.  You shouldn't need the alias.
> 
> I can see a case for your patch but I can also see one for the current
> behavior...
> 
> Paolo
> 
> 




reply via email to

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