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

Maciej W. Rozycki macro at linux-mips.org
Fri Jan 8 18:12:04 PST 2016


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



More information about the linux-mtd mailing list