Module Name:    src
Committed By:   uebayasi
Date:           Sun Feb 28 05:03:58 UTC 2010

Modified Files:
        src/sys/dev [uebayasi-xip]: flash.c
        src/sys/miscfs/genfs [uebayasi-xip]: genfs_io.c
        src/sys/sys [uebayasi-xip]: dkio.h

Log Message:
To mount block devices as XIP, pass physical address "cookie" used by
bus_space_mmap(9) / pmap_phys_addr(9) via struct mount.


To generate a diff of this commit:
cvs rdiff -u -r1.1.2.3 -r1.1.2.4 src/sys/dev/flash.c
cvs rdiff -u -r1.36.2.2 -r1.36.2.3 src/sys/miscfs/genfs/genfs_io.c
cvs rdiff -u -r1.15.2.1 -r1.15.2.2 src/sys/sys/dkio.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/dev/flash.c
diff -u src/sys/dev/flash.c:1.1.2.3 src/sys/dev/flash.c:1.1.2.4
--- src/sys/dev/flash.c:1.1.2.3	Sun Feb 28 04:36:27 2010
+++ src/sys/dev/flash.c	Sun Feb 28 05:03:58 2010
@@ -1,4 +1,4 @@
-/*	$Id: flash.c,v 1.1.2.3 2010/02/28 04:36:27 uebayasi Exp $	*/
+/*	$Id: flash.c,v 1.1.2.4 2010/02/28 05:03:58 uebayasi Exp $	*/
 
 /*-
  * Copyright (c) 2010 Tsubai Masanari.  All rights reserved.
@@ -100,7 +100,8 @@
 		if (sc->sc_addr == 0)
 			error = EINVAL;
 		else
-			*(paddr_t *)data = sc->sc_addr;
+			*(paddr_t *)data = bus_space_mmap(sc->sc_iot,
+			    sc->sc_addr, 0, 0/* XXX prot */, BUS_SPACE_MAP_LINEAR);
 		break;
 #endif
 

Index: src/sys/miscfs/genfs/genfs_io.c
diff -u src/sys/miscfs/genfs/genfs_io.c:1.36.2.2 src/sys/miscfs/genfs/genfs_io.c:1.36.2.3
--- src/sys/miscfs/genfs/genfs_io.c:1.36.2.2	Tue Feb 23 07:46:28 2010
+++ src/sys/miscfs/genfs/genfs_io.c	Sun Feb 28 05:03:58 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: genfs_io.c,v 1.36.2.2 2010/02/23 07:46:28 uebayasi Exp $	*/
+/*	$NetBSD: genfs_io.c,v 1.36.2.3 2010/02/28 05:03:58 uebayasi Exp $	*/
 
 /*
  * Copyright (c) 1982, 1986, 1989, 1993
@@ -31,7 +31,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: genfs_io.c,v 1.36.2.2 2010/02/23 07:46:28 uebayasi Exp $");
+__KERNEL_RCSID(0, "$NetBSD: genfs_io.c,v 1.36.2.3 2010/02/28 05:03:58 uebayasi Exp $");
 
 #include "opt_device_page.h"
 #include "opt_xip.h"
@@ -808,7 +808,8 @@
 			/* unallocated page is redirected to read-only zero-filled page */
 			phys_addr = uvm_pageofzero_xip_phys_addr();
 		} else {
-			phys_addr = vp->v_mount->mnt_phys_addr +
+			/* bus_space_mmap cookie -> paddr_t */
+			phys_addr = pmap_phys_address(vp->v_mount->mnt_phys_addr) +
 			    (blkno << dev_bshift) +
 			    (off - (lbn << fs_bshift));
 		}

Index: src/sys/sys/dkio.h
diff -u src/sys/sys/dkio.h:1.15.2.1 src/sys/sys/dkio.h:1.15.2.2
--- src/sys/sys/dkio.h:1.15.2.1	Thu Feb 11 05:19:35 2010
+++ src/sys/sys/dkio.h	Sun Feb 28 05:03:58 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: dkio.h,v 1.15.2.1 2010/02/11 05:19:35 uebayasi Exp $	*/
+/*	$NetBSD: dkio.h,v 1.15.2.2 2010/02/28 05:03:58 uebayasi Exp $	*/
 
 /*
  * Copyright (c) 1987, 1988, 1993
@@ -105,7 +105,7 @@
 		/* get disk-info dictionary */
 #define	DIOCGDISKINFO	_IOR('d', 127, struct plistref)
 
-		/* get physical address if directly memory-mappable (XIP) */
+		/* get physical address cookie if directly memory-mappable (XIP) */
 #define	DIOCGPHYSADDR	_IOR('d', 128, paddr_t)
 
 #endif /* _SYS_DKIO_H_ */

Reply via email to