From: "Andreas Färber" <afaerber@suse.de>
To: James Hogan <james.hogan@imgtec.com>, qemu-devel@nongnu.org
Cc: Peter Maydell <peter.maydell@linaro.org>,
kvm@vger.kernel.org, Gleb Natapov <gleb@redhat.com>,
Sanjay Lal <sanjayl@kymasys.com>,
Paolo Bonzini <pbonzini@redhat.com>,
Aurelien Jarno <aurelien@aurel32.net>
Subject: Re: [Qemu-devel] [PATCH v3 6/9] target-mips: kvm: Add main KVM support for MIPS
Date: Thu, 13 Mar 2014 22:28:36 +0100 [thread overview]
Message-ID: <53222304.3050902@suse.de> (raw)
In-Reply-To: <1394125778-18746-7-git-send-email-james.hogan@imgtec.com>
Am 06.03.2014 18:09, schrieb James Hogan:
> From: Sanjay Lal <sanjayl@kymasys.com>
>
> Implement the main KVM arch API for MIPS.
>
> Signed-off-by: Sanjay Lal <sanjayl@kymasys.com>
> Signed-off-by: James Hogan <james.hogan@imgtec.com>
> Cc: Aurelien Jarno <aurelien@aurel32.net>
> Cc: Gleb Natapov <gleb@redhat.com>
> Cc: Paolo Bonzini <pbonzini@redhat.com>
> Cc: Andreas Färber <afaerber@suse.de>
> Cc: Peter Maydell <peter.maydell@linaro.org>
> ---
> Changes in v3:
> - s/dprintf/DPRINTF/ (Andreas Färber).
> - Use "cs" rather than "cpu" or "env" for CPUState variable names
> (Andreas Färber).
> - Use CPUMIPSState rather than CPUArchState (Andreas Färber).
> - Pass MIPSCPU to cpu_mips_io_interrupts_pending() rather than
> CPUMIPSState (Andreas Färber).
> - Remove spurious parentheses around cpu_mips_io_interrupts_pending()
> call (Andreas Färber).
> - Pass MIPSCPU to kvm_mips_set_[ipi_]interrupt (Andreas Färber).
> - Make use of error_report (Andreas Färber) and clean up error messages
> a little to include __func__.
> - Remove inline kvm_mips_{put,get}_one_[ul]reg() declarations from
> kvm_mips.h. They're only used in target-mips/kvm.c anyway.
> - Make kvm_arch_{put,get}_registers static within target-mips/kvm.c and
> remove from kvm_mips.h.
> - Set sigmask length to 16 from kvm_arch_init() since MIPS Linux has
> 128 signals. This is better than cluttering kvm_all.c with TARGET_*
> ifdefs (Peter Maydell).
>
> Changes in v2:
> - Expand commit message
> - Checkpatch cleanups.
> - Some interrupt bug fixes from Yann Le Du <ledu@kymasys.com>
> - Add get/set register functionality from Yann Le Du <ledu@kymasys.com>
> - Use new 64 bit compatible ABI from Cavium from Sanjay Lal
> <sanjayl@kymasys.com>
> - Add dummy kvm_arch_init_irq_routing()
> The common KVM code insists on calling kvm_arch_init_irq_routing() as
> soon as it sees kernel header support for it (regardless of whether
> QEMU supports it). Provide a dummy function to satisfy this.
> - Remove request_interrupt_window code (Peter Maydell)
> ---
> target-mips/kvm.c | 472 +++++++++++++++++++++++++++++++++++++++++++++++++
> target-mips/kvm_mips.h | 19 ++
> 2 files changed, 491 insertions(+)
> create mode 100644 target-mips/kvm.c
> create mode 100644 target-mips/kvm_mips.h
>
> diff --git a/target-mips/kvm.c b/target-mips/kvm.c
> new file mode 100644
> index 0000000..0ec343d
> --- /dev/null
> +++ b/target-mips/kvm.c
[...]
> +static inline int kvm_mips_put_one_reg(CPUState *cs, int reg_id, int32 *addr)
Did you mean int32_t?
> +{
> + __u64 val64 = (__u64)*addr;
> + struct kvm_one_reg cp0reg = {
> + .id = reg_id,
> + .addr = (__u64)((target_ulong)&val64)
> + };
> +
> + return kvm_vcpu_ioctl(cs, KVM_SET_ONE_REG, &cp0reg);
> +}
> +
> +static inline int kvm_mips_put_one_ulreg(CPUState *cs, int reg_id,
> + target_ulong *addr)
> +{
> + __u64 val64 = (__u64)*addr;
> + struct kvm_one_reg cp0reg = {
> + .id = reg_id,
> + .addr = (__u64)((target_ulong)&val64)
> + };
> +
> + return kvm_vcpu_ioctl(cs, KVM_SET_ONE_REG, &cp0reg);
> +}
> +
> +static inline int kvm_mips_get_one_reg(CPUState *cs, int reg_id, int32 *addr)
int32_t?
> +{
> + int ret;
> + __u64 val64 = 0;
> + struct kvm_one_reg cp0reg = {
> + .id = reg_id,
> + .addr = (__u64)((target_ulong)&val64)
> + };
> +
> + ret = kvm_vcpu_ioctl(cs, KVM_GET_ONE_REG, &cp0reg);
> + if (ret < 0) {
> + return ret;
> + }
> +
> + *addr = (int32)val64;
int32_t?
> + return ret;
> +}
[snip]
int32 is a type used in softfloat that has weird at-least-as-wide
semantics and bit us in the past.
I'm not sure if we have a policy about __u64 etc. in KVM code. Since
it'll be Linux-only I don't see problems currently; for cross-platform
parts we prefer uint64_t. Suggest to leave as is unless told otherwise.
Otherwise looking good now, thanks for the CPU cleanups! We just had
another round of CPU refactorings go in today, but I don't spot a
conflict in this patch. Please rebase your local branch to verify.
Regards,
Andreas
--
SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746 AG Nürnberg
next prev parent reply other threads:[~2014-03-13 21:28 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-03-06 17:09 [PATCH v3 0/9] KVM Support for MIPS32 Processors James Hogan
2014-03-06 17:09 ` [Qemu-devel] " James Hogan
2014-03-06 17:09 ` [PATCH v3 1/9] hw/mips/cputimer: Don't start periodic timer in KVM mode James Hogan
2014-03-06 17:09 ` [Qemu-devel] " James Hogan
2014-03-06 17:09 ` [PATCH v3 2/9] hw/mips: Add API to convert KVM guest KSEG0 <-> GPA James Hogan
2014-03-06 17:09 ` [Qemu-devel] " James Hogan
2014-03-06 17:09 ` [PATCH v3 3/9] target-mips: get_physical_address: Add defines for segment bases James Hogan
2014-03-06 17:09 ` [Qemu-devel] " James Hogan
2014-03-06 17:09 ` [PATCH v3 4/9] target-mips: get_physical_address: Add KVM awareness James Hogan
2014-03-06 17:09 ` [Qemu-devel] " James Hogan
2014-03-06 17:09 ` [PATCH v3 5/9] kvm: Allow arch to set sigmask length James Hogan
2014-03-06 17:09 ` [Qemu-devel] " James Hogan
2014-03-06 17:09 ` [PATCH v3 6/9] target-mips: kvm: Add main KVM support for MIPS James Hogan
2014-03-06 17:09 ` [Qemu-devel] " James Hogan
2014-03-13 21:28 ` Andreas Färber [this message]
2014-03-13 22:35 ` Peter Maydell
2014-03-13 22:35 ` Peter Maydell
2014-03-14 9:43 ` James Hogan
2014-03-14 9:43 ` James Hogan
2014-03-14 12:53 ` Paolo Bonzini
2014-03-14 12:53 ` Paolo Bonzini
2014-03-14 9:42 ` James Hogan
2014-03-14 9:42 ` James Hogan
2014-03-06 17:09 ` [PATCH v3 7/9] hw/mips: In KVM mode, inject IRQ2 (I/O) interupts via ioctls James Hogan
2014-03-06 17:09 ` [Qemu-devel] " James Hogan
2014-03-13 21:30 ` Andreas Färber
2014-03-13 21:30 ` Andreas Färber
2014-03-06 17:09 ` [PATCH v3 8/9] hw/mips: malta: Add KVM support James Hogan
2014-03-06 17:09 ` [Qemu-devel] " James Hogan
2014-03-06 17:09 ` [PATCH v3 9/9] target-mips: Enable KVM support in build system James Hogan
2014-03-06 17:09 ` [Qemu-devel] " 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=53222304.3050902@suse.de \
--to=afaerber@suse.de \
--cc=aurelien@aurel32.net \
--cc=gleb@redhat.com \
--cc=james.hogan@imgtec.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.