From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lyude Subject: Re: [PATCH v4 0/6] Finally fix watermarks Date: Fri, 29 Jul 2016 14:48:09 -0400 Message-ID: <1469818089.23735.32.camel@redhat.com> References: <1469554483-24999-1-git-send-email-cpaul@redhat.com> <20160729000352.GR32025@intel.com> <20160729093905.GU4329@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20160729093905.GU4329@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Ville =?ISO-8859-1?Q?Syrj=E4l=E4?= , Matt Roper Cc: Daniel Vetter , intel-gfx@lists.freedesktop.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org U28gSSd2ZSBiZWVuIHdvcmtpbmcgb24gdHJ5aW5nIHRvIGZpeCB0aGlzIGVudGlyZWx5IGFnYWlu IChlLmcuIHdyaXRpbmcKdGhlIGRkYiBwcm9wZXJseSksIHNpbmNlIGZyb20gYnVnIHJlcG9ydHMg aXQgc3RpbGwgZG9lc24ndCBzb3VuZCBsaWtlCndlJ3ZlIGdvdCBlbm91Z2ggd29ya2Fyb3VuZHMg dG8gbWFrZSB0aGlzIHRvbGVyYWJsZS4gSSd2ZSBzaG93biB0aGlzIHRvCm1hdHQgcm9wZXIsIGJ1 dCBJIHNob3VsZCBwcm9iYWJseSBwb3N0IHdoYXQgSSd2ZSBiZWVuIHRyeWluZyB0byBkbyBmb3IK eW91IGFzIHdlbGwuCgpTbyB0aGUgYXBwcm9hY2ggSSBjYW1lIHVwIHdpdGggaXMgaGVyZQoKaHR0 cHM6Ly9naXRodWIuY29tL2x5dWRlL2xpbnV4L3RyZWUvd2lwL3NrbC1maXgtd21zLXY1cjIKCk15 IGFwcHJvYWNoIGRpZmZlcnMgYSBsaXR0bGUgYml0IGZyb20gd2hhdCB0aGUgYnNwZWMgcmVjb21t ZW5kcywgYnV0IEkKdGhpbmsgaXQncyBnb2luZyB0byBiZSBhIGJpdCBlYXNpZXIgdG8gaW1wbGVt ZW50LiBBdCB0aGUgZW5kIG9mIGFsbCB0aGUKY2hhbmdlcyBJJ20gYXR0ZW1wdGluZyBpdCBzaG91 bGQgbG9vayBsaWtlIHRoaXM6CgogKiBXZSBubyBsb25nZXIgaGF2ZSBhIGdsb2JhbCB3YXRlcm1h cmsgdXBkYXRlIGZvciBza2wKICogQSBuZXcgaG9vayBjYWxsZWQgInVwZGF0ZV9kZGJzIiBpcyBh ZGRlZCB0byBpOTE1X2Rpc3BsYXlfZnVuY3MuIFRoaXMKICAgZ2V0cyBjYWxsZWQgaW4gaW50ZWxf YXRvbWljX2NvbW1pdF90YWlsKCkgYWZ0ZXIgd2UndmUgZGlzYWJsZWQgYW55CiAgIENSVENzIHRo YXQgbmVlZGVkIGRpc2FibGluZywgYW5kIGJlZm9yZSB3ZSBiZWdpbiBlbmFibGluZy91cGRhdGlu ZwogICBDUlRDcwogKiBCZWNhdXNlIHBpcGUgZGRiIGFsbG9jYXRpb25zIChub3QgdGhlIGlubmVy LXBpcGUgZGRiIGFsbG9jYXRpb25zCiAgIHRoYXQgYXBwbHkgdG8gZWFjaCBwaXBlJ3MgcGxhbmVz KSBvbmx5IGNoYW5nZSB3aGlsZQogICBlbmFibGluZy9kaXNhYmxpbmcgY3J0Y3M6CiAgICAqIFBh c3MgMTogRmluZCB3aGljaCBwaXBlJ3MgbmV3IGRkYiBhbGxvY2F0aW9uIHdvbid0IG92ZXJsYXAg d2l0aAogICAgICBhbm90aGVyIHBpcGUncyBwcmV2aW91cyBhbGxvY2F0aW9uLCBhbmQgdXBkYXRl IHRoYXQgcGlwZSBmaXJzdAogICAgKiBQYXNzIDI6IFVwZGF0ZSB0aGUgYWxsb2NhdGlvbiBvZiB0 aGUgcmVtYWluaW5nIHBpcGUKCkhlcmUncyBhbiBpbGx1c3RyYXRpb24gb2Ygd2hhdCB0aGlzIGxv b2tzIGxpa2UuIFBhcnRzIG9mIHRoZSBkZGIgbm90CmJlaW5nIHVzZWQgYnkgYW55IENSVENzIGFy ZSBtYXJrZWQgb3V0IHdpdGggJ3gnczoKCldpdGggcGlwZSBBIGVuYWJsZWQsIHdlIGVuYWJsZSBw aXBlIEI6CkluaXRpYWwgRERCOiDCoCDCoHwgwqAgwqAgwqAgwqAgwqAgQSDCoCDCoCDCoCDCoCDC oCB8CnVwZGF0ZV9kZGJzOiDCoCDCoHwgwqAgwqAgQSDCoCDCoCB8eHh4eHh4eHh4eHh8IFBhc3Mg MQpFbmFibGUgcGlwZSBCOiDCoHwgwqAgwqAgQSDCoCDCoCB8IMKgIMKgIEIgwqAgwqAgfAoKV2l0 aCBwaXBlcyBCIGFuZCBBIGFjdGl2ZSwgd2UgZW5hYmxlIHBpcGUgQzoKCkluaXRpYWwgRERCOiDC oCDCoHwgwqAgwqAgQiDCoCDCoCB8IMKgIMKgIEEgwqAgwqAgfAp1cGRhdGVfZGRiczogwqAgwqB8 IMKgIEIgwqAgfHh4eHwgwqAgwqAgQSDCoCDCoCB8IFBhc3MgMQp1cGRhdGVfZGRiczogwqAgwqB8 IMKgIEIgwqAgfCDCoCBBIMKgIHx4eHh4eHh4fCBQYXNzIDIKRW5hYmxlIHBpcGUgQzogwqB8IMKg IEIgwqAgfCDCoCBBIMKgIHwgwqAgQyDCoCB8CgpXaXRoIHBpcGVzIEEsIEIsIGFuZCBDIGFjdGl2 ZSwgd2UgZGlzYWJsZSBCOgpJbml0aWFsIEREQjogwqAgwqB8IMKgIEEgwqAgfCDCoCBCIMKgIHwg wqAgQyDCoCB8CkRpc2FibGUgcGlwZSBCOiB8IMKgIEEgwqAgfHh4eHh4eHh8IMKgIEMgwqAgfAp1 cGRhdGVfZGRiczogwqAgwqB8IMKgIMKgIEEgwqAgwqAgfCDCoCDCoCBDIMKgIMKgIHwgUGFzcyAx ClNpbmNlIG5laXRoZXIgcGlwZSdzIG5ldyBhbGxvY2F0aW9uIG92ZXJsYXBwZWQsIHdlIHNraXAg cGFzcyAyCgpBbm90aGVyIGFsbG9jYXRpb24gd2l0aCBBLCBCLCBhbmQgQyBhY3RpdmUsIGRpc2Fi bGluZyBBOgpJbml0aWFsIEREQjogwqAgwqB8IMKgIEEgwqAgfCDCoCBCIMKgIHwgwqAgQyDCoCB8 CkRpc2FibGUgcGlwZSBBOiB8eHh4eHh4eHwgwqAgQiDCoCB8IMKgIEMgwqAgfAp1cGRhdGVfZGRi czogwqAgwqB8IMKgIMKgIEIgwqAgwqAgfHh4eHwgwqAgQyDCoCB8IFBhc3MgMQp1cGRhdGVfZGRi czogwqAgwqB8IMKgIMKgIEIgwqAgwqAgfCDCoCDCoCBDIMKgIMKgIHwgUGFzcyAyCgpUaGlzIHNo b3VsZCBlbnN1cmUgd2UgY2FuIGFsd2F5cyBtb3ZlIGFyb3VuZCB0aGUgYWxsb2NhdGlvbnMgb2Yg cGlwZXMKd2l0aG91dCB0aGVtIGV2ZXIgb3ZlcmxhcHBpbmcgYW5kIGV4cGxvZGluZy4KClRoaXMg YnJhbmNoIGRvZXNuJ3QgZW50aXJlbHkgZml4IHVuZGVycnVuIGlzc3VlcywgYnV0IEknbSBtb3N0 bHkgc3VyZQp0aGF0J3MgdGhlIGZhdWx0IG9mIHN0aWxsIG5vdCBoYXZpbmcgcmVtb3ZlZCB0aGUg Z2xvYmFsIHdtIHVwZGF0ZSBob29rCnlldCAod2hpY2ggaXMgbGVhZGluZyB0byBhZGRpdGlvbmFs IHBpcGUgZmx1c2hlcyBpbiBwbGFjZXMgdGhleQpzaG91bGRuJ3QgYmUpOgoKaHR0cHM6Ly9naXRo dWIuY29tL2x5dWRlL2xpbnV4L3RyZWUvd2lwL3NrbC1maXgtd21zLXY1cjIKCkFzIGZvciB1cGRh dGluZyBpbm5lci1waXBlIGRkYiBhbGxvY2F0aW9ucyBmb3IgZWFjaCBwbGFuZSBvbiBhIHBpcGUs IHdlCnNob3VsZCBiZSBhYmxlIHRvIGp1c3QgZG8gdGhhdCBhdCB0aGUgc2FtZSB0aW1lIHdlIHVw ZGF0ZSBlYWNoIHBpcGUncwp3YXRlcm1hcmtzCgpMZXQgbWUga25vdyB3aGF0IHlvdSB0aGluawoJ THl1ZGUKCk9uIEZyaSwgMjAxNi0wNy0yOSBhdCAxMjozOSArMDMwMCwgVmlsbGUgU3lyasOkbMOk IHdyb3RlOgo+IE9uIFRodSwgSnVsIDI4LCAyMDE2IGF0IDA1OjAzOjUyUE0gLTA3MDAsIE1hdHQg Um9wZXIgd3JvdGU6Cj4gPiAKPiA+IFRoaXMgaXMgY29tcGxldGVseSB1bnRlc3RlZCAoYW5kIHBy b2JhYmx5IGhvcnJpYmx5IGJyb2tlbi9idWdneSksCj4gPiBidXQKPiA+IGhlcmUncyBhIHF1aWNr IG1vY2t1cCBvZiB0aGUgZ2VuZXJhbCBhcHByb2FjaCBJIHdhcyB0aGlua2luZyBmb3IKPiA+IGVu c3VyaW5nIEREQiAmIFdNJ3MgY2FuIGJlIHVwZGF0ZWQgdG9nZXRoZXIgd2hpbGUgZW5zdXJpbmcg dGhlCj4gPiB0aHJlZS1zdGVwIHBpcGUgZmx1c2hpbmcgcHJvY2VzcyBpcyBob25vcmVkOgo+ID4g Cj4gPiDCoMKgwqDCoMKgwqDCoMKgaHR0cHM6Ly9naXRodWIuY29tL21hdHRyb3BlL2tlcm5lbC9j b21taXRzL2V4cGVyaW1lbnRhbC9seXUKPiA+IGRlX2RkYgo+ID4gCj4gPiBCYXNpY2FsbHkgdGhl IGlkZWEgaXMgdG8gdGFrZSBub3RlIG9mIHdoYXQncyBoYXBwZW5pbmcgdG8gdGhlCj4gPiBwaXBl J3MgRERCCj4gPiBhbGxvY2F0aW9uIChzaHJpbmtpbmcsIGdyb3dpbmcsIHVuY2hhbmdlZCwgZXRj LikgZHVyaW5nIHRoZSBhdG9taWMKPiA+IGNoZWNrCj4gPiBwaGFzZTsKPiAKPiBEaWRuJ3QgbG9v ayB0b28gY2xvc2VseSwgYnV0IEkgdGhpbmsgeW91IGNhbid0IGFjdHVhbGx5IGRvIHRoYXQKPiB1 bmxlc3MKPiB5b3UgbG9jayBhbGwgdGhlIGNydGNzIHdoZW5ldmVyIHRoZSBudW1iZXIgb2YgYWN0 aXZlIHBpcGVzIGlzIGdvaW5kCj4gdG8KPiBjaGFuZ2UuIE1lYW5pbmcgd2UnZCBlc3NlbnRpYWxs eSBiZSBiYWNrIHRvIHRoZSBvbmUtYmlnLW1vZGVzZXQtbG9jawo+IGFwcG9yYWNoLCB3aGljaCB3 aWxsIGNhdXNlIG1pc3NlZCBmbGlwcyBhbmQgd2hhbm90IG9uIHRoZSBvdGhlcgo+IHBpcGVzLgo+ IAo+IFRoZSBhbHRlcm5hdGl2ZSBJIHRoaW5rIHdvdWxkIGNvbnNpc3Qgb2Y6Cj4gLSBtYWtlIHN1 cmUgbGV2ZWwgMCB3YXRlcm1hcmsgbmV2ZXIgZXhjZWVkcyB0b3RhbF9kZGJfc2l6ZS9tYXhfcGlw ZXMsCj4gwqAgc28gdGhhdCBhIG1vZGVzZXQgZG9lc24ndCBoYXZlIHRvIGNhcmUgYWJvdXQgdGhl IHdtcyBmb3IgdGhlIG90aGVyCj4gwqAgcGlwZXMgbm90IGZpdHRpbmcgaW4KPiAtIGxldmVsIDEr IHdhdGVybWFya3Mgd291bGQgYmUgY2hlY2tlZCBhZ2FpbnN0IHRvdGFsX2RkYl9zaXplCj4gLSBw cm90ZWN0IHRoZSBwbGFuZS9waXBlIGNvbW1pdCB3aXRoIHRoZSB3bSBtdXRleCB3aGVuZXZlciB0 aGUgd21zCj4gwqAgbmVlZCB0byBiZSByZXByb2dyYW1tZWQKPiAtIGtlZXAgdGhlIGZsdXNoX3dt IHRoaW5nIGFyb3VuZCBmb3IgdGhlIGNhc2Ugd2hlbiBkZGIgc2l6ZSBkb2VzIGdldAo+IMKgIGNo YW5nZWQsIHByb3RlY3QgaXQgd2l0aCB0aGUgd20gbG9jawo+IC0gd2hlbiBwcm9ncmFtbWluZyB3 bXMsIHdlIHdpbGwgZmlyc3QgZmlsdGVyIG91dCBhbnkgbGV2ZWwgdGhhdAo+IMKgIGRvZXNuJ3Qg Zml0IGluIHdpdGggdGhlIGN1cnJlbnQgZGRiIHNpemUsIGFuZCB0aGVuIHByb2dyYW0gdGhlCj4g wqAgcmVzdCBpbgo+IC0gcG90ZW50aWFsbHkgaW50cm9kdWNlIHBlci1waXBlIHdtIGxvY2tzIGlm IHRoZSBvbmUgYmlnIGxvY2sgbG9va3MKPiDCoCBsaWtlIGFuIGlzc3VlLCB3aGljaCBpdCBtaWdo dCBpZiB0aGUgZmx1c2hfd20gaG9sZHMgaXQgYWxsIHRoZSB3YXkKPiDCoCB0aHJvdWdoCj4gCj4g PiAKPiA+IHRoZW4gZHVyaW5nIHRoZSBjb21taXQgcGhhc2UsIHdlIGxvb3Agb3ZlciB0aGUgQ1JU QydzIHRocmVlIHRpbWVzCj4gPiBpbnN0ZWFkIG9mIGp1c3Qgb25jZSwgYnV0IG9ubHkgb3BlcmF0 ZSBvbiBhIHN1YnNldCBvZiB0aGUgQ1JUQydzIGluCj4gPiBlYWNoCj4gPiBsb29wLsKgwqBXaGls ZSBvcGVyYXRpbmcgb24gZWFjaCBDUlRDLCB0aGUgcGxhbmUsIFdNLCBhbmQgRERCIGFsbCBnZXQK PiA+IHByb2dyYW1tZWQgdG9nZXRoZXIgYW5kIGhhdmUgYSBzaW5nbGUgZmx1c2ggZm9yIGFsbCB0 aHJlZS4KPiA+IAo+ID4gCj4gPiAKPiA+IAo+ID4gTWF0dAo+ID4gCj4gPiBPbiBUdWUsIEp1bCAy NiwgMjAxNiBhdCAwMTozNDozNlBNIC0wNDAwLCBMeXVkZSB3cm90ZToKPiA+ID4gCj4gPiA+IExh dGVzdCB2ZXJzaW9uIG9mIGh0dHBzOi8vbGttbC5vcmcvbGttbC8yMDE2LzcvMjYvMjkwIC4gUmVz ZW5kaW5nCj4gPiA+IHRoZSB3aG9sZQo+ID4gPiB0aGluZyB0byBrZWVwIGl0IGluIG9uZSBwbGFj ZS4KPiA+ID4gCj4gPiA+IEx5dWRlICg1KToKPiA+ID4gwqAgZHJtL2k5MTUvc2tsOiBBZGQgc3Vw cG9ydCBmb3IgdGhlIFNBR1YsIGZpeCB1bmRlcnJ1biBoYW5ncwo+ID4gPiDCoCBkcm0vaTkxNS9z a2w6IE9ubHkgZmx1c2ggcGlwZXMgd2hlbiB3ZSBjaGFuZ2UgdGhlIGRkYgo+ID4gPiBhbGxvY2F0 aW9uCj4gPiA+IMKgIGRybS9pOTE1L3NrbDogRml4IGV4dHJhIHdoaXRlc3BhY2UgaW4gc2tsX2Zs dXNoX3dtX3ZhbHVlcygpCj4gPiA+IMKgIGRybS9pOTE1L3NrbDogVXBkYXRlIHBsYW5lIHdhdGVy bWFya3MgYXRvbWljYWxseSBkdXJpbmcgcGxhbmUKPiA+ID4gdXBkYXRlcwo+ID4gPiDCoCBkcm0v aTkxNS9za2w6IEFsd2F5cyB3YWl0IGZvciBwaXBlcyB0byB1cGRhdGUgYWZ0ZXIgYSBmbHVzaAo+ ID4gPiAKPiA+ID4gTWF0dCBSb3BlciAoMSk6Cj4gPiA+IMKgIGRybS9pOTE1L2dlbjk6IE9ubHkg Y29weSBXTSByZXN1bHRzIGZvciBjaGFuZ2VkIHBpcGVzIHRvIHNrbF9odwo+ID4gPiAKPiA+ID4g wqBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5owqDCoMKgwqDCoMKgfMKgwqDCoDMgKwo+ ID4gPiDCoGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmjCoMKgwqDCoMKgwqB8wqDCoMKg NSArCj4gPiA+IMKgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIHzCoMKgMjQg KysrKwo+ID4gPiDCoGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5owqDCoMKgwqDCoHzC oMKgwqA0ICsKPiA+ID4gwqBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jwqDCoMKgwqDC oMKgfCAyNDAKPiA+ID4gKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0KPiA+ID4g wqBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUuY8KgwqB8wqDCoMKgMiArCj4gPiA+ IMKgNiBmaWxlcyBjaGFuZ2VkLCAyNTUgaW5zZXJ0aW9ucygrKSwgMjMgZGVsZXRpb25zKC0pCj4g PiA+IAo+ID4gPiAtLcKgCj4gPiA+IDIuNy40Cj4gPiA+IAo+ID4gPiBfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+ID4gPiBJbnRlbC1nZnggbWFpbGluZyBs aXN0Cj4gPiA+IEludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiA+ID4gaHR0cHM6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngKPiA+IAo+ID4g LS3CoAo+ID4gTWF0dCBSb3Blcgo+ID4gR3JhcGhpY3MgU29mdHdhcmUgRW5naW5lZXIKPiA+IElv VEcgUGxhdGZvcm0gRW5hYmxpbmcgJiBEZXZlbG9wbWVudAo+ID4gSW50ZWwgQ29ycG9yYXRpb24K PiA+ICg5MTYpIDM1Ni0yNzk1Cj4gCi0tIApDaGVlcnMsCglMeXVkZQpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0Cklu dGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753408AbcG2SsR (ORCPT ); Fri, 29 Jul 2016 14:48:17 -0400 Received: from mx1.redhat.com ([209.132.183.28]:40996 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751347AbcG2SsM (ORCPT ); Fri, 29 Jul 2016 14:48:12 -0400 Message-ID: <1469818089.23735.32.camel@redhat.com> Subject: Re: [Intel-gfx] [PATCH v4 0/6] Finally fix watermarks From: Lyude To: Ville =?ISO-8859-1?Q?Syrj=E4l=E4?= , Matt Roper Cc: intel-gfx@lists.freedesktop.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Daniel Vetter Date: Fri, 29 Jul 2016 14:48:09 -0400 In-Reply-To: <20160729093905.GU4329@intel.com> References: <1469554483-24999-1-git-send-email-cpaul@redhat.com> <20160729000352.GR32025@intel.com> <20160729093905.GU4329@intel.com> Organization: Red Hat Content-Type: text/plain; charset="UTF-8" Mime-Version: 1.0 Content-Transfer-Encoding: 8bit X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.29]); Fri, 29 Jul 2016 18:48:12 +0000 (UTC) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org So I've been working on trying to fix this entirely again (e.g. writing the ddb properly), since from bug reports it still doesn't sound like we've got enough workarounds to make this tolerable. I've shown this to matt roper, but I should probably post what I've been trying to do for you as well. So the approach I came up with is here https://github.com/lyude/linux/tree/wip/skl-fix-wms-v5r2 My approach differs a little bit from what the bspec recommends, but I think it's going to be a bit easier to implement. At the end of all the changes I'm attempting it should look like this: * We no longer have a global watermark update for skl * A new hook called "update_ddbs" is added to i915_display_funcs. This gets called in intel_atomic_commit_tail() after we've disabled any CRTCs that needed disabling, and before we begin enabling/updating CRTCs * Because pipe ddb allocations (not the inner-pipe ddb allocations that apply to each pipe's planes) only change while enabling/disabling crtcs: * Pass 1: Find which pipe's new ddb allocation won't overlap with another pipe's previous allocation, and update that pipe first * Pass 2: Update the allocation of the remaining pipe Here's an illustration of what this looks like. Parts of the ddb not being used by any CRTCs are marked out with 'x's: With pipe A enabled, we enable pipe B: Initial DDB:    |           A           | update_ddbs:    |     A     |xxxxxxxxxxx| Pass 1 Enable pipe B:  |     A     |     B     | With pipes B and A active, we enable pipe C: Initial DDB:    |     B     |     A     | update_ddbs:    |   B   |xxx|     A     | Pass 1 update_ddbs:    |   B   |   A   |xxxxxxx| Pass 2 Enable pipe C:  |   B   |   A   |   C   | With pipes A, B, and C active, we disable B: Initial DDB:    |   A   |   B   |   C   | Disable pipe B: |   A   |xxxxxxx|   C   | update_ddbs:    |     A     |     C     | Pass 1 Since neither pipe's new allocation overlapped, we skip pass 2 Another allocation with A, B, and C active, disabling A: Initial DDB:    |   A   |   B   |   C   | Disable pipe A: |xxxxxxx|   B   |   C   | update_ddbs:    |     B     |xxx|   C   | Pass 1 update_ddbs:    |     B     |     C     | Pass 2 This should ensure we can always move around the allocations of pipes without them ever overlapping and exploding. This branch doesn't entirely fix underrun issues, but I'm mostly sure that's the fault of still not having removed the global wm update hook yet (which is leading to additional pipe flushes in places they shouldn't be): https://github.com/lyude/linux/tree/wip/skl-fix-wms-v5r2 As for updating inner-pipe ddb allocations for each plane on a pipe, we should be able to just do that at the same time we update each pipe's watermarks Let me know what you think Lyude On Fri, 2016-07-29 at 12:39 +0300, Ville Syrjälä wrote: > On Thu, Jul 28, 2016 at 05:03:52PM -0700, Matt Roper wrote: > > > > This is completely untested (and probably horribly broken/buggy), > > but > > here's a quick mockup of the general approach I was thinking for > > ensuring DDB & WM's can be updated together while ensuring the > > three-step pipe flushing process is honored: > > > >         https://github.com/mattrope/kernel/commits/experimental/lyu > > de_ddb > > > > Basically the idea is to take note of what's happening to the > > pipe's DDB > > allocation (shrinking, growing, unchanged, etc.) during the atomic > > check > > phase; > > Didn't look too closely, but I think you can't actually do that > unless > you lock all the crtcs whenever the number of active pipes is goind > to > change. Meaning we'd essentially be back to the one-big-modeset-lock > apporach, which will cause missed flips and whanot on the other > pipes. > > The alternative I think would consist of: > - make sure level 0 watermark never exceeds total_ddb_size/max_pipes, >   so that a modeset doesn't have to care about the wms for the other >   pipes not fitting in > - level 1+ watermarks would be checked against total_ddb_size > - protect the plane/pipe commit with the wm mutex whenever the wms >   need to be reprogrammed > - keep the flush_wm thing around for the case when ddb size does get >   changed, protect it with the wm lock > - when programming wms, we will first filter out any level that >   doesn't fit in with the current ddb size, and then program the >   rest in > - potentially introduce per-pipe wm locks if the one big lock looks >   like an issue, which it might if the flush_wm holds it all the way >   through > > > > > then during the commit phase, we loop over the CRTC's three times > > instead of just once, but only operate on a subset of the CRTC's in > > each > > loop.  While operating on each CRTC, the plane, WM, and DDB all get > > programmed together and have a single flush for all three. > > > > > > > > > > Matt > > > > On Tue, Jul 26, 2016 at 01:34:36PM -0400, Lyude wrote: > > > > > > Latest version of https://lkml.org/lkml/2016/7/26/290 . Resending > > > the whole > > > thing to keep it in one place. > > > > > > Lyude (5): > > >   drm/i915/skl: Add support for the SAGV, fix underrun hangs > > >   drm/i915/skl: Only flush pipes when we change the ddb > > > allocation > > >   drm/i915/skl: Fix extra whitespace in skl_flush_wm_values() > > >   drm/i915/skl: Update plane watermarks atomically during plane > > > updates > > >   drm/i915/skl: Always wait for pipes to update after a flush > > > > > > Matt Roper (1): > > >   drm/i915/gen9: Only copy WM results for changed pipes to skl_hw > > > > > >  drivers/gpu/drm/i915/i915_drv.h      |   3 + > > >  drivers/gpu/drm/i915/i915_reg.h      |   5 + > > >  drivers/gpu/drm/i915/intel_display.c |  24 ++++ > > >  drivers/gpu/drm/i915/intel_drv.h     |   4 + > > >  drivers/gpu/drm/i915/intel_pm.c      | 240 > > > +++++++++++++++++++++++++++++++---- > > >  drivers/gpu/drm/i915/intel_sprite.c  |   2 + > > >  6 files changed, 255 insertions(+), 23 deletions(-) > > > > > > --  > > > 2.7.4 > > > > > > _______________________________________________ > > > Intel-gfx mailing list > > > Intel-gfx@lists.freedesktop.org > > > https://lists.freedesktop.org/mailman/listinfo/intel-gfx > > > > --  > > Matt Roper > > Graphics Software Engineer > > IoTG Platform Enabling & Development > > Intel Corporation > > (916) 356-2795 > -- Cheers, Lyude