[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 15/30] memory: add address_space_valid
From: |
Paolo Bonzini |
Subject: |
Re: [Qemu-devel] [PATCH 15/30] memory: add address_space_valid |
Date: |
Fri, 24 May 2013 14:58:22 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130514 Thunderbird/17.0.6 |
Il 24/05/2013 12:52, Peter Maydell ha scritto:
> On 24 May 2013 09:02, Paolo Bonzini <address@hidden> wrote:
>> Il 23/05/2013 20:04, Peter Maydell ha scritto:
>>> Shouldn't we be calling the MemoryRegionOps
>>> accepts() callback here? What about access alignment constraints
>>> and access size restrictions?
>>
>> Yes, we should.
>>
>>> What if the validity of the range
>>> changes between the time you asked and when you actually do the
>>> access?
>>
>> If that's a concern, you shouldn't use this API, you should just do the
>> access and rely on the return value of address_space_rw & friends.
>
> So when *is* it a good idea to use this API? In real
> hardware you don't usually get a "tell me whether this
> access would succeed if I did it" bus operation -- you
> just do the operation and the memory transaction either
> succeeds or it doesn't. Are we modelling something that
> really exists in hardware on spapr here?
Well, sPAPR is not hardware. :) It is a paravirtualized interface.
Anyhow, I can eliminate all the references to unassigned and basically
do this:
bool address_space_access_valid(AddressSpace *as, hwaddr addr, int len, bool
is_write)
{
MemoryRegionSection *section;
hwaddr l, xlat;
while (len > 0) {
l = len;
section = address_space_translate(as, addr, &xlat, &l, is_write);
if (!memory_access_is_direct(section->mr, is_write)) {
l = memory_access_size(l, addr);
if (!memory_region_access_valid(section->mr, addr1, l) {
return false;
}
}
len -= l;
addr += l;
}
return true;
}
It requires some more changes however. I'll drop this patch. If it's okay
for you, I'll send a pull request up to "memory: clean up phys_page_find"
and go on with the next series.
Paolo
- Re: [Qemu-devel] [PATCH 15/30] memory: add address_space_valid, (continued)
- Re: [Qemu-devel] [PATCH 15/30] memory: add address_space_valid, Peter Maydell, 2013/05/23
- Re: [Qemu-devel] [PATCH 15/30] memory: add address_space_valid, Paolo Bonzini, 2013/05/24
- Re: [Qemu-devel] [PATCH 15/30] memory: add address_space_valid, Peter Maydell, 2013/05/24
- Re: [Qemu-devel] [PATCH 15/30] memory: add address_space_valid,
Paolo Bonzini <=
- Re: [Qemu-devel] [PATCH 15/30] memory: add address_space_valid, Peter Maydell, 2013/05/24
- Re: [Qemu-devel] [PATCH 15/30] memory: add address_space_valid, Paolo Bonzini, 2013/05/24
- Re: [Qemu-devel] [PATCH 15/30] memory: add address_space_valid, Peter Maydell, 2013/05/24
- Re: [Qemu-devel] [PATCH 15/30] memory: add address_space_valid, David Gibson, 2013/05/24
- Re: [Qemu-devel] [PATCH 15/30] memory: add address_space_valid, Peter Maydell, 2013/05/25
- Re: [Qemu-devel] [PATCH 15/30] memory: add address_space_valid, David Gibson, 2013/05/26
[Qemu-devel] [PATCH 16/30] memory: clean up phys_page_find, Paolo Bonzini, 2013/05/21
[Qemu-devel] [PATCH 18/30] memory: add return value to address_space_rw/read/write, Paolo Bonzini, 2013/05/21