Message ID | 20210715194125.898305-5-ben.widawsky@intel.com |
---|---|
State | New, archived |
Headers | show |
Series | CXL core reorganization | expand |
On Thu, Jul 15, 2021 at 12:41 PM Ben Widawsky <ben.widawsky@intel.com> wrote: > > In order to merge the memdev specific functionality of cxl_pci into > core, the character device creation currently handled by cxl_pci need to > be moved. The rest of the changes are largely cut/paste, the actual > functional change is done here in preparation. > > Signed-off-by: Ben Widawsky <ben.widawsky@intel.com> > --- > drivers/cxl/core/bus.c | 12 ++++++++++++ > drivers/cxl/mem.h | 2 ++ > drivers/cxl/pci.c | 14 +------------- > 3 files changed, 15 insertions(+), 13 deletions(-) > > diff --git a/drivers/cxl/core/bus.c b/drivers/cxl/core/bus.c > index 33196813ebcb..8c2351c52d2b 100644 > --- a/drivers/cxl/core/bus.c > +++ b/drivers/cxl/core/bus.c > @@ -22,6 +22,8 @@ > * instantiated by the core. > */ > > +int cxl_mem_major; > +EXPORT_SYMBOL_GPL(cxl_mem_major); This symbol export is necessary here, but it's not needed by the end of the series which leads me to question this fine grained split. I think the shutdown patch is suitable to split, but this one and the last can be squashed. > static DEFINE_IDA(cxl_port_ida); > > static ssize_t devtype_show(struct device *dev, struct device_attribute *attr, > @@ -632,12 +634,22 @@ EXPORT_SYMBOL_GPL(cxl_bus_type); > > static __init int cxl_core_init(void) > { > + dev_t devt; > + int rc; > + > + rc = alloc_chrdev_region(&devt, 0, CXL_MEM_MAX_DEVS, "cxl"); > + if (rc) > + return rc; > + > + cxl_mem_major = MAJOR(devt); I'd rather have cxl_core_{init,exit}() call something like cxl_memdev_{init,exit}() that way cxl_mem_major can become static again.
diff --git a/drivers/cxl/core/bus.c b/drivers/cxl/core/bus.c index 33196813ebcb..8c2351c52d2b 100644 --- a/drivers/cxl/core/bus.c +++ b/drivers/cxl/core/bus.c @@ -22,6 +22,8 @@ * instantiated by the core. */ +int cxl_mem_major; +EXPORT_SYMBOL_GPL(cxl_mem_major); static DEFINE_IDA(cxl_port_ida); static ssize_t devtype_show(struct device *dev, struct device_attribute *attr, @@ -632,12 +634,22 @@ EXPORT_SYMBOL_GPL(cxl_bus_type); static __init int cxl_core_init(void) { + dev_t devt; + int rc; + + rc = alloc_chrdev_region(&devt, 0, CXL_MEM_MAX_DEVS, "cxl"); + if (rc) + return rc; + + cxl_mem_major = MAJOR(devt); + return bus_register(&cxl_bus_type); } static void cxl_core_exit(void) { bus_unregister(&cxl_bus_type); + unregister_chrdev_region(MKDEV(cxl_mem_major, 0), CXL_MEM_MAX_DEVS); } module_init(cxl_core_init); diff --git a/drivers/cxl/mem.h b/drivers/cxl/mem.h index 8f02d02b26b4..2092f86beeb8 100644 --- a/drivers/cxl/mem.h +++ b/drivers/cxl/mem.h @@ -34,6 +34,8 @@ */ #define CXL_MEM_MAX_DEVS 65536 +extern int cxl_mem_major; + /** * struct cxl_memdev - CXL bus object representing a Type-3 Memory Device * @dev: driver core device object diff --git a/drivers/cxl/pci.c b/drivers/cxl/pci.c index fe240e1504d5..6f10b19c9c83 100644 --- a/drivers/cxl/pci.c +++ b/drivers/cxl/pci.c @@ -94,7 +94,6 @@ struct mbox_cmd { #define CXL_MBOX_SUCCESS 0 }; -static int cxl_mem_major; static DEFINE_IDA(cxl_memdev_ida); static DECLARE_RWSEM(cxl_memdev_rwsem); static struct dentry *cxl_debugfs; @@ -1640,25 +1639,15 @@ static struct pci_driver cxl_mem_driver = { static __init int cxl_mem_init(void) { struct dentry *mbox_debugfs; - dev_t devt; int rc; /* Double check the anonymous union trickery in struct cxl_regs */ BUILD_BUG_ON(offsetof(struct cxl_regs, memdev) != offsetof(struct cxl_regs, device_regs.memdev)); - rc = alloc_chrdev_region(&devt, 0, CXL_MEM_MAX_DEVS, "cxl"); - if (rc) - return rc; - - cxl_mem_major = MAJOR(devt); - rc = pci_register_driver(&cxl_mem_driver); - if (rc) { - unregister_chrdev_region(MKDEV(cxl_mem_major, 0), - CXL_MEM_MAX_DEVS); + if (rc) return rc; - } cxl_debugfs = debugfs_create_dir("cxl", NULL); mbox_debugfs = debugfs_create_dir("mbox", cxl_debugfs); @@ -1672,7 +1661,6 @@ static __exit void cxl_mem_exit(void) { debugfs_remove_recursive(cxl_debugfs); pci_unregister_driver(&cxl_mem_driver); - unregister_chrdev_region(MKDEV(cxl_mem_major, 0), CXL_MEM_MAX_DEVS); } MODULE_LICENSE("GPL v2");
In order to merge the memdev specific functionality of cxl_pci into core, the character device creation currently handled by cxl_pci need to be moved. The rest of the changes are largely cut/paste, the actual functional change is done here in preparation. Signed-off-by: Ben Widawsky <ben.widawsky@intel.com> --- drivers/cxl/core/bus.c | 12 ++++++++++++ drivers/cxl/mem.h | 2 ++ drivers/cxl/pci.c | 14 +------------- 3 files changed, 15 insertions(+), 13 deletions(-)