Quoting Summers, Stuart (2019-10-11 16:14:07) > On Fri, 2019-10-11 at 12:36 +0100, Chris Wilson wrote: > > +void intel_engines_add_sysfs(struct drm_i915_private *i915) > > +{ > > + static const struct attribute *files[] = { > > + &name_attr.attr, > > + &class_attr.attr, > > + &inst_attr.attr, > > + &caps_attr.attr, > > + NULL > > + }; > > + > > + struct device *kdev = i915->drm.primary->kdev; > > + struct intel_engine_cs *engine; > > + struct kobject *dir; > > + > > + dir = kobject_create_and_add("engine", &kdev->kobj); > > + if (!dir) > > + return; > > + > > + for_each_uabi_engine(engine, i915) { > > + struct kobject *kobj; > > + > > + kobj = kobj_engine(dir, engine); > > + if (!kobj) > > + goto err_engine; > > + > > + if (sysfs_create_files(kobj, files)) > > + goto err_engine; > > + > > + if (0) { > > +err_engine: > > Can you explain why we need this goto/if 0 over a simple print/break > under the if(sysfs_create_files()) call above? At a glance this just > seems overly complicated. There's more to come. -Chris _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx