From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ladislav Michl Date: Tue, 05 Jun 2018 10:48:58 +0000 Subject: Re: [PATCH 08/21] udl-kms: avoid prefetch Message-Id: <20180605104858.GA22237@lenoch> List-Id: References: <20180603144053.875668929@twibright.com> <20180603144221.959741603@twibright.com> In-Reply-To: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: Alexey Brodkin Cc: "linux-fbdev@vger.kernel.org" , "b.zolnierkie@samsung.com" , "bernie@plugable.com" , "dri-devel@lists.freedesktop.org" , "mpatocka@redhat.com" , "airlied@redhat.com" On Tue, Jun 05, 2018 at 10:08:02AM +0000, Alexey Brodkin wrote: > Hi Mikulas, > > On Sun, 2018-06-03 at 16:41 +0200, Mikulas Patocka wrote: > > Modern processors can detect linear memory accesses and prefetch data > > automatically, so there's no need to use prefetch. > > Not each and every CPU that's capable of running Linux has prefetch > functionality :) > > Still read-on... > > > Signed-off-by: Mikulas Patocka > > > > --- > > drivers/gpu/drm/udl/udl_transfer.c | 7 ------- > > 1 file changed, 7 deletions(-) > > > > Index: linux-4.16.12/drivers/gpu/drm/udl/udl_transfer.c > > =================================> > --- linux-4.16.12.orig/drivers/gpu/drm/udl/udl_transfer.c 2018-05-31 14:48:12.000000000 +0200 > > +++ linux-4.16.12/drivers/gpu/drm/udl/udl_transfer.c 2018-05-31 14:48:12.000000000 +0200 > > @@ -13,7 +13,6 @@ > > #include > > #include > > #include > > -#include > > #include > > > > #include > > @@ -51,9 +50,6 @@ static int udl_trim_hline(const u8 *bbac > > int start = width; > > int end = width; > > > > - prefetch((void *) front); > > - prefetch((void *) back); > > AFAIK prefetcher fetches new data according to a known history... i.e. based on previously > used pattern we'll trying to get the next batch of data. > > But the code above is in the very beginning of the data processing routine where > prefetcher doesn't yet have any history to know what and where to prefetch. > > So I'd say this particular usage is good. > At least those prefetches shouldn't hurt because typically it > would be just 1 instruction if those exist or nothing if CPU/compiler doesn't > support it. > > > for (j = 0; j < width; j++) { > > if (back[j] != front[j]) { > > start = j; > > @@ -140,8 +136,6 @@ static void udl_compress_hline16( > > const u8 *cmd_pixel_start, *cmd_pixel_end = NULL; > > uint16_t pixel_val16; > > > > - prefetchw((void *) cmd); /* pull in one cache line at least */ > > - > > Pretty much the same is here. Obviously on the first iteration prefetcher dosn't > know where to get "cmd". On the next iterations it might be better but given amount > of operation happens further in the cycle (and in inner cycles) I won't be completely > sure that each and every prefetcher will still keep track of "cmd". > > > *cmd++ = 0xaf; > > *cmd++ = 0x6b; > > *cmd++ = (uint8_t) ((dev_addr >> 16) & 0xFF); > > @@ -158,7 +152,6 @@ static void udl_compress_hline16( > > (unsigned long)(pixel_end - pixel) >> log_bpp, > > (unsigned long)(cmd_buffer_end - 1 - cmd) / 2) << log_bpp); > > > > - prefetch_range((void *) pixel, cmd_pixel_end - pixel); > > Again I'm not sure what we gain removing that code in comparison of possible > performance degradation on simpler CPUs. > > And essentially all the same is applicable to UDLFB patch. Tested this one on AT91SAM9G20 SoC, but couldn't get any measurable difference. Part of problem is probably that full speed USB is the bottleneck here. However, the same applies on OMAP3630 based board with high speed USB. As a side note, I didn't experience any problem those paches are fixing, so perhaps testcases could be described briefly, preferably with some numbers (I'm not running console on udlfb, but try to give it a try next week). Thank you, ladis > -Alexey From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ladislav Michl Subject: Re: [PATCH 08/21] udl-kms: avoid prefetch Date: Tue, 5 Jun 2018 12:48:58 +0200 Message-ID: <20180605104858.GA22237@lenoch> References: <20180603144053.875668929@twibright.com> <20180603144221.959741603@twibright.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from cvs.linux-mips.org (eddie.linux-mips.org [148.251.95.138]) by gabe.freedesktop.org (Postfix) with ESMTP id 1E3B06E2B9 for ; Tue, 5 Jun 2018 10:56:11 +0000 (UTC) Received: (from localhost user: 'ladis' uid#1021 fake: STDIN (ladis@eddie.linux-mips.org)) by eddie.linux-mips.org id S23994691AbeFEKs7LEWXM (ORCPT ); Tue, 5 Jun 2018 12:48:59 +0200 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: Alexey Brodkin Cc: "linux-fbdev@vger.kernel.org" , "b.zolnierkie@samsung.com" , "bernie@plugable.com" , "dri-devel@lists.freedesktop.org" , "mpatocka@redhat.com" , "airlied@redhat.com" List-Id: dri-devel@lists.freedesktop.org T24gVHVlLCBKdW4gMDUsIDIwMTggYXQgMTA6MDg6MDJBTSArMDAwMCwgQWxleGV5IEJyb2RraW4g d3JvdGU6Cj4gSGkgTWlrdWxhcywKPiAKPiBPbiBTdW4sIDIwMTgtMDYtMDMgYXQgMTY6NDEgKzAy MDAsIE1pa3VsYXMgUGF0b2NrYSB3cm90ZToKPiA+IE1vZGVybiBwcm9jZXNzb3JzIGNhbiBkZXRl Y3QgbGluZWFyIG1lbW9yeSBhY2Nlc3NlcyBhbmQgcHJlZmV0Y2ggZGF0YQo+ID4gYXV0b21hdGlj YWxseSwgc28gdGhlcmUncyBubyBuZWVkIHRvIHVzZSBwcmVmZXRjaC4KPiAKPiBOb3QgZWFjaCBh bmQgZXZlcnkgQ1BVIHRoYXQncyBjYXBhYmxlIG9mIHJ1bm5pbmcgTGludXggaGFzIHByZWZldGNo Cj4gZnVuY3Rpb25hbGl0eSA6KQo+IAo+IFN0aWxsIHJlYWQtb24uLi4KPiAKPiA+IFNpZ25lZC1v ZmYtYnk6IE1pa3VsYXMgUGF0b2NrYSA8bXBhdG9ja2FAcmVkaGF0LmNvbT4KPiA+IAo+ID4gLS0t Cj4gPiAgZHJpdmVycy9ncHUvZHJtL3VkbC91ZGxfdHJhbnNmZXIuYyB8ICAgIDcgLS0tLS0tLQo+ ID4gIDEgZmlsZSBjaGFuZ2VkLCA3IGRlbGV0aW9ucygtKQo+ID4gCj4gPiBJbmRleDogbGludXgt NC4xNi4xMi9kcml2ZXJzL2dwdS9kcm0vdWRsL3VkbF90cmFuc2Zlci5jCj4gPiA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Cj4gPiAtLS0gbGludXgtNC4xNi4xMi5vcmlnL2RyaXZlcnMvZ3B1L2RybS91ZGwvdWRsX3RyYW5z ZmVyLmMJMjAxOC0wNS0zMSAxNDo0ODoxMi4wMDAwMDAwMDAgKzAyMDAKPiA+ICsrKyBsaW51eC00 LjE2LjEyL2RyaXZlcnMvZ3B1L2RybS91ZGwvdWRsX3RyYW5zZmVyLmMJMjAxOC0wNS0zMSAxNDo0 ODoxMi4wMDAwMDAwMDAgKzAyMDAKPiA+IEBAIC0xMyw3ICsxMyw2IEBACj4gPiAgI2luY2x1ZGUg PGxpbnV4L21vZHVsZS5oPgo+ID4gICNpbmNsdWRlIDxsaW51eC9zbGFiLmg+Cj4gPiAgI2luY2x1 ZGUgPGxpbnV4L2ZiLmg+Cj4gPiAtI2luY2x1ZGUgPGxpbnV4L3ByZWZldGNoLmg+Cj4gPiAgI2lu Y2x1ZGUgPGFzbS91bmFsaWduZWQuaD4KPiA+ICAKPiA+ICAjaW5jbHVkZSA8ZHJtL2RybVAuaD4K PiA+IEBAIC01MSw5ICs1MCw2IEBAIHN0YXRpYyBpbnQgdWRsX3RyaW1faGxpbmUoY29uc3QgdTgg KmJiYWMKPiA+ICAJaW50IHN0YXJ0ID0gd2lkdGg7Cj4gPiAgCWludCBlbmQgPSB3aWR0aDsKPiA+ ICAKPiA+IC0JcHJlZmV0Y2goKHZvaWQgKikgZnJvbnQpOwo+ID4gLQlwcmVmZXRjaCgodm9pZCAq KSBiYWNrKTsKPiAKPiBBRkFJSyBwcmVmZXRjaGVyIGZldGNoZXMgbmV3IGRhdGEgYWNjb3JkaW5n IHRvIGEga25vd24gaGlzdG9yeS4uLiBpLmUuIGJhc2VkIG9uIHByZXZpb3VzbHkKPiB1c2VkIHBh dHRlcm4gd2UnbGwgdHJ5aW5nIHRvIGdldCB0aGUgbmV4dCBiYXRjaCBvZiBkYXRhLgo+IAo+IEJ1 dCB0aGUgY29kZSBhYm92ZSBpcyBpbiB0aGUgdmVyeSBiZWdpbm5pbmcgb2YgdGhlIGRhdGEgcHJv Y2Vzc2luZyByb3V0aW5lIHdoZXJlCj4gcHJlZmV0Y2hlciBkb2Vzbid0IHlldCBoYXZlIGFueSBo aXN0b3J5IHRvIGtub3cgd2hhdCBhbmQgd2hlcmUgdG8gcHJlZmV0Y2guCj4gCj4gU28gSSdkIHNh eSB0aGlzIHBhcnRpY3VsYXIgdXNhZ2UgaXMgZ29vZC4KPiBBdCBsZWFzdCB0aG9zZSBwcmVmZXRj aGVzIHNob3VsZG4ndCBodXJ0IGJlY2F1c2UgdHlwaWNhbGx5IGl0Cj4gd291bGQgYmUganVzdCAx IGluc3RydWN0aW9uIGlmIHRob3NlIGV4aXN0IG9yIG5vdGhpbmcgaWYgQ1BVL2NvbXBpbGVyIGRv ZXNuJ3QKPiBzdXBwb3J0IGl0Lgo+IAo+ID4gIAlmb3IgKGogPSAwOyBqIDwgd2lkdGg7IGorKykg ewo+ID4gIAkJaWYgKGJhY2tbal0gIT0gZnJvbnRbal0pIHsKPiA+ICAJCQlzdGFydCA9IGo7Cj4g PiBAQCAtMTQwLDggKzEzNiw2IEBAIHN0YXRpYyB2b2lkIHVkbF9jb21wcmVzc19obGluZTE2KAo+ ID4gIAkJY29uc3QgdTggKmNtZF9waXhlbF9zdGFydCwgKmNtZF9waXhlbF9lbmQgPSBOVUxMOwo+ ID4gIAkJdWludDE2X3QgcGl4ZWxfdmFsMTY7Cj4gPiAgCj4gPiAtCQlwcmVmZXRjaHcoKHZvaWQg KikgY21kKTsgLyogcHVsbCBpbiBvbmUgY2FjaGUgbGluZSBhdCBsZWFzdCAqLwo+ID4gLQo+IAo+ IFByZXR0eSBtdWNoIHRoZSBzYW1lIGlzIGhlcmUuIE9idmlvdXNseSBvbiB0aGUgZmlyc3QgaXRl cmF0aW9uIHByZWZldGNoZXIgZG9zbid0Cj4ga25vdyB3aGVyZSB0byBnZXQgImNtZCIuIE9uIHRo ZSBuZXh0IGl0ZXJhdGlvbnMgaXQgbWlnaHQgYmUgYmV0dGVyIGJ1dCBnaXZlbiBhbW91bnQKPiBv ZiBvcGVyYXRpb24gaGFwcGVucyBmdXJ0aGVyIGluIHRoZSBjeWNsZSAoYW5kIGluIGlubmVyIGN5 Y2xlcykgSSB3b24ndCBiZSBjb21wbGV0ZWx5Cj4gc3VyZSB0aGF0IGVhY2ggYW5kIGV2ZXJ5IHBy ZWZldGNoZXIgd2lsbCBzdGlsbCBrZWVwIHRyYWNrIG9mICJjbWQiLgo+IAo+ID4gIAkJKmNtZCsr ID0gMHhhZjsKPiA+ICAJCSpjbWQrKyA9IDB4NmI7Cj4gPiAgCQkqY21kKysgPSAodWludDhfdCkg KChkZXZfYWRkciA+PiAxNikgJiAweEZGKTsKPiA+IEBAIC0xNTgsNyArMTUyLDYgQEAgc3RhdGlj IHZvaWQgdWRsX2NvbXByZXNzX2hsaW5lMTYoCj4gPiAgCQkJCQkodW5zaWduZWQgbG9uZykocGl4 ZWxfZW5kIC0gcGl4ZWwpID4+IGxvZ19icHAsCj4gPiAgCQkJCQkodW5zaWduZWQgbG9uZykoY21k X2J1ZmZlcl9lbmQgLSAxIC0gY21kKSAvIDIpIDw8IGxvZ19icHApOwo+ID4gIAo+ID4gLQkJcHJl ZmV0Y2hfcmFuZ2UoKHZvaWQgKikgcGl4ZWwsIGNtZF9waXhlbF9lbmQgLSBwaXhlbCk7Cj4gCj4g QWdhaW4gSSdtIG5vdCBzdXJlIHdoYXQgd2UgZ2FpbiByZW1vdmluZyB0aGF0IGNvZGUgaW4gY29t cGFyaXNvbiBvZiBwb3NzaWJsZQo+IHBlcmZvcm1hbmNlIGRlZ3JhZGF0aW9uIG9uIHNpbXBsZXIg Q1BVcy4KPiAKPiBBbmQgZXNzZW50aWFsbHkgYWxsIHRoZSBzYW1lIGlzIGFwcGxpY2FibGUgdG8g VURMRkIgcGF0Y2guCgpUZXN0ZWQgdGhpcyBvbmUgb24gQVQ5MVNBTTlHMjAgU29DLCBidXQgY291 bGRuJ3QgZ2V0IGFueSBtZWFzdXJhYmxlIGRpZmZlcmVuY2UuClBhcnQgb2YgcHJvYmxlbSBpcyBw cm9iYWJseSB0aGF0IGZ1bGwgc3BlZWQgVVNCIGlzIHRoZSBib3R0bGVuZWNrIGhlcmUuCkhvd2V2 ZXIsIHRoZSBzYW1lIGFwcGxpZXMgb24gT01BUDM2MzAgYmFzZWQgYm9hcmQgd2l0aCBoaWdoIHNw ZWVkIFVTQi4KCkFzIGEgc2lkZSBub3RlLCBJIGRpZG4ndCBleHBlcmllbmNlIGFueSBwcm9ibGVt IHRob3NlIHBhY2hlcyBhcmUgZml4aW5nLCBzbwpwZXJoYXBzIHRlc3RjYXNlcyBjb3VsZCBiZSBk ZXNjcmliZWQgYnJpZWZseSwgcHJlZmVyYWJseSB3aXRoIHNvbWUgbnVtYmVycwooSSdtIG5vdCBy dW5uaW5nIGNvbnNvbGUgb24gdWRsZmIsIGJ1dCB0cnkgdG8gZ2l2ZSBpdCBhIHRyeSBuZXh0IHdl ZWspLgoKVGhhbmsgeW91LAoJbGFkaXMKCj4gLUFsZXhleQpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZl bEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFp bG1hbi9saXN0aW5mby9kcmktZGV2ZWwK