]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
mm: remove the struct hmm_device infrastructure
authorChristoph Hellwig <hch@lst.de>
Wed, 26 Jun 2019 12:27:01 +0000 (14:27 +0200)
committerJason Gunthorpe <jgg@mellanox.com>
Tue, 2 Jul 2019 14:59:21 +0000 (11:59 -0300)
This code is a trivial wrapper around device model helpers, which
should have been integrated into the driver device model usage from
the start.  Assuming it actually had users, which it never had since
the code was added more than 1 1/2 years ago.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Jason Gunthorpe <jgg@mellanox.com>
Reviewed-by: John Hubbard <jhubbard@nvidia.com>
Reviewed-by: Dan Williams <dan.j.williams@intel.com>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
include/linux/hmm.h
mm/hmm.c

index 044a36d7c3f80c14234c3f4c23bb1fc73fd63b3b..99765be3284d50269b57b77ee7c3ba33527addef 100644 (file)
@@ -751,26 +751,6 @@ static inline unsigned long hmm_devmem_page_get_drvdata(const struct page *page)
 {
        return page->hmm_data;
 }
-
-
-/*
- * struct hmm_device - fake device to hang device memory onto
- *
- * @device: device struct
- * @minor: device minor number
- */
-struct hmm_device {
-       struct device           device;
-       unsigned int            minor;
-};
-
-/*
- * A device driver that wants to handle multiple devices memory through a
- * single fake device can use hmm_device to do so. This is purely a helper and
- * it is not strictly needed, in order to make use of any HMM functionality.
- */
-struct hmm_device *hmm_device_new(void *drvdata);
-void hmm_device_put(struct hmm_device *hmm_device);
 #endif /* CONFIG_DEVICE_PRIVATE || CONFIG_DEVICE_PUBLIC */
 #else /* IS_ENABLED(CONFIG_HMM) */
 static inline void hmm_mm_destroy(struct mm_struct *mm) {}
index f702a3895d05d828dba9e59198c0914f8b5f5a72..00cc642b3d7ec485b95029735e9d8c83e52c9b7b 100644 (file)
--- a/mm/hmm.c
+++ b/mm/hmm.c
@@ -1528,84 +1528,4 @@ struct hmm_devmem *hmm_devmem_add_resource(const struct hmm_devmem_ops *ops,
        return devmem;
 }
 EXPORT_SYMBOL_GPL(hmm_devmem_add_resource);
-
-/*
- * A device driver that wants to handle multiple devices memory through a
- * single fake device can use hmm_device to do so. This is purely a helper
- * and it is not needed to make use of any HMM functionality.
- */
-#define HMM_DEVICE_MAX 256
-
-static DECLARE_BITMAP(hmm_device_mask, HMM_DEVICE_MAX);
-static DEFINE_SPINLOCK(hmm_device_lock);
-static struct class *hmm_device_class;
-static dev_t hmm_device_devt;
-
-static void hmm_device_release(struct device *device)
-{
-       struct hmm_device *hmm_device;
-
-       hmm_device = container_of(device, struct hmm_device, device);
-       spin_lock(&hmm_device_lock);
-       clear_bit(hmm_device->minor, hmm_device_mask);
-       spin_unlock(&hmm_device_lock);
-
-       kfree(hmm_device);
-}
-
-struct hmm_device *hmm_device_new(void *drvdata)
-{
-       struct hmm_device *hmm_device;
-
-       hmm_device = kzalloc(sizeof(*hmm_device), GFP_KERNEL);
-       if (!hmm_device)
-               return ERR_PTR(-ENOMEM);
-
-       spin_lock(&hmm_device_lock);
-       hmm_device->minor = find_first_zero_bit(hmm_device_mask, HMM_DEVICE_MAX);
-       if (hmm_device->minor >= HMM_DEVICE_MAX) {
-               spin_unlock(&hmm_device_lock);
-               kfree(hmm_device);
-               return ERR_PTR(-EBUSY);
-       }
-       set_bit(hmm_device->minor, hmm_device_mask);
-       spin_unlock(&hmm_device_lock);
-
-       dev_set_name(&hmm_device->device, "hmm_device%d", hmm_device->minor);
-       hmm_device->device.devt = MKDEV(MAJOR(hmm_device_devt),
-                                       hmm_device->minor);
-       hmm_device->device.release = hmm_device_release;
-       dev_set_drvdata(&hmm_device->device, drvdata);
-       hmm_device->device.class = hmm_device_class;
-       device_initialize(&hmm_device->device);
-
-       return hmm_device;
-}
-EXPORT_SYMBOL(hmm_device_new);
-
-void hmm_device_put(struct hmm_device *hmm_device)
-{
-       put_device(&hmm_device->device);
-}
-EXPORT_SYMBOL(hmm_device_put);
-
-static int __init hmm_init(void)
-{
-       int ret;
-
-       ret = alloc_chrdev_region(&hmm_device_devt, 0,
-                                 HMM_DEVICE_MAX,
-                                 "hmm_device");
-       if (ret)
-               return ret;
-
-       hmm_device_class = class_create(THIS_MODULE, "hmm_device");
-       if (IS_ERR(hmm_device_class)) {
-               unregister_chrdev_region(hmm_device_devt, HMM_DEVICE_MAX);
-               return PTR_ERR(hmm_device_class);
-       }
-       return 0;
-}
-
-device_initcall(hmm_init);
 #endif /* CONFIG_DEVICE_PRIVATE || CONFIG_DEVICE_PUBLIC */