From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH v2] drm/i915/ilk: Don't disable SSC source if it's in use Date: Tue, 24 May 2016 16:14:14 +0300 Message-ID: <20160524131414.GE4329@intel.com> References: <20160523191635.GZ4329@intel.com> <1464033396-27649-1-git-send-email-cpaul@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <1464033396-27649-1-git-send-email-cpaul@redhat.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Lyude Cc: intel-gfx@lists.freedesktop.org, "open list:INTEL DRM DRIVERS (excluding Poulsbo, Moorestow...), linux-kernel@vger.kernel.org (open list)" , Daniel Vetter , stable@vger.kernel.org List-Id: dri-devel@lists.freedesktop.org T24gTW9uLCBNYXkgMjMsIDIwMTYgYXQgMDM6NTY6MzZQTSAtMDQwMCwgTHl1ZGUgd3JvdGU6Cj4g VGhhbmtzIHRvIFZpbGxlIFN5cmrDpGzDpCBmb3IgcG9pbnRpbmcgbWUgdG93YXJkcyB0aGUgY2F1 c2Ugb2YgdGhpcyBpc3N1ZS4KPiAKPiBVbmZvcnR1bmF0ZWx5IG9uZSBvZiB0aGUgc2lkZWFmZmVj dHMgb2YgaGF2aW5nIHRoZSByZWZjbGsgZm9yIGEgRFBMTCBzZXQKPiB0byBTU0MgaXMgdGhhdCBh cyBsb25nIGFzIGl0J3Mgc2V0IHRvIFNTQywgdGhlIEdQVSB3aWxsIHByZXZlbnQgdXMgZnJvbQo+ IHBvd2VyaW5nIGRvd24gYW55IG9mIHRoZSBwaXBlcyBvciB0cmFuc2NvZGVycyB1c2luZyBpdC4g QSBjb3VwbGUgb2YKPiBCSU9TZXMgZW5hYmxlIFNTQyBpbiBib3RoIFBDSF9EUkVGX0NPTlRST0wg YW5kIGluIHRoZSBEUExMCj4gY29uZmlndXJhdGlvbnMuIFRoaXMgY2F1c2VzIGlzc3VlcyBvbiB0 aGUgZmlyc3QgbW9kZXNldCwgc2luY2Ugd2UgZG9uJ3QKPiBleHBlY3QgU1NDIHRvIGJlIGxlZnQg b24gYW5kIGFzIGEgcmVzdWx0LCBjYW4ndCBzdWNjZXNzZnVsbHkgcG93ZXIgZG93bgo+IHRoZSBw aXBlcyBvciB0aGUgdHJhbnNjb2RlcnMgdXNpbmcgaXQuIEhlcmUncyBhbiBleGFtcGxlIGZyb20g dGhpcyBEZWxsCj4gT3B0aVBsZXggOTkwOgo+IAo+IFtkcm06aW50ZWxfbW9kZXNldF9pbml0XSBT U0MgZW5hYmxlZCBieSBCSU9TLCBvdmVycmlkaW5nIFZCVCB3aGljaCBzYXlzIGRpc2FibGVkCj4g W2RybTppbnRlbF9tb2Rlc2V0X2luaXRdIDIgZGlzcGxheSBwaXBlcyBhdmFpbGFibGUuCj4gW2Ry bTppbnRlbF91cGRhdGVfY2RjbGtdIEN1cnJlbnQgQ0QgY2xvY2sgcmF0ZTogNDAwMDAwIGtIego+ IFtkcm06aW50ZWxfdXBkYXRlX21heF9jZGNsa10gTWF4IENEIGNsb2NrIHJhdGU6IDQwMDAwMCBr SHoKPiBbZHJtOmludGVsX3VwZGF0ZV9tYXhfY2RjbGtdIE1heCBkb3RjbG9jayByYXRlOiAzNjAw MDAga0h6Cj4gdmdhYXJiOiBkZXZpY2UgY2hhbmdlZCBkZWNvZGVzOiBQQ0k6MDAwMDowMDowMi4w LG9sZGRlY29kZXM9aW8rbWVtLGRlY29kZXM9aW8rbWVtOm93bnM9aW8rbWVtCj4gW2RybTppbnRl bF9jcnRfcmVzZXRdIGNydCBhZHBhIHNldCB0byAweGY0MDAwMAo+IFtkcm06aW50ZWxfZHBfaW5p dF9jb25uZWN0b3JdIEFkZGluZyBEUCBjb25uZWN0b3Igb24gcG9ydCBDCj4gW2RybTppbnRlbF9k cF9hdXhfaW5pdF0gcmVnaXN0ZXJpbmcgRFBEREMtQyBidXMgZm9yIGNhcmQwLURQLTEKPiBbZHJt Omlyb25sYWtlX2luaXRfcGNoX3JlZmNsa10gaGFzX3BhbmVsIDAgaGFzX2x2ZHMgMCBoYXNfY2s1 MDUgMAo+IFtkcm06aXJvbmxha2VfaW5pdF9wY2hfcmVmY2xrXSBEaXNhYmxpbmcgU1NDIGVudGly ZWx5Cj4g4oCmIGxhdGVyIHdlIHRyeSBjb21taXR0aW5nIHRoZSBmaXJzdCBtb2Rlc2V0IOKApgo+ IFtkcm06aW50ZWxfZHVtcF9waXBlX2NvbmZpZ10gW0NSVEM6MjZdW21vZGVzZXRdIGNvbmZpZyBm ZmZmODgwNDFiMDJlODAwIGZvciBwaXBlIEEKPiBbZHJtOmludGVsX2R1bXBfcGlwZV9jb25maWdd IGNwdV90cmFuc2NvZGVyOiBBCj4g4oCmCj4gW2RybTppbnRlbF9kdW1wX3BpcGVfY29uZmlnXSBk cGxsX2h3X3N0YXRlOiBkcGxsOiAweGM0MDE2MDAxLCBkcGxsX21kOiAweDAsIGZwMDogMHgyMGUw OCwgZnAxOiAweDMwZDA3Cj4gW2RybTppbnRlbF9kdW1wX3BpcGVfY29uZmlnXSBwbGFuZXMgb24g dGhpcyBjcnRjCj4gW2RybTppbnRlbF9kdW1wX3BpcGVfY29uZmlnXSBTVEFOREFSRCBQTEFORToy MyBwbGFuZTogMC4wIGlkeDogMCBlbmFibGVkCj4gW2RybTppbnRlbF9kdW1wX3BpcGVfY29uZmln XSAgICAgRkI6NDIsIGZiID0gODAweDYwMCBmb3JtYXQgPSAweDM0MzI1MjU4Cj4gW2RybTppbnRl bF9kdW1wX3BpcGVfY29uZmlnXSAgICAgc2NhbGVyOjAgc3JjICgwLCAwKSA4MDB4NjAwIGRzdCAo MCwgMCkgODAweDYwMAo+IFtkcm06aW50ZWxfZHVtcF9waXBlX2NvbmZpZ10gQ1VSU09SIFBMQU5F OjI1IHBsYW5lOiAwLjEgaWR4OiAxIGRpc2FibGVkLCBzY2FsZXJfaWQgPSAwCj4gW2RybTppbnRl bF9kdW1wX3BpcGVfY29uZmlnXSBTVEFOREFSRCBQTEFORToyNyBwbGFuZTogMC4xIGlkeDogMiBk aXNhYmxlZCwgc2NhbGVyX2lkID0gMAo+IFtkcm06aW50ZWxfZ2V0X3NoYXJlZF9kcGxsXSBDUlRD OjI2IGFsbG9jYXRlZCBQQ0ggRFBMTCBBCj4gW2RybTppbnRlbF9nZXRfc2hhcmVkX2RwbGxdIHVz aW5nIFBDSCBEUExMIEEgZm9yIHBpcGUgQQo+IFtkcm06aWxrX2F1ZGlvX2NvZGVjX2Rpc2FibGVd IERpc2FibGUgYXVkaW8gY29kZWMgb24gcG9ydCBDLCBwaXBlIEEKPiBbZHJtOmludGVsX2Rpc2Fi bGVfcGlwZV0gZGlzYWJsaW5nIHBpcGUgQQo+IC0tLS0tLS0tLS0tLVsgY3V0IGhlcmUgXS0tLS0t LS0tLS0tLQo+IFdBUk5JTkc6IENQVTogMSBQSUQ6IDEzMCBhdCBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kaXNwbGF5LmM6MTE0NiBpbnRlbF9kaXNhYmxlX3BpcGUrMHgyOTcvMHgyZDAgW2k5 MTVdCj4gcGlwZV9vZmYgd2FpdCB0aW1lZCBvdXQKPiDigKYKPiAtLS1bIGVuZCB0cmFjZSA5NGZj OGFhMDNhZTEzOWU4IF0tLS0KPiBbZHJtOmludGVsX2RwX2xpbmtfZG93bl0KPiBbZHJtOmlyb25s YWtlX2NydGNfZGlzYWJsZSBbaTkxNV1dICpFUlJPUiogZmFpbGVkIHRvIGRpc2FibGUgdHJhbnNj b2RlciBBCj4gCj4gTGF0ZXIgbW9kZXNldHMgc3VjY2VlZCBzaW5jZSB0aGV5IHJlc2V0IHRoZSBE UExMJ3MgY29uZmlndXJhdGlvbiBhbnl3YXksCj4gYnV0IHRoaXMgaXMgZW5vdWdoIHRvIGdldCBz dHVjayB3aXRoIGEgYmlnIGZhdCB3YXJuaW5nIGluIGRtZXNnLgo+IAo+IEEgYmV0dGVyIHNvbHV0 aW9uIHdvdWxkIGJlIHRvIGFkZCByZWZjb3VudHMgZm9yIHRoZSBTU0Mgc291cmNlLCBidXQgZm9y Cj4gbm93IGxlYXZpbmcgdGhlIHNvdXJjZSBjbG9jayBvbiBzaG91bGQgc3VmZmljZS4KPiAKPiBD aGFuZ2VzIHNpbmNlIHYxOgo+ICAtIExlYXZlIHRoZSBTU0Mgc291cmNlIGNsb2NrIG9uIGluc3Rl YWQgb2YganVzdCBzaHV0dGluZyBpdCBvZmYgb24gYWxsCj4gICAgb2YgdGhlIERQTEwgY29uZmln dXJhdGlvbnMuCj4gCj4gQ2M6IHN0YWJsZUB2Z2VyLmtlcm5lbC5vcmcKPiBTaWduZWQtb2ZmLWJ5 OiBMeXVkZSA8Y3BhdWxAcmVkaGF0LmNvbT4KPiAtLS0KPiBTb3JyeSBhYm91dCB0aGF0ISBJIG1p c3JlYWQgZGFudmV0J3Mgc3VnZ2VzdGlvbiBhcyAiZGlzYWJsZSB0aGUgU1NDIiBpbnN0ZWFkIG9m Cj4gImRvbid0IGRpc2FibGUgdGhlIFNTQyIuCj4gCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2Rpc3BsYXkuYyB8IDQ3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLQo+ ICAxIGZpbGUgY2hhbmdlZCwgMzUgaW5zZXJ0aW9ucygrKSwgMTIgZGVsZXRpb25zKC0pCj4gCj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+IGluZGV4IGQ1MDBlNmYuLmRmZjg1MTEg MTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gQEAgLTgyMzAsMTIgKzgy MzAsMTQgQEAgc3RhdGljIHZvaWQgaXJvbmxha2VfaW5pdF9wY2hfcmVmY2xrKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYpCj4gIHsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9 IGRldi0+ZGV2X3ByaXZhdGU7Cj4gIAlzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcjsKPiAt CXUzMiB2YWwsIGZpbmFsOwo+ICsJaW50IGk7Cj4gKwl1MzIgdmFsLCB0ZW1wLCBmaW5hbDsKPiAg CWJvb2wgaGFzX2x2ZHMgPSBmYWxzZTsKPiAgCWJvb2wgaGFzX2NwdV9lZHAgPSBmYWxzZTsKPiAg CWJvb2wgaGFzX3BhbmVsID0gZmFsc2U7Cj4gIAlib29sIGhhc19jazUwNSA9IGZhbHNlOwo+ICAJ Ym9vbCBjYW5fc3NjID0gZmFsc2U7Cj4gKwlib29sIHVzaW5nX3NzY19zb3VyY2UgPSBmYWxzZTsK PiAgCj4gIAkvKiBXZSBuZWVkIHRvIHRha2UgdGhlIGdsb2JhbCBjb25maWcgaW50byBhY2NvdW50 ICovCj4gIAlmb3JfZWFjaF9pbnRlbF9lbmNvZGVyKGRldiwgZW5jb2Rlcikgewo+IEBAIC04Mjgz LDkgKzgyODUsMjYgQEAgc3RhdGljIHZvaWQgaXJvbmxha2VfaW5pdF9wY2hfcmVmY2xrKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYpCj4gIAllbHNlCj4gIAkJZmluYWwgfD0gRFJFRl9OT05TUFJFQURf U09VUkNFX0VOQUJMRTsKPiAgCj4gLQlmaW5hbCAmPSB+RFJFRl9TU0NfU09VUkNFX01BU0s7Cj4g IAlmaW5hbCAmPSB+RFJFRl9DUFVfU09VUkNFX09VVFBVVF9NQVNLOwo+IC0JZmluYWwgJj0gfkRS RUZfU1NDMV9FTkFCTEU7Cj4gKwo+ICsJLyogQ2hlY2sgaWYgYW55IERQTExzIGFyZSB1c2luZyB0 aGUgU1NDIHNvdXJjZSAqLwo+ICsJZm9yIChpID0gMDsgaSA8IGRldl9wcml2LT5udW1fc2hhcmVk X2RwbGw7IGkrKykgewo+ICsJCXRlbXAgPSBJOTE1X1JFQUQoUENIX0RQTEwoaSkpOwo+ICsKPiAr CQlpZiAoISh0ZW1wICYgRFBMTF9WQ09fRU5BQkxFKSkKPiArCQkJY29udGludWU7Cj4gKwo+ICsJ CWlmICgodGVtcCAmIFBMTF9SRUZfSU5QVVRfTUFTSykgPT0KPiArCQkgICAgUExMQl9SRUZfSU5Q VVRfU1BSRUFEU1BFQ1RSVU1JTikgewo+ICsJCQl1c2luZ19zc2Nfc291cmNlID0gdHJ1ZTsKPiAr CQkJYnJlYWs7Cj4gKwkJfQo+ICsJfQo+ICsKPiArCWlmICghdXNpbmdfc3NjX3NvdXJjZSkgewo+ ICsJCWZpbmFsICY9IH5EUkVGX1NTQ19TT1VSQ0VfTUFTSzsKPiArCQlmaW5hbCAmPSB+RFJFRl9T U0MxX0VOQUJMRTsKPiArCX0KPiAgCj4gIAlpZiAoaGFzX3BhbmVsKSB7Cj4gIAkJZmluYWwgfD0g RFJFRl9TU0NfU09VUkNFX0VOQUJMRTsKPiBAQCAtODM0OCw3ICs4MzY3LDcgQEAgc3RhdGljIHZv aWQgaXJvbmxha2VfaW5pdF9wY2hfcmVmY2xrKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIAkJ UE9TVElOR19SRUFEKFBDSF9EUkVGX0NPTlRST0wpOwo+ICAJCXVkZWxheSgyMDApOwo+ICAJfSBl bHNlIHsKPiAtCQlEUk1fREVCVUdfS01TKCJEaXNhYmxpbmcgU1NDIGVudGlyZWx5XG4iKTsKPiAr CQlEUk1fREVCVUdfS01TKCJEaXNhYmxpbmcgU1NDIENQVSBvdXRwdXRcbiIpOwoKVGhlIENQVSBz b3VyY2UgaXNuJ3QgbmVjZXNzYXJpbHkgU1NDLiBJdCBjYW4gY29tZSBmcm9tIFNTQzEgb3IgZnJv bQp0aGUgbm9uLXNwcmVhZCBzb3VyY2UuCgpJSVJDIHRoZSBjbG9jayB0cmVlIGxvb2tzIHNvbWV0 aGluZyBsaWtlIHRoaXM6CgogICAgICBpbnRlZ3JhdGVkCiAgICAgICAgICAgICAgICAgXAogICAg ICAgICAgICAgICAgICAtPiBub24tc3ByZWFkIC0+IGRwbGwgbm9uLXNwcmVhZAogICAgICAgICAg ICAgICAgIC8gICAgICAgICAgICAgIFwKICAgICAgICAgICBjazUwNSAgICAgICAgICAgICAgICAg LT4gY3B1IHNvdXJjZSAtPiBlZHAgcGxsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg LwogICAgICBpbnRlZ3JhdGVkIC0+IHNzYyAtPiBzc2MxIC0+IGRwbGwgc3NjCgppbnRlZ3JhdGVk IC0+IHN1cGVyIHNzYyAtPiBzc2M0IC0+IGRwbGwgc3VwZXIgc3NjCgpNYXliZSB3ZSBzaG91bGQg c2xhcCB0aGF0IGRpYWdyYW0gc29tZXdoZXJlIGFzIGEgY29tbWVudD8KCgpBbnl3YXlzLCBvdGhl d2lzZSB0aGUgcGF0Y2ggbG9va3MgT0sgSSB0aGluay4KCkFzIGZhciBhcyB0aGUgb3JpZ2luYWwg Y29kZSBnb2VzLCBJIGRvbid0IGFjdHVhbGx5IHVuZGVyc3RhbmQgaXQuIEZvcgpMVkRTIGl0IGNh biBlbmFibGUgdGhlIFNTQyBzb3VyY2UgYnV0IGxlYXZlIFNTQzEgbW9kdWxhdG9yIGRpc2FibGVk LgpOb3Qgc3VyZSB3aGF0J3MgdGhlIHBvaW50IGluIHVzaW5nIHRoZSBTU0Mgc291cmNlIHcvIFNT QzEgZGlzYWJsZWQuCkknbSBub3Qgc3VyZSB0aGF0J3MgZXZlbiBsZWdhbCBUQkguCgpGb3IgZURQ IGl0IGNhbiBzZWxlY3QgdGhlIG5vbi1zcHJlYWQgc291cmNlIGJ1dCBzdGlsbCBsZWF2ZSB0aGUg U1NDCnNvdXJjZSBlbmFibGVkIGZvciBzb21lIHJlYXNvbi4KCkFsc28gSSBkb24ndCB1bmRlcnN0 YW5kIHdoeSB0aGUgaGFzX3NzYyBkZXBlbmRzIG9uIGNrNTA1IG9uIElCWC4gV2UKb25seSB1c2Ug Y2s1MDUgYXMgdGhlIG5vbi1zcHJlYWQgc291cmNlLCBzbyBub3QgcmVhbGx5IHN1cmUgd2h5Cmhh c19zc2MgZGVwZW5kcyBvbiB0aGUgcHJlc2VuY2Ugb2YgY2s1MDUuIE1heWJlIHlvdSBjYW4gb25s eSBnZXQKc3NjK25vbi1zcHJlYWQgc291cmNlcyBlbmFibGVkIGF0IHRoZSBzYW1lIHRpbWUgaWYg b25lIG9mIHRoZW0KY29tZXMgZnJvbSBjazUwNT8KCj4gIAkJdmFsICY9IH5EUkVGX0NQVV9TT1VS Q0VfT1VUUFVUX01BU0s7Cj4gIAo+IEBAIC04MzU5LDE2ICs4Mzc4LDIwIEBAIHN0YXRpYyB2b2lk IGlyb25sYWtlX2luaXRfcGNoX3JlZmNsayhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAJCVBP U1RJTkdfUkVBRChQQ0hfRFJFRl9DT05UUk9MKTsKPiAgCQl1ZGVsYXkoMjAwKTsKPiAgCj4gLQkJ LyogVHVybiBvZmYgdGhlIFNTQyBzb3VyY2UgKi8KPiAtCQl2YWwgJj0gfkRSRUZfU1NDX1NPVVJD RV9NQVNLOwo+IC0JCXZhbCB8PSBEUkVGX1NTQ19TT1VSQ0VfRElTQUJMRTsKPiArCQlpZiAoIXVz aW5nX3NzY19zb3VyY2UpIHsKPiArCQkJRFJNX0RFQlVHX0tNUygiRGlzYWJsaW5nIFNTQyBzb3Vy Y2VcbiIpOwo+ICAKPiAtCQkvKiBUdXJuIG9mZiBTU0MxICovCj4gLQkJdmFsICY9IH5EUkVGX1NT QzFfRU5BQkxFOwo+ICsJCQkvKiBUdXJuIG9mZiB0aGUgU1NDIHNvdXJjZSAqLwo+ICsJCQl2YWwg Jj0gfkRSRUZfU1NDX1NPVVJDRV9NQVNLOwo+ICsJCQl2YWwgfD0gRFJFRl9TU0NfU09VUkNFX0RJ U0FCTEU7Cj4gIAo+IC0JCUk5MTVfV1JJVEUoUENIX0RSRUZfQ09OVFJPTCwgdmFsKTsKPiAtCQlQ T1NUSU5HX1JFQUQoUENIX0RSRUZfQ09OVFJPTCk7Cj4gLQkJdWRlbGF5KDIwMCk7Cj4gKwkJCS8q IFR1cm4gb2ZmIFNTQzEgKi8KPiArCQkJdmFsICY9IH5EUkVGX1NTQzFfRU5BQkxFOwo+ICsKPiAr CQkJSTkxNV9XUklURShQQ0hfRFJFRl9DT05UUk9MLCB2YWwpOwo+ICsJCQlQT1NUSU5HX1JFQUQo UENIX0RSRUZfQ09OVFJPTCk7Cj4gKwkJCXVkZWxheSgyMDApOwo+ICsJCX0KPiAgCX0KPiAgCj4g IAlCVUdfT04odmFsICE9IGZpbmFsKTsKPiAtLSAKPiAyLjUuNQoKLS0gClZpbGxlIFN5cmrDpGzD pApJbnRlbCBPVEMKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn Cmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVs Cg== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga14.intel.com ([192.55.52.115]:60175 "EHLO mga14.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751124AbcEXNOU (ORCPT ); Tue, 24 May 2016 09:14:20 -0400 Date: Tue, 24 May 2016 16:14:14 +0300 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= To: Lyude Cc: intel-gfx@lists.freedesktop.org, stable@vger.kernel.org, Daniel Vetter , Jani Nikula , David Airlie , "open list:INTEL DRM DRIVERS (excluding Poulsbo, Moorestow...), linux-kernel@vger.kernel.org (open list)" Subject: Re: [PATCH v2] drm/i915/ilk: Don't disable SSC source if it's in use Message-ID: <20160524131414.GE4329@intel.com> References: <20160523191635.GZ4329@intel.com> <1464033396-27649-1-git-send-email-cpaul@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <1464033396-27649-1-git-send-email-cpaul@redhat.com> Sender: stable-owner@vger.kernel.org List-ID: On Mon, May 23, 2016 at 03:56:36PM -0400, Lyude wrote: > Thanks to Ville Syrjälä for pointing me towards the cause of this issue. > > Unfortunately one of the sideaffects of having the refclk for a DPLL set > to SSC is that as long as it's set to SSC, the GPU will prevent us from > powering down any of the pipes or transcoders using it. A couple of > BIOSes enable SSC in both PCH_DREF_CONTROL and in the DPLL > configurations. This causes issues on the first modeset, since we don't > expect SSC to be left on and as a result, can't successfully power down > the pipes or the transcoders using it. Here's an example from this Dell > OptiPlex 990: > > [drm:intel_modeset_init] SSC enabled by BIOS, overriding VBT which says disabled > [drm:intel_modeset_init] 2 display pipes available. > [drm:intel_update_cdclk] Current CD clock rate: 400000 kHz > [drm:intel_update_max_cdclk] Max CD clock rate: 400000 kHz > [drm:intel_update_max_cdclk] Max dotclock rate: 360000 kHz > vgaarb: device changed decodes: PCI:0000:00:02.0,olddecodes=io+mem,decodes=io+mem:owns=io+mem > [drm:intel_crt_reset] crt adpa set to 0xf40000 > [drm:intel_dp_init_connector] Adding DP connector on port C > [drm:intel_dp_aux_init] registering DPDDC-C bus for card0-DP-1 > [drm:ironlake_init_pch_refclk] has_panel 0 has_lvds 0 has_ck505 0 > [drm:ironlake_init_pch_refclk] Disabling SSC entirely > … later we try committing the first modeset … > [drm:intel_dump_pipe_config] [CRTC:26][modeset] config ffff88041b02e800 for pipe A > [drm:intel_dump_pipe_config] cpu_transcoder: A > … > [drm:intel_dump_pipe_config] dpll_hw_state: dpll: 0xc4016001, dpll_md: 0x0, fp0: 0x20e08, fp1: 0x30d07 > [drm:intel_dump_pipe_config] planes on this crtc > [drm:intel_dump_pipe_config] STANDARD PLANE:23 plane: 0.0 idx: 0 enabled > [drm:intel_dump_pipe_config] FB:42, fb = 800x600 format = 0x34325258 > [drm:intel_dump_pipe_config] scaler:0 src (0, 0) 800x600 dst (0, 0) 800x600 > [drm:intel_dump_pipe_config] CURSOR PLANE:25 plane: 0.1 idx: 1 disabled, scaler_id = 0 > [drm:intel_dump_pipe_config] STANDARD PLANE:27 plane: 0.1 idx: 2 disabled, scaler_id = 0 > [drm:intel_get_shared_dpll] CRTC:26 allocated PCH DPLL A > [drm:intel_get_shared_dpll] using PCH DPLL A for pipe A > [drm:ilk_audio_codec_disable] Disable audio codec on port C, pipe A > [drm:intel_disable_pipe] disabling pipe A > ------------[ cut here ]------------ > WARNING: CPU: 1 PID: 130 at drivers/gpu/drm/i915/intel_display.c:1146 intel_disable_pipe+0x297/0x2d0 [i915] > pipe_off wait timed out > … > ---[ end trace 94fc8aa03ae139e8 ]--- > [drm:intel_dp_link_down] > [drm:ironlake_crtc_disable [i915]] *ERROR* failed to disable transcoder A > > Later modesets succeed since they reset the DPLL's configuration anyway, > but this is enough to get stuck with a big fat warning in dmesg. > > A better solution would be to add refcounts for the SSC source, but for > now leaving the source clock on should suffice. > > Changes since v1: > - Leave the SSC source clock on instead of just shutting it off on all > of the DPLL configurations. > > Cc: stable@vger.kernel.org > Signed-off-by: Lyude > --- > Sorry about that! I misread danvet's suggestion as "disable the SSC" instead of > "don't disable the SSC". > > drivers/gpu/drm/i915/intel_display.c | 47 +++++++++++++++++++++++++++--------- > 1 file changed, 35 insertions(+), 12 deletions(-) > > diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c > index d500e6f..dff8511 100644 > --- a/drivers/gpu/drm/i915/intel_display.c > +++ b/drivers/gpu/drm/i915/intel_display.c > @@ -8230,12 +8230,14 @@ static void ironlake_init_pch_refclk(struct drm_device *dev) > { > struct drm_i915_private *dev_priv = dev->dev_private; > struct intel_encoder *encoder; > - u32 val, final; > + int i; > + u32 val, temp, final; > bool has_lvds = false; > bool has_cpu_edp = false; > bool has_panel = false; > bool has_ck505 = false; > bool can_ssc = false; > + bool using_ssc_source = false; > > /* We need to take the global config into account */ > for_each_intel_encoder(dev, encoder) { > @@ -8283,9 +8285,26 @@ static void ironlake_init_pch_refclk(struct drm_device *dev) > else > final |= DREF_NONSPREAD_SOURCE_ENABLE; > > - final &= ~DREF_SSC_SOURCE_MASK; > final &= ~DREF_CPU_SOURCE_OUTPUT_MASK; > - final &= ~DREF_SSC1_ENABLE; > + > + /* Check if any DPLLs are using the SSC source */ > + for (i = 0; i < dev_priv->num_shared_dpll; i++) { > + temp = I915_READ(PCH_DPLL(i)); > + > + if (!(temp & DPLL_VCO_ENABLE)) > + continue; > + > + if ((temp & PLL_REF_INPUT_MASK) == > + PLLB_REF_INPUT_SPREADSPECTRUMIN) { > + using_ssc_source = true; > + break; > + } > + } > + > + if (!using_ssc_source) { > + final &= ~DREF_SSC_SOURCE_MASK; > + final &= ~DREF_SSC1_ENABLE; > + } > > if (has_panel) { > final |= DREF_SSC_SOURCE_ENABLE; > @@ -8348,7 +8367,7 @@ static void ironlake_init_pch_refclk(struct drm_device *dev) > POSTING_READ(PCH_DREF_CONTROL); > udelay(200); > } else { > - DRM_DEBUG_KMS("Disabling SSC entirely\n"); > + DRM_DEBUG_KMS("Disabling SSC CPU output\n"); The CPU source isn't necessarily SSC. It can come from SSC1 or from the non-spread source. IIRC the clock tree looks something like this: integrated \ -> non-spread -> dpll non-spread / \ ck505 -> cpu source -> edp pll / integrated -> ssc -> ssc1 -> dpll ssc integrated -> super ssc -> ssc4 -> dpll super ssc Maybe we should slap that diagram somewhere as a comment? Anyways, othewise the patch looks OK I think. As far as the original code goes, I don't actually understand it. For LVDS it can enable the SSC source but leave SSC1 modulator disabled. Not sure what's the point in using the SSC source w/ SSC1 disabled. I'm not sure that's even legal TBH. For eDP it can select the non-spread source but still leave the SSC source enabled for some reason. Also I don't understand why the has_ssc depends on ck505 on IBX. We only use ck505 as the non-spread source, so not really sure why has_ssc depends on the presence of ck505. Maybe you can only get ssc+non-spread sources enabled at the same time if one of them comes from ck505? > val &= ~DREF_CPU_SOURCE_OUTPUT_MASK; > > @@ -8359,16 +8378,20 @@ static void ironlake_init_pch_refclk(struct drm_device *dev) > POSTING_READ(PCH_DREF_CONTROL); > udelay(200); > > - /* Turn off the SSC source */ > - val &= ~DREF_SSC_SOURCE_MASK; > - val |= DREF_SSC_SOURCE_DISABLE; > + if (!using_ssc_source) { > + DRM_DEBUG_KMS("Disabling SSC source\n"); > > - /* Turn off SSC1 */ > - val &= ~DREF_SSC1_ENABLE; > + /* Turn off the SSC source */ > + val &= ~DREF_SSC_SOURCE_MASK; > + val |= DREF_SSC_SOURCE_DISABLE; > > - I915_WRITE(PCH_DREF_CONTROL, val); > - POSTING_READ(PCH_DREF_CONTROL); > - udelay(200); > + /* Turn off SSC1 */ > + val &= ~DREF_SSC1_ENABLE; > + > + I915_WRITE(PCH_DREF_CONTROL, val); > + POSTING_READ(PCH_DREF_CONTROL); > + udelay(200); > + } > } > > BUG_ON(val != final); > -- > 2.5.5 -- Ville Syrjälä Intel OTC