*/
 struct dmirror_device {
        struct cdev             cdevice;
-       struct hmm_devmem       *devmem;
        unsigned int            zone_device_type;
+       struct device           device;
 
        unsigned int            devmem_capacity;
        unsigned int            devmem_count;
 
        cdev_init(&mdevice->cdevice, &dmirror_fops);
        mdevice->cdevice.owner = THIS_MODULE;
-       ret = cdev_add(&mdevice->cdevice, dev, 1);
+       device_initialize(&mdevice->device);
+       mdevice->device.devt = dev;
+
+       ret = dev_set_name(&mdevice->device, "hmm_dmirror%u", id);
+       if (ret)
+               return ret;
+
+       ret = cdev_device_add(&mdevice->cdevice, &mdevice->device);
        if (ret)
                return ret;
 
                kfree(mdevice->devmem_chunks);
        }
 
-       cdev_del(&mdevice->cdevice);
+       cdev_device_del(&mdevice->cdevice, &mdevice->device);
 }
 
 static int __init hmm_dmirror_init(void)
 
                        usage
                fi
        fi
-       if [ $? == 0 ]; then
-               major=$(awk "\$2==\"HMM_DMIRROR\" {print \$1}" /proc/devices)
-               mknod /dev/hmm_dmirror0 c $major 0
-               mknod /dev/hmm_dmirror1 c $major 1
-               if [ $# -eq 2 ]; then
-                       mknod /dev/hmm_dmirror2 c $major 2
-                       mknod /dev/hmm_dmirror3 c $major 3
-               fi
-       fi
 }
 
 unload_driver()
 {
        modprobe -r $DRIVER > /dev/null 2>&1
-       rm -f /dev/hmm_dmirror?
 }
 
 run_smoke()