From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [Intel-gfx] [PATCH] [v2] drm/i915/pmu: avoid -Wmaybe-uninitialized warning Date: Tue, 13 Mar 2018 17:46:54 +0000 Message-ID: References: <20180313161952.552083-1-arnd@arndb.de> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180313161952.552083-1-arnd@arndb.de> Content-Language: en-GB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Arnd Bergmann , Jani Nikula , Joonas Lahtinen , Rodrigo Vivi , David Airlie Cc: intel-gfx@lists.freedesktop.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org Ck9uIDEzLzAzLzIwMTggMTY6MTksIEFybmQgQmVyZ21hbm4gd3JvdGU6Cj4gVGhlIGNvbmRpdGlv bmFsIHNwaW5sb2NrIGNvbmZ1c2VzIGdjYyBpbnRvIHRoaW5raW5nIHRoZSAnZmxhZ3MnIHZhbHVl Cj4gbWlnaHQgY29udGFpbiB1bmluaXRpYWxpemVkIGRhdGE6Cj4gCj4gZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9wbXUuYzogSW4gZnVuY3Rpb24gJ19faTkxNV9wbXVfZXZlbnRfcmVhZCc6Cj4g YXJjaC94ODYvaW5jbHVkZS9hc20vcGFyYXZpcnRfdHlwZXMuaDo1NzM6MzogZXJyb3I6ICdmbGFn cycgbWF5IGJlIHVzZWQgdW5pbml0aWFsaXplZCBpbiB0aGlzIGZ1bmN0aW9uIFstV2Vycm9yPW1h eWJlLXVuaW5pdGlhbGl6ZWRdCgpIbSwgaG93IGRvZXMgcGFyYXZpcnRfdHlwZXMuaCBjb21lcyBp bnRvIHRoZSBwaWN0dXJlPwoKPiBUaGUgY29kZSBpcyBjb3JyZWN0LCBidXQgaXQncyBlYXN5IHRv IHNlZSBob3cgdGhlIGNvbXBpbGVyIGdldHMgY29uZnVzZWQKPiBoZXJlLiBUaGlzIGF2b2lkcyB0 aGUgcHJvYmxlbSBieSBwdWxsaW5nIHRoZSBsb2NrIG91dHNpZGUgb2YgdGhlIGZ1bmN0aW9uCj4g aW50byBpdHMgb25seSBjYWxsZXIuCgpJcyBpdCBzcGVjaWZpYyBnY2MgdmVyc2lvbiwgc3BlY2lm aWMgb3B0aW9ucywgb3Igc3BlY2lmaWMga2VybmVsIGNvbmZpZyAKdGhhdCB0aGlzIGhhcHBlbnM/ CgpTdHJhbmdlIHRoYXQgaXQgaGFzbid0IGJlZW4gc2VlbiBzbyBmYXIuCgpSZWdhcmRzLAoKVHZy dGtvCgo+IEZpeGVzOiAxZmU2OTllMzAxMTMgKCJkcm0vaTkxNS9wbXU6IEZpeCBzbGVlcCB1bmRl ciBhdG9taWMgaW4gUkM2IHJlYWRvdXQiKQo+IFNpZ25lZC1vZmYtYnk6IEFybmQgQmVyZ21hbm4g PGFybmRAYXJuZGIuZGU+Cj4gLS0tCj4gdjI6IHJlbW92ZWQgdW51c2VkIGZ1bmN0aW9uIGFyZ3Vt ZW50LCBmaXhlZCAnYnJlYWsnIHN0YXRlbWVudC4KPiAtLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfcG11LmMgfCAyNSArKysrKysrKysrLS0tLS0tLS0tLS0tLS0tCj4gICAxIGZpbGUg Y2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygrKSwgMTUgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcG11LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X3BtdS5jCj4gaW5kZXggNGJjN2FlZmE5NTQxLi5kNmI5YjZiNWZiOTggMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wbXUuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfcG11LmMKPiBAQCAtNDEyLDEwICs0MTIsOSBAQCBzdGF0aWMgdTY0IF9f Z2V0X3JjNihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiAgIAlyZXR1cm4gdmFsOwo+ ICAgfQo+ICAgCj4gLXN0YXRpYyB1NjQgZ2V0X3JjNihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq aTkxNSwgYm9vbCBsb2NrZWQpCj4gK3N0YXRpYyB1NjQgZ2V0X3JjNihzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqaTkxNSkKPiAgIHsKPiAgICNpZiBJU19FTkFCTEVEKENPTkZJR19QTSkKPiAtCXVu c2lnbmVkIGxvbmcgZmxhZ3M7Cj4gICAJdTY0IHZhbDsKPiAgIAo+ICAgCWlmIChpbnRlbF9ydW50 aW1lX3BtX2dldF9pZl9pbl91c2UoaTkxNSkpIHsKPiBAQCAtNDI4LDE4ICs0MjcsMTIgQEAgc3Rh dGljIHU2NCBnZXRfcmM2KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LCBib29sIGxvY2tl ZCkKPiAgIAkJICogcHJldmlvdXNseS4KPiAgIAkJICovCj4gICAKPiAtCQlpZiAoIWxvY2tlZCkK PiAtCQkJc3Bpbl9sb2NrX2lycXNhdmUoJmk5MTUtPnBtdS5sb2NrLCBmbGFncyk7Cj4gLQo+ICAg CQlpZiAodmFsID49IGk5MTUtPnBtdS5zYW1wbGVbX19JOTE1X1NBTVBMRV9SQzZfRVNUSU1BVEVE XS5jdXIpIHsKPiAgIAkJCWk5MTUtPnBtdS5zYW1wbGVbX19JOTE1X1NBTVBMRV9SQzZfRVNUSU1B VEVEXS5jdXIgPSAwOwo+ICAgCQkJaTkxNS0+cG11LnNhbXBsZVtfX0k5MTVfU0FNUExFX1JDNl0u Y3VyID0gdmFsOwo+ICAgCQl9IGVsc2Ugewo+ICAgCQkJdmFsID0gaTkxNS0+cG11LnNhbXBsZVtf X0k5MTVfU0FNUExFX1JDNl9FU1RJTUFURURdLmN1cjsKPiAgIAkJfQo+IC0KPiAtCQlpZiAoIWxv Y2tlZCkKPiAtCQkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmaTkxNS0+cG11LmxvY2ssIGZsYWdz KTsKPiAgIAl9IGVsc2Ugewo+ICAgCQlzdHJ1Y3QgcGNpX2RldiAqcGRldiA9IGk5MTUtPmRybS5w ZGV2Owo+ICAgCQlzdHJ1Y3QgZGV2aWNlICprZGV2ID0gJnBkZXYtPmRldjsKPiBAQCAtNDUyLDkg KzQ0NSw2IEBAIHN0YXRpYyB1NjQgZ2V0X3JjNihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkx NSwgYm9vbCBsb2NrZWQpCj4gICAJCSAqIG9uIHRvcCBvZiB0aGUgbGFzdCBrbm93biByZWFsIHZh bHVlLCBhcyB0aGUgYXBwcm94aW1hdGVkIFJDNgo+ICAgCQkgKiBjb3VudGVyIHZhbHVlLgo+ICAg CQkgKi8KPiAtCQlpZiAoIWxvY2tlZCkKPiAtCQkJc3Bpbl9sb2NrX2lycXNhdmUoJmk5MTUtPnBt dS5sb2NrLCBmbGFncyk7Cj4gLQo+ICAgCQlzcGluX2xvY2tfaXJxc2F2ZSgma2Rldi0+cG93ZXIu bG9jaywgZmxhZ3MyKTsKPiAgIAo+ICAgCQlpZiAoIWk5MTUtPnBtdS5zYW1wbGVbX19JOTE1X1NB TVBMRV9SQzZfRVNUSU1BVEVEXS5jdXIpCj4gQEAgLTQ3MCw5ICs0NjAsNiBAQCBzdGF0aWMgdTY0 IGdldF9yYzYoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsIGJvb2wgbG9ja2VkKQo+ICAg CQl2YWwgPSBqaWZmaWVzX3RvX25zZWNzKHZhbCk7Cj4gICAJCXZhbCArPSBpOTE1LT5wbXUuc2Ft cGxlW19fSTkxNV9TQU1QTEVfUkM2XS5jdXI7Cj4gICAJCWk5MTUtPnBtdS5zYW1wbGVbX19JOTE1 X1NBTVBMRV9SQzZfRVNUSU1BVEVEXS5jdXIgPSB2YWw7Cj4gLQo+IC0JCWlmICghbG9ja2VkKQo+ IC0JCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZpOTE1LT5wbXUubG9jaywgZmxhZ3MpOwo+ICAg CX0KPiAgIAo+ICAgCXJldHVybiB2YWw7Cj4gQEAgLTUxOSw3ICs1MDYsMTUgQEAgc3RhdGljIHU2 NCBfX2k5MTVfcG11X2V2ZW50X3JlYWQoc3RydWN0IHBlcmZfZXZlbnQgKmV2ZW50LCBib29sIGxv Y2tlZCkKPiAgIAkJCXZhbCA9IGNvdW50X2ludGVycnVwdHMoaTkxNSk7Cj4gICAJCQlicmVhazsK PiAgIAkJY2FzZSBJOTE1X1BNVV9SQzZfUkVTSURFTkNZOgo+IC0JCQl2YWwgPSBnZXRfcmM2KGk5 MTUsIGxvY2tlZCk7Cj4gKwkJCWlmICghbG9ja2VkKSB7Cj4gKwkJCQl1bnNpZ25lZCBsb25nIGZs YWdzOwo+ICsKPiArCQkJCXNwaW5fbG9ja19pcnFzYXZlKCZpOTE1LT5wbXUubG9jaywgZmxhZ3Mp Owo+ICsJCQkJdmFsID0gZ2V0X3JjNihpOTE1KTsKPiArCQkJCXNwaW5fdW5sb2NrX2lycXJlc3Rv cmUoJmk5MTUtPnBtdS5sb2NrLCBmbGFncyk7Cj4gKwkJCX0gZWxzZSB7Cj4gKwkJCQl2YWwgPSBn ZXRfcmM2KGk5MTUpOwo+ICsJCQl9Cj4gICAJCQlicmVhazsKPiAgIAkJfQo+ICAgCX0KPiAKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1h aWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMu ZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932365AbeCMRrA (ORCPT ); Tue, 13 Mar 2018 13:47:00 -0400 Received: from mga11.intel.com ([192.55.52.93]:28217 "EHLO mga11.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751871AbeCMRq6 (ORCPT ); Tue, 13 Mar 2018 13:46:58 -0400 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.47,465,1515484800"; d="scan'208";a="41634874" Subject: Re: [Intel-gfx] [PATCH] [v2] drm/i915/pmu: avoid -Wmaybe-uninitialized warning To: Arnd Bergmann , Jani Nikula , Joonas Lahtinen , Rodrigo Vivi , David Airlie Cc: intel-gfx@lists.freedesktop.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org References: <20180313161952.552083-1-arnd@arndb.de> From: Tvrtko Ursulin Message-ID: Date: Tue, 13 Mar 2018 17:46:54 +0000 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.6.0 MIME-Version: 1.0 In-Reply-To: <20180313161952.552083-1-arnd@arndb.de> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-GB Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 13/03/2018 16:19, Arnd Bergmann wrote: > The conditional spinlock confuses gcc into thinking the 'flags' value > might contain uninitialized data: > > drivers/gpu/drm/i915/i915_pmu.c: In function '__i915_pmu_event_read': > arch/x86/include/asm/paravirt_types.h:573:3: error: 'flags' may be used uninitialized in this function [-Werror=maybe-uninitialized] Hm, how does paravirt_types.h comes into the picture? > The code is correct, but it's easy to see how the compiler gets confused > here. This avoids the problem by pulling the lock outside of the function > into its only caller. Is it specific gcc version, specific options, or specific kernel config that this happens? Strange that it hasn't been seen so far. Regards, Tvrtko > Fixes: 1fe699e30113 ("drm/i915/pmu: Fix sleep under atomic in RC6 readout") > Signed-off-by: Arnd Bergmann > --- > v2: removed unused function argument, fixed 'break' statement. > --- > drivers/gpu/drm/i915/i915_pmu.c | 25 ++++++++++--------------- > 1 file changed, 10 insertions(+), 15 deletions(-) > > diff --git a/drivers/gpu/drm/i915/i915_pmu.c b/drivers/gpu/drm/i915/i915_pmu.c > index 4bc7aefa9541..d6b9b6b5fb98 100644 > --- a/drivers/gpu/drm/i915/i915_pmu.c > +++ b/drivers/gpu/drm/i915/i915_pmu.c > @@ -412,10 +412,9 @@ static u64 __get_rc6(struct drm_i915_private *i915) > return val; > } > > -static u64 get_rc6(struct drm_i915_private *i915, bool locked) > +static u64 get_rc6(struct drm_i915_private *i915) > { > #if IS_ENABLED(CONFIG_PM) > - unsigned long flags; > u64 val; > > if (intel_runtime_pm_get_if_in_use(i915)) { > @@ -428,18 +427,12 @@ static u64 get_rc6(struct drm_i915_private *i915, bool locked) > * previously. > */ > > - if (!locked) > - spin_lock_irqsave(&i915->pmu.lock, flags); > - > if (val >= i915->pmu.sample[__I915_SAMPLE_RC6_ESTIMATED].cur) { > i915->pmu.sample[__I915_SAMPLE_RC6_ESTIMATED].cur = 0; > i915->pmu.sample[__I915_SAMPLE_RC6].cur = val; > } else { > val = i915->pmu.sample[__I915_SAMPLE_RC6_ESTIMATED].cur; > } > - > - if (!locked) > - spin_unlock_irqrestore(&i915->pmu.lock, flags); > } else { > struct pci_dev *pdev = i915->drm.pdev; > struct device *kdev = &pdev->dev; > @@ -452,9 +445,6 @@ static u64 get_rc6(struct drm_i915_private *i915, bool locked) > * on top of the last known real value, as the approximated RC6 > * counter value. > */ > - if (!locked) > - spin_lock_irqsave(&i915->pmu.lock, flags); > - > spin_lock_irqsave(&kdev->power.lock, flags2); > > if (!i915->pmu.sample[__I915_SAMPLE_RC6_ESTIMATED].cur) > @@ -470,9 +460,6 @@ static u64 get_rc6(struct drm_i915_private *i915, bool locked) > val = jiffies_to_nsecs(val); > val += i915->pmu.sample[__I915_SAMPLE_RC6].cur; > i915->pmu.sample[__I915_SAMPLE_RC6_ESTIMATED].cur = val; > - > - if (!locked) > - spin_unlock_irqrestore(&i915->pmu.lock, flags); > } > > return val; > @@ -519,7 +506,15 @@ static u64 __i915_pmu_event_read(struct perf_event *event, bool locked) > val = count_interrupts(i915); > break; > case I915_PMU_RC6_RESIDENCY: > - val = get_rc6(i915, locked); > + if (!locked) { > + unsigned long flags; > + > + spin_lock_irqsave(&i915->pmu.lock, flags); > + val = get_rc6(i915); > + spin_unlock_irqrestore(&i915->pmu.lock, flags); > + } else { > + val = get_rc6(i915); > + } > break; > } > } >