From: Jan Kiszka <jan.kiszka@siemens.com>
To: Hollis Blanchard <hollisb@us.ibm.com>
Cc: Liu Yu-B13201 <Yu.Liu@freescale.com>,
qemu-devel@nongnu.org, kvm-ppc@vger.kernel.org
Subject: Re: [Qemu-devel] [PATCH 4/7] kvm: Add sanity checks to slot management
Date: Wed, 29 Apr 2009 20:08:48 +0200 [thread overview]
Message-ID: <49F897B0.4050405@siemens.com> (raw)
In-Reply-To: <1241026635.24990.53.camel@slate.austin.ibm.com>
Hollis Blanchard wrote:
> On Wed, 2009-04-29 at 19:30 +0200, Jan Kiszka wrote:
>> Hollis Blanchard wrote:
>>> On Wed, 2009-04-29 at 12:38 +0200, Jan Kiszka wrote:
>>>> Liu Yu-B13201 wrote:
>>>>>> -----Original Message-----
>>>>>> From: qemu-devel-bounces+yu.liu=freescale.com@nongnu.org
>>>>>> [mailto:qemu-devel-bounces+yu.liu=freescale.com@nongnu.org]
>>>>>> On Behalf Of Jan Kiszka
>>>>>> Sent: Sunday, April 12, 2009 1:20 AM
>>>>>> To: qemu-devel@nongnu.org
>>>>>> Subject: [Qemu-devel] [PATCH 4/7] kvm: Add sanity checks to
>>>>>> slot management
>>>>>>
>>>>>> Fail loudly if we run out of memory slot.
>>>>>>
>>>>>> Make sure that dirty log start/stop works with consistent
>>>>>> memory regions
>>>>>> by reporting invalid parameters. This reveals several
>>>>>> inconsistencies in
>>>>>> the vga code, patch to fix them follows later in this series.
>>>>>>
>>>>>> And, for simplicity reasons, also catch and report unaligned memory
>>>>>> regions passed to kvm_set_phys_mem (KVM works on page basis).
>>>>>>
>>>>> Commit d3f8d37fe2d0c24ec8bac9c94d5b0e2dc09c0d2a hurts kvm/powerpc
>>>>> The alignment check in kvm_set_phys_mem prevents pci controller and mpic initializing mmio regions.
>>>> What is the alignment of those regions then? None? And do regions of
>>>> different types overlap even on the same page? Maybe the check reveals
>>>> some deeper conflict /wrt KVM. Can you point me to the involved code files?
>>> These PCI controllers make separate calls to
>>> cpu_register_physical_memory() for separate callbacks. Reading
>>> ppce500_pci_init(), for example:
>>> 0xe0008000 -> CFGADDR (4 bytes)
>>> 0xe0008004 -> CFGDATA (4 bytes)
>>> 0xe0008c00 -> other registers
>>>
>>> The loop in cpu_register_physical_memory_offset() handles "subpage"
>>> registration. However, kvm_set_phys_mem() is called outside that loop,
>>> so it gets the non-page-aligned addresses.
>>>
>> Half-blind shot:
>>
>> diff --git a/kvm-all.c b/kvm-all.c
>> index 32cd636..c2c760e 100644
>> --- a/kvm-all.c
>> +++ b/kvm-all.c
>> @@ -583,6 +583,9 @@ void kvm_set_phys_mem(target_phys_addr_t start_addr,
>> int err;
>>
>> if (start_addr & ~TARGET_PAGE_MASK) {
>> + if (flags >= IO_MEM_UNASSIGNED) {
>> + return;
>> + }
>> fprintf(stderr, "Only page-aligned memory slots supported\n");
>> abort();
>> }
>>
>> If it works, it likely needs a cleaner approach to handle all cases.
>
> I don't understand the point. kvm_set_phys_mem() already works without
> this new abort() check.
This new check is there to catch those cases where someone tries to
register regions that are actually incompatible with KVM. IO-MEM regions
do not belong into this category (unless they would split existing KVM
slots in a non-align way), and so the test likely overshoots here.
Jan
--
Siemens AG, Corporate Technology, CT SE 2
Corporate Competence Center Embedded Linux
next prev parent reply other threads:[~2009-04-29 18:09 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-04-11 17:20 [Qemu-devel] [PATCH 0/7] kvm: fix system reset & rework slot management Jan Kiszka
2009-04-11 17:20 ` [Qemu-devel] [PATCH 3/7] kvm: Cleanup unmap condition in kvm_set_phys_mem Jan Kiszka
2009-04-11 17:20 ` [Qemu-devel] [PATCH 7/7] vga: Cleanup dirty logging Jan Kiszka
2009-04-11 17:20 ` [Qemu-devel] [PATCH 2/7] kvm: Apply SMM-already-initialized workaround on reset Jan Kiszka
2009-04-11 17:20 ` [Qemu-devel] [PATCH 6/7] vga: Fix inconsistent tracking of map_addr Jan Kiszka
2009-04-11 17:20 ` [Qemu-devel] [PATCH 5/7] kvm: improve handling of overlapping slots Jan Kiszka
2009-04-13 11:00 ` [Qemu-devel] [PATCH 5/7 v2] " Jan Kiszka
2009-04-17 14:36 ` Anthony Liguori
2009-04-11 17:20 ` [Qemu-devel] [PATCH 4/7] kvm: Add sanity checks to slot management Jan Kiszka
2009-04-29 10:31 ` Liu Yu-B13201
2009-04-29 10:38 ` Jan Kiszka
2009-04-29 11:10 ` Liu Yu-B13201
2009-04-29 11:36 ` Jan Kiszka
2009-04-29 17:10 ` Hollis Blanchard
2009-04-29 17:30 ` Jan Kiszka
2009-04-29 17:37 ` Hollis Blanchard
2009-04-29 18:08 ` Jan Kiszka [this message]
2009-04-30 2:39 ` Liu Yu-B13201
2009-04-29 17:38 ` Anthony Liguori
2009-04-29 18:02 ` Hollis Blanchard
2009-04-29 18:54 ` Blue Swirl
2009-04-11 17:20 ` [Qemu-devel] [PATCH 1/7] kvm: Sync CPU state on reset Jan Kiszka
2009-04-17 14:26 ` Anthony Liguori
2009-04-17 14:27 ` [Qemu-devel] [PATCH 0/7] kvm: fix system reset & rework slot management Anthony Liguori
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=49F897B0.4050405@siemens.com \
--to=jan.kiszka@siemens.com \
--cc=Yu.Liu@freescale.com \
--cc=hollisb@us.ibm.com \
--cc=kvm-ppc@vger.kernel.org \
--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).