device-dax: Introduce bus + driver model
In support of multiple device-dax instances per device-dax-region and allowing the 'kmem' driver to attach to dax-instances instead of the current device-node access, convert the dax sub-system from a class to a bus. Recall that the kmem driver takes reserved / special purpose memories and assigns them to be managed by the core-mm. Aside from the fact the device-dax instances are registered and probed on a bus, two other lifetime-management changes are made: 1/ Delay attaching a cdev until driver probe time 2/ A new run_dax() helper is introduced to allow restoring dax-operation after a kill_dax() event. So, at driver ->probe() time we run_dax() and at ->remove() time we kill_dax() and invalidate all mappings. Signed-off-by: Dan Williams <dan.j.williams@intel.com>
このコミットが含まれているのは:
@@ -11,5 +11,21 @@ void dax_region_put(struct dax_region *dax_region);
|
||||
struct dax_region *alloc_dax_region(struct device *parent, int region_id,
|
||||
struct resource *res, unsigned int align, unsigned long flags);
|
||||
struct dev_dax *devm_create_dev_dax(struct dax_region *dax_region, int id);
|
||||
int __dax_driver_register(struct device_driver *drv,
|
||||
struct module *module, const char *mod_name);
|
||||
#define dax_driver_register(driver) \
|
||||
__dax_driver_register(driver, THIS_MODULE, KBUILD_MODNAME)
|
||||
void kill_dev_dax(struct dev_dax *dev_dax);
|
||||
|
||||
/*
|
||||
* While run_dax() is potentially a generic operation that could be
|
||||
* defined in include/linux/dax.h we don't want to grow any users
|
||||
* outside of drivers/dax/
|
||||
*/
|
||||
void run_dax(struct dax_device *dax_dev);
|
||||
|
||||
#define MODULE_ALIAS_DAX_DEVICE(type) \
|
||||
MODULE_ALIAS("dax:t" __stringify(type) "*")
|
||||
#define DAX_DEVICE_MODALIAS_FMT "dax:t%d"
|
||||
|
||||
#endif /* __DAX_BUS_H__ */
|
||||
|
新しいイシューから参照
ユーザーをブロックする