qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Jan Kiszka <jan.kiszka@siemens.com>
To: Alexander Graf <agraf@suse.de>
Cc: qemu-devel@nongnu.org, hollisb@us.ibm.com
Subject: [Qemu-devel] Re: [PATCH 6/7] Set slots more carefully
Date: Fri, 17 Jul 2009 16:30:55 +0200	[thread overview]
Message-ID: <4A608B1F.209@siemens.com> (raw)
In-Reply-To: <C1554585-D1CA-4A9D-BE88-BAE39F4BFFB7@suse.de>

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 <agraf@suse.de>
>>>>> ---
>>>>> 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

  reply	other threads:[~2009-07-17 14:31 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-07-17 11:51 [Qemu-devel] [PATCH 0/4] Add preliminary KVM support for non-embedded PPC v3 Alexander Graf
2009-07-17 11:51 ` [Qemu-devel] [PATCH 1/7] Enable PPC KVM for non-embedded Alexander Graf
2009-07-17 11:51   ` [Qemu-devel] [PATCH 2/7] Set PVR in sregs Alexander Graf
2009-07-17 11:51     ` [Qemu-devel] [PATCH 3/7] Add mp_state to PPC CPU struct Alexander Graf
2009-07-17 11:51       ` [Qemu-devel] [PATCH 4/7] Fix warning in kvm-all.c Alexander Graf
2009-07-17 11:51         ` [Qemu-devel] [PATCH 5/7] Use correct input constant Alexander Graf
2009-07-17 11:51           ` [Qemu-devel] [PATCH 6/7] Set slots more carefully Alexander Graf
2009-07-17 11:51             ` [Qemu-devel] [PATCH 7/7] Fake dirty loggin when it's not there Alexander Graf
2009-07-17 12:10               ` Stefano Stabellini
2009-07-17 12:14                 ` Alexander Graf
2009-07-17 12:18                 ` Alexander Graf
2009-07-17 12:25                   ` Stefano Stabellini
2009-07-17 12:27                   ` Alexander Graf
2009-07-17 13:18                     ` Stefano Stabellini
2009-07-17 13:23                       ` Alexander Graf
2009-07-17 14:37               ` [Qemu-devel] " Jan Kiszka
2009-07-17 15:00                 ` Alexander Graf
2009-07-17 15:47                   ` Jan Kiszka
2009-07-17 13:48             ` [Qemu-devel] Re: [PATCH 6/7] Set slots more carefully Jan Kiszka
2009-07-17 13:53               ` Alexander Graf
2009-07-17 14:18                 ` Jan Kiszka
2009-07-17 14:23                   ` Alexander Graf
2009-07-17 14:30                     ` Jan Kiszka [this message]
2009-07-21 22:55             ` [Qemu-devel] " Anthony Liguori
2009-07-22 15:34       ` [Qemu-devel] [PATCH 3/7] Add mp_state to PPC CPU struct Anthony Liguori
2009-07-22 15:59         ` Hollis Blanchard
2009-07-22 16:22           ` Anthony Liguori
2009-07-22 16:26             ` Hollis Blanchard
2009-07-22 16:51               ` [Qemu-devel] " Jan Kiszka
2009-07-22 18:11                 ` Anthony Liguori
2009-07-22 19:11                   ` Jan Kiszka
2009-07-21 22:36 ` [Qemu-devel] Re: [PATCH 0/4] Add preliminary KVM support for non-embedded PPC v3 Hollis Blanchard

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4A608B1F.209@siemens.com \
    --to=jan.kiszka@siemens.com \
    --cc=agraf@suse.de \
    --cc=hollisb@us.ibm.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).