On Fri, Dec 15, 2023 at 10:38:01AM +0800, Kent Gibson wrote: > Store the debounce period for a requested line locally, rather than in > the debounce_period_us field in the gpiolib struct gpio_desc. > > Add a global tree of lines containing supplemental line information > to make the debounce period available to be reported by the > GPIO_V2_GET_LINEINFO_IOCTL and the line change notifier. LGTM, a few minor comments below. ... > +/* (now you can have a kernel doc :-) > + * a rbtree of the struct lines containing supplemental info. > + * Used to populate gpio_v2_line_info with cdev specific fields not contained > + * in the struct gpio_desc. > + * A line is determined to contain supplemental information by > + * line_is_supplemental(). > + */ > +static struct rb_root supinfo_tree = RB_ROOT; > +/* covers supinfo_tree */ > +DEFINE_SPINLOCK(supinfo_lock); Shouldn't this also be static? ... > + guard(spinlock)(&supinfo_lock); + cleanup.h ? ... > +static void supinfo_to_lineinfo(struct gpio_desc *desc, > + struct gpio_v2_line_info *info) > +{ > + struct gpio_v2_line_attribute *attr; > + struct line *line; > + > + guard(spinlock)(&supinfo_lock); > + > + line = supinfo_find(desc); > + if (line) { if (!line) return; ? > + attr = &info->attrs[info->num_attrs]; > + attr->id = GPIO_V2_LINE_ATTR_ID_DEBOUNCE; > + attr->debounce_period_us = READ_ONCE(line->debounce_period_us); > + info->num_attrs++; > + } > +} -- With Best Regards, Andy Shevchenko