[PATCH] uml: make the emulated iomem driver work on 2.6
authorJeff Dike <jdike@addtoit.com>
Wed, 8 Jun 2005 22:47:50 +0000 (15:47 -0700)
committerLinus Torvalds <torvalds@ppc970.osdl.org>
Wed, 8 Jun 2005 23:21:11 +0000 (16:21 -0700)
This makes the minimal fixes needed to make the UML iomem driver work in 2.6.

Signed-off-by: Jeff Dike <jdike@addtoit.com>
Cc: Paolo 'Blaisorblade' Giarrusso <blaisorblade@yahoo.it>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
arch/um/Kconfig_char
arch/um/drivers/mmapper_kern.c

index 3e50fdb..62d87b7 100644 (file)
@@ -204,5 +204,11 @@ config UML_RANDOM
        http://sourceforge.net/projects/gkernel/).  rngd periodically reads
        /dev/hwrng and injects the entropy into /dev/random.
 
+config MMAPPER
+       tristate "iomem emulation driver"
+       help
+       This driver allows a host file to be used as emulated IO memory inside
+       UML.
+
 endmenu
 
index a63231d..a37a5ac 100644 (file)
@@ -18,6 +18,7 @@
 #include <linux/slab.h>
 #include <linux/init.h> 
 #include <linux/smp_lock.h>
+#include <linux/miscdevice.h>
 #include <asm/uaccess.h>
 #include <asm/irq.h>
 #include <asm/pgtable.h>
@@ -117,24 +118,39 @@ static struct file_operations mmapper_fops = {
        .release        = mmapper_release,
 };
 
+static struct miscdevice mmapper_dev = {
+       .minor          = MISC_DYNAMIC_MINOR,
+       .name           = "mmapper",
+       .fops           = &mmapper_fops
+};
+
 static int __init mmapper_init(void)
 {
+       int err;
+
        printk(KERN_INFO "Mapper v0.1\n");
 
        v_buf = (char *) find_iomem("mmapper", &mmapper_size);
        if(mmapper_size == 0){
                printk(KERN_ERR "mmapper_init - find_iomem failed\n");
-               return(0);
+               goto out;
        }
 
-       p_buf = __pa(v_buf);
+       err = misc_register(&mmapper_dev);
+       if(err){
+               printk(KERN_ERR "mmapper - misc_register failed, err = %d\n",
+                      err);
+               goto out;
+       }
 
-       devfs_mk_cdev(MKDEV(30, 0), S_IFCHR|S_IRUGO|S_IWUGO, "mmapper");
-       return(0);
+       p_buf = __pa(v_buf);
+out:
+       return 0;
 }
 
 static void mmapper_exit(void)
 {
+       misc_deregister(&mmapper_dev);
 }
 
 module_init(mmapper_init);