All of lore.kernel.org
 help / color / mirror / Atom feed
From: Eduardo Habkost <ehabkost@redhat.com>
To: "Andreas Färber" <afaerber@suse.de>
Cc: Igor Mammedov <imammedo@redhat.com>,
	Gleb Natapov <gleb@redhat.com>,
	qemu-devel@nongnu.org, Anthony Liguori <anthony@codemonkey.ws>,
	"kvm@vger.kernel.org list" <kvm@vger.kernel.org>
Subject: Re: [PATCH for-1.4 04/12] kvm: Create kvm_arch_vcpu_id() function
Date: Fri, 18 Jan 2013 12:20:14 -0200	[thread overview]
Message-ID: <20130118142013.GX10683@otherpad.lan.raisama.net> (raw)
In-Reply-To: <50F9480D.3040400@suse.de>

On Fri, Jan 18, 2013 at 02:03:09PM +0100, Andreas Färber wrote:
> Am 18.01.2013 13:53, schrieb Eduardo Habkost:
> > On Fri, Jan 18, 2013 at 12:11:29PM +0100, Andreas Färber wrote:
> > [...]
> >>> +/* Returns VCPU ID to be used on KVM_CREATE_VCPU ioctl() */
> >>> +unsigned long kvm_arch_vcpu_id(CPUState *cpu);
> >>> +
> >>>  void kvm_arch_reset_vcpu(CPUState *cpu);
> >>>  
> >>>  int kvm_arch_on_sigbus_vcpu(CPUState *cpu, int code, void *addr);
> >>> diff --git a/kvm-all.c b/kvm-all.c
> >>> index 6278d61..995220d 100644
> >>> --- a/kvm-all.c
> >>> +++ b/kvm-all.c
> >>> @@ -222,7 +222,7 @@ int kvm_init_vcpu(CPUState *cpu)
> >>>  
> >>>      DPRINTF("kvm_init_vcpu\n");
> >>>  
> >>> -    ret = kvm_vm_ioctl(s, KVM_CREATE_VCPU, cpu->cpu_index);
> >>> +    ret = kvm_vm_ioctl(s, KVM_CREATE_VCPU, kvm_arch_vcpu_id(cpu));
> >>>      if (ret < 0) {
> >>>          DPRINTF("kvm_create_vcpu failed\n");
> >>>          goto err;
> >>
> >> This is changing the vararg from int to unsigned long. I have no
> >> insights yet on how this is handled and whether that is okay; I would at
> >> least expect this change to be mentioned in the commit message.
> > 
> > It was an unexpected change (I didn't notice that cpu_index was int),
> > but strictly speaking the previous code was incorrect (as ioctl() gets
> > an unsigned long argument, not int). I doubt there are cases where it
> > would really break, but it is a good thing to fix it.
> > 
> > I agree this should be mentioned in the commit message, though. Will you
> > add it before committing, or should I resubmit?
> 
> Could you suggest a text for me to add please?

"The argument passed to KVM_CREATE_VCPU now has 'unsigned long' type
instead of 'int', as expected by the Linux ioctl() syscall. Maybe an int
works on most or all architectures supporting KVM, but it is safer to
use an appropriate 'unsigned long' parameter."

To find out if 'int' breaks on any architecture, I would need to check
the ABI specification for each architecture. I didn't do that, but I am
sure we should pass an unsigned long instead, if that's the type
expected by the kernel.

-- 
Eduardo

WARNING: multiple messages have this Message-ID (diff)
From: Eduardo Habkost <ehabkost@redhat.com>
To: "Andreas Färber" <afaerber@suse.de>
Cc: Igor Mammedov <imammedo@redhat.com>,
	Gleb Natapov <gleb@redhat.com>,
	qemu-devel@nongnu.org, Anthony Liguori <anthony@codemonkey.ws>,
	"kvm@vger.kernel.org list" <kvm@vger.kernel.org>
Subject: Re: [Qemu-devel] [PATCH for-1.4 04/12] kvm: Create kvm_arch_vcpu_id() function
Date: Fri, 18 Jan 2013 12:20:14 -0200	[thread overview]
Message-ID: <20130118142013.GX10683@otherpad.lan.raisama.net> (raw)
In-Reply-To: <50F9480D.3040400@suse.de>

On Fri, Jan 18, 2013 at 02:03:09PM +0100, Andreas Färber wrote:
> Am 18.01.2013 13:53, schrieb Eduardo Habkost:
> > On Fri, Jan 18, 2013 at 12:11:29PM +0100, Andreas Färber wrote:
> > [...]
> >>> +/* Returns VCPU ID to be used on KVM_CREATE_VCPU ioctl() */
> >>> +unsigned long kvm_arch_vcpu_id(CPUState *cpu);
> >>> +
> >>>  void kvm_arch_reset_vcpu(CPUState *cpu);
> >>>  
> >>>  int kvm_arch_on_sigbus_vcpu(CPUState *cpu, int code, void *addr);
> >>> diff --git a/kvm-all.c b/kvm-all.c
> >>> index 6278d61..995220d 100644
> >>> --- a/kvm-all.c
> >>> +++ b/kvm-all.c
> >>> @@ -222,7 +222,7 @@ int kvm_init_vcpu(CPUState *cpu)
> >>>  
> >>>      DPRINTF("kvm_init_vcpu\n");
> >>>  
> >>> -    ret = kvm_vm_ioctl(s, KVM_CREATE_VCPU, cpu->cpu_index);
> >>> +    ret = kvm_vm_ioctl(s, KVM_CREATE_VCPU, kvm_arch_vcpu_id(cpu));
> >>>      if (ret < 0) {
> >>>          DPRINTF("kvm_create_vcpu failed\n");
> >>>          goto err;
> >>
> >> This is changing the vararg from int to unsigned long. I have no
> >> insights yet on how this is handled and whether that is okay; I would at
> >> least expect this change to be mentioned in the commit message.
> > 
> > It was an unexpected change (I didn't notice that cpu_index was int),
> > but strictly speaking the previous code was incorrect (as ioctl() gets
> > an unsigned long argument, not int). I doubt there are cases where it
> > would really break, but it is a good thing to fix it.
> > 
> > I agree this should be mentioned in the commit message, though. Will you
> > add it before committing, or should I resubmit?
> 
> Could you suggest a text for me to add please?

"The argument passed to KVM_CREATE_VCPU now has 'unsigned long' type
instead of 'int', as expected by the Linux ioctl() syscall. Maybe an int
works on most or all architectures supporting KVM, but it is safer to
use an appropriate 'unsigned long' parameter."

To find out if 'int' breaks on any architecture, I would need to check
the ABI specification for each architecture. I didn't do that, but I am
sure we should pass an unsigned long instead, if that's the type
expected by the kernel.

-- 
Eduardo

  reply	other threads:[~2013-01-18 14:20 UTC|newest]

Thread overview: 58+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-01-17 20:59 [Qemu-devel] [PATCH for-1.4 00/12] target-i386: Fix APIC-ID-based topology (v4) Eduardo Habkost
2013-01-17 20:59 ` [Qemu-devel] [PATCH for-1.4 01/12] kvm: Add fake KVM_FEATURE_CLOCKSOURCE_STABLE_BIT for builds withou KVM Eduardo Habkost
2013-01-18 11:17   ` Andreas Färber
2013-01-18 11:36     ` Eduardo Habkost
2013-01-18 11:36       ` [Qemu-devel] " Eduardo Habkost
2013-01-18 11:48       ` Gleb Natapov
2013-01-18 11:48         ` [Qemu-devel] " Gleb Natapov
2013-01-18 12:41         ` Eduardo Habkost
2013-01-18 12:41           ` [Qemu-devel] " Eduardo Habkost
     [not found]   ` <20130122014335.GA31141@amt.cnet>
2013-01-22  4:59     ` Andreas Färber
2013-01-22 13:42       ` [Qemu-devel] " Eduardo Habkost
2013-01-22 21:37       ` Marcelo Tosatti
2013-01-17 20:59 ` [Qemu-devel] [PATCH for-1.4 02/12] target-i386: Don't set any KVM flag by default if KVM is disabled Eduardo Habkost
2013-01-18 10:58   ` Andreas Färber
2013-01-18 10:58     ` Andreas Färber
2013-01-18 11:00     ` Gleb Natapov
2013-01-18 11:00       ` [Qemu-devel] " Gleb Natapov
2013-01-17 20:59 ` [Qemu-devel] [PATCH for-1.4 03/12] pc: Reverse pc_init_pci() compatibility logic Eduardo Habkost
2013-01-21  3:39   ` Andreas Färber
2013-01-21  3:39     ` Andreas Färber
2013-01-21 11:02     ` Eduardo Habkost
2013-01-21 11:02       ` [Qemu-devel] " Eduardo Habkost
2013-01-21  9:12   ` Michael S. Tsirkin
2013-01-17 20:59 ` [Qemu-devel] [PATCH for-1.4 04/12] kvm: Create kvm_arch_vcpu_id() function Eduardo Habkost
2013-01-18 11:11   ` Andreas Färber
2013-01-18 11:11     ` Andreas Färber
2013-01-18 12:53     ` Eduardo Habkost
2013-01-18 12:53       ` [Qemu-devel] " Eduardo Habkost
2013-01-18 13:03       ` Andreas Färber
2013-01-18 13:03         ` Andreas Färber
2013-01-18 14:20         ` Eduardo Habkost [this message]
2013-01-18 14:20           ` Eduardo Habkost
2013-01-18 16:11           ` Eric Blake
2013-01-18 16:11             ` [Qemu-devel] " Eric Blake
2013-01-18 16:40             ` Eduardo Habkost
2013-01-18 17:46               ` Eric Blake
2013-01-18 17:46                 ` [Qemu-devel] " Eric Blake
2013-01-21 13:14                 ` Andreas Färber
2013-01-21 13:14                   ` Andreas Färber
2013-01-21 14:35                   ` Eric Blake
2013-01-22 15:54                     ` Eduardo Habkost
2013-01-17 20:59 ` [Qemu-devel] [PATCH for-1.4 05/12] target-i386: kvm: Set vcpu_id to APIC ID instead of CPU index Eduardo Habkost
2013-01-17 20:59 ` [Qemu-devel] [PATCH for-1.4 06/12] fw_cfg: Remove FW_CFG_MAX_CPUS from fw_cfg_init() Eduardo Habkost
2013-01-17 20:59 ` [Qemu-devel] [PATCH for-1.4 07/12] target-i386/cpu: Introduce apic_id_for_cpu() function Eduardo Habkost
2013-01-21 11:18   ` Andreas Färber
2013-01-21 11:31     ` Eduardo Habkost
2013-01-17 20:59 ` [Qemu-devel] [PATCH for-1.4 08/12] cpus.h: Make constant smp_cores/smp_threads available on *-user Eduardo Habkost
2013-01-17 20:59 ` [Qemu-devel] [PATCH for-1.4 09/12] pc: Set fw_cfg data based on APIC ID calculation Eduardo Habkost
2013-01-17 20:59 ` [Qemu-devel] [PATCH for-1.4 10/12] tests: Support target-specific unit tests Eduardo Habkost
2013-01-17 20:59 ` [Qemu-devel] [PATCH for-1.4 11/12] target-i386: Topology & APIC ID utility functions Eduardo Habkost
2013-01-21 11:28   ` Andreas Färber
2013-01-17 20:59 ` [Qemu-devel] [PATCH for-1.4 12/12] pc: Generate APIC IDs according to CPU topology Eduardo Habkost
2013-01-18  6:54 ` [Qemu-devel] [PATCH for-1.4 00/12] target-i386: Fix APIC-ID-based topology (v4) li guang
2013-01-18 14:49   ` Eduardo Habkost
2013-01-21  3:08     ` li guang
2013-01-18 15:49 ` Eduardo Habkost
2013-01-18 15:49   ` Eduardo Habkost
2013-01-21 12:31 ` Andreas Färber

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=20130118142013.GX10683@otherpad.lan.raisama.net \
    --to=ehabkost@redhat.com \
    --cc=afaerber@suse.de \
    --cc=anthony@codemonkey.ws \
    --cc=gleb@redhat.com \
    --cc=imammedo@redhat.com \
    --cc=kvm@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 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.