Messages in this thread | | | Date | Wed, 22 Mar 2023 16:45:46 +0200 | From | Andy Shevchenko <> | Subject | Re: [PATCH v8 1/1] serial: core: Start managing serial controllers to enable runtime PM |
| |
On Wed, Mar 22, 2023 at 01:12:51PM +0200, Tony Lindgren wrote: > We want to enable runtime PM for serial port device drivers in a generic > way. To do this, we want to have the serial core layer manage the > registered physical serial controller devices. > > To do this, let's set up a struct bus and struct device for the serial > core controller as suggested by Greg and Jiri. The serial core controller > devices are children of the physical serial port device. The serial core > controller device is needed to support multiple different kind of ports > connected to single physical serial port device. > > Let's also set up a struct device for the serial core port. The serial > core port instances are children of the serial core controller device. > > With the serial core port device we can now flush pending TX on the > runtime PM resume as suggested by Johan.
With below addressed, FWIW, Reviewed-by: Andy Shevchenko <andriy.shevchenko@intel.com>
...
> + device_initialize(&sbd->dev); > + sbd->dev.parent = parent_dev; > + sbd->dev.bus = &serial_base_bus_type; > + sbd->dev.release = &serial_base_release; > + > + if (str_has_prefix(name, "ctrl")) { > + id = port->ctrl_id; > + } else { > + id = port->line; > + sbd->port = port; > + } > + > + err = dev_set_name(&sbd->dev, "%s.%s.%d", name, dev_name(port->dev), id); > + if (err) > + goto err_free_dev; > + > + err = device_add(&sbd->dev); > + if (err) > + goto err_put_device; > + > + return &sbd->dev; > + > +err_put_device: > + put_device(&sbd->dev);
> + kfree_const(sbd->dev.kobj.name);
This is double free if not const, right? At least that's how I read kobject_cleanup() implementation.
Sorry I haven't paid attention to this earlier.
...
> +/* > + * Serial core port device driver > + */
Put it on one line for now?
-- With Best Regards, Andy Shevchenko
| |