[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] Re: [PATCH 6/7] Set slots more carefully
From: |
Jan Kiszka |
Subject: |
[Qemu-devel] Re: [PATCH 6/7] Set slots more carefully |
Date: |
Fri, 17 Jul 2009 16:30:55 +0200 |
User-agent: |
Mozilla/5.0 (X11; U; Linux i686 (x86_64); de; rv:1.8.1.12) Gecko/20080226 SUSE/2.0.0.12-1.1 Thunderbird/2.0.0.12 Mnenhy/0.7.5.666 |
Alexander Graf wrote:
>
> On 17.07.2009, at 16:18, Jan Kiszka wrote:
>
>> Alexander Graf wrote:
>>>
>>> On 17.07.2009, at 15:48, Jan Kiszka wrote:
>>>
>>>> Alexander Graf wrote:
>>>>> KVM only supports slot sizes of PAGE_SIZE granilarity. On PPC the OS
>>>>> sets the framebuffer to some odd size though, causing the current code
>>>>> to simply abort().
>>>>>
>>>>> So let's bet graceful here. We can just allocate memory sizes that
>>>>> are of
>>>>> PAGE_SIZE granularity and everything that exceeds that comes in as
>>>>> MMIO and
>>>>> gets handled too - just slower.
>>>>>
>>>>> Signed-off-by: Alexander Graf <address@hidden>
>>>>> ---
>>>>> kvm-all.c | 2 +-
>>>>> 1 files changed, 1 insertions(+), 1 deletions(-)
>>>>>
>>>>> diff --git a/kvm-all.c b/kvm-all.c
>>>>> index 961fa32..60b76cf 100644
>>>>> --- a/kvm-all.c
>>>>> +++ b/kvm-all.c
>>>>> @@ -134,7 +134,7 @@ static int kvm_set_user_memory_region(KVMState
>>>>> *s, KVMSlot *slot)
>>>>>
>>>>> mem.slot = slot->slot;
>>>>> mem.guest_phys_addr = slot->start_addr;
>>>>> - mem.memory_size = slot->memory_size;
>>>>> + mem.memory_size = slot->memory_size & ~(TARGET_PAGE_SIZE - 1);
>>>>
>>>> TARGET_PAGE_MASK? And I bet you want to round up here...
>>>
>>>
>>> Eh - yeah. Same thing, no?
>>
>> Just look at its definition...
>>
>>>
>>> And no, I don't want to round up. After the memory backed slot could
>>> easily be real MMIO space. I had such strange configurations with the
>>> ESCC overlapping in the same page as graphic memory once.
>>
>> Overlapping is handled by the kvm layer in user space. For sure, if
>> there is a mapping conflict, we are in trouble (kvm-wise) as the second
>> request overwrites the mapping type of the overlapping page(s).
>>
>>>
>>> Better be safe than sorry.
>>
>> No, something wrong. If you cut off the odd "overhead", you effectively
>> exclude that page. So either the caller should not include it in the
>> first place as it is unused or kvm should try to map the whole page just
>> like the rest of the slot. If there remains an unresolvable conflict, we
>> need to enhance the slot management with some sub-page dispatching
>> mechanism.
>
> Not mapped = MMIO
Right.
>
> MMIO then gets passed to userspace which puts it into qemu's read/write
> functions which then decide if it's real MMIO or just a plain RAM access.
>
> So all we get is a couple more MMIO accesses, right?
In this particular case. But it only happens to work due to the given
setup. You can't derive a generic rounding rule for KVM slots from this.
You may say if slot A is MMIO and slot B RAM, that a overlapping page
should be handled as MMIO. But that's not what your code does.
Jan
--
Siemens AG, Corporate Technology, CT SE 2
Corporate Competence Center Embedded Linux
- Re: [Qemu-devel] [PATCH 7/7] Fake dirty loggin when it's not there, (continued)
- [Qemu-devel] Re: [PATCH 7/7] Fake dirty loggin when it's not there, Jan Kiszka, 2009/07/17
- [Qemu-devel] Re: [PATCH 7/7] Fake dirty loggin when it's not there, Alexander Graf, 2009/07/17
- [Qemu-devel] Re: [PATCH 7/7] Fake dirty loggin when it's not there, Jan Kiszka, 2009/07/17
- [Qemu-devel] Re: [PATCH 6/7] Set slots more carefully, Jan Kiszka, 2009/07/17
- [Qemu-devel] Re: [PATCH 6/7] Set slots more carefully, Alexander Graf, 2009/07/17
- [Qemu-devel] Re: [PATCH 6/7] Set slots more carefully, Jan Kiszka, 2009/07/17
- [Qemu-devel] Re: [PATCH 6/7] Set slots more carefully, Alexander Graf, 2009/07/17
- [Qemu-devel] Re: [PATCH 6/7] Set slots more carefully,
Jan Kiszka <=
- Re: [Qemu-devel] [PATCH 6/7] Set slots more carefully, Anthony Liguori, 2009/07/21
- Re: [Qemu-devel] [PATCH 3/7] Add mp_state to PPC CPU struct, Anthony Liguori, 2009/07/22
- Re: [Qemu-devel] [PATCH 3/7] Add mp_state to PPC CPU struct, Hollis Blanchard, 2009/07/22
- Re: [Qemu-devel] [PATCH 3/7] Add mp_state to PPC CPU struct, Anthony Liguori, 2009/07/22
- Re: [Qemu-devel] [PATCH 3/7] Add mp_state to PPC CPU struct, Hollis Blanchard, 2009/07/22
- [Qemu-devel] Re: [PATCH 3/7] Add mp_state to PPC CPU struct, Jan Kiszka, 2009/07/22
- [Qemu-devel] Re: [PATCH 3/7] Add mp_state to PPC CPU struct, Anthony Liguori, 2009/07/22
- [Qemu-devel] Re: [PATCH 3/7] Add mp_state to PPC CPU struct, Jan Kiszka, 2009/07/22
[Qemu-devel] Re: [PATCH 0/4] Add preliminary KVM support for non-embedded PPC v3, Hollis Blanchard, 2009/07/21