Re: [PATCH] mtd: bcm47xxsflash: use devm_ioremap_nocache() instead of KSEG0ADDR()

From: Maciej W. Rozycki
Date: Fri Jan 08 2016 - 21:30:32 EST


On Fri, 8 Jan 2016, Rafał Miłecki wrote:

> >> > This removes some (implicit) MIPS dependencies and makes the code more
> >> > portable, whether we need it or not :)
> >>
> >> So now we have following forwardtrace:
> >> devm_ioremap_nocache
> >> ioremap_nocache
> >> __ioremap_mode
> >> __ioremap
> >> CKSEG1ADDR
> >>
> >> It results in different address than KSEG0ADDR:
> >> [ 1.339752] [bcm47xxsflash_bcma_probe] KSEG0ADDR(BCMA_SOC_FLASH2):9c000000
> >> [ 1.346848] [bcm47xxsflash_bcma_probe] devm_ioremap_nocache:bc000000
> >>
> >> But it still works as expected! :)
> >> [ 1.609426] 6 bcm47xxpart partitions found on MTD device bcm47xxsflash
> >> [ 1.616169] Creating 6 MTD partitions on "bcm47xxsflash":
> >
> > It is a functional change though and I think the change from a cached to
> > uncached mapping (i.e. from `ioremap' to `ioremap_nocache') has to be a
> > separate patch, so that both changes can be reviewed independently.
>
> We didn't switch from 'ioremap' but from KSEG0ADDR. What exactly
> should be a separated patch?

See my other reply -- KSEG0ADDR (cached mapping) corresponds to
`ioremap_cache', whereas `ioremap_nocache' (or its generic `ioremap_uc'
alias) or plain `ioremap' correspond to KSEG1ADDR (uncached mapping).
Consequently a change that switches from KSEG0ADDR to `ioremap_nocache' or
`ioremap' includes a functional change along a build error (portability)
fix. Therefore such a change has to be split into two, so that the
functional change can be reviewed separately from the portability fix.

Maciej