[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-changelog] [xen-unstable] Extend the max vcpu number for HVM guest.



# HG changeset patch
# User Keir Fraser <keir.fraser@xxxxxxxxxx>
# Date 1256827708 0
# Node ID 059c01d69a0882e9cf428df80a6b300bc6e401d7
# Parent  2d9ff985f8ecf63f54fc57f0371bd9faa662e98b
Extend the max vcpu number for HVM guest.
 - Originally the max vcpu number for HVM guest is 32, this patch
 extend the number to 128 on x86_64 hypervisor. (For i386 hypervisor,
 the max vcpu number  is still 32).
 - This patch extends the mp-table size to fit more vcpus.
 - HVM PV driver should call VCPUOP_register_vcpu_info hypercall to
 initialize the vcpu info if the vcpu number is more than 32.

Signed-off-by: Dongxiao Xu <dongxiao.xu@xxxxxxxxx>
Signed-off-by: Keir Fraser <keir.fraser@xxxxxxxxxx>
---
 tools/firmware/rombios/rombios.c |   47 ++++++++-------------------------------
 xen/arch/x86/mm/shadow/common.c  |    2 -
 xen/common/domctl.c              |    2 -
 xen/include/asm-ia64/config.h    |    1 
 xen/include/asm-x86/config.h     |    3 ++
 5 files changed, 16 insertions(+), 39 deletions(-)

diff -r 2d9ff985f8ec -r 059c01d69a08 tools/firmware/rombios/rombios.c
--- a/tools/firmware/rombios/rombios.c  Thu Oct 29 14:05:46 2009 +0000
+++ b/tools/firmware/rombios/rombios.c  Thu Oct 29 14:48:28 2009 +0000
@@ -10734,11 +10734,19 @@ post_init_pic:
   out  0xa1, AL ;slave  pic: unmask IRQ 12, 13, 14
   ret
 
+
+  .align 16
+smbios_entry_point:
+  db 0,0,0,0,0,0,0,0 ; 8 bytes
+  db 0,0,0,0,0,0,0,0 ; 16 bytes
+  db 0,0,0,0,0,0,0,0 ; 24 bytes
+  db 0,0,0,0,0,0,0   ; 31 bytes
+
 ;; the following area can be used to write dynamically generated tables
   .align 16
 bios_table_area_start:
-  dd 0xaafb4442
-  dd bios_table_area_end - bios_table_area_start - 8;
+  db 0x5F, 0x5F, 0x5F, 0x48, 0x56, 0x4D, 0x4D, 0x50 ;; ___HVMMP
+  dd bios_table_area_end - bios_table_area_start
 
 ;--------
 ;- POST -
@@ -11843,41 +11851,6 @@ static Bit8u vgafont8[128*8]=
  0x00, 0x10, 0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0x00,
 };
 
-#ifdef HVMASSIST
-ASM_START
-
-//
-// MP Tables
-// just carve out some blank space for HVMLOADER to write the MP tables to
-//
-// NOTE: There should be enough space for a 32 processor entry MP table
-//
-.org 0xcc00
-db 0x5F, 0x5F, 0x5F, 0x48, 0x56, 0x4D, 0x4D, 0x50 ;; ___HVMMP
-dw 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ;;  64 bytes
-dw 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ;; 128 bytes
-dw 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ;; 192 bytes
-dw 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ;; 256 bytes
-dw 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ;; 320 bytes
-dw 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ;; 384 bytes
-dw 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ;; 448 bytes
-dw 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ;; 512 bytes
-dw 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ;; 576 bytes
-dw 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ;; 640 bytes
-dw 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ;; 704 bytes
-dw 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ;; 768 bytes
-dw 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ;; 832 bytes
-dw 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ;; 896 bytes
-
-.align 16
-smbios_entry_point:
-db 0,0,0,0,0,0,0,0 ; 8 bytes
-db 0,0,0,0,0,0,0,0 ; 16 bytes
-db 0,0,0,0,0,0,0,0 ; 24 bytes
-db 0,0,0,0,0,0,0   ; 31 bytes
-ASM_END
-
-#endif // HVMASSIST
 ASM_START
 .org 0xcff0
 bios_table_area_end:
diff -r 2d9ff985f8ec -r 059c01d69a08 xen/arch/x86/mm/shadow/common.c
--- a/xen/arch/x86/mm/shadow/common.c   Thu Oct 29 14:05:46 2009 +0000
+++ b/xen/arch/x86/mm/shadow/common.c   Thu Oct 29 14:48:28 2009 +0000
@@ -3098,7 +3098,7 @@ int shadow_enable(struct domain *d, u32 
     {
         unsigned int r;
         shadow_lock(d);                
-        r = sh_set_allocation(d, 256, NULL); /* Use at least 1MB */
+        r = sh_set_allocation(d, 1024, NULL); /* Use at least 4MB */
         if ( r != 0 )
         {
             sh_set_allocation(d, 0, NULL);
diff -r 2d9ff985f8ec -r 059c01d69a08 xen/common/domctl.c
--- a/xen/common/domctl.c       Thu Oct 29 14:05:46 2009 +0000
+++ b/xen/common/domctl.c       Thu Oct 29 14:48:28 2009 +0000
@@ -456,7 +456,7 @@ long do_domctl(XEN_GUEST_HANDLE(xen_domc
         ret = -EINVAL;
         if ( (d == current->domain) || /* no domain_pause() */
              (max > MAX_VIRT_CPUS) ||
-             (is_hvm_domain(d) && max > XEN_LEGACY_MAX_VCPUS) )
+             (is_hvm_domain(d) && (max > MAX_HVM_VCPUS)) )
         {
             rcu_unlock_domain(d);
             break;
diff -r 2d9ff985f8ec -r 059c01d69a08 xen/include/asm-ia64/config.h
--- a/xen/include/asm-ia64/config.h     Thu Oct 29 14:05:46 2009 +0000
+++ b/xen/include/asm-ia64/config.h     Thu Oct 29 14:48:28 2009 +0000
@@ -32,6 +32,7 @@
 #define NR_CPUS 64
 #endif
 #define MAX_VIRT_CPUS XEN_LEGACY_MAX_VCPUS
+#define MAX_HVM_VCPUS MAX_VIRT_CPUS
 #define CONFIG_NUMA
 #define CONFIG_ACPI_NUMA
 #define NODES_SHIFT 8                          /* linux/asm/numnodes.h */
diff -r 2d9ff985f8ec -r 059c01d69a08 xen/include/asm-x86/config.h
--- a/xen/include/asm-x86/config.h      Thu Oct 29 14:05:46 2009 +0000
+++ b/xen/include/asm-x86/config.h      Thu Oct 29 14:48:28 2009 +0000
@@ -56,6 +56,9 @@
 /* Maximum number of virtual CPUs in multi-processor guests. */
 #define MAX_VIRT_CPUS XEN_LEGACY_MAX_VCPUS
 #endif
+
+/* Maximum we can support with current vLAPIC ID mapping. */
+#define MAX_HVM_VCPUS 128
 
 #ifdef CONFIG_X86_SUPERVISOR_MODE_KERNEL
 # define supervisor_mode_kernel (1)

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.