Re: ioremap_uc() followed by set_memory_wc() - burrying MTRR
From: Andy Lutomirski <luto@amacapital.net>
Date: 2015-04-22 16:53:29
Also in:
linux-media, linux-rdma, lkml
On Wed, Apr 22, 2015 at 8:23 AM, Luis R. Rodriguez [off-list ref] wrote:
On Tue, Apr 21, 2015 at 11:39:39PM -0600, Jason Gunthorpe wrote:quoted
On Wed, Apr 22, 2015 at 01:39:07AM +0200, Luis R. Rodriguez wrote:quoted
quoted
Mike, do you think the time is right to just remove the iPath driver?With PAT now being default the driver effectively won't work with write-combining on modern kernels. Even if systems are old they likely had PAT support, when upgrading kernels PAT will work but write-combing won't on ipath.Sorry, do you mean the driver already doesn't get WC? Or do you mean after some more pending patches are applied?No, you have to consider the system used and the effects of calls used on the driver in light of this table: ---------------------------------------------------------------------- MTRR Non-PAT PAT Linux ioremap value Effective memory type ---------------------------------------------------------------------- Non-PAT | PAT PAT |PCD ||PWT ||| WC 000 WB _PAGE_CACHE_MODE_WB WC | WC WC 001 WC _PAGE_CACHE_MODE_WC WC* | WC WC 010 UC- _PAGE_CACHE_MODE_UC_MINUS WC* | UC WC 011 UC _PAGE_CACHE_MODE_UC UC | UC ---------------------------------------------------------------------- (*) denotes implementation defined and is discouraged ioremap_nocache() will use _PAGE_CACHE_MODE_UC_MINUS by default today, in the future we want to flip the switch and make _PAGE_CACHE_MODE_UC the default. When that flip occurs it will mean ipath cannot get write-combining on both non-PAT and PAT systems. Now that is for the future, lets review the current situation for ipath. For PAT capable systems if mtrr_add() is used today on a Linux system on a region mapped with ioremap_nocache() that will mean you effectively nullify the mtrr_add() effect as the combinatorial effect above yields an effective memory type of UC.
Are you sure? I thought that ioremap_nocache currently is UC-, so mtrr_add + ioremap_nocache gets WC even on PAT systems. Going forward, when mtrr_add is gone, this will change, of course. --Andy