Hi, Arnd: 2017-11-27 22:33 GMT+08:00 Arnd Bergmann <arnd@xxxxxxxx>: > On Mon, Nov 27, 2017 at 1:28 PM, Greentime Hu <green.hu@xxxxxxxxx> wrote: >> + >> +#define L2C_R_REG(offset) __raw_readl(atl2c_base + offset) >> +#define L2C_W_REG(offset, value) __raw_writel(value, atl2c_base + offset) > > __raw_readl() is generally not endian-safe, and might not have the barriers you > require here. Could you use readl/writel here, and only fall back to > readl_relaxed()/writel_relaxed() when you absolutely must avoid the barriers? Thanks for your suggestions. We will changed it to readl/writel >> diff --git a/arch/nds32/kernel/atl2c.c b/arch/nds32/kernel/atl2c.c >> new file mode 100644 >> index 0000000..dd87fc9 >> --- /dev/null >> +++ b/arch/nds32/kernel/atl2c.c >> +#include <linux/compiler.h> >> +#include <linux/of_address.h> >> +#include <linux/of_fdt.h> >> +#include <linux/of_platform.h> >> +#include <asm/l2_cache.h> > > If this is the only file that includes asm/l2_cache.h, then I'd simply > move the entire > contents in here, rather than having a separate file in the global namespace. > arch/nds32/mm/proc.c also includes this file so I will keep it.