PERFORCE change 130248 for review

Kip Macy kmacy at FreeBSD.org
Tue Dec 4 22:50:36 PST 2007


http://perforce.freebsd.org/chv.cgi?CH=130248

Change 130248 by kmacy at entropy_kmacy_xen31 on 2007/12/05 06:49:52

	import missing header files for xen_machdep.c
	make neccessary changes to get xen_machdep.c to build

Affected files ...

.. //depot/projects/xen31/sys/i386/include/cpufunc.h#2 edit
.. //depot/projects/xen31/sys/i386/include/pmap.h#4 edit
.. //depot/projects/xen31/sys/i386/include/xen/evtchn.h#1 add
.. //depot/projects/xen31/sys/i386/include/xen/synch_bitops.h#1 add
.. //depot/projects/xen31/sys/i386/include/xen/xen-os.h#2 edit
.. //depot/projects/xen31/sys/i386/include/xen/xen-public/grant_table.h#2 edit
.. //depot/projects/xen31/sys/i386/include/xen/xen-public/xen.h#2 edit
.. //depot/projects/xen31/sys/i386/xen/xen_machdep.c#2 edit

Differences ...

==== //depot/projects/xen31/sys/i386/include/cpufunc.h#2 (text+ko) ====

@@ -42,6 +42,18 @@
 #error this file needs sys/cdefs.h as a prerequisite
 #endif
 
+#ifdef XEN
+#include <machine/psl.h>
+#define NO_EXCHANGE
+#include <machine/xen/xen-os.h>
+#include <machine/xen/evtchn.h>
+#include <vm/vm.h>
+#include <vm/vm_page.h>
+#include <machine/xen/xenpmap.h>
+#include <machine/xen/xenvar.h>
+struct thread;
+#endif
+
 struct region_descriptor;
 
 #define readb(va)	(*(volatile u_int8_t *) (va))

==== //depot/projects/xen31/sys/i386/include/pmap.h#4 (text+ko) ====

@@ -192,6 +192,7 @@
 
 
 #ifdef XEN
+#include <machine/xen/hypervisor-ifs.h>
 #include <machine/xen/xen-os.h>
 #include <machine/xen/xenvar.h>
 #include <machine/xen/xenpmap.h>
@@ -202,6 +203,8 @@
 #define FALSE 0
 #endif
 
+#define PG_KERNEL  (PG_V | PG_A | PG_RW | PG_M)
+
 static __inline vm_paddr_t
 pmap_kextract_ma(vm_offset_t va)
 {
@@ -227,6 +230,26 @@
 void    pmap_map_readonly(struct pmap *pmap, vm_offset_t va, int len);
 void    pmap_map_readwrite(struct pmap *pmap, vm_offset_t va, int len);
 
+static __inline pt_entry_t
+pte_load_clear(pt_entry_t *ptep)
+{
+	pt_entry_t r;
+
+	r = PT_GET(ptep);
+	PT_CLEAR_VA(ptep, TRUE);
+	return (r);
+}
+static __inline pt_entry_t
+pte_load_store(pt_entry_t *ptep, pt_entry_t v)
+{
+	pt_entry_t r;
+	r = PT_GET(ptep);
+	PT_SET_VA(ptep, v, TRUE);
+	return (r);
+}
+
+#define	pte_store(ptep, pte)	pte_load_store((ptep), (pt_entry_t)pte)
+
 #else
 /*
  *	Routine:	pmap_kextract
@@ -338,7 +361,7 @@
 	*ptep = pte;
 }
 
-#endif /* PAE */
+#endif /* !PAE */
 
 #define	pte_clear(ptep)		pte_store((ptep), (pt_entry_t)0ULL)
 

==== //depot/projects/xen31/sys/i386/include/xen/xen-os.h#2 (text+ko) ====

@@ -12,7 +12,9 @@
 #define NULL (void *)0
 #endif
 
+#ifndef PANIC_IF
 #define PANIC_IF(exp) if (unlikely(exp)) {printk("panic - %s: %s:%d\n",#exp, __FILE__, __LINE__); panic("%s: %s:%d", #exp, __FILE__, __LINE__);} 
+#endif
 
 /* Somewhere in the middle of the GCC 2.96 development cycle, we implemented
    a mechanism by which the user can annotate likely branch directions and
@@ -146,9 +148,15 @@
 #define spin_unlock_irqrestore mtx_unlock_irqrestore
 
 
+#ifndef mb
 #define mb() __asm__ __volatile__("lock; addl $0, 0(%%esp)": : :"memory")
+#endif
+#ifndef rmb
 #define rmb() mb()
+#endif
+#ifndef wmb
 #define wmb() barrier()
+#endif
 #ifdef SMP
 #define smp_mb() mb() 
 #define smp_rmb() rmb()
@@ -217,7 +225,7 @@
  * This operation is atomic and cannot be reordered.  
  * It also implies a memory barrier.
  */
-static __inline__ int test_and_clear_bit(int nr, volatile void * addr)
+static __inline int test_and_clear_bit(int nr, volatile void * addr)
 {
         int oldbit;
 
@@ -228,12 +236,12 @@
         return oldbit;
 }
 
-static __inline__ int constant_test_bit(int nr, const volatile void * addr)
+static __inline int constant_test_bit(int nr, const volatile void * addr)
 {
     return ((1UL << (nr & 31)) & (((const volatile unsigned int *) addr)[nr >> 5])) != 0;
 }
 
-static __inline__ int variable_test_bit(int nr, volatile void * addr)
+static __inline int variable_test_bit(int nr, volatile void * addr)
 {
     int oldbit;
     

==== //depot/projects/xen31/sys/i386/include/xen/xen-public/grant_table.h#2 (text+ko) ====

@@ -235,11 +235,11 @@
 #define GNTTABOP_transfer                4
 typedef struct gnttab_transfer {
     /* IN parameters. */
-    unsigned long mfn;
-    domid_t       domid;
-    grant_ref_t   ref;
+    xen_pfn_t       mfn;
+    domid_t         domid;
+    grant_ref_t     ref;
     /* OUT parameters. */
-    int16_t       status;
+    int16_t         status;
 } gnttab_transfer_t;
 DEFINE_GUEST_HANDLE(gnttab_transfer_t);
 

==== //depot/projects/xen31/sys/i386/include/xen/xen-public/xen.h#2 (text+ko) ====

@@ -19,6 +19,8 @@
 #error "Unsupported architecture"
 #endif
 
+typedef unsigned long xen_pfn_t;
+
 /*
  * XEN "SYSTEM CALLS" (a.k.a. HYPERCALLS).
  */
@@ -406,8 +408,16 @@
     uint32_t flags;             /* SIF_xxx flags.                         */
     unsigned long store_mfn;    /* MACHINE page number of shared page.    */
     uint32_t store_evtchn;      /* Event channel for store communication. */
-    unsigned long console_mfn;  /* MACHINE address of console page.       */
-    uint32_t console_evtchn;    /* Event channel for console messages.    */
+    union {
+        struct {
+            xen_pfn_t mfn;      /* MACHINE page number of console page.   */
+            uint32_t  evtchn;   /* Event channel for console page.        */
+        } domU;
+        struct {
+            uint32_t info_off;  /* Offset of console_info struct.         */
+            uint32_t info_size; /* Size of console_info struct from start.*/
+        } dom0;
+    } console;
     /* THE FOLLOWING ARE ONLY FILLED IN ON INITIAL BOOT (NOT RESUME).     */
     unsigned long pt_base;      /* VIRTUAL address of page directory.     */
     unsigned long nr_pt_frames; /* Number of bootstrap p.t. frames.       */

==== //depot/projects/xen31/sys/i386/xen/xen_machdep.c#2 (text+ko) ====

@@ -59,6 +59,10 @@
 #include <machine/xen/xenfunc.h>
 #include <machine/xen/xen-public/memory.h>
 
+#ifdef SMP
+#include <machine/privatespace.h>
+#endif
+
 #define	IDTVEC(name)	__CONCAT(X,name)
 
 extern inthand_t
@@ -787,18 +791,19 @@
 	cur_space += PAGE_SIZE;
 	console_page = (char *)cur_space;
 	PT_SET_MA(console_page,
-		  (xen_start_info->console_mfn << PAGE_SHIFT)| PG_KERNEL);
+		  (xen_start_info->console.domU.mfn << PAGE_SHIFT)| PG_KERNEL);
 	cur_space += PAGE_SIZE;
 
 	printk("#5\n");
 
 	HYPERVISOR_shared_info->arch.pfn_to_mfn_frame_list_list = (unsigned long)xen_phys_machine;
-#ifdef SMP
+#if 0 && defined(SMP)
 	for (i = 0; i < ncpus; i++) {
-		int npages = (sizeof(struct privatespace) + 1)/PAGE_SIZE;
+		int j, npages = (sizeof(struct privatespace) + 1)/PAGE_SIZE;
+
 		for (j = 0; j < npages; j++) {
-			vm_paddr_t ma = xpmap_ptom(tmpindex << PAGE_SHIFT);
-			tmpindex++;
+			vm_paddr_t ma = xpmap_ptom(cur_space);
+			cur_space += PAGE_SIZE;
 			PT_SET_VA_MA(SMPpt + i*npages + j, ma | PG_KERNEL, FALSE);
 		}
 	}
@@ -1007,7 +1012,7 @@
 	pmap_kremove(HYPERVISOR_shared_info);
 
 	xen_start_info->store_mfn = mfn_to_pfn(xen_start_info->store_mfn);
-	xen_start_info->console_mfn = mfn_to_pfn(xen_start_info->console_mfn);
+	xen_start_info->console.domU.mfn = mfn_to_pfn(xen_start_info->console.domU.mfn);
 
 	/*
 	 * We'll stop somewhere inside this hypercall. When it returns,


More information about the p4-projects mailing list