Re: [PATCH v6 04/16] target-i386: Add x86_set_hyperv.

2012-10-09 Thread Marcelo Tosatti
On Mon, Sep 24, 2012 at 10:32:06AM -0400, Don Slutz wrote:
 This is used to set the cpu object's hypervisor level to the default for 
 Microsoft's Hypervisor.
 
 Signed-off-by: Don Slutz d...@cloudswitch.com
 ---
  target-i386/cpu.c |9 +
  target-i386/cpu.h |2 ++
  2 files changed, 11 insertions(+), 0 deletions(-)
 
 diff --git a/target-i386/cpu.c b/target-i386/cpu.c
 index 451de12..48bdaf9 100644
 --- a/target-i386/cpu.c
 +++ b/target-i386/cpu.c
 @@ -1193,6 +1193,12 @@ static void x86_cpuid_set_hv_level(Object *obj, 
 Visitor *v, void *opaque,
  }
  
  #if !defined(CONFIG_USER_ONLY)
 +static void x86_set_hyperv(Object *obj, Error **errp)
 +{
 +object_property_set_int(obj, CPUID_HV_LEVEL_HYPERV,
 +hypervisor-level, errp);
 +}
 +
  static void x86_get_hv_spinlocks(Object *obj, Visitor *v, void *opaque,
   const char *name, Error **errp)
  {
 @@ -1215,6 +1221,7 @@ static void x86_set_hv_spinlocks(Object *obj, Visitor 
 *v, void *opaque,
  return;
  }
  hyperv_set_spinlock_retries(value);
 +x86_set_hyperv(obj, errp);
  }
  
  static void x86_get_hv_relaxed(Object *obj, Visitor *v, void *opaque,
 @@ -1235,6 +1242,7 @@ static void x86_set_hv_relaxed(Object *obj, Visitor *v, 
 void *opaque,
  return;
  }
  hyperv_enable_relaxed_timing(value);
 +x86_set_hyperv(obj, errp);
  }
  
  static void x86_get_hv_vapic(Object *obj, Visitor *v, void *opaque,
 @@ -1255,6 +1263,7 @@ static void x86_set_hv_vapic(Object *obj, Visitor *v, 
 void *opaque,
  return;
  }
  hyperv_enable_vapic_recommended(value);
 +x86_set_hyperv(obj, errp);
  }
  #endif
  
 diff --git a/target-i386/cpu.h b/target-i386/cpu.h
 index 1899f69..3152a4e 100644
 --- a/target-i386/cpu.h
 +++ b/target-i386/cpu.h
 @@ -488,6 +488,8 @@
  
  #define CPUID_VENDOR_VIA   CentaurHauls
  
 +#define CPUID_HV_LEVEL_HYPERV  0x4005
 +

Where this comes from? 

http://msdn.microsoft.com/en-us/library/windows/hardware/ff542428%28v=vs.85%29.aspx

has under Leaf 0x4000 (at very top of table):

EAX

The maximum input value for hypervisor CPUID information. For Microsoft
hypervisors, this value will be at least 0x4005. The vendor ID
signature should be used only for reporting and diagnostic purposes.

Is that the same 0x4005 as in this patch?

--
To unsubscribe from this list: send the line unsubscribe kvm in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v6 04/16] target-i386: Add x86_set_hyperv.

2012-10-09 Thread Marcelo Tosatti
On Tue, Oct 09, 2012 at 01:34:09PM -0300, Marcelo Tosatti wrote:
 On Mon, Sep 24, 2012 at 10:32:06AM -0400, Don Slutz wrote:
  This is used to set the cpu object's hypervisor level to the default for 
  Microsoft's Hypervisor.
  
  Signed-off-by: Don Slutz d...@cloudswitch.com
  ---
   target-i386/cpu.c |9 +
   target-i386/cpu.h |2 ++
   2 files changed, 11 insertions(+), 0 deletions(-)
  
  diff --git a/target-i386/cpu.c b/target-i386/cpu.c
  index 451de12..48bdaf9 100644
  --- a/target-i386/cpu.c
  +++ b/target-i386/cpu.c
  @@ -1193,6 +1193,12 @@ static void x86_cpuid_set_hv_level(Object *obj, 
  Visitor *v, void *opaque,
   }
   
   #if !defined(CONFIG_USER_ONLY)
  +static void x86_set_hyperv(Object *obj, Error **errp)
  +{
  +object_property_set_int(obj, CPUID_HV_LEVEL_HYPERV,
  +hypervisor-level, errp);
  +}
  +
   static void x86_get_hv_spinlocks(Object *obj, Visitor *v, void *opaque,
const char *name, Error **errp)
   {
  @@ -1215,6 +1221,7 @@ static void x86_set_hv_spinlocks(Object *obj, Visitor 
  *v, void *opaque,
   return;
   }
   hyperv_set_spinlock_retries(value);
  +x86_set_hyperv(obj, errp);
   }
   
   static void x86_get_hv_relaxed(Object *obj, Visitor *v, void *opaque,
  @@ -1235,6 +1242,7 @@ static void x86_set_hv_relaxed(Object *obj, Visitor 
  *v, void *opaque,
   return;
   }
   hyperv_enable_relaxed_timing(value);
  +x86_set_hyperv(obj, errp);
   }
   
   static void x86_get_hv_vapic(Object *obj, Visitor *v, void *opaque,
  @@ -1255,6 +1263,7 @@ static void x86_set_hv_vapic(Object *obj, Visitor *v, 
  void *opaque,
   return;
   }
   hyperv_enable_vapic_recommended(value);
  +x86_set_hyperv(obj, errp);
   }
   #endif
   
  diff --git a/target-i386/cpu.h b/target-i386/cpu.h
  index 1899f69..3152a4e 100644
  --- a/target-i386/cpu.h
  +++ b/target-i386/cpu.h
  @@ -488,6 +488,8 @@
   
   #define CPUID_VENDOR_VIA   CentaurHauls
   
  +#define CPUID_HV_LEVEL_HYPERV  0x4005
  +
 
 Where this comes from? 
 
 http://msdn.microsoft.com/en-us/library/windows/hardware/ff542428%28v=vs.85%29.aspx
 
 has under Leaf 0x4000 (at very top of table):
 
 EAX
 
 The maximum input value for hypervisor CPUID information. For Microsoft
 hypervisors, this value will be at least 0x4005. The vendor ID
 signature should be used only for reporting and diagnostic purposes.
 
 Is that the same 0x4005 as in this patch?

Yes, the #define can be reused:

#define HYPERV_CPUID_MIN0x4005

--
To unsubscribe from this list: send the line unsubscribe kvm in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v6 04/16] target-i386: Add x86_set_hyperv.

2012-10-09 Thread Don Slutz

On 10/09/12 13:17, Marcelo Tosatti wrote:

On Tue, Oct 09, 2012 at 01:34:09PM -0300, Marcelo Tosatti wrote:

On Mon, Sep 24, 2012 at 10:32:06AM -0400, Don Slutz wrote:

This is used to set the cpu object's hypervisor level to the default for 
Microsoft's Hypervisor.

Signed-off-by: Don Slutz d...@cloudswitch.com
---
  target-i386/cpu.c |9 +
  target-i386/cpu.h |2 ++
  2 files changed, 11 insertions(+), 0 deletions(-)

diff --git a/target-i386/cpu.c b/target-i386/cpu.c
index 451de12..48bdaf9 100644
--- a/target-i386/cpu.c
+++ b/target-i386/cpu.c
@@ -1193,6 +1193,12 @@ static void x86_cpuid_set_hv_level(Object *obj, Visitor 
*v, void *opaque,
  }
  
  #if !defined(CONFIG_USER_ONLY)

+static void x86_set_hyperv(Object *obj, Error **errp)
+{
+object_property_set_int(obj, CPUID_HV_LEVEL_HYPERV,
+hypervisor-level, errp);
+}
+
  static void x86_get_hv_spinlocks(Object *obj, Visitor *v, void *opaque,
   const char *name, Error **errp)
  {
@@ -1215,6 +1221,7 @@ static void x86_set_hv_spinlocks(Object *obj, Visitor *v, 
void *opaque,
  return;
  }
  hyperv_set_spinlock_retries(value);
+x86_set_hyperv(obj, errp);
  }
  
  static void x86_get_hv_relaxed(Object *obj, Visitor *v, void *opaque,

@@ -1235,6 +1242,7 @@ static void x86_set_hv_relaxed(Object *obj, Visitor *v, 
void *opaque,
  return;
  }
  hyperv_enable_relaxed_timing(value);
+x86_set_hyperv(obj, errp);
  }
  
  static void x86_get_hv_vapic(Object *obj, Visitor *v, void *opaque,

@@ -1255,6 +1263,7 @@ static void x86_set_hv_vapic(Object *obj, Visitor *v, 
void *opaque,
  return;
  }
  hyperv_enable_vapic_recommended(value);
+x86_set_hyperv(obj, errp);
  }
  #endif
  
diff --git a/target-i386/cpu.h b/target-i386/cpu.h

index 1899f69..3152a4e 100644
--- a/target-i386/cpu.h
+++ b/target-i386/cpu.h
@@ -488,6 +488,8 @@
  
  #define CPUID_VENDOR_VIA   CentaurHauls
  
+#define CPUID_HV_LEVEL_HYPERV  0x4005

+

Where this comes from?

http://msdn.microsoft.com/en-us/library/windows/hardware/ff542428%28v=vs.85%29.aspx

has under Leaf 0x4000 (at very top of table):

EAX

The maximum input value for hypervisor CPUID information. For Microsoft
hypervisors, this value will be at least 0x4005. The vendor ID
signature should be used only for reporting and diagnostic purposes.

Is that the same 0x4005 as in this patch?

Yes, the #define can be reused:

#define HYPERV_CPUID_MIN0x4005


Not as simple as it seems.

http://lists.nongnu.org/archive/html/qemu-devel/2012-09/msg03359.html

I can make sure this info is part of the commit message.
-Don Slutz
--
To unsubscribe from this list: send the line unsubscribe kvm in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v6 04/16] target-i386: Add x86_set_hyperv.

2012-10-09 Thread Marcelo Tosatti
On Tue, Oct 09, 2012 at 03:12:00PM -0400, Don Slutz wrote:
 On 10/09/12 13:17, Marcelo Tosatti wrote:
 On Tue, Oct 09, 2012 at 01:34:09PM -0300, Marcelo Tosatti wrote:
 On Mon, Sep 24, 2012 at 10:32:06AM -0400, Don Slutz wrote:
 This is used to set the cpu object's hypervisor level to the default for 
 Microsoft's Hypervisor.
 
 Signed-off-by: Don Slutz d...@cloudswitch.com
 ---
   target-i386/cpu.c |9 +
   target-i386/cpu.h |2 ++
   2 files changed, 11 insertions(+), 0 deletions(-)
 
 diff --git a/target-i386/cpu.c b/target-i386/cpu.c
 index 451de12..48bdaf9 100644
 --- a/target-i386/cpu.c
 +++ b/target-i386/cpu.c
 @@ -1193,6 +1193,12 @@ static void x86_cpuid_set_hv_level(Object *obj, 
 Visitor *v, void *opaque,
   }
   #if !defined(CONFIG_USER_ONLY)
 +static void x86_set_hyperv(Object *obj, Error **errp)
 +{
 +object_property_set_int(obj, CPUID_HV_LEVEL_HYPERV,
 +hypervisor-level, errp);
 +}
 +
   static void x86_get_hv_spinlocks(Object *obj, Visitor *v, void *opaque,
const char *name, Error **errp)
   {
 @@ -1215,6 +1221,7 @@ static void x86_set_hv_spinlocks(Object *obj, 
 Visitor *v, void *opaque,
   return;
   }
   hyperv_set_spinlock_retries(value);
 +x86_set_hyperv(obj, errp);
   }
   static void x86_get_hv_relaxed(Object *obj, Visitor *v, void *opaque,
 @@ -1235,6 +1242,7 @@ static void x86_set_hv_relaxed(Object *obj, Visitor 
 *v, void *opaque,
   return;
   }
   hyperv_enable_relaxed_timing(value);
 +x86_set_hyperv(obj, errp);
   }
   }
   static void x86_get_hv_vapic(Object *obj, Visitor *v, void *opaque,
 @@ -1255,6 +1263,7 @@ static void x86_set_hv_vapic(Object *obj, Visitor 
 *v, void *opaque,
   return;
   }
   hyperv_enable_vapic_recommended(value);
 +x86_set_hyperv(obj, errp);
   }
   #endif
 diff --git a/target-i386/cpu.h b/target-i386/cpu.h
 index 1899f69..3152a4e 100644
 --- a/target-i386/cpu.h
 +++ b/target-i386/cpu.h
 @@ -488,6 +488,8 @@
   #define CPUID_VENDOR_VIA   CentaurHauls
 +#define CPUID_HV_LEVEL_HYPERV  0x4005
 +
 Where this comes from?
 
 http://msdn.microsoft.com/en-us/library/windows/hardware/ff542428%28v=vs.85%29.aspx
 
 has under Leaf 0x4000 (at very top of table):
 
 EAX
 
 The maximum input value for hypervisor CPUID information. For Microsoft
 hypervisors, this value will be at least 0x4005. The vendor ID
 signature should be used only for reporting and diagnostic purposes.
 
 Is that the same 0x4005 as in this patch?
 Yes, the #define can be reused:
 
 #define HYPERV_CPUID_MIN0x4005
 
 Not as simple as it seems.
 
 http://lists.nongnu.org/archive/html/qemu-devel/2012-09/msg03359.html
 
 I can make sure this info is part of the commit message.
 -Don Slutz

Ok add a copy but have CPUID_MIN in the name (because
CPUID_HV_LEVEL_HYPERV is very confusing). Add a comment 

/* maximum input value for h... 
--
To unsubscribe from this list: send the line unsubscribe kvm in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH v6 04/16] target-i386: Add x86_set_hyperv.

2012-09-24 Thread Don Slutz
This is used to set the cpu object's hypervisor level to the default for 
Microsoft's Hypervisor.

Signed-off-by: Don Slutz d...@cloudswitch.com
---
 target-i386/cpu.c |9 +
 target-i386/cpu.h |2 ++
 2 files changed, 11 insertions(+), 0 deletions(-)

diff --git a/target-i386/cpu.c b/target-i386/cpu.c
index 451de12..48bdaf9 100644
--- a/target-i386/cpu.c
+++ b/target-i386/cpu.c
@@ -1193,6 +1193,12 @@ static void x86_cpuid_set_hv_level(Object *obj, Visitor 
*v, void *opaque,
 }
 
 #if !defined(CONFIG_USER_ONLY)
+static void x86_set_hyperv(Object *obj, Error **errp)
+{
+object_property_set_int(obj, CPUID_HV_LEVEL_HYPERV,
+hypervisor-level, errp);
+}
+
 static void x86_get_hv_spinlocks(Object *obj, Visitor *v, void *opaque,
  const char *name, Error **errp)
 {
@@ -1215,6 +1221,7 @@ static void x86_set_hv_spinlocks(Object *obj, Visitor *v, 
void *opaque,
 return;
 }
 hyperv_set_spinlock_retries(value);
+x86_set_hyperv(obj, errp);
 }
 
 static void x86_get_hv_relaxed(Object *obj, Visitor *v, void *opaque,
@@ -1235,6 +1242,7 @@ static void x86_set_hv_relaxed(Object *obj, Visitor *v, 
void *opaque,
 return;
 }
 hyperv_enable_relaxed_timing(value);
+x86_set_hyperv(obj, errp);
 }
 
 static void x86_get_hv_vapic(Object *obj, Visitor *v, void *opaque,
@@ -1255,6 +1263,7 @@ static void x86_set_hv_vapic(Object *obj, Visitor *v, 
void *opaque,
 return;
 }
 hyperv_enable_vapic_recommended(value);
+x86_set_hyperv(obj, errp);
 }
 #endif
 
diff --git a/target-i386/cpu.h b/target-i386/cpu.h
index 1899f69..3152a4e 100644
--- a/target-i386/cpu.h
+++ b/target-i386/cpu.h
@@ -488,6 +488,8 @@
 
 #define CPUID_VENDOR_VIA   CentaurHauls
 
+#define CPUID_HV_LEVEL_HYPERV  0x4005
+
 #define CPUID_MWAIT_IBE (1  1) /* Interrupts can exit capability */
 #define CPUID_MWAIT_EMX (1  0) /* enumeration supported */
 
-- 
1.7.1

--
To unsubscribe from this list: send the line unsubscribe kvm in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html