From: James Hogan <james.hogan@imgtec.com>
To: Paolo Bonzini <pbonzini@redhat.com>,
Aurelien Jarno <aurelien@aurel32.net>
Cc: Sanjay Lal <sanjayl@kymasys.com>, <qemu-devel@nongnu.org>,
Peter Maydell <peter.maydell@linaro.org>, <kvm@vger.kernel.org>,
Gleb Natapov <gleb@redhat.com>
Subject: Re: [Qemu-devel] [PATCH v5 10/12] hw/mips: malta: Add KVM support
Date: Fri, 20 Jun 2014 09:46:20 +0100 [thread overview]
Message-ID: <53A3F4DC.2090708@imgtec.com> (raw)
In-Reply-To: <786372578.29668656.1403244425225.JavaMail.zimbra@redhat.com>
Hi,
On 20/06/14 07:07, Paolo Bonzini wrote:
> ----- Messaggio originale -----
>> Da: "Aurelien Jarno" <aurelien@aurel32.net>
>> A: "Sanjay Lal" <sanjayl@kymasys.com>
>> Cc: "James Hogan" <james.hogan@imgtec.com>, qemu-devel@nongnu.org, "Peter Maydell" <peter.maydell@linaro.org>,
>> kvm@vger.kernel.org, "Gleb Natapov" <gleb@redhat.com>, "Paolo Bonzini" <pbonzini@redhat.com>
>> Inviato: Giovedì, 19 giugno 2014 23:47:34
>> Oggetto: Re: [Qemu-devel] [PATCH v5 10/12] hw/mips: malta: Add KVM support
>>
>> On Thu, Jun 19, 2014 at 12:34:24PM -0700, Sanjay Lal wrote:
>>>
>>> On Jun 19, 2014, at 9:27 AM, Aurelien Jarno <aurelien@aurel32.net> wrote:
>>>
>>>> On Tue, Jun 17, 2014 at 11:10:35PM +0100, James Hogan wrote:
>>>>> In KVM mode the bootrom is loaded and executed from the last 1MB of
>>>>> DRAM.
>>>>
>>>> What is the reason for that? I am not opposed to that, but if it is
>>>> really needed, it means that loading a bootloader into the flash area
>>>> (for example YAMON) won't work and that this should be forbidden to the
>>>> user.
>>>>
>>>
>>> In trap and emulate mode, both the kernel and userland run in user mode on
>>> the processor. Virtual addresses >= 0x80000000 are only accessible in
>>> kernel mode, and the default flash area (VA: 0xbfc00000/PA: 0x1fc00000)
>>> falls in this range.
>>>
>>> We therefore decided to relocate the bootloader to the last 1MB of RAM.
>>> This area is excluded from the RAM ranges supplied to the kernel, so it
>>> should not be accessible to the user.
I did recently try relocating the bootloader to the reset address in the
T&E KSeg0 (i.e. PA=0x1fc00000, VA=0x5fc00000), but the current MIPS KVM
implementation in the kernel has some limitations when it comes to
memory regions. It allocates a linear guest_pmap array (for GPA->RPA
page mapping) based only on the first memory region committed, so if you
set e.g. mem=64MB then physical memory according to guest_pmap won't
reach the reset address and it fails to map it. The kernel needs fixing
to use a more flexible physical page table structure first really.
>> Thanks for the explanation. It means we should disable the support for
>> booting from the flash (using -pflash) in KVM mode, as it would simply
>> not work.
>
> My idea was to add a machines-specific option umkernel=on, and require it
> in order to run KVM. Later we can add umkernel=on support for TCG as well,
FYI I tried this and it was a fairly small change (fixing CP0_EBase
initialisation and switching a couple of kvm_enabled() checks to
something like mips_um_ksegs_enabled()). Needs more testing though.
> while umkernel=off with KVM requires virtualization extensions.
>
> The same option can disable pflash boot.
>
> What do you think?
I think with an executable flash region / reset address the pflash
option could be made to work, but of course you'd probably need a
relocated flash image too, which may make the option less useful (and it
presumably isn't like a kernel ELF where you can detect what address
it's linked).
For now disabling Malta non kernel loads in KVM mode makes sense I think.
Thanks
James
WARNING: multiple messages have this Message-ID (diff)
From: James Hogan <james.hogan@imgtec.com>
To: Paolo Bonzini <pbonzini@redhat.com>,
Aurelien Jarno <aurelien@aurel32.net>
Cc: Sanjay Lal <sanjayl@kymasys.com>, Gleb Natapov <gleb@redhat.com>,
qemu-devel@nongnu.org, kvm@vger.kernel.org,
Peter Maydell <peter.maydell@linaro.org>
Subject: Re: [Qemu-devel] [PATCH v5 10/12] hw/mips: malta: Add KVM support
Date: Fri, 20 Jun 2014 09:46:20 +0100 [thread overview]
Message-ID: <53A3F4DC.2090708@imgtec.com> (raw)
In-Reply-To: <786372578.29668656.1403244425225.JavaMail.zimbra@redhat.com>
Hi,
On 20/06/14 07:07, Paolo Bonzini wrote:
> ----- Messaggio originale -----
>> Da: "Aurelien Jarno" <aurelien@aurel32.net>
>> A: "Sanjay Lal" <sanjayl@kymasys.com>
>> Cc: "James Hogan" <james.hogan@imgtec.com>, qemu-devel@nongnu.org, "Peter Maydell" <peter.maydell@linaro.org>,
>> kvm@vger.kernel.org, "Gleb Natapov" <gleb@redhat.com>, "Paolo Bonzini" <pbonzini@redhat.com>
>> Inviato: Giovedì, 19 giugno 2014 23:47:34
>> Oggetto: Re: [Qemu-devel] [PATCH v5 10/12] hw/mips: malta: Add KVM support
>>
>> On Thu, Jun 19, 2014 at 12:34:24PM -0700, Sanjay Lal wrote:
>>>
>>> On Jun 19, 2014, at 9:27 AM, Aurelien Jarno <aurelien@aurel32.net> wrote:
>>>
>>>> On Tue, Jun 17, 2014 at 11:10:35PM +0100, James Hogan wrote:
>>>>> In KVM mode the bootrom is loaded and executed from the last 1MB of
>>>>> DRAM.
>>>>
>>>> What is the reason for that? I am not opposed to that, but if it is
>>>> really needed, it means that loading a bootloader into the flash area
>>>> (for example YAMON) won't work and that this should be forbidden to the
>>>> user.
>>>>
>>>
>>> In trap and emulate mode, both the kernel and userland run in user mode on
>>> the processor. Virtual addresses >= 0x80000000 are only accessible in
>>> kernel mode, and the default flash area (VA: 0xbfc00000/PA: 0x1fc00000)
>>> falls in this range.
>>>
>>> We therefore decided to relocate the bootloader to the last 1MB of RAM.
>>> This area is excluded from the RAM ranges supplied to the kernel, so it
>>> should not be accessible to the user.
I did recently try relocating the bootloader to the reset address in the
T&E KSeg0 (i.e. PA=0x1fc00000, VA=0x5fc00000), but the current MIPS KVM
implementation in the kernel has some limitations when it comes to
memory regions. It allocates a linear guest_pmap array (for GPA->RPA
page mapping) based only on the first memory region committed, so if you
set e.g. mem=64MB then physical memory according to guest_pmap won't
reach the reset address and it fails to map it. The kernel needs fixing
to use a more flexible physical page table structure first really.
>> Thanks for the explanation. It means we should disable the support for
>> booting from the flash (using -pflash) in KVM mode, as it would simply
>> not work.
>
> My idea was to add a machines-specific option umkernel=on, and require it
> in order to run KVM. Later we can add umkernel=on support for TCG as well,
FYI I tried this and it was a fairly small change (fixing CP0_EBase
initialisation and switching a couple of kvm_enabled() checks to
something like mips_um_ksegs_enabled()). Needs more testing though.
> while umkernel=off with KVM requires virtualization extensions.
>
> The same option can disable pflash boot.
>
> What do you think?
I think with an executable flash region / reset address the pflash
option could be made to work, but of course you'd probably need a
relocated flash image too, which may make the option less useful (and it
presumably isn't like a kernel ELF where you can detect what address
it's linked).
For now disabling Malta non kernel loads in KVM mode makes sense I think.
Thanks
James
next prev parent reply other threads:[~2014-06-20 8:46 UTC|newest]
Thread overview: 64+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-06-17 22:10 [PATCH v5 00/12] KVM Support for MIPS32 Processors James Hogan
2014-06-17 22:10 ` [Qemu-devel] " James Hogan
2014-06-17 22:10 ` [PATCH v5 01/12] target-mips: Reset CPU timer consistently James Hogan
2014-06-17 22:10 ` [Qemu-devel] " James Hogan
2014-06-17 22:10 ` [PATCH v5 02/12] hw/mips/cputimer: Don't start periodic timer in KVM mode James Hogan
2014-06-17 22:10 ` [Qemu-devel] " James Hogan
2014-06-17 22:10 ` [PATCH v5 03/12] hw/mips: Add API to convert KVM guest KSEG0 <-> GPA James Hogan
2014-06-17 22:10 ` [Qemu-devel] " James Hogan
2014-06-17 22:10 ` [PATCH v5 04/12] target-mips: get_physical_address: Add defines for segment bases James Hogan
2014-06-17 22:10 ` [Qemu-devel] " James Hogan
2014-06-17 22:10 ` [PATCH v5 05/12] target-mips: get_physical_address: Add KVM awareness James Hogan
2014-06-17 22:10 ` [Qemu-devel] " James Hogan
2014-06-17 22:10 ` [PATCH v5 06/12] kvm: Allow arch to set sigmask length James Hogan
2014-06-17 22:10 ` [Qemu-devel] " James Hogan
2014-06-17 22:10 ` [PATCH v5 07/12] target-mips: kvm: Add main KVM support for MIPS James Hogan
2014-06-17 22:10 ` [Qemu-devel] " James Hogan
2014-06-17 22:10 ` [PATCH v5 08/12] target-mips: Call kvm_mips_reset_vcpu() from mips_cpu_reset() James Hogan
2014-06-17 22:10 ` [Qemu-devel] " James Hogan
2014-06-17 22:10 ` [PATCH v5 09/12] hw/mips: In KVM mode, inject IRQ2 (I/O) interrupts via ioctls James Hogan
2014-06-17 22:10 ` [Qemu-devel] " James Hogan
2014-06-17 22:10 ` [PATCH v5 10/12] hw/mips: malta: Add KVM support James Hogan
2014-06-17 22:10 ` [Qemu-devel] " James Hogan
2014-06-19 16:27 ` Aurelien Jarno
2014-06-19 16:27 ` [Qemu-devel] " Aurelien Jarno
2014-06-19 19:34 ` Sanjay Lal
2014-06-19 19:34 ` Sanjay Lal
2014-06-19 21:47 ` Aurelien Jarno
2014-06-19 21:47 ` Aurelien Jarno
2014-06-20 6:07 ` Paolo Bonzini
2014-06-20 6:07 ` [Qemu-devel] " Paolo Bonzini
2014-06-20 8:46 ` James Hogan [this message]
2014-06-20 8:46 ` James Hogan
2014-06-20 9:10 ` Aurelien Jarno
2014-06-20 9:10 ` Aurelien Jarno
2014-06-20 10:38 ` Paolo Bonzini
2014-06-20 10:38 ` Paolo Bonzini
2014-06-20 11:19 ` Aurelien Jarno
2014-06-20 11:19 ` Aurelien Jarno
2014-06-20 11:28 ` James Hogan
2014-06-20 11:28 ` James Hogan
2014-06-20 9:25 ` James Hogan
2014-06-20 9:25 ` James Hogan
2014-06-20 11:11 ` Paolo Bonzini
2014-06-20 11:11 ` Paolo Bonzini
2014-06-20 11:20 ` Aurelien Jarno
2014-06-20 11:20 ` [Qemu-devel] " Aurelien Jarno
2014-06-17 22:10 ` [PATCH v5 11/12] target-mips: Enable KVM support in build system James Hogan
2014-06-17 22:10 ` [Qemu-devel] " James Hogan
2014-06-17 22:10 ` [PATCH v5 12/12] MAINTAINERS: Add entry for MIPS KVM James Hogan
2014-06-17 22:10 ` [Qemu-devel] " James Hogan
2014-06-18 15:00 ` [PATCH v5 00/12] KVM Support for MIPS32 Processors Paolo Bonzini
2014-06-18 15:00 ` [Qemu-devel] " Paolo Bonzini
2014-06-19 16:29 ` Aurelien Jarno
2014-06-19 16:29 ` [Qemu-devel] " Aurelien Jarno
2014-07-10 12:17 ` Peter Maydell
2014-07-10 12:17 ` Peter Maydell
2014-07-10 12:47 ` Paolo Bonzini
2014-07-10 12:47 ` Paolo Bonzini
2014-07-14 13:33 ` James Hogan
2014-07-14 13:33 ` James Hogan
2014-07-14 14:35 ` Peter Maydell
2014-07-14 14:35 ` Peter Maydell
2014-07-14 15:50 ` James Hogan
2014-07-14 15:50 ` James Hogan
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=53A3F4DC.2090708@imgtec.com \
--to=james.hogan@imgtec.com \
--cc=aurelien@aurel32.net \
--cc=gleb@redhat.com \
--cc=kvm@vger.kernel.org \
--cc=pbonzini@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=sanjayl@kymasys.com \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.