All of lore.kernel.org
 help / color / mirror / Atom feed
From: James Hogan <james.hogan@imgtec.com>
To: "Andreas Färber" <afaerber@suse.de>
Cc: <qemu-devel@nongnu.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 v2 07/10] target-mips: kvm: Add main KVM support for MIPS
Date: Tue, 11 Feb 2014 10:54:48 +0000	[thread overview]
Message-ID: <52FA0178.10506@imgtec.com> (raw)
In-Reply-To: <52F8DD08.4070500@suse.de>

Hi Andreas,

On 10/02/14 14:07, Andreas Färber wrote:
>> +#define dprintf(fmt, ...) \
> 
> dprintf is the name of a stdio.h function, so DPRINTF may be a better name.

Okay.

>> +int kvm_arch_init_vcpu(CPUState *env)
> 
> Please use "env" only for CPUMIPSState, use "cpu" or "cs" here. The
> usual convention is "cs" for CPUState in target-*/ so that "cpu" can be
> used for MIPSCPU.

Okay.

>> +{
>> +    dprintf("%s\n", __func__);
>> +    return 0;
>> +}
>> +
>> +static inline int cpu_mips_io_interrupts_pending(CPUArchState *env)
> 
> Please don't use CPUArchState in MIPS-specific code, use CPUMIPSState.
> Although in this trivial case MIPSCPU would be more future-proof.

True.

>> +{
>> +    dprintf("%s: %#x\n", __func__, env->CP0_Cause & (1 << (2 + CP0Ca_IP)));
>> +    return env->CP0_Cause & (0x1 << (2 + CP0Ca_IP));
>> +}
>> +
>> +
>> +void kvm_arch_pre_run(CPUState *cs, struct kvm_run *run)
>> +{
>> +    MIPSCPU *cpu = MIPS_CPU(cs);
>> +    CPUMIPSState *env = &cpu->env;
>> +    int r;
>> +    struct kvm_mips_interrupt intr;
>> +
>> +    if ((cs->interrupt_request & CPU_INTERRUPT_HARD) &&
>> +            (cpu_mips_io_interrupts_pending(env))) {
> 
> Parentheses around cpu_mips_io_interrupts_pending() seem unnecessary
> here FWIW.

Good spot

>> +        intr.cpu = -1;
>> +        intr.irq = 2;
>> +        r = kvm_vcpu_ioctl(cs, KVM_INTERRUPT, &intr);
>> +        if (r < 0) {
>> +            printf("cpu %d fail inject %x\n", cs->cpu_index, intr.irq);
> 
> Should this really be a printf() rather than error_report() or trace point?

It looks like error_report() would indeed be better, thanks

>> +int kvm_mips_set_interrupt(CPUMIPSState *env, int irq, int level)
>> +{
>> +    CPUState *cs = ENV_GET_CPU(env);
> 
> CPU(mips_env_get_cpu(env)) please - ENV_GET_CPU() is for generic code
> only and supposed to go away.
> 
> Any chance a MIPSCPU *cpu (or CPUState *cs) argument can be used instead?

Yep, MIPSCPU can happily be used here (I thought the same thing after
fixing cpu_mips_io_interrupts_pending above).

Thanks for taking the time to review!

Cheers
James


WARNING: multiple messages have this Message-ID (diff)
From: James Hogan <james.hogan@imgtec.com>
To: "Andreas Färber" <afaerber@suse.de>
Cc: kvm@vger.kernel.org, Gleb Natapov <gleb@redhat.com>,
	qemu-devel@nongnu.org, Sanjay Lal <sanjayl@kymasys.com>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Aurelien Jarno <aurelien@aurel32.net>
Subject: Re: [Qemu-devel] [PATCH v2 07/10] target-mips: kvm: Add main KVM support for MIPS
Date: Tue, 11 Feb 2014 10:54:48 +0000	[thread overview]
Message-ID: <52FA0178.10506@imgtec.com> (raw)
In-Reply-To: <52F8DD08.4070500@suse.de>

Hi Andreas,

On 10/02/14 14:07, Andreas Färber wrote:
>> +#define dprintf(fmt, ...) \
> 
> dprintf is the name of a stdio.h function, so DPRINTF may be a better name.

Okay.

>> +int kvm_arch_init_vcpu(CPUState *env)
> 
> Please use "env" only for CPUMIPSState, use "cpu" or "cs" here. The
> usual convention is "cs" for CPUState in target-*/ so that "cpu" can be
> used for MIPSCPU.

Okay.

>> +{
>> +    dprintf("%s\n", __func__);
>> +    return 0;
>> +}
>> +
>> +static inline int cpu_mips_io_interrupts_pending(CPUArchState *env)
> 
> Please don't use CPUArchState in MIPS-specific code, use CPUMIPSState.
> Although in this trivial case MIPSCPU would be more future-proof.

True.

>> +{
>> +    dprintf("%s: %#x\n", __func__, env->CP0_Cause & (1 << (2 + CP0Ca_IP)));
>> +    return env->CP0_Cause & (0x1 << (2 + CP0Ca_IP));
>> +}
>> +
>> +
>> +void kvm_arch_pre_run(CPUState *cs, struct kvm_run *run)
>> +{
>> +    MIPSCPU *cpu = MIPS_CPU(cs);
>> +    CPUMIPSState *env = &cpu->env;
>> +    int r;
>> +    struct kvm_mips_interrupt intr;
>> +
>> +    if ((cs->interrupt_request & CPU_INTERRUPT_HARD) &&
>> +            (cpu_mips_io_interrupts_pending(env))) {
> 
> Parentheses around cpu_mips_io_interrupts_pending() seem unnecessary
> here FWIW.

Good spot

>> +        intr.cpu = -1;
>> +        intr.irq = 2;
>> +        r = kvm_vcpu_ioctl(cs, KVM_INTERRUPT, &intr);
>> +        if (r < 0) {
>> +            printf("cpu %d fail inject %x\n", cs->cpu_index, intr.irq);
> 
> Should this really be a printf() rather than error_report() or trace point?

It looks like error_report() would indeed be better, thanks

>> +int kvm_mips_set_interrupt(CPUMIPSState *env, int irq, int level)
>> +{
>> +    CPUState *cs = ENV_GET_CPU(env);
> 
> CPU(mips_env_get_cpu(env)) please - ENV_GET_CPU() is for generic code
> only and supposed to go away.
> 
> Any chance a MIPSCPU *cpu (or CPUState *cs) argument can be used instead?

Yep, MIPSCPU can happily be used here (I thought the same thing after
fixing cpu_mips_io_interrupts_pending above).

Thanks for taking the time to review!

Cheers
James

  reply	other threads:[~2014-02-11 10:54 UTC|newest]

Thread overview: 58+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-12-16 14:12 [PATCH v2 00/10] KVM Support for MIPS32 Processors James Hogan
2013-12-16 14:12 ` [Qemu-devel] " James Hogan
2013-12-16 14:12 ` [PATCH v2 01/10] hw/mips/cputimer: Don't start periodic timer in KVM mode James Hogan
2013-12-16 14:12   ` [Qemu-devel] " James Hogan
2013-12-21 15:34   ` Aurelien Jarno
2013-12-21 15:34     ` [Qemu-devel] " Aurelien Jarno
2013-12-16 14:12 ` [PATCH v2 02/10] hw/mips: Add API to convert KVM guest KSEG0 <-> GPA James Hogan
2013-12-16 14:12   ` [Qemu-devel] " James Hogan
2013-12-21 15:34   ` Aurelien Jarno
2013-12-21 15:34     ` [Qemu-devel] " Aurelien Jarno
2013-12-16 14:12 ` [PATCH v2 03/10] target-mips: get_physical_address: Add defines for segment bases James Hogan
2013-12-16 14:12   ` [Qemu-devel] " James Hogan
2013-12-21 15:34   ` Aurelien Jarno
2013-12-21 15:34     ` [Qemu-devel] " Aurelien Jarno
2013-12-16 14:12 ` [PATCH v2 04/10] target-mips: get_physical_address: Add KVM awareness James Hogan
2013-12-16 14:12   ` [Qemu-devel] " James Hogan
2013-12-21 15:34   ` Aurelien Jarno
2013-12-21 15:34     ` [Qemu-devel] " Aurelien Jarno
2013-12-16 14:12 ` [PATCH v2 05/10] kvm: Set sigmask length to 16 for MIPS targets James Hogan
2013-12-16 14:12   ` [Qemu-devel] " James Hogan
2013-12-21 15:34   ` Aurelien Jarno
2013-12-21 15:34     ` [Qemu-devel] " Aurelien Jarno
2013-12-21 20:18   ` Peter Maydell
2013-12-21 20:18     ` Peter Maydell
2013-12-16 14:12 ` [PATCH v2 06/10] target-mips: Set target page size to 16K in KVM mode James Hogan
2013-12-16 14:12   ` [Qemu-devel] " James Hogan
2013-12-21 15:34   ` Aurelien Jarno
2013-12-21 15:34     ` [Qemu-devel] " Aurelien Jarno
2013-12-16 14:12 ` [PATCH v2 07/10] target-mips: kvm: Add main KVM support for MIPS James Hogan
2013-12-16 14:12   ` [Qemu-devel] " James Hogan
2013-12-21 15:35   ` Aurelien Jarno
2013-12-21 15:35     ` [Qemu-devel] " Aurelien Jarno
2014-02-10 14:07   ` Andreas Färber
2014-02-10 14:07     ` Andreas Färber
2014-02-11 10:54     ` James Hogan [this message]
2014-02-11 10:54       ` James Hogan
2013-12-16 14:12 ` [PATCH v2 08/10] hw/mips: In KVM mode, inject IRQ2 (I/O) interupts via ioctls James Hogan
2013-12-16 14:12   ` [Qemu-devel] " James Hogan
2013-12-21 15:41   ` Aurelien Jarno
2013-12-21 15:41     ` [Qemu-devel] " Aurelien Jarno
2013-12-21 20:40   ` Peter Maydell
2013-12-21 20:40     ` Peter Maydell
2013-12-16 14:12 ` [PATCH v2 09/10] hw/mips: malta: Add KVM support James Hogan
2013-12-16 14:12   ` [Qemu-devel] " James Hogan
2013-12-21 15:37   ` Aurelien Jarno
2013-12-21 15:37     ` [Qemu-devel] " Aurelien Jarno
2013-12-21 20:42   ` Peter Maydell
2013-12-21 20:42     ` Peter Maydell
2014-02-12 15:07     ` James Hogan
2014-02-12 15:07       ` [Qemu-devel] " James Hogan
2013-12-16 14:12 ` [PATCH v2 10/10] target-mips: Enable KVM support in build system James Hogan
2013-12-16 14:12   ` [Qemu-devel] " James Hogan
2013-12-21 15:38   ` Aurelien Jarno
2013-12-21 15:38     ` [Qemu-devel] " Aurelien Jarno
2013-12-21 18:59   ` Peter Maydell
2013-12-21 18:59     ` [Qemu-devel] " Peter Maydell
2013-12-23 12:31     ` James Hogan
2013-12-23 12:31       ` 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=52FA0178.10506@imgtec.com \
    --to=james.hogan@imgtec.com \
    --cc=afaerber@suse.de \
    --cc=aurelien@aurel32.net \
    --cc=gleb@redhat.com \
    --cc=kvm@vger.kernel.org \
    --cc=pbonzini@redhat.com \
    --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.