All of lore.kernel.org
 help / color / mirror / Atom feed
From: Rusty Russell <rusty-8n+1lVoiYb80n/F98K4Iww@public.gmane.org>
To: Avi Kivity <avi-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
Cc: kvm-devel <kvm-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org>
Subject: Re: [PATCH 2/10] Trivial: Remove KVM_IRQ_BITMAP macro
Date: Wed, 18 Jul 2007 13:05:58 +1000	[thread overview]
Message-ID: <1184727958.10380.54.camel@localhost.localdomain> (raw)
In-Reply-To: <469CC367.1000107-atKUWr5tajBWk0Htik3J/w@public.gmane.org>

On Tue, 2007-07-17 at 16:25 +0300, Avi Kivity wrote:
> Rusty Russell wrote:
> > Creating one's own BITMAP macro seems suboptimal: if we use manual
> > arithmetic in the one place exposed to userspace, we can use standard
> > macros elsewhere.
> >
> > The - 7 + 8 calc is overkill: can NR_IRQ_WORDS ever really change?
> >   
> 
> Looks like it can:

Sure, but the number 256 is part of the x86 architecture.  A paravirt
guest could choose to have more interrupts, but is there really a point?

> >  /* for KVM_CREATE_MEMORY_REGION */
> >  struct kvm_memory_region {
> > @@ -163,7 +157,7 @@ struct kvm_sregs {
> >  	__u64 cr0, cr2, cr3, cr4, cr8;
> >  	__u64 efer;
> >  	__u64 apic_base;
> > -	__u64 interrupt_bitmap[KVM_IRQ_BITMAP_SIZE(__u64)];
> > +	__u64 interrupt_bitmap[(KVM_NR_INTERRUPTS + 7) / 8];
> >  };
> >  
> >   
> 
> The size is in bytes, but the element type is __u64.

Doh, fixed here:
==
Use standard BITMAP macros, open-code userspace-exposed header.

Creating one's own BITMAP macro seems suboptimal: if we use manual
arithmetic in the one place exposed to userspace, we can use standard
macros elsewhere.

Signed-off-by: Rusty Russell <rusty-8n+1lVoiYb80n/F98K4Iww@public.gmane.org>

diff -r 85a8c51d3df8 drivers/kvm/kvm.h
--- a/drivers/kvm/kvm.h	Tue Jul 17 13:10:00 2007 +1000
+++ b/drivers/kvm/kvm.h	Tue Jul 17 13:15:22 2007 +1000
@@ -342,8 +342,7 @@ struct kvm_vcpu {
 	int guest_mode;
 	unsigned long requests;
 	unsigned long irq_summary; /* bit vector: 1 per word in irq_pending */
-#define NR_IRQ_WORDS KVM_IRQ_BITMAP_SIZE(unsigned long)
-	unsigned long irq_pending[NR_IRQ_WORDS];
+	DECLARE_BITMAP(irq_pending, KVM_NR_INTERRUPTS);
 	unsigned long regs[NR_VCPU_REGS]; /* for rsp: vcpu_load_rsp_rip() */
 	unsigned long rip;      /* needs vcpu_load_rsp_rip() */
 
diff -r 85a8c51d3df8 drivers/kvm/kvm_main.c
--- a/drivers/kvm/kvm_main.c	Tue Jul 17 13:10:00 2007 +1000
+++ b/drivers/kvm/kvm_main.c	Tue Jul 17 16:26:10 2007 +1000
@@ -2122,7 +2122,7 @@ static int kvm_vcpu_ioctl_set_sregs(stru
 	memcpy(vcpu->irq_pending, sregs->interrupt_bitmap,
 	       sizeof vcpu->irq_pending);
 	vcpu->irq_summary = 0;
-	for (i = 0; i < NR_IRQ_WORDS; ++i)
+	for (i = 0; i < ARRAY_SIZE(vcpu->irq_pending); ++i)
 		if (vcpu->irq_pending[i])
 			__set_bit(i, &vcpu->irq_summary);
 
diff -r 85a8c51d3df8 include/linux/kvm.h
--- a/include/linux/kvm.h	Tue Jul 17 13:10:00 2007 +1000
+++ b/include/linux/kvm.h	Tue Jul 17 13:25:48 2007 +1000
@@ -12,14 +12,8 @@
 
 #define KVM_API_VERSION 12
 
-/*
- * Architectural interrupt line count, and the size of the bitmap needed
- * to hold them.
- */
+/* Architectural interrupt line count. */
 #define KVM_NR_INTERRUPTS 256
-#define KVM_IRQ_BITMAP_SIZE_BYTES    ((KVM_NR_INTERRUPTS + 7) / 8)
-#define KVM_IRQ_BITMAP_SIZE(type)    (KVM_IRQ_BITMAP_SIZE_BYTES / sizeof(type))
-
 
 /* for KVM_CREATE_MEMORY_REGION */
 struct kvm_memory_region {
@@ -163,7 +157,7 @@ struct kvm_sregs {
 	__u64 cr0, cr2, cr3, cr4, cr8;
 	__u64 efer;
 	__u64 apic_base;
-	__u64 interrupt_bitmap[KVM_IRQ_BITMAP_SIZE(__u64)];
+	__u64 interrupt_bitmap[(KVM_NR_INTERRUPTS + 63) / 64];
 };
 
 struct kvm_msr_entry {



-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/

  parent reply	other threads:[~2007-07-18  3:05 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-07-17 13:12 [PATCH 1/10] Trivial: /dev/kvm interface is no longer experimental Rusty Russell
     [not found] ` <1184677946.10380.4.camel-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
2007-07-17 13:14   ` [PATCH 2/10] Trivial: Remove KVM_IRQ_BITMAP macro Rusty Russell
     [not found]     ` <1184678060.10380.7.camel-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
2007-07-17 13:15       ` [PATCH 3/10] Trivial: Remove unused struct cpu_user_regs declaration Rusty Russell
     [not found]         ` <1184678129.10380.10.camel-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
2007-07-17 13:16           ` [PATCH 4/10] Trivial: Make decode_register() static Rusty Russell
     [not found]             ` <1184678171.10380.12.camel-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
2007-07-17 13:16               ` [PATCH 5/10] Trivial: Comment spelling may escape grep Rusty Russell
     [not found]                 ` <1184678216.10380.14.camel-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
2007-07-17 13:17                   ` [PATCH 6/10] Trivial: Avoid hardware_disable predeclaration Rusty Russell
     [not found]                     ` <1184678275.10380.16.camel-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
2007-07-17 13:19                       ` [PATCH 7/10] Trivial: Use standard CR0 flags macros from asm/cpu-features.h Rusty Russell
     [not found]                         ` <1184678348.10380.19.camel-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
2007-07-17 13:32                           ` [PATCH 8/10] Use standard CR3 flags, tighten checking Rusty Russell
     [not found]                             ` <1184679175.10380.25.camel-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
2007-07-17 13:34                               ` [PATCH 9/10] Use standard CR4 " Rusty Russell
2007-07-17 13:37                                 ` [PATCH 10/10] Use standard CR8 flags, and fix TPR definition Rusty Russell
2007-07-17 13:37                                   ` Rusty Russell
2007-07-17 13:44                                   ` Avi Kivity
2007-07-17 13:44                                     ` Avi Kivity
2007-07-17 16:01                                     ` H. Peter Anvin
2007-07-17 16:01                                       ` H. Peter Anvin
2007-07-17 16:00                                   ` H. Peter Anvin
2007-07-17 16:00                                     ` H. Peter Anvin
2007-07-18 18:09                                     ` Avi Kivity
2007-07-18 18:09                                       ` Avi Kivity
     [not found]                                 ` <1184679256.10380.27.camel-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
2007-07-17 13:40                                   ` [PATCH 9/10] Use standard CR4 flags, tighten checking Avi Kivity
2007-07-17 13:36                               ` [PATCH 8/10] Use standard CR3 " Avi Kivity
2007-07-17 13:33                           ` [PATCH 7/10] Trivial: Use standard CR0 flags macros from asm/cpu-features.h Avi Kivity
2007-07-17 13:32                       ` [PATCH 6/10] Trivial: Avoid hardware_disable predeclaration Avi Kivity
2007-07-17 13:29                   ` [PATCH 5/10] Trivial: Comment spelling may escape grep Avi Kivity
2007-07-17 13:29               ` [PATCH 4/10] Trivial: Make decode_register() static Avi Kivity
2007-07-17 13:28           ` [PATCH 3/10] Trivial: Remove unused struct cpu_user_regs declaration Avi Kivity
2007-07-17 13:25       ` [PATCH 2/10] Trivial: Remove KVM_IRQ_BITMAP macro Avi Kivity
     [not found]         ` <469CC367.1000107-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-07-18  3:05           ` Rusty Russell [this message]
     [not found]             ` <1184727958.10380.54.camel-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
2007-07-18  9:12               ` Avi Kivity
2007-07-17 13:28   ` [PATCH 1/10] Trivial: /dev/kvm interface is no longer experimental Avi Kivity
2007-07-17 16:35   ` Arnd Bergmann
     [not found]     ` <200707171835.53092.arnd-r2nGTMty4D4@public.gmane.org>
2007-07-17 23:49       ` Rusty Russell
     [not found]         ` <1184716197.10380.45.camel-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
2007-07-18  9:23           ` Avi Kivity
2007-07-18  9:31       ` Avi Kivity
     [not found]         ` <469DDDEB.9070009-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-07-18 23:43           ` Arnd Bergmann

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=1184727958.10380.54.camel@localhost.localdomain \
    --to=rusty-8n+1lvoiyb80n/f98k4iww@public.gmane.org \
    --cc=avi-atKUWr5tajBWk0Htik3J/w@public.gmane.org \
    --cc=kvm-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.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.