[Intel-gfx] Adding custom bugzilla fields

Ander Conselvan De Oliveira conselvan2 at gmail.com
Mon Jun 29 01:50:23 PDT 2015


On Fri, 2015-06-26 at 19:05 +0200, Daniel Vetter wrote:
> On Fri, Jun 26, 2015 at 06:28:39PM +0300, Ander Conselvan De Oliveira wrote:
> > Hi all,
> > 
> > I've been looking into creating custom fields in Bugzilla to help sort
> > our bugs in a more manageable way. I did some testing in a private
> > installation and came up with this proposal. In a nut shell, we would
> > add the following two fields:
> > 
> > 	i915 platform:	list of platforms affected by a bug;
> > 	i915 features:  list of features affected by a bug.
> > 
> > Both would be multiple selection fields. The accepted values would be
> > configured in the Bugzilla installation. The attached screenshots show
> > how this would look like in the bug view and bug list views.
> > 
> > My expectation is that using those fields we could have a clearer view
> > of which areas and/or platforms require more attention. For example, I
> > attached a screenshot of a sample report breaking down the bugs per
> > feature and platform. That report requires Bugzilla 5.0 (which hasn't
> > been released yet) since prior versions didn't support reports with
> > multiple selection fields. However, it is also possible to script a
> > similar report, as the attached python script does. The output looks
> > something like this:
> > 
> > Feature                ALL  ILK  SNB  BYT  IVB  HSW  BDW  BSW  SKL
> > display - atomic         0    0    1    0    0    0    1    0    0
> > display - audio          0    0    0    0    0    0    0    0    0
> > display - DP             0    0    1    0    1    0    1    0    0
> > display - DP MST         0    0    0    0    0    0    0    0    0
> > display - DSI            0    0    0    0    0    0    0    0    0
> > display - eDP            0    0    0    0    0    0    0    0    0
> > display - fastboot       0    0    0    0    0    0    0    0    0
> 
> Fastboot is very soonish no more (Maarten has patches to move it all into
> normal modeset code). I'd drop it.
> 
> The other missing bit is all the plane stuff, color manager and similar.
> Otoh this is new, so not clear yet what kind of bugs will be common. Imo
> better to wait and then maybe add more categories.
> 
> > display - FBC            0    0    0    0    0    0    0    0    0
> > display - HDMI           0    0    0    0    0    0    0    0    0
> > display - IPS            0    0    0    0    0    0    0    0    0
> > display - LVDS           0    0    0    0    0    0    0    0    0
> > display - PSR            0    0    0    0    0    0    0    0    0
> > display - Other          0    0    0    0    0    0    0    0    0
> > GEM - execlists          0    0    0    0    0    0    0    0    0
> > GEM - PPGTT              0    0    0    0    0    0    0    0    0
> > GEM - Other              1    0    0    0    0    0    1    0    0
> 
> GEM - gpu hang
> 
> blows up all the time. And we need a bucket to catch all the userspace
> hangs which are reported against the kernel.
> 
> > power - RC6              0    0    0    1    0    0    0    0    0
> > power - RCS              0    0    0    0    0    0    0    0    0
> 
> RPS is turbo stuff, and it's tightly coupled with rc6. Maybe instead just
> 
> power - GT
> 
> for all the GT related power saving features?
> 
> I'd also add
> 
> power - runtime PM
> 
> and 
> 
> power - suspend/resume
> 
> here. Tons of stuff blows up here.
> 
> > power - Other            0    0    0    0    0    0    0    0    0
> > 
> > 
> > So I would like to hear what other people think about this. Specially,
> > about what should be in the features field. The values can change
> > overtime, but would be good to have a good list from the start. The
> > values above are an incomplete list I threw together while looking at
> > different open bugs.
> 
> Maybe we need a bit more polish, but probably not worth it to spend too
> much time on the exact feature list. If we spot serious gaps we can always
> add more. And remove old ones which have gone out of favour 

Here's what I got so far, after updating with your suggestions.

i915 platform:

ALL
SKL
BXT
BDW
BSW
HSW
IVB
BYT
SNB
ILK
I965G
I965GM
G45
GM45
PNV
G33
I945G
I945GM
I915G
I915GM
I865G
I85X
I845G
I830

i915 features:

display - atomic 
display - audio 
display - DP 
display - DP MST 
display - DSI 
display - eDP 
display - FBC 
display - HDMI 
display - IPS 
display - LVDS 
display - PSR 
display - Other 
GEM - execlists 
GEM - PPGTT 
GEM - GPU hang
GEM - Other 
power - GT
power - runtime PM
power - suspend/resume 
power - Other 


> (having that script handy somewhere would be good).

It would be good to have a repository we can dump these to. Or at least
a branch in i-g-t.

Ander



> -Daniel
> 
> > 
> > Thanks,
> > Ander
> 
> 
> 
> 
> > import bugzilla
> > import collections
> > 
> > bugzilla_url = "http://192.168.100.244/bugzilla/xmlrpc.cgi"
> > 
> > closed_states = ['RESOLVED', 'VERIFIED', 'CLOSED']
> > open_states = ["REOPENED", "NEEDINFO", "NEW", "ASSIGNED"]
> > 
> > def get_custom_fields_allowed_values(bz):
> > 	fields = ['cf_i915_platform', 'cf_i915_features']
> > 	r =  bz._proxy.Bug.fields({'names': fields,
> > 				   'include_fields': ['values']})
> > 
> > 	list_of_raw_values = [f['values'] for f in r['fields']]
> > 	values = [[v['name'] for v in f] for f in list_of_raw_values]
> > 
> > 	assert len(values) == len(fields)
> > 	return dict(zip(fields, values))
> > 
> > def get_drm_intel_bugs(bz):
> > 	query = bz.build_query(product="DRI", component="DRM/Intel",
> > 			       status=open_states)
> > 	return bz.query(query)
> > 
> > def split_bugs_per_field(bz, bugs, field):
> > 	split = collections.OrderedDict()
> > 
> > 	allowed_values = get_custom_fields_allowed_values(bz)
> > 	for v in allowed_values[field]:
> > 		split[v] = []
> > 
> > 	for bug in bugs:
> > 		if field in bug.__dict__:
> > 			for value in bug.__dict__[field]:
> > 				split[value].append(bug)
> > 
> > 	return split
> > 
> > def intersect_lists(list1, list2):
> > 	return [v for v in list1 if v in list2]
> > 
> > def stringfy_list(l, spacing=5):
> > 	return ''.join([s.rjust(spacing) for s in map(str, l)])
> > 
> > if __name__ == "__main__":
> > 	bz = bugzilla.Bugzilla(url=bugzilla_url)
> > 
> > 	bugs = get_drm_intel_bugs(bz)
> > 
> > 	per_platform = split_bugs_per_field(bz, bugs, 'cf_i915_platform')
> > 	per_feature = split_bugs_per_field(bz, bugs, 'cf_i915_features')
> > 
> > 	print "Feature".ljust(20), stringfy_list(per_platform)
> > 
> > 	for feature in per_feature:
> > 		common_count = []
> > 		for platform in per_platform:
> > 			common = intersect_lists(per_feature[feature],
> > 						 per_platform[platform])
> > 			common_count.append(len(common))
> > 
> > 		print feature.ljust(20), stringfy_list(common_count)
> > 
> 
> > _______________________________________________
> > Intel-gfx mailing list
> > Intel-gfx at lists.freedesktop.org
> > http://lists.freedesktop.org/mailman/listinfo/intel-gfx
> 
> 




More information about the Intel-gfx mailing list