svn commit: r203202 - projects/ppc64/sys/powerpc/mambo
Nathan Whitehorn
nwhitehorn at FreeBSD.org
Sat Jan 30 18:04:57 UTC 2010
Author: nwhitehorn
Date: Sat Jan 30 18:04:56 2010
New Revision: 203202
URL: http://svn.freebsd.org/changeset/base/203202
Log:
Make Mambo disk behave slightly better in the case of very large (> 4 GB)
disk images. It still has issues.
Modified:
projects/ppc64/sys/powerpc/mambo/mambo_disk.c
projects/ppc64/sys/powerpc/mambo/mambocall.h
Modified: projects/ppc64/sys/powerpc/mambo/mambo_disk.c
==============================================================================
--- projects/ppc64/sys/powerpc/mambo/mambo_disk.c Sat Jan 30 18:00:16 2010 (r203201)
+++ projects/ppc64/sys/powerpc/mambo/mambo_disk.c Sat Jan 30 18:04:56 2010 (r203202)
@@ -112,7 +112,6 @@ mambodisk_attach(device_t dev)
d->d_open = mambodisk_open;
d->d_close = mambodisk_close;
d->d_strategy = mambodisk_strategy;
- // d->d_dump = mambodisk_dump; Need polling mmc layer
d->d_name = "mambodisk";
d->d_drv1 = sc;
d->d_maxsize = MAXPHYS; /* Maybe ask bridge? */
@@ -123,7 +122,7 @@ mambodisk_attach(device_t dev)
d->d_unit = device_get_unit(dev);
d->d_mediasize = mambocall(MAMBO_DISK_INFO,MAMBO_INFO_DEVSZ,d->d_unit)
- * 1024; /* Mambo gives size in KB */
+ * 1024ULL; /* Mambo gives size in KB */
mb = d->d_mediasize >> 20; /* 1MiB == 1 << 20 */
unit = 'M';
@@ -197,10 +196,11 @@ mambodisk_task(void *arg)
{
struct mambodisk_softc *sc = (struct mambodisk_softc*)arg;
struct bio *bp;
- int sz, result;
+ size_t sz;
+ int result;
daddr_t block, end;
device_t dev;
- uint32_t unit;
+ u_long unit;
dev = sc->dev;
unit = device_get_unit(dev);
@@ -220,7 +220,7 @@ mambodisk_task(void *arg)
sz = sc->disk->d_sectorsize;
end = bp->bio_pblkno + (bp->bio_bcount / sz);
for (block = bp->bio_pblkno; block < end;) {
- uint32_t numblocks;
+ u_long numblocks;
char *vaddr = bp->bio_data +
(block - bp->bio_pblkno) * sz;
@@ -230,10 +230,10 @@ mambodisk_task(void *arg)
if (bp->bio_cmd == BIO_READ) {
result = mambocall(MAMBO_DISK_READ, vaddr,
- (uint32_t)block, (numblocks << 16) | unit);
+ (u_long)block, (numblocks << 16) | unit);
} else if (bp->bio_cmd == BIO_WRITE) {
result = mambocall(MAMBO_DISK_WRITE, vaddr,
- (uint32_t)block, (numblocks << 16) | unit);
+ (u_long)block, (numblocks << 16) | unit);
} else {
result = 1;
}
Modified: projects/ppc64/sys/powerpc/mambo/mambocall.h
==============================================================================
--- projects/ppc64/sys/powerpc/mambo/mambocall.h Sat Jan 30 18:00:16 2010 (r203201)
+++ projects/ppc64/sys/powerpc/mambo/mambocall.h Sat Jan 30 18:04:56 2010 (r203202)
@@ -30,6 +30,6 @@
#ifndef _MAMBO_MAMBOCALL_H_
#define _MAMBO_MAMBOCALL_H_
-int mambocall(int op, ...);
+long mambocall(int op, ...);
#endif /* _MAMBO_MAMBOCALL_H_ */
More information about the svn-src-projects
mailing list