From mboxrd@z Thu Jan 1 00:00:00 1970 From: Arnd Bergmann Subject: Re: [PATCH v3 00/27] kill devm_ioremap_nocache Date: Wed, 3 Jan 2018 17:14:59 +0100 Message-ID: References: <1514026525-32538-1-git-send-email-xieyisheng1@huawei.com> <20171223134831.GB10103@kroah.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: 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: christophe leroy Cc: Yisheng Xie , "open list:RALINK MIPS ARCHITECTURE" , Ulf Hansson , Jakub Kicinski , Platform Driver , David Airlie , linux-wireless , alsa-devel@alsa-project.org, dri-devel , Linux Kernel Mailing List , David Howells , IDE-ML , Wim Van Sebroeck , Networking , linux-mtd , Daniel Vetter , Dan Williams , Jason Cooper , linux-rtc@vger.kernel.org, Boris Brezillon , Mauro Carvalho Chehab List-Id: linux-ide@vger.kernel.org T24gU3VuLCBEZWMgMjQsIDIwMTcgYXQgOTo1NSBBTSwgY2hyaXN0b3BoZSBsZXJveQo8Y2hyaXN0 b3BoZS5sZXJveUBjLXMuZnI+IHdyb3RlOgo+IExlIDIzLzEyLzIwMTcgw6AgMTY6NTcsIEd1ZW50 ZXIgUm9lY2sgYSDDqWNyaXQgOgo+Pgo+PiBPbiAxMi8yMy8yMDE3IDA1OjQ4IEFNLCBHcmVnIEtI IHdyb3RlOgo+Pj4KPj4+IE9uIFNhdCwgRGVjIDIzLCAyMDE3IGF0IDA2OjU1OjI1UE0gKzA4MDAs IFlpc2hlbmcgWGllIHdyb3RlOgo+Pj4+Cj4+Pj4gSGkgYWxsLAo+Pj4+Cj4+Pj4gV2hlbiBJIHRy aWVkIHRvIHVzZSBkZXZtX2lvcmVtYXAgZnVuY3Rpb24gYW5kIHJldmlldyByZWxhdGVkIGNvZGUs IEkKPj4+PiBmb3VuZAo+Pj4+IGRldm1faW9yZW1hcCBhbmQgZGV2bV9pb3JlbWFwX25vY2FjaGUg aXMgYWxtb3N0IHRoZSBzYW1lIHdpdGggZWFjaAo+Pj4+IG90aGVyLAo+Pj4+IGV4Y2VwdCBvbmUg dXNlIGlvcmVtYXAgd2hpbGUgdGhlIG90aGVyIHVzZSBpb3JlbWFwX25vY2FjaGUuCj4+Pgo+Pj4K Pj4+IEZvciBhbGwgYXJjaGVzPyAgUmVhbGx5PyAgTG9vayBhdCBNSVBTLCBhbmQgeDg2LCB0aGV5 IGhhdmUgZGlmZmVyZW50Cj4+PiBmdW5jdGlvbnMuCj4+Pgo+Pgo+PiBCb3RoIG1pcHMgYW5kIHg4 NiBlbmQgdXAgbWFwcGluZyB0aGUgc2FtZSBmdW5jdGlvbiwgYnV0IG90aGVyIGFyY2hlcwo+PiBk b24ndC4KPj4gbW4xMDMwMCBpcyBvbmUgd2hlcmUgaW9yZW1hcCBhbmQgaW9yZW1hcF9ub2NhY2hl IGFyZSBkZWZpbml0ZWx5IGRpZmZlcmVudC4KPgo+Cj4gYWxwaGE6IGlkZW50aWNhbAo+IGFyYzog aWRlbnRpY2FsCj4gYXJtOiBpZGVudGljYWwKPiBhcm02NDogaWRlbnRpY2FsCj4gY3JpczogZGlm ZmVyZW50ICAgICAgICA8PT0KPiBmcnY6IGlkZW50aWNhbAo+IGhleGFnb25lOiBpZGVudGljYWwK PiBpYTY0OiBkaWZmZXJlbnQgICAgICAgIDw9PQo+IG0zMnI6IGlkZW50aWNhbAo+IG02OGs6IGlk ZW50aWNhbAo+IG1ldGFnOiBpZGVudGljYWwKPiBtaWNyb2JsYXplOiBpZGVudGljYWwKPiBtaXBz OiBpZGVudGljYWwKPiBtbjEwMzAwOiBkaWZmZXJlbnQgICAgIDw9PQo+IG5pb3M6IGlkZW50aWNh bAo+IG9wZW5yaXNjOiBkaWZmZXJlbnQgICAgPD09Cj4gcGFyaXNjOiBpZGVudGljYWwKPiByaXNj djogaWRlbnRpY2FsCj4gczM5MDogaWRlbnRpY2FsCj4gc2g6IGlkZW50aWNhbAo+IHNwYXJjOiBp ZGVudGljYWwKPiB0aWxlOiBpZGVudGljYWwKPiB1bTogcmVseSBvbiBhc20vZ2VuZXJpYwo+IHVu aWNvcmUzMjogaWRlbnRpY2FsCj4geDg2OiBpZGVudGljYWwKPiBhc20vZ2VuZXJpYyAobm8gbW11 KTogaWRlbnRpY2FsCj4KPiBTbyA0IGFtb25nIGFsbCBhcmNoZXMgc2VlbXMgdG8gaGF2ZSBpb3Jl bWFwKCkgYW5kIGlvcmVtYXBfbm9jYWNoZSgpIGJlaW5nCj4gZGlmZmVyZW50Lgo+Cj4gQ291bGQg d2UgaGF2ZSBhIGRlZmluZSBzZXQgYnkgdGhlIDQgYXJjaGVzIG9uIHdoaWNoIGlvcmVtYXAoKSBh bmQKPiBpb3JlbWFwX25vY2FjaGUoKSBhcmUgZGlmZmVyZW50LCBzb21ldGhpbmcgbGlrZQo+IEhB VkVfRElGRkVSRU5UX0lPUkVNQVBfTk9DQUNIRSA/CgpJIHdvbmRlciBpZiB0aG9zZSBhcmUgYWN0 dWFsbHkgY29ycmVjdCBvciBub3QuIFdoYXQgSSBmb3VuZCBsb29raW5nIGF0CnRob3NlIGFyY2hp dGVjdHVyZXM6CgotIG9wZW5yaXNjIG9ubHkgaGFzIG9uZSBkcml2ZXIgdXNpbmcgaW9yZW1hcCAo ZHJpdmVycy9uZXQvZXRoZXJuZXQvZXRob2MuYykKICBhbmQgdGhhdCBjYWxscyBpb3JlbWFwX25v Y2FjaGUoKS4gUHJlc3VtYWJseSB0aGUgYXV0aG9ycyB3ZW50IHdpdGggdGhlCiAgaW1wbGVtZW50 YXRpb24gZm9yIGlvcmVtYXAgdGhhdCBtYWRlIHNlbnNlICh1c2luZyBkZWZhdWx0IGF0dHJpYnV0 ZXMpCiAgcmF0aGVyIHRoYW4gdGhlIG9uZSB0aGF0IGFjdHVhbGx5IHdvcmtzICh1c2luZyB1bmNh Y2hlZCkuCgotIE9uIGlhNjQsIGlvcmVtYXAoKSBjaGVja3MgdGhlIGF0dHJpYnV0ZXMgZm9yIHRo ZSBwaHlzaWNhbAogIGFkZHJlc3MgYmFzZWQgb24gZmlybXdhcmUgdGFibGVzIGFuZCB0aGVuIHBp Y2tzIGVpdGhlciBjYWNoZWQKICBvciB1bmNhY2hlZCBtYXBwaW5ncy4gaW9yZW1hcF9ub2NhY2hl KCkgZG9lcyB0aGUgc2FtZSBidXQKICByZXR1cm5zIE5VTEwgaW5zdGVhZCBvZiBhIGNhY2hlZCBt YXBwaW5nIGZvciBhbnl0aGluZyB0aGF0IGlzCiAgbm90IGFuIE1NSU8gYWRkcmVzcy4gUHJlc3Vt YWJseSBpdCB3b3VsZCBqdXN0IHdvcmsgdG8gYWx3YXlzCiAgY2FsbCBpb3JlbWFwKCkuCgotIG1u MTAzMDAgYXBwZWFycyB0byBiZSB3cm9uZywgYnJva2VuIGJ5IERhdmlkIEhvd2VsbHMgaW4KICBj b21taXQgODNjMmRjMTVjZTgyICgiTU4xMDMwMDogSGFuZGxlIGNhY2hlYWJsZSBQQ0kgcmVnaW9u cwogIGluIHBjaV9pb21hcCgpIikgZm9yIGFueSBkcml2ZXIgY2FsbGluZyBpb3JlbWFwKCkgYnkg dG8gZ2V0IHVuY2FjaGVkCiAgbWVtb3J5LCBpZiBJIHVuZGVyc3RhbmQgdGhlIGNvbW1lbnQgZm9y IGNvbW1pdCAzNGYxYmRlZTE5MTAKICAgKCJtbjEwMzAwOiBzd2l0Y2ggdG8gR0VORVJJQ19QQ0lf SU9NQVAiKSBjb3JyZWN0bHk6IGl0CiAgc2VlbXMgdGhhdCBQQ0kgYWRkcmVzc2VzIGluY2x1ZGUg dGhlICd1bmNhY2hlZCcgYml0IGJ5IGRlZmF1bHQKICB0byBnZXQgdGhlIHJpZ2h0IGJlaGF2aW9y LCBidXQgZHJvcHBpbmcgdGhhdCBiaXQgYnJlYWtzIGl0LgoKLSBjcmlzIHNlZW1zIHNpbWlsYXIg dG8gbW4xMDMwMCBpbiBoYXJkd2FyZSwgdXNpbmcgYW4gcGh5cyBhZGRyZXNzCiAgYml0IGZvciB1 bmNhY2hlZCBhY2Nlc3MuIFRoZXJlIGFyZSB0d28gY2FsbGVycyBpbiBhcmNoIGNvZGUgdGhhdAog IGFwcGVhciB0byByZWx5IG9uIHRoZSBjYWNoYWJsZSBvdXRwdXQgb2YgaW9yZW1hcCgpCmFyY2gv Y3Jpcy9hcmNoLXYzMi9rZXJuZWwvc2lnbmFsLmM6Cl9faW9yZW1hcF9wcm90KHZpcnRfdG9fcGh5 cyhkYXRhKSwgUEFHRV9TSVpFLCBQQUdFX1NJR05BTF9UUkFNUE9MSU5FKTsKYXJjaC9jcmlzL2Fy Y2gtdjMyL21tL2ludG1lbS5jOiAgICAgICAgIGludG1lbV92aXJ0dWFsID0KaW9yZW1hcChNRU1f SU5UTUVNX1NUQVJUICsgUkVTRVJWRURfU0laRSwKICBJdCdzIHVuY2xlYXIgd2hldGhlciBpb3Jl bWFwX25vY2FjaGUoKSBhY3R1YWxseSBoYXMgYW55IHVzZXJzCiAgb24gY3Jpcywgb3Igd2hldGhl ciBpdCB3YXMgb25seSBhZGRlZCBmb3IgY29tcGlsZS10aW1lIHRlc3RpbmcsCiAgYW5kIGNhbGxp bmcgcGxhaW4gaW9yZW1hcCgpIHdvdWxkIGFsd2F5cyB3b3JrIHRvbyAoYXNzdW1pbmcgd2UKICBw YXNzIHRoZSBwaHlzIGFkZHJlc3Mgd2l0aCB0aGUgdW5jYWNoZWQtYml0IHNldCkuCgogICAgICAg QXJuZApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmkt ZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6 Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: ARC-Seal: i=1; a=rsa-sha256; t=1514996100; cv=none; d=google.com; s=arc-20160816; b=RcufoX/HFa92Jw9ebqaVwLY49LESSsMKD2XnifoD0k7/eVezFfu4VxgTJv/s7Ta+QB w8yC6b76oong4WTZyfzJ+XOC9We08A5Vul0OT9r+WJmPVMrBIndujv+W8Xcz67oAF3tl 8aY6m8frk9s9TWJ3GGdCrBLk2dZ+EcYkz0rQcTR1IE2kr8iHynjfyJIyBLmEYGWvynYm yP5OWlD7DqPdg9XkJPRozG4e0lw460FBYFFPgr11STGVTGzBqiuVpCurXHFo8RuxUmrF Jb4kkTNNfGL9x7IiHFk0pw3IWNUHoR358wZJVqR/D3ytPfmRvlIjy/EVV0RQgc+sRL/f r1Lw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:cc:to:subject:message-id:date:from :references:in-reply-to:sender:mime-version:dkim-signature :arc-authentication-results; bh=oF1Dvsn6T9aQ43p6FtHzXNZdEVZ4JbUxCppQHO2d5tE=; b=k4g2uxczVLjZVs2a5ZTgQMR+NuhFhDsx7xbTq2FNiJ1VrevIrDQCXGK1z7UaCQZJoo xHMmoZNZuGIF+2hEYyVoQdUneIeLvMXWxl6gd+2svvjjC7rs3/NPlMX5gzfnX4sglwFx A8uzvTh7HRlgmW638uFSi4rosQykToOSaVnzUuFmpUUiAPceqtwgwAV0zOVCdygNem1e 7hUip8vVhkqjVgUqJVWIwITCDe1NF7PQ0aT96zvpSLr5kub1QPDZO1/LRF+jKD26MBqz +CD0xOt+kqfCZXll6pHa9boyRU2lwJRcV082lHqX/75F5umlBCf00doWJ/JTrjTWG1dR MQFg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=lqGAP1Me; spf=pass (google.com: domain of arndbergmann@gmail.com designates 209.85.220.65 as permitted sender) smtp.mailfrom=arndbergmann@gmail.com Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=lqGAP1Me; spf=pass (google.com: domain of arndbergmann@gmail.com designates 209.85.220.65 as permitted sender) smtp.mailfrom=arndbergmann@gmail.com X-Google-Smtp-Source: ACJfBoupAtRFw2rD5glxWgL9Im39cR1N7T1/74BN/cKEPsWW0Uvp+JffvGNB+wwd5HQyLl2Uy9nGKE0ReoQC61bJApo= MIME-Version: 1.0 Sender: arndbergmann@gmail.com In-Reply-To: References: <1514026525-32538-1-git-send-email-xieyisheng1@huawei.com> <20171223134831.GB10103@kroah.com> From: Arnd Bergmann Date: Wed, 3 Jan 2018 17:14:59 +0100 X-Google-Sender-Auth: XmZbrjTGIM5ekE0HLckVzGksStI Message-ID: Subject: Re: [PATCH v3 00/27] kill devm_ioremap_nocache To: christophe leroy Cc: Guenter Roeck , Greg KH , Yisheng Xie , Linux Kernel Mailing List , ysxie@foxmail.com, Ulf Hansson , linux-mmc , Boris Brezillon , Richard Weinberger , Marek Vasut , Cyrille Pitchen , linux-mtd , alsa-devel@alsa-project.org, Wim Van Sebroeck , linux-watchdog@vger.kernel.org, Bartlomiej Zolnierkiewicz , linux-fbdev@vger.kernel.org, Linus Walleij , linux-gpio@vger.kernel.org, Ralf Baechle , "open list:RALINK MIPS ARCHITECTURE" , Liam Girdwood , Mark Brown , Thomas Gleixner , Jason Cooper , Marc Zyngier , Andy Shevchenko , industrypack-devel@lists.sourceforge.net, wg@grandegger.com, mkl@pengutronix.de, linux-can@vger.kernel.org, Mauro Carvalho Chehab , Linux Media Mailing List , Alessandro Zummo , Alexandre Belloni , linux-rtc@vger.kernel.org, Daniel Vetter , Jani Nikula , Sean Paul , David Airlie , dri-devel , Kalle Valo , linux-wireless , linux-spi , Tejun Heo , IDE-ML , Bjorn Helgaas , linux-pci , devel@driverdev.osuosl.org, Darren Hart , Andy Shevchenko , Platform Driver , Jakub Kicinski , David Miller , "moderated list:NIOS2 ARCHITECTURE" , Networking , Vinod Koul , Dan Williams , dmaengine@vger.kernel.org, Jiri Slaby , David Howells Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: =?utf-8?q?1587572489007126740?= X-GMAIL-MSGID: =?utf-8?q?1588588550719159772?= X-Mailing-List: linux-kernel@vger.kernel.org List-ID: On Sun, Dec 24, 2017 at 9:55 AM, christophe leroy wrote: > Le 23/12/2017 =C3=A0 16:57, Guenter Roeck a =C3=A9crit : >> >> On 12/23/2017 05:48 AM, Greg KH wrote: >>> >>> On Sat, Dec 23, 2017 at 06:55:25PM +0800, Yisheng Xie wrote: >>>> >>>> Hi all, >>>> >>>> When I tried to use devm_ioremap function and review related code, I >>>> found >>>> devm_ioremap and devm_ioremap_nocache is almost the same with each >>>> other, >>>> except one use ioremap while the other use ioremap_nocache. >>> >>> >>> For all arches? Really? Look at MIPS, and x86, they have different >>> functions. >>> >> >> Both mips and x86 end up mapping the same function, but other arches >> don't. >> mn10300 is one where ioremap and ioremap_nocache are definitely differen= t. > > > alpha: identical > arc: identical > arm: identical > arm64: identical > cris: different <=3D=3D > frv: identical > hexagone: identical > ia64: different <=3D=3D > m32r: identical > m68k: identical > metag: identical > microblaze: identical > mips: identical > mn10300: different <=3D=3D > nios: identical > openrisc: different <=3D=3D > parisc: identical > riscv: identical > s390: identical > sh: identical > sparc: identical > tile: identical > um: rely on asm/generic > unicore32: identical > x86: identical > asm/generic (no mmu): identical > > So 4 among all arches seems to have ioremap() and ioremap_nocache() being > different. > > Could we have a define set by the 4 arches on which ioremap() and > ioremap_nocache() are different, something like > HAVE_DIFFERENT_IOREMAP_NOCACHE ? I wonder if those are actually correct or not. What I found looking at those architectures: - openrisc only has one driver using ioremap (drivers/net/ethernet/ethoc.c) and that calls ioremap_nocache(). Presumably the authors went with the implementation for ioremap that made sense (using default attributes) rather than the one that actually works (using uncached). - On ia64, ioremap() checks the attributes for the physical address based on firmware tables and then picks either cached or uncached mappings. ioremap_nocache() does the same but returns NULL instead of a cached mapping for anything that is not an MMIO address. Presumably it would just work to always call ioremap(). - mn10300 appears to be wrong, broken by David Howells in commit 83c2dc15ce82 ("MN10300: Handle cacheable PCI regions in pci_iomap()") for any driver calling ioremap() by to get uncached memory, if I understand the comment for commit 34f1bdee1910 ("mn10300: switch to GENERIC_PCI_IOMAP") correctly: it seems that PCI addresses include the 'uncached' bit by default to get the right behavior, but dropping that bit breaks it. - cris seems similar to mn10300 in hardware, using an phys address bit for uncached access. There are two callers in arch code that appear to rely on the cachable output of ioremap() arch/cris/arch-v32/kernel/signal.c: __ioremap_prot(virt_to_phys(data), PAGE_SIZE, PAGE_SIGNAL_TRAMPOLINE); arch/cris/arch-v32/mm/intmem.c: intmem_virtual =3D ioremap(MEM_INTMEM_START + RESERVED_SIZE, It's unclear whether ioremap_nocache() actually has any users on cris, or whether it was only added for compile-time testing, and calling plain ioremap() would always work too (assuming we pass the phys address with the uncached-bit set). Arnd From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: MIME-Version: 1.0 Sender: arndbergmann@gmail.com In-Reply-To: References: <1514026525-32538-1-git-send-email-xieyisheng1@huawei.com> <20171223134831.GB10103@kroah.com> From: Arnd Bergmann Date: Wed, 3 Jan 2018 17:14:59 +0100 Message-ID: Subject: Re: [PATCH v3 00/27] kill devm_ioremap_nocache To: christophe leroy Cc: Guenter Roeck , Greg KH , Yisheng Xie , Linux Kernel Mailing List , ysxie@foxmail.com, Ulf Hansson , linux-mmc , Boris Brezillon , Richard Weinberger , Marek Vasut , Cyrille Pitchen , linux-mtd , alsa-devel@alsa-project.org, Wim Van Sebroeck , linux-watchdog@vger.kernel.org, Bartlomiej Zolnierkiewicz , linux-fbdev@vger.kernel.org, Linus Walleij , linux-gpio@vger.kernel.org, Ralf Baechle , "open list:RALINK MIPS ARCHITECTURE" , Liam Girdwood , Mark Brown , Thomas Gleixner , Jason Cooper , Marc Zyngier , Andy Shevchenko , industrypack-devel@lists.sourceforge.net, wg@grandegger.com, mkl@pengutronix.de, linux-can@vger.kernel.org, Mauro Carvalho Chehab , Linux Media Mailing List , Alessandro Zummo , Alexandre Belloni , linux-rtc@vger.kernel.org, Daniel Vetter , Jani Nikula , Sean Paul , David Airlie , dri-devel , Kalle Valo , linux-wireless , linux-spi , Tejun Heo , IDE-ML , Bjorn Helgaas , linux-pci , devel@driverdev.osuosl.org, Darren Hart , Andy Shevchenko , Platform Driver , Jakub Kicinski , David Miller , "moderated list:NIOS2 ARCHITECTURE" , Networking , Vinod Koul , Dan Williams , dmaengine@vger.kernel.org, Jiri Slaby , David Howells Content-Type: text/plain; charset="UTF-8" List-ID: On Sun, Dec 24, 2017 at 9:55 AM, christophe leroy wrote: > Le 23/12/2017 =C3=A0 16:57, Guenter Roeck a =C3=A9crit : >> >> On 12/23/2017 05:48 AM, Greg KH wrote: >>> >>> On Sat, Dec 23, 2017 at 06:55:25PM +0800, Yisheng Xie wrote: >>>> >>>> Hi all, >>>> >>>> When I tried to use devm_ioremap function and review related code, I >>>> found >>>> devm_ioremap and devm_ioremap_nocache is almost the same with each >>>> other, >>>> except one use ioremap while the other use ioremap_nocache. >>> >>> >>> For all arches? Really? Look at MIPS, and x86, they have different >>> functions. >>> >> >> Both mips and x86 end up mapping the same function, but other arches >> don't. >> mn10300 is one where ioremap and ioremap_nocache are definitely differen= t. > > > alpha: identical > arc: identical > arm: identical > arm64: identical > cris: different <=3D=3D > frv: identical > hexagone: identical > ia64: different <=3D=3D > m32r: identical > m68k: identical > metag: identical > microblaze: identical > mips: identical > mn10300: different <=3D=3D > nios: identical > openrisc: different <=3D=3D > parisc: identical > riscv: identical > s390: identical > sh: identical > sparc: identical > tile: identical > um: rely on asm/generic > unicore32: identical > x86: identical > asm/generic (no mmu): identical > > So 4 among all arches seems to have ioremap() and ioremap_nocache() being > different. > > Could we have a define set by the 4 arches on which ioremap() and > ioremap_nocache() are different, something like > HAVE_DIFFERENT_IOREMAP_NOCACHE ? I wonder if those are actually correct or not. What I found looking at those architectures: - openrisc only has one driver using ioremap (drivers/net/ethernet/ethoc.c) and that calls ioremap_nocache(). Presumably the authors went with the implementation for ioremap that made sense (using default attributes) rather than the one that actually works (using uncached). - On ia64, ioremap() checks the attributes for the physical address based on firmware tables and then picks either cached or uncached mappings. ioremap_nocache() does the same but returns NULL instead of a cached mapping for anything that is not an MMIO address. Presumably it would just work to always call ioremap(). - mn10300 appears to be wrong, broken by David Howells in commit 83c2dc15ce82 ("MN10300: Handle cacheable PCI regions in pci_iomap()") for any driver calling ioremap() by to get uncached memory, if I understand the comment for commit 34f1bdee1910 ("mn10300: switch to GENERIC_PCI_IOMAP") correctly: it seems that PCI addresses include the 'uncached' bit by default to get the right behavior, but dropping that bit breaks it. - cris seems similar to mn10300 in hardware, using an phys address bit for uncached access. There are two callers in arch code that appear to rely on the cachable output of ioremap() arch/cris/arch-v32/kernel/signal.c: __ioremap_prot(virt_to_phys(data), PAGE_SIZE, PAGE_SIGNAL_TRAMPOLINE); arch/cris/arch-v32/mm/intmem.c: intmem_virtual =3D ioremap(MEM_INTMEM_START + RESERVED_SIZE, It's unclear whether ioremap_nocache() actually has any users on cris, or whether it was only added for compile-time testing, and calling plain ioremap() would always work too (assuming we pass the phys address with the uncached-bit set). Arnd From mboxrd@z Thu Jan 1 00:00:00 1970 From: Arnd Bergmann Subject: Re: [PATCH v3 00/27] kill devm_ioremap_nocache Date: Wed, 3 Jan 2018 17:14:59 +0100 Message-ID: References: <1514026525-32538-1-git-send-email-xieyisheng1@huawei.com> <20171223134831.GB10103@kroah.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Cc: Yisheng Xie , "open list:RALINK MIPS ARCHITECTURE" , Ulf Hansson , Jakub Kicinski , Platform Driver , David Airlie , linux-wireless , alsa-devel@alsa-project.org, dri-devel , Linux Kernel Mailing List , David Howells , IDE-ML , Wim Van Sebroeck , Networking , linux-mtd , Daniel Vetter , Dan Williams , Jason Cooper , linux-rtc@vger.kernel.org, Boris Brezillon , Mauro Carvalho Chehab Return-path: In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" List-Id: netdev.vger.kernel.org T24gU3VuLCBEZWMgMjQsIDIwMTcgYXQgOTo1NSBBTSwgY2hyaXN0b3BoZSBsZXJveQo8Y2hyaXN0 b3BoZS5sZXJveUBjLXMuZnI+IHdyb3RlOgo+IExlIDIzLzEyLzIwMTcgw6AgMTY6NTcsIEd1ZW50 ZXIgUm9lY2sgYSDDqWNyaXQgOgo+Pgo+PiBPbiAxMi8yMy8yMDE3IDA1OjQ4IEFNLCBHcmVnIEtI IHdyb3RlOgo+Pj4KPj4+IE9uIFNhdCwgRGVjIDIzLCAyMDE3IGF0IDA2OjU1OjI1UE0gKzA4MDAs IFlpc2hlbmcgWGllIHdyb3RlOgo+Pj4+Cj4+Pj4gSGkgYWxsLAo+Pj4+Cj4+Pj4gV2hlbiBJIHRy aWVkIHRvIHVzZSBkZXZtX2lvcmVtYXAgZnVuY3Rpb24gYW5kIHJldmlldyByZWxhdGVkIGNvZGUs IEkKPj4+PiBmb3VuZAo+Pj4+IGRldm1faW9yZW1hcCBhbmQgZGV2bV9pb3JlbWFwX25vY2FjaGUg aXMgYWxtb3N0IHRoZSBzYW1lIHdpdGggZWFjaAo+Pj4+IG90aGVyLAo+Pj4+IGV4Y2VwdCBvbmUg dXNlIGlvcmVtYXAgd2hpbGUgdGhlIG90aGVyIHVzZSBpb3JlbWFwX25vY2FjaGUuCj4+Pgo+Pj4K Pj4+IEZvciBhbGwgYXJjaGVzPyAgUmVhbGx5PyAgTG9vayBhdCBNSVBTLCBhbmQgeDg2LCB0aGV5 IGhhdmUgZGlmZmVyZW50Cj4+PiBmdW5jdGlvbnMuCj4+Pgo+Pgo+PiBCb3RoIG1pcHMgYW5kIHg4 NiBlbmQgdXAgbWFwcGluZyB0aGUgc2FtZSBmdW5jdGlvbiwgYnV0IG90aGVyIGFyY2hlcwo+PiBk b24ndC4KPj4gbW4xMDMwMCBpcyBvbmUgd2hlcmUgaW9yZW1hcCBhbmQgaW9yZW1hcF9ub2NhY2hl IGFyZSBkZWZpbml0ZWx5IGRpZmZlcmVudC4KPgo+Cj4gYWxwaGE6IGlkZW50aWNhbAo+IGFyYzog aWRlbnRpY2FsCj4gYXJtOiBpZGVudGljYWwKPiBhcm02NDogaWRlbnRpY2FsCj4gY3JpczogZGlm ZmVyZW50ICAgICAgICA8PT0KPiBmcnY6IGlkZW50aWNhbAo+IGhleGFnb25lOiBpZGVudGljYWwK PiBpYTY0OiBkaWZmZXJlbnQgICAgICAgIDw9PQo+IG0zMnI6IGlkZW50aWNhbAo+IG02OGs6IGlk ZW50aWNhbAo+IG1ldGFnOiBpZGVudGljYWwKPiBtaWNyb2JsYXplOiBpZGVudGljYWwKPiBtaXBz OiBpZGVudGljYWwKPiBtbjEwMzAwOiBkaWZmZXJlbnQgICAgIDw9PQo+IG5pb3M6IGlkZW50aWNh bAo+IG9wZW5yaXNjOiBkaWZmZXJlbnQgICAgPD09Cj4gcGFyaXNjOiBpZGVudGljYWwKPiByaXNj djogaWRlbnRpY2FsCj4gczM5MDogaWRlbnRpY2FsCj4gc2g6IGlkZW50aWNhbAo+IHNwYXJjOiBp ZGVudGljYWwKPiB0aWxlOiBpZGVudGljYWwKPiB1bTogcmVseSBvbiBhc20vZ2VuZXJpYwo+IHVu aWNvcmUzMjogaWRlbnRpY2FsCj4geDg2OiBpZGVudGljYWwKPiBhc20vZ2VuZXJpYyAobm8gbW11 KTogaWRlbnRpY2FsCj4KPiBTbyA0IGFtb25nIGFsbCBhcmNoZXMgc2VlbXMgdG8gaGF2ZSBpb3Jl bWFwKCkgYW5kIGlvcmVtYXBfbm9jYWNoZSgpIGJlaW5nCj4gZGlmZmVyZW50Lgo+Cj4gQ291bGQg d2UgaGF2ZSBhIGRlZmluZSBzZXQgYnkgdGhlIDQgYXJjaGVzIG9uIHdoaWNoIGlvcmVtYXAoKSBh bmQKPiBpb3JlbWFwX25vY2FjaGUoKSBhcmUgZGlmZmVyZW50LCBzb21ldGhpbmcgbGlrZQo+IEhB VkVfRElGRkVSRU5UX0lPUkVNQVBfTk9DQUNIRSA/CgpJIHdvbmRlciBpZiB0aG9zZSBhcmUgYWN0 dWFsbHkgY29ycmVjdCBvciBub3QuIFdoYXQgSSBmb3VuZCBsb29raW5nIGF0CnRob3NlIGFyY2hp dGVjdHVyZXM6CgotIG9wZW5yaXNjIG9ubHkgaGFzIG9uZSBkcml2ZXIgdXNpbmcgaW9yZW1hcCAo ZHJpdmVycy9uZXQvZXRoZXJuZXQvZXRob2MuYykKICBhbmQgdGhhdCBjYWxscyBpb3JlbWFwX25v Y2FjaGUoKS4gUHJlc3VtYWJseSB0aGUgYXV0aG9ycyB3ZW50IHdpdGggdGhlCiAgaW1wbGVtZW50 YXRpb24gZm9yIGlvcmVtYXAgdGhhdCBtYWRlIHNlbnNlICh1c2luZyBkZWZhdWx0IGF0dHJpYnV0 ZXMpCiAgcmF0aGVyIHRoYW4gdGhlIG9uZSB0aGF0IGFjdHVhbGx5IHdvcmtzICh1c2luZyB1bmNh Y2hlZCkuCgotIE9uIGlhNjQsIGlvcmVtYXAoKSBjaGVja3MgdGhlIGF0dHJpYnV0ZXMgZm9yIHRo ZSBwaHlzaWNhbAogIGFkZHJlc3MgYmFzZWQgb24gZmlybXdhcmUgdGFibGVzIGFuZCB0aGVuIHBp Y2tzIGVpdGhlciBjYWNoZWQKICBvciB1bmNhY2hlZCBtYXBwaW5ncy4gaW9yZW1hcF9ub2NhY2hl KCkgZG9lcyB0aGUgc2FtZSBidXQKICByZXR1cm5zIE5VTEwgaW5zdGVhZCBvZiBhIGNhY2hlZCBt YXBwaW5nIGZvciBhbnl0aGluZyB0aGF0IGlzCiAgbm90IGFuIE1NSU8gYWRkcmVzcy4gUHJlc3Vt YWJseSBpdCB3b3VsZCBqdXN0IHdvcmsgdG8gYWx3YXlzCiAgY2FsbCBpb3JlbWFwKCkuCgotIG1u MTAzMDAgYXBwZWFycyB0byBiZSB3cm9uZywgYnJva2VuIGJ5IERhdmlkIEhvd2VsbHMgaW4KICBj b21taXQgODNjMmRjMTVjZTgyICgiTU4xMDMwMDogSGFuZGxlIGNhY2hlYWJsZSBQQ0kgcmVnaW9u cwogIGluIHBjaV9pb21hcCgpIikgZm9yIGFueSBkcml2ZXIgY2FsbGluZyBpb3JlbWFwKCkgYnkg dG8gZ2V0IHVuY2FjaGVkCiAgbWVtb3J5LCBpZiBJIHVuZGVyc3RhbmQgdGhlIGNvbW1lbnQgZm9y IGNvbW1pdCAzNGYxYmRlZTE5MTAKICAgKCJtbjEwMzAwOiBzd2l0Y2ggdG8gR0VORVJJQ19QQ0lf SU9NQVAiKSBjb3JyZWN0bHk6IGl0CiAgc2VlbXMgdGhhdCBQQ0kgYWRkcmVzc2VzIGluY2x1ZGUg dGhlICd1bmNhY2hlZCcgYml0IGJ5IGRlZmF1bHQKICB0byBnZXQgdGhlIHJpZ2h0IGJlaGF2aW9y LCBidXQgZHJvcHBpbmcgdGhhdCBiaXQgYnJlYWtzIGl0LgoKLSBjcmlzIHNlZW1zIHNpbWlsYXIg dG8gbW4xMDMwMCBpbiBoYXJkd2FyZSwgdXNpbmcgYW4gcGh5cyBhZGRyZXNzCiAgYml0IGZvciB1 bmNhY2hlZCBhY2Nlc3MuIFRoZXJlIGFyZSB0d28gY2FsbGVycyBpbiBhcmNoIGNvZGUgdGhhdAog IGFwcGVhciB0byByZWx5IG9uIHRoZSBjYWNoYWJsZSBvdXRwdXQgb2YgaW9yZW1hcCgpCmFyY2gv Y3Jpcy9hcmNoLXYzMi9rZXJuZWwvc2lnbmFsLmM6Cl9faW9yZW1hcF9wcm90KHZpcnRfdG9fcGh5 cyhkYXRhKSwgUEFHRV9TSVpFLCBQQUdFX1NJR05BTF9UUkFNUE9MSU5FKTsKYXJjaC9jcmlzL2Fy Y2gtdjMyL21tL2ludG1lbS5jOiAgICAgICAgIGludG1lbV92aXJ0dWFsID0KaW9yZW1hcChNRU1f SU5UTUVNX1NUQVJUICsgUkVTRVJWRURfU0laRSwKICBJdCdzIHVuY2xlYXIgd2hldGhlciBpb3Jl bWFwX25vY2FjaGUoKSBhY3R1YWxseSBoYXMgYW55IHVzZXJzCiAgb24gY3Jpcywgb3Igd2hldGhl ciBpdCB3YXMgb25seSBhZGRlZCBmb3IgY29tcGlsZS10aW1lIHRlc3RpbmcsCiAgYW5kIGNhbGxp bmcgcGxhaW4gaW9yZW1hcCgpIHdvdWxkIGFsd2F5cyB3b3JrIHRvbyAoYXNzdW1pbmcgd2UKICBw YXNzIHRoZSBwaHlzIGFkZHJlc3Mgd2l0aCB0aGUgdW5jYWNoZWQtYml0IHNldCkuCgogICAgICAg QXJuZApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmkt ZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6 Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK From mboxrd@z Thu Jan 1 00:00:00 1970 Received: with ECARTIS (v1.0.0; list linux-mips); Wed, 03 Jan 2018 17:15:13 +0100 (CET) Received: from mail-qk0-x244.google.com ([IPv6:2607:f8b0:400d:c09::244]:38599 "EHLO mail-qk0-x244.google.com" rhost-flags-OK-OK-OK-OK) by eddie.linux-mips.org with ESMTP id S23990415AbeACQPGGksFg convert rfc822-to-8bit (ORCPT ); Wed, 3 Jan 2018 17:15:06 +0100 Received: by mail-qk0-x244.google.com with SMTP id l19so2128455qke.5; Wed, 03 Jan 2018 08:15:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:sender:in-reply-to:references:from:date:message-id :subject:to:cc:content-transfer-encoding; bh=oF1Dvsn6T9aQ43p6FtHzXNZdEVZ4JbUxCppQHO2d5tE=; b=lqGAP1MeVstOlXSiLUxV9zu1w/w3143EqXCWShrspO+6YMIfku9Xe0FX5P/a5mb8la QIvNFhPmCc6AlUo0A9nJxG1/lsOOgWXMV+UAMpg0XLFb/YQoMiL1a6Jzc8IG01voRl1E HlzkxaNaqSB5ipRdx1KptmFAnQIrJ/b3aU2SIVn4L9EunQaLY0agK5s57Ccm/imuV7Kt MjoHQ6+7BKnd3KT0VeJLUmxR/6e/WuTFiITBZqtMc/OfJO+agaOGC2UzUJEl8/oGhbha nttyAK1lsN7Rpt+6ErSsvpMg/hemdcqhUuESLug0g//5+AaQ/h4zv1o/bwWG/PGNynOj SuUA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:sender:in-reply-to:references:from :date:message-id:subject:to:cc:content-transfer-encoding; bh=oF1Dvsn6T9aQ43p6FtHzXNZdEVZ4JbUxCppQHO2d5tE=; b=IJe15i45ZS7NwYUqFnLu/Hhfl0a0l5Hc5fBocO/Ok00D00bAIMHoZG/m1we5xTX9z6 U3O3wzjPqDatopszQYAlmuHjlKfAdbs29r5H2t1e+5bjhZyJdgEdN4KPdgfZERgZx7cz 1uwZQdgdAp9lDkOJP0bDWtIpPMOqQbtZomXhzG1LS7BWv1/yY2Vs5YAqDHZnwqqXQSx5 tWwswIv76oPKW6dgmZFoZggbNOFHbgMAjyiRr9OkGsr8cPmZn91Mtum+LQDy3BNjLr3L EkgADCKVTHk7L+l9YGc56s9k2Wzxqd5VeCjArWFubIG38UZweJnr0Lc0+LbFSy6tg/WL V91g== X-Gm-Message-State: AKGB3mJH/pPCBMnNIZvR/hMVyt1kOcn15t/JNz6fZFRLdZo7qlnQRvtp 3f9QVGz0ZRucygslwtjDD9KdAOhqifWEOX/IrnM= X-Google-Smtp-Source: ACJfBoupAtRFw2rD5glxWgL9Im39cR1N7T1/74BN/cKEPsWW0Uvp+JffvGNB+wwd5HQyLl2Uy9nGKE0ReoQC61bJApo= X-Received: by 10.55.212.204 with SMTP id s73mr2274151qks.142.1514996099668; Wed, 03 Jan 2018 08:14:59 -0800 (PST) MIME-Version: 1.0 Received: by 10.237.33.208 with HTTP; Wed, 3 Jan 2018 08:14:59 -0800 (PST) In-Reply-To: References: <1514026525-32538-1-git-send-email-xieyisheng1@huawei.com> <20171223134831.GB10103@kroah.com> From: Arnd Bergmann Date: Wed, 3 Jan 2018 17:14:59 +0100 X-Google-Sender-Auth: XmZbrjTGIM5ekE0HLckVzGksStI Message-ID: Subject: Re: [PATCH v3 00/27] kill devm_ioremap_nocache To: christophe leroy Cc: Guenter Roeck , Greg KH , Yisheng Xie , Linux Kernel Mailing List , ysxie@foxmail.com, Ulf Hansson , linux-mmc , Boris Brezillon , Richard Weinberger , Marek Vasut , Cyrille Pitchen , linux-mtd , alsa-devel@alsa-project.org, Wim Van Sebroeck , linux-watchdog@vger.kernel.org, Bartlomiej Zolnierkiewicz , linux-fbdev@vger.kernel.org, Linus Walleij , linux-gpio@vger.kernel.org, Ralf Baechle , "open list:RALINK MIPS ARCHITECTURE" , Liam Girdwood , Mark Brown , Thomas Gleixner , Jason Cooper , Marc Zyngier , Andy Shevchenko , industrypack-devel@lists.sourceforge.net, wg@grandegger.com, mkl@pengutronix.de, linux-can@vger.kernel.org, Mauro Carvalho Chehab , Linux Media Mailing List , Alessandro Zummo , Alexandre Belloni , linux-rtc@vger.kernel.org, Daniel Vetter , Jani Nikula , Sean Paul , David Airlie , dri-devel , Kalle Valo , linux-wireless , linux-spi , Tejun Heo , IDE-ML , Bjorn Helgaas , linux-pci , devel@driverdev.osuosl.org, Darren Hart , Andy Shevchenko , Platform Driver , Jakub Kicinski , David Miller , "moderated list:NIOS2 ARCHITECTURE" , Networking , Vinod Koul , Dan Williams , dmaengine@vger.kernel.org, Jiri Slaby , David Howells Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 8BIT Return-Path: X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0) X-Orcpt: rfc822;linux-mips@linux-mips.org Original-Recipient: rfc822;linux-mips@linux-mips.org X-archive-position: 61890 X-ecartis-version: Ecartis v1.0.0 Sender: linux-mips-bounce@linux-mips.org Errors-to: linux-mips-bounce@linux-mips.org X-original-sender: arnd@arndb.de Precedence: bulk List-help: List-unsubscribe: List-software: Ecartis version 1.0.0 List-Id: linux-mips X-List-ID: linux-mips List-subscribe: List-owner: List-post: List-archive: X-list: linux-mips On Sun, Dec 24, 2017 at 9:55 AM, christophe leroy wrote: > Le 23/12/2017 à 16:57, Guenter Roeck a écrit : >> >> On 12/23/2017 05:48 AM, Greg KH wrote: >>> >>> On Sat, Dec 23, 2017 at 06:55:25PM +0800, Yisheng Xie wrote: >>>> >>>> Hi all, >>>> >>>> When I tried to use devm_ioremap function and review related code, I >>>> found >>>> devm_ioremap and devm_ioremap_nocache is almost the same with each >>>> other, >>>> except one use ioremap while the other use ioremap_nocache. >>> >>> >>> For all arches? Really? Look at MIPS, and x86, they have different >>> functions. >>> >> >> Both mips and x86 end up mapping the same function, but other arches >> don't. >> mn10300 is one where ioremap and ioremap_nocache are definitely different. > > > alpha: identical > arc: identical > arm: identical > arm64: identical > cris: different <== > frv: identical > hexagone: identical > ia64: different <== > m32r: identical > m68k: identical > metag: identical > microblaze: identical > mips: identical > mn10300: different <== > nios: identical > openrisc: different <== > parisc: identical > riscv: identical > s390: identical > sh: identical > sparc: identical > tile: identical > um: rely on asm/generic > unicore32: identical > x86: identical > asm/generic (no mmu): identical > > So 4 among all arches seems to have ioremap() and ioremap_nocache() being > different. > > Could we have a define set by the 4 arches on which ioremap() and > ioremap_nocache() are different, something like > HAVE_DIFFERENT_IOREMAP_NOCACHE ? I wonder if those are actually correct or not. What I found looking at those architectures: - openrisc only has one driver using ioremap (drivers/net/ethernet/ethoc.c) and that calls ioremap_nocache(). Presumably the authors went with the implementation for ioremap that made sense (using default attributes) rather than the one that actually works (using uncached). - On ia64, ioremap() checks the attributes for the physical address based on firmware tables and then picks either cached or uncached mappings. ioremap_nocache() does the same but returns NULL instead of a cached mapping for anything that is not an MMIO address. Presumably it would just work to always call ioremap(). - mn10300 appears to be wrong, broken by David Howells in commit 83c2dc15ce82 ("MN10300: Handle cacheable PCI regions in pci_iomap()") for any driver calling ioremap() by to get uncached memory, if I understand the comment for commit 34f1bdee1910 ("mn10300: switch to GENERIC_PCI_IOMAP") correctly: it seems that PCI addresses include the 'uncached' bit by default to get the right behavior, but dropping that bit breaks it. - cris seems similar to mn10300 in hardware, using an phys address bit for uncached access. There are two callers in arch code that appear to rely on the cachable output of ioremap() arch/cris/arch-v32/kernel/signal.c: __ioremap_prot(virt_to_phys(data), PAGE_SIZE, PAGE_SIGNAL_TRAMPOLINE); arch/cris/arch-v32/mm/intmem.c: intmem_virtual = ioremap(MEM_INTMEM_START + RESERVED_SIZE, It's unclear whether ioremap_nocache() actually has any users on cris, or whether it was only added for compile-time testing, and calling plain ioremap() would always work too (assuming we pass the phys address with the uncached-bit set). Arnd