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

Re: [Xen-ia64-devel] [PATCH 14/14] memmap: allow huge size efi memory map of real machine



On Wed, Jun 06, 2007 at 03:54:40AM -0400, Jes Sorensen wrote:
> >>>>> "Isaku" == Isaku Yamahata <yamahata@xxxxxxxxxxxxx> writes:
> 
> Isaku> On Tue, May 22, 2007 at 07:32:28PM -0600, Alex Williamson
> Isaku> wrote:
> >> In this case NUM_MEM_DESCS should be very small since it's only
> >> adding the descriptors we add for xen and the rest is dynamically
> >> sized based on the number of entries in the MDT provided by
> >> firmware.  Thanks,
> 
> Isaku> I'll postpone reducing NUM_MEM_DESCS until memory corruption
> Isaku> fix.
> 
> Hi Isaku,

Hi Jes.


> Just catching up on old mail - I'm not really happy with this part
> from the current tree:
> 
> #define NUM_MEM_DESCS           64 //large enough
> 
> Is that what you are trying to reduce? Sorry I'm a bit behind on my
> email. Basically for dom0 thats a problem since on larger multi-node
> systems we easily have far more and we need at least one per node.

Before the patch, it is statically allocated as NUM_MEM_DESCS-sized array.
With the patch, the array is dynamically allocated.
So NUM_MEM_DESCS isn't necessary to be so large.
It can be reduced safely.

Probably you may want to check c/s 15155:c0cdcebc0377
of xen-ia64-unstable.hg.
I cite the essential part of it. Notice efi_memmap member.


+               fw_tables_size = sizeof(*fw_tables) +
+                       (ia64_boot_param->efi_memmap_size /
+                        ia64_boot_param->efi_memdesc_size + NUM_MEM_DESCS) *
+                       sizeof(fw_tables->efi_memmap[0]);
...
+               fw_tables =
+                   (struct fw_tables *)_xmalloc(fw_tables_size,
+                                                __alignof__(*fw_tables));
...
diff -r b46c2ff6dfb0 -r c0cdcebc0377 xen/include/asm-ia64/dom_fw_common.h
--- a/xen/include/asm-ia64/dom_fw_common.h      Thu May 31 14:47:08 2007 -0600
+++ b/xen/include/asm-ia64/dom_fw_common.h      Mon Jun 04 13:57:08 2007 -0600
@@ -64,16 +64,26 @@ struct fw_tables {
     /* End of SAL descriptors.  Do not forget to update checkum bound.  */
 
     fpswa_interface_t                   fpswa_inf;
-    efi_memory_desc_t                   efi_memmap[NUM_MEM_DESCS];
     unsigned long                       func_ptrs[2*NFUNCPTRS];
     struct xen_sal_data                 sal_data;
     unsigned char                       fw_vendor[sizeof(FW_VENDOR)];
+
+    /*
+     * These four member for domain builder internal use at virtualized
+     * efi memmap creation. They should be zero-cleared after use.
+     */
+    unsigned long                       fw_tables_size;
+    unsigned long                       fw_end_paddr;   
+    unsigned long                       fw_tables_end_paddr;
+    unsigned long                       num_mds;
+
+    efi_memory_desc_t                   efi_memmap[0];
 };
 #define FW_FIELD_MPA(field)                                     \
     FW_TABLES_BASE_PADDR + offsetof(struct fw_tables, field)


-- 
yamahata

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


 


Rackspace

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