From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Date: Mon, 27 Aug 2018 12:55:30 +0000 Subject: Re: [PATCH 3/3] mach64: optimize wait_for_fifo Message-Id: <20180827125530.GF11867@sci.fi> List-Id: References: In-Reply-To: MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable To: Mikulas Patocka Cc: linux-fbdev@vger.kernel.org, dri-devel@lists.freedesktop.org, Bartlomiej Zolnierkiewicz On Sat, Aug 25, 2018 at 03:54:17PM -0400, Mikulas Patocka wrote: > This is a simple optimization for fifo waiting that improves scrolling > performance by 5%. If the queue has more free entries that what we > consume, we can skip the costly register read next time. >=20 > Signed-off-by: Mikulas Patocka >=20 > --- > drivers/video/fbdev/aty/atyfb.h | 12 ++++++++---- > drivers/video/fbdev/aty/mach64_accel.c | 4 +++- > 2 files changed, 11 insertions(+), 5 deletions(-) >=20 > Index: linux-stable/drivers/video/fbdev/aty/atyfb.h > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D> --- linux-stable.orig/drivers/video/fbdev/aty/= atyfb.h 2018-08-25 21:49:16.000000000 +0200 > +++ linux-stable/drivers/video/fbdev/aty/atyfb.h 2018-08-25 21:52:51.0000= 00000 +0200 > @@ -147,6 +147,7 @@ struct atyfb_par { > u16 pci_id; > u32 accel_flags; > int blitter_may_be_busy; > + unsigned fifo_space; > int asleep; > int lock_blank; > unsigned long res_start; > @@ -346,10 +347,13 @@ extern int aty_init_cursor(struct fb_inf > * Hardware acceleration > */ > =20 > -static inline void wait_for_fifo(u16 entries, const struct atyfb_par *pa= r) > +static inline void wait_for_fifo(u16 entries, struct atyfb_par *par) > { > - while ((aty_ld_le32(FIFO_STAT, par) & 0xffff) > > - ((u32) (0x8000 >> entries))); > + unsigned fifo_space =3D par->fifo_space; > + while (entries > fifo_space) { > + fifo_space =3D 16 - fls(aty_ld_le32(FIFO_STAT, par) & 0xffff); I don't recall off hand which way this register works, but based on the existing code this looks correct. Reviewed-by: Ville Syrj=E4l=E4 > + } > + par->fifo_space =3D fifo_space - entries; > } > =20 > static inline void wait_for_idle(struct atyfb_par *par) > @@ -359,7 +363,7 @@ static inline void wait_for_idle(struct > par->blitter_may_be_busy =3D 0; > } > =20 > -extern void aty_reset_engine(const struct atyfb_par *par); > +extern void aty_reset_engine(struct atyfb_par *par); > extern void aty_init_engine(struct atyfb_par *par, struct fb_info *info); > =20 > void atyfb_copyarea(struct fb_info *info, const struct fb_copyarea *area= ); > Index: linux-stable/drivers/video/fbdev/aty/mach64_accel.c > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D> --- linux-stable.orig/drivers/video/fbdev/aty/= mach64_accel.c 2018-08-25 21:49:16.000000000 +0200 > +++ linux-stable/drivers/video/fbdev/aty/mach64_accel.c 2018-08-25 21:49:= 16.000000000 +0200 > @@ -37,7 +37,7 @@ static u32 rotation24bpp(u32 dx, u32 dir > return ((rotation << 8) | DST_24_ROTATION_ENABLE); > } > =20 > -void aty_reset_engine(const struct atyfb_par *par) > +void aty_reset_engine(struct atyfb_par *par) > { > /* reset engine */ > aty_st_le32(GEN_TEST_CNTL, > @@ -50,6 +50,8 @@ void aty_reset_engine(const struct atyfb > /* HOST errors */ > aty_st_le32(BUS_CNTL, > aty_ld_le32(BUS_CNTL, par) | BUS_HOST_ERR_ACK | BUS_FIFO_ERR_ACK, par); > + > + par->fifo_space =3D 0; > } > =20 > static void reset_GTC_3D_engine(const struct atyfb_par *par) --=20 Ville Syrj=E4l=E4 syrjala@sci.fi http://www.sci.fi/~syrjala/ From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH 3/3] mach64: optimize wait_for_fifo Date: Mon, 27 Aug 2018 15:55:30 +0300 Message-ID: <20180827125530.GF11867@sci.fi> References: Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from welho-filter2.welho.com (welho-filter2.welho.com [83.102.41.24]) by gabe.freedesktop.org (Postfix) with ESMTPS id 52F5F6E253 for ; Mon, 27 Aug 2018 12:55:40 +0000 (UTC) Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Mikulas Patocka Cc: linux-fbdev@vger.kernel.org, dri-devel@lists.freedesktop.org, Bartlomiej Zolnierkiewicz List-Id: dri-devel@lists.freedesktop.org T24gU2F0LCBBdWcgMjUsIDIwMTggYXQgMDM6NTQ6MTdQTSAtMDQwMCwgTWlrdWxhcyBQYXRvY2th IHdyb3RlOgo+IFRoaXMgaXMgYSBzaW1wbGUgb3B0aW1pemF0aW9uIGZvciBmaWZvIHdhaXRpbmcg dGhhdCBpbXByb3ZlcyBzY3JvbGxpbmcKPiBwZXJmb3JtYW5jZSBieSA1JS4gSWYgdGhlIHF1ZXVl IGhhcyBtb3JlIGZyZWUgZW50cmllcyB0aGF0IHdoYXQgd2UKPiBjb25zdW1lLCB3ZSBjYW4gc2tp cCB0aGUgY29zdGx5IHJlZ2lzdGVyIHJlYWQgbmV4dCB0aW1lLgo+IAo+IFNpZ25lZC1vZmYtYnk6 IE1pa3VsYXMgUGF0b2NrYSA8bXBhdG9ja2FAcmVkaGF0LmNvbT4KPiAKPiAtLS0KPiAgZHJpdmVy cy92aWRlby9mYmRldi9hdHkvYXR5ZmIuaCAgICAgICAgfCAgIDEyICsrKysrKysrLS0tLQo+ICBk cml2ZXJzL3ZpZGVvL2ZiZGV2L2F0eS9tYWNoNjRfYWNjZWwuYyB8ICAgIDQgKysrLQo+ICAyIGZp bGVzIGNoYW5nZWQsIDExIGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCj4gCj4gSW5kZXg6 IGxpbnV4LXN0YWJsZS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2F0eS9hdHlmYi5oCj4gPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQo+IC0tLSBsaW51eC1zdGFibGUub3JpZy9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2F0eS9hdHlmYi5o CTIwMTgtMDgtMjUgMjE6NDk6MTYuMDAwMDAwMDAwICswMjAwCj4gKysrIGxpbnV4LXN0YWJsZS9k cml2ZXJzL3ZpZGVvL2ZiZGV2L2F0eS9hdHlmYi5oCTIwMTgtMDgtMjUgMjE6NTI6NTEuMDAwMDAw MDAwICswMjAwCj4gQEAgLTE0Nyw2ICsxNDcsNyBAQCBzdHJ1Y3QgYXR5ZmJfcGFyIHsKPiAgCXUx NiBwY2lfaWQ7Cj4gIAl1MzIgYWNjZWxfZmxhZ3M7Cj4gIAlpbnQgYmxpdHRlcl9tYXlfYmVfYnVz eTsKPiArCXVuc2lnbmVkIGZpZm9fc3BhY2U7Cj4gIAlpbnQgYXNsZWVwOwo+ICAJaW50IGxvY2tf Ymxhbms7Cj4gIAl1bnNpZ25lZCBsb25nIHJlc19zdGFydDsKPiBAQCAtMzQ2LDEwICszNDcsMTMg QEAgZXh0ZXJuIGludCBhdHlfaW5pdF9jdXJzb3Ioc3RydWN0IGZiX2luZgo+ICAgICAgICogIEhh cmR3YXJlIGFjY2VsZXJhdGlvbgo+ICAgICAgICovCj4gIAo+IC1zdGF0aWMgaW5saW5lIHZvaWQg d2FpdF9mb3JfZmlmbyh1MTYgZW50cmllcywgY29uc3Qgc3RydWN0IGF0eWZiX3BhciAqcGFyKQo+ ICtzdGF0aWMgaW5saW5lIHZvaWQgd2FpdF9mb3JfZmlmbyh1MTYgZW50cmllcywgc3RydWN0IGF0 eWZiX3BhciAqcGFyKQo+ICB7Cj4gLQl3aGlsZSAoKGF0eV9sZF9sZTMyKEZJRk9fU1RBVCwgcGFy KSAmIDB4ZmZmZikgPgo+IC0JICAgICAgICgodTMyKSAoMHg4MDAwID4+IGVudHJpZXMpKSk7Cj4g Kwl1bnNpZ25lZCBmaWZvX3NwYWNlID0gcGFyLT5maWZvX3NwYWNlOwo+ICsJd2hpbGUgKGVudHJp ZXMgPiBmaWZvX3NwYWNlKSB7Cj4gKwkJZmlmb19zcGFjZSA9IDE2IC0gZmxzKGF0eV9sZF9sZTMy KEZJRk9fU1RBVCwgcGFyKSAmIDB4ZmZmZik7CgpJIGRvbid0IHJlY2FsbCBvZmYgaGFuZCB3aGlj aCB3YXkgdGhpcyByZWdpc3RlciB3b3JrcywgYnV0IGJhc2VkCm9uIHRoZSBleGlzdGluZyBjb2Rl IHRoaXMgbG9va3MgY29ycmVjdC4KClJldmlld2VkLWJ5OiBWaWxsZSBTeXJqw6Rsw6QgPHN5cmph bGFAc2NpLmZpPgoKPiArCX0KPiArCXBhci0+Zmlmb19zcGFjZSA9IGZpZm9fc3BhY2UgLSBlbnRy aWVzOwo+ICB9Cj4gIAo+ICBzdGF0aWMgaW5saW5lIHZvaWQgd2FpdF9mb3JfaWRsZShzdHJ1Y3Qg YXR5ZmJfcGFyICpwYXIpCj4gQEAgLTM1OSw3ICszNjMsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQg d2FpdF9mb3JfaWRsZShzdHJ1Y3QKPiAgCXBhci0+YmxpdHRlcl9tYXlfYmVfYnVzeSA9IDA7Cj4g IH0KPiAgCj4gLWV4dGVybiB2b2lkIGF0eV9yZXNldF9lbmdpbmUoY29uc3Qgc3RydWN0IGF0eWZi X3BhciAqcGFyKTsKPiArZXh0ZXJuIHZvaWQgYXR5X3Jlc2V0X2VuZ2luZShzdHJ1Y3QgYXR5ZmJf cGFyICpwYXIpOwo+ICBleHRlcm4gdm9pZCBhdHlfaW5pdF9lbmdpbmUoc3RydWN0IGF0eWZiX3Bh ciAqcGFyLCBzdHJ1Y3QgZmJfaW5mbyAqaW5mbyk7Cj4gIAo+ICB2b2lkIGF0eWZiX2NvcHlhcmVh KHN0cnVjdCBmYl9pbmZvICppbmZvLCBjb25zdCBzdHJ1Y3QgZmJfY29weWFyZWEgKmFyZWEpOwo+ IEluZGV4OiBsaW51eC1zdGFibGUvZHJpdmVycy92aWRlby9mYmRldi9hdHkvbWFjaDY0X2FjY2Vs LmMKPiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Cj4gLS0tIGxpbnV4LXN0YWJsZS5vcmlnL2RyaXZlcnMvdmlkZW8vZmJk ZXYvYXR5L21hY2g2NF9hY2NlbC5jCTIwMTgtMDgtMjUgMjE6NDk6MTYuMDAwMDAwMDAwICswMjAw Cj4gKysrIGxpbnV4LXN0YWJsZS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2F0eS9tYWNoNjRfYWNjZWwu YwkyMDE4LTA4LTI1IDIxOjQ5OjE2LjAwMDAwMDAwMCArMDIwMAo+IEBAIC0zNyw3ICszNyw3IEBA IHN0YXRpYyB1MzIgcm90YXRpb24yNGJwcCh1MzIgZHgsIHUzMiBkaXIKPiAgCXJldHVybiAoKHJv dGF0aW9uIDw8IDgpIHwgRFNUXzI0X1JPVEFUSU9OX0VOQUJMRSk7Cj4gIH0KPiAgCj4gLXZvaWQg YXR5X3Jlc2V0X2VuZ2luZShjb25zdCBzdHJ1Y3QgYXR5ZmJfcGFyICpwYXIpCj4gK3ZvaWQgYXR5 X3Jlc2V0X2VuZ2luZShzdHJ1Y3QgYXR5ZmJfcGFyICpwYXIpCj4gIHsKPiAgCS8qIHJlc2V0IGVu Z2luZSAqLwo+ICAJYXR5X3N0X2xlMzIoR0VOX1RFU1RfQ05UTCwKPiBAQCAtNTAsNiArNTAsOCBA QCB2b2lkIGF0eV9yZXNldF9lbmdpbmUoY29uc3Qgc3RydWN0IGF0eWZiCj4gIAkvKiBIT1NUIGVy cm9ycyAqLwo+ICAJYXR5X3N0X2xlMzIoQlVTX0NOVEwsCj4gIAkJYXR5X2xkX2xlMzIoQlVTX0NO VEwsIHBhcikgfCBCVVNfSE9TVF9FUlJfQUNLIHwgQlVTX0ZJRk9fRVJSX0FDSywgcGFyKTsKPiAr Cj4gKwlwYXItPmZpZm9fc3BhY2UgPSAwOwo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZCByZXNldF9H VENfM0RfZW5naW5lKGNvbnN0IHN0cnVjdCBhdHlmYl9wYXIgKnBhcikKCi0tIApWaWxsZSBTeXJq w6Rsw6QKc3lyamFsYUBzY2kuZmkKaHR0cDovL3d3dy5zY2kuZmkvfnN5cmphbGEvCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5n IGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVk ZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=