Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 22 Jun 2005 01:36:38 GMT
From:      Paul Saab <ps@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 78791 for review
Message-ID:  <200506220136.j5M1acB1091411@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=78791

Change 78791 by ps@butter.corp on 2005/06/22 01:36:25

	the dumper routines expect a virtual address, not a physical
	one.  Peter, you can clean this up, but it works.

Affected files ...

.. //depot/projects/hammer/sys/amd64/amd64/dump_machdep.c#10 edit

Differences ...

==== //depot/projects/hammer/sys/amd64/amd64/dump_machdep.c#10 (text+ko) ====

@@ -149,14 +149,16 @@
 cb_dumpdata(struct md_pa *mdp, int seqnr, void *arg)
 {
 	struct dumperinfo *di = (struct dumperinfo*)arg;
-	vm_offset_t pa;
+	vm_paddr_t a, pa;
+	void *va;
 	uint64_t pgs;
 	size_t counter, sz;
-	int c, error, twiddle;
+	int i, c, error, twiddle;
 
 	error = 0;	/* catch case in which chunk size is 0 */
 	counter = 0;	/* Update twiddle every 16MB */
 	twiddle = 0;
+	va = 0;
 	pgs = (mdp->md_end - mdp->md_start) / PAGE_SIZE;
 	pa = mdp->md_start;
 
@@ -170,7 +172,11 @@
 			printf("%c\b", "|/-\\"[twiddle++ & 3]);
 			counter &= (1<<24) - 1;
 		}
-		error = di->dumper(di->priv, (void*)pa, 0, dumplo, sz);
+		for (i = 0; i < sz >> PAGE_SHIFT; i++) {
+			a = pa + i * PAGE_SIZE;
+			va = pmap_kenter_temporary(trunc_page(a), i);
+		}
+		error = di->dumper(di->priv, (void*)va, 0, dumplo, sz);
 		if (error)
 			break;
 		dumplo += sz;



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200506220136.j5M1acB1091411>