svn commit: r256379 - projects/amd64_xen_pv/sys/amd64/xen

Cherry G. Mathew cherry at FreeBSD.org
Sat Oct 12 14:23:34 UTC 2013


Author: cherry
Date: Sat Oct 12 14:23:33 2013
New Revision: 256379
URL: http://svnweb.freebsd.org/changeset/base/256379

Log:
  Initialise percpu vcpu_info properly with the dpcpu api
  
  Approved by: gibbs(implicit)

Modified:
  projects/amd64_xen_pv/sys/amd64/xen/machdep.c

Modified: projects/amd64_xen_pv/sys/amd64/xen/machdep.c
==============================================================================
--- projects/amd64_xen_pv/sys/amd64/xen/machdep.c	Sat Oct 12 14:21:04 2013	(r256378)
+++ projects/amd64_xen_pv/sys/amd64/xen/machdep.c	Sat Oct 12 14:23:33 2013	(r256379)
@@ -466,13 +466,6 @@ initxen(struct start_info *si)
 	KASSERT(PTOV(physfree) <= (xenstack + 512 * 1024), 
 		("Attempt to use unmapped va\n"));
 
-	/* Register the rest of free physical memory with phys_avail[] */
-	/* dump_avail[] starts at index 1 */
-	phys_avail[pa_index++] = physfree; 
-	dump_avail[pa_index] = physfree;
-	phys_avail[pa_index++] = ptoa(physmem);
-	dump_avail[pa_index] = ptoa(physmem);
-
 	/*
  	 * This may be done better later if it gets more high level
  	 * components in it. If so just link td->td_proc here.
@@ -532,9 +525,22 @@ initxen(struct start_info *si)
 
 	/* per cpu structures for cpu0 */
 	pcpu_init(pc, 0, sizeof(struct pcpu));
+
+	dpcpu_init((void *)(PTOV(physfree)), 0);
+	physfree += DPCPU_SIZE;
+
+	/* XXX: This is a hack until we have MP */
+	DPCPU_ID_SET(0, vcpu_info, &HYPERVISOR_shared_info->vcpu_info[0]);
+
+	/* Register the rest of free physical memory with phys_avail[] */
+	/* dump_avail[] starts at index 1 */
+	phys_avail[pa_index++] = physfree; 
+	dump_avail[pa_index] = physfree;
+	phys_avail[pa_index++] = ptoa(physmem);
+	dump_avail[pa_index] = ptoa(physmem);
+
 	PCPU_SET(prvspace, pc);
 	PCPU_SET(curthread, &thread0);
-
 	PCPU_SET(tssp, &common_tss[0]); /* Dummy - see definition */
 	PCPU_SET(commontssp, &common_tss[0]); /* Dummy - see definition */
 	PCPU_SET(fs32p, (void *)xpmap_ptom(VTOP(&gdt[GUFS32_SEL]))); /* Note: On Xen PV, we set the machine address. */


More information about the svn-src-projects mailing list