From: Jeff Dike This makes the minimal fixes needed to make the UML iomem driver work in 2.6. Signed-off-by: Jeff Dike Signed-off-by: Andrew Morton --- arch/um/Kconfig_char | 6 ++++++ arch/um/drivers/mmapper_kern.c | 24 ++++++++++++++++++++---- 2 files changed, 26 insertions(+), 4 deletions(-) diff -puN arch/um/drivers/mmapper_kern.c~uml-make-the-emulated-iomem-driver-work-on-26 arch/um/drivers/mmapper_kern.c --- 25/arch/um/drivers/mmapper_kern.c~uml-make-the-emulated-iomem-driver-work-on-26 Mon Jun 6 15:36:46 2005 +++ 25-akpm/arch/um/drivers/mmapper_kern.c Mon Jun 6 15:36:46 2005 @@ -18,6 +18,7 @@ #include #include #include +#include #include #include #include @@ -117,24 +118,39 @@ static struct file_operations mmapper_fo .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); diff -puN arch/um/Kconfig_char~uml-make-the-emulated-iomem-driver-work-on-26 arch/um/Kconfig_char --- 25/arch/um/Kconfig_char~uml-make-the-emulated-iomem-driver-work-on-26 Mon Jun 6 15:36:46 2005 +++ 25-akpm/arch/um/Kconfig_char Mon Jun 6 15:36:46 2005 @@ -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 _