From: Peter Maydell <peter.maydell@linaro.org>
To: "Mian M. Hamayun" <m.hamayun@virtualopensystems.com>
Cc: tech@virtualopensystems.com, qemu-devel@nongnu.org,
kvmarm@lists.cs.columbia.edu
Subject: Re: [Qemu-devel] [PATCH v2 3/7] AARCH64: Add aarch64 CPU initialization, get and put registers support
Date: Fri, 9 Aug 2013 14:24:58 +0100 [thread overview]
Message-ID: <CAFEAcA8iPEDBC67EGZmZRikztJqNhipMUDM_uC9BdieaVS6Meg@mail.gmail.com> (raw)
In-Reply-To: <1374571996-9228-4-git-send-email-m.hamayun@virtualopensystems.com>
On 23 July 2013 10:33, Mian M. Hamayun <m.hamayun@virtualopensystems.com> wrote:
> From: "Mian M. Hamayun" <m.hamayun@virtualopensystems.com>
>
> The cpu init function tries to initialize with all possible cpu types, as
> KVM does not provide a means to detect the real cpu type and simply refuses
> to initialize on cpu type mis-match. By using the loop based init function,
> we avoid the need to modify code if the underlying platform is different,
> such as Fast Models instead of Foundation Models.
>
> Get and Put Registers deal with the basic state of Aarch64 CPUs for the moment.
>
> Signed-off-by: Mian M. Hamayun <m.hamayun@virtualopensystems.com>
>
> Conflicts:
>
> target-arm/kvm.c
>
> Conflicts:
>
> target-arm/cpu.c
This sort of Conflicts note shouldn't be in a commit message.
> ---
> linux-headers/linux/kvm.h | 1 +
> target-arm/kvm.c | 125 +++++++++++++++++++++++++++++++++++++++++++++
> 2 files changed, 126 insertions(+)
>
> diff --git a/linux-headers/linux/kvm.h b/linux-headers/linux/kvm.h
> index c614070..4df5292 100644
> --- a/linux-headers/linux/kvm.h
> +++ b/linux-headers/linux/kvm.h
> @@ -783,6 +783,7 @@ struct kvm_dirty_tlb {
> #define KVM_REG_IA64 0x3000000000000000ULL
> #define KVM_REG_ARM 0x4000000000000000ULL
> #define KVM_REG_S390 0x5000000000000000ULL
> +#define KVM_REG_ARM64 0x6000000000000000ULL
>
> #define KVM_REG_SIZE_SHIFT 52
> #define KVM_REG_SIZE_MASK 0x00f0000000000000ULL
Updates to the linux-headers/ files need to:
* be a separate patch
* be the result of running scripts/update-linux-headers.sh
on an upstream mainline kernel or kvm-next kernel tree
* include the kernel tree/commit hash in the commit message
> diff --git a/target-arm/kvm.c b/target-arm/kvm.c
> index b92e00d..c96b871 100644
> --- a/target-arm/kvm.c
> +++ b/target-arm/kvm.c
> @@ -32,6 +32,11 @@
> #error mismatch between cpu.h and KVM header definitions
> #endif
>
> +#ifdef TARGET_AARCH64
> +#define AARCH64_CORE_REG(x) (KVM_REG_ARM64 | KVM_REG_SIZE_U64 | \
> + KVM_REG_ARM_CORE | KVM_REG_ARM_CORE_REG(x))
> +#endif
> +
> const KVMCapabilityInfo kvm_arch_required_capabilities[] = {
> KVM_CAP_LAST_INFO
> };
> @@ -50,6 +55,33 @@ unsigned long kvm_arch_vcpu_id(CPUState *cpu)
> return cpu->cpu_index;
> }
>
> +#ifdef TARGET_AARCH64
This set of #ifdefs is pretty messy. I suggest splitting kvm.c
into three:
target-arm/kvm.c -- anything common to both 32 and 64 bit
target-arm/kvm32.c -- non-TARGET_AARCH64 functions
target-arm/kvm64.c -- TARGET_AARCH64 functions
and have target-arm/Makefile.objs build only one of kvm32.c
or kvm64.c depending on whether TARGET_AARCH64 is set.
> + /* Find an appropriate target CPU type.
> + * KVM does not provide means to detect the host CPU type on aarch64,
> + * and simply refuses to initialize, if the CPU type mis-matches;
> + * so we try each possible CPU type on aarch64 before giving up! */
> + for (i = 0; i < KVM_ARM_NUM_TARGETS; ++i) {
> + init.target = kvm_arm_targets[i];
> + ret = kvm_vcpu_ioctl(cs, KVM_ARM_VCPU_INIT, &init);
> + if (!ret)
> + break;
> + }
We definitely don't want to do this -- see my notes on
'-cpu host' in another email thread. (We should make sure
we coordinate who of you or Linaro is going to do the
-cpu host support, incidentally.)
-- PMM
next prev parent reply other threads:[~2013-08-09 13:25 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-07-23 9:33 [Qemu-devel] [PATCH v2 0/7] AARCH64 support on machvirt machine model using KVM Mian M. Hamayun
2013-07-23 9:33 ` [Qemu-devel] [PATCH v2 1/7] AARCH64: Add A57 CPU to default AArch64 configuration and enable KVM Mian M. Hamayun
2013-07-23 9:33 ` [Qemu-devel] [PATCH v2 2/7] Add the additional parent parameter to memory region init calls Mian M. Hamayun
2013-07-23 9:43 ` Andreas Färber
2013-07-23 10:00 ` Peter Maydell
2013-07-23 10:06 ` Andreas Färber
2013-07-23 9:33 ` [Qemu-devel] [PATCH v2 3/7] AARCH64: Add aarch64 CPU initialization, get and put registers support Mian M. Hamayun
2013-08-09 13:24 ` Peter Maydell [this message]
2013-08-09 19:03 ` Mian M. Hamayun
2013-08-10 9:10 ` Peter Maydell
2013-07-23 9:33 ` [Qemu-devel] [PATCH v2 4/7] AARCH64: Add boot support for aarch64 processor Mian M. Hamayun
2013-07-23 9:33 ` [Qemu-devel] [PATCH v2 5/7] AARCH64: Disable the non-aarch64 specific reset code Mian M. Hamayun
2013-07-23 9:33 ` [Qemu-devel] [PATCH v2 6/7] AARCH64: Add SMP support for aarch64 processors Mian M. Hamayun
2013-07-23 9:33 ` [Qemu-devel] [PATCH v2 7/7] AARCH64: Use the spin-table method for booting secondary processors in machvirt Mian M. Hamayun
2013-08-09 14:34 ` Peter Maydell
2013-08-09 19:04 ` Mian M. Hamayun
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=CAFEAcA8iPEDBC67EGZmZRikztJqNhipMUDM_uC9BdieaVS6Meg@mail.gmail.com \
--to=peter.maydell@linaro.org \
--cc=kvmarm@lists.cs.columbia.edu \
--cc=m.hamayun@virtualopensystems.com \
--cc=qemu-devel@nongnu.org \
--cc=tech@virtualopensystems.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 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).