linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 1/2] microblaze: fix endian handling
@ 2018-01-02 11:47 Arnd Bergmann
  2018-01-02 11:47 ` [PATCH 2/2] microblaze: fix iounmap prototype Arnd Bergmann
  2018-01-14  1:01 ` [PATCH 1/2] microblaze: fix endian handling kbuild test robot
  0 siblings, 2 replies; 7+ messages in thread
From: Arnd Bergmann @ 2018-01-02 11:47 UTC (permalink / raw)
  To: Michal Simek
  Cc: Andrew Morton, linux-arch, Babu Moger, linux-kernel, Arnd Bergmann

Building an allmodconfig kernel fails horribly because of
endian mismatch. It turns out that the -mlittle-endian
switch was not honored at all as we were using the wrong
Kconfig symbol and failing to apply CPUFLAGS to the CFLAGS.
Finally, the linker flags did not get set right.

This addresses all three of those issues, which now lets
me build both big-endian and little-endian kernels for
testing.

Fixes: 428dbf156cc5 ("arch: change default endian for microblaze")
Fixes: 206d3642d8ee ("arch/microblaze: add choice for endianness and update Makefile")
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
 arch/microblaze/Makefile | 17 +++++++++++------
 1 file changed, 11 insertions(+), 6 deletions(-)

diff --git a/arch/microblaze/Makefile b/arch/microblaze/Makefile
index 830ee7d42fa0..d269dd4b8279 100644
--- a/arch/microblaze/Makefile
+++ b/arch/microblaze/Makefile
@@ -36,16 +36,21 @@ endif
 CPUFLAGS-$(CONFIG_XILINX_MICROBLAZE0_USE_DIV) += -mno-xl-soft-div
 CPUFLAGS-$(CONFIG_XILINX_MICROBLAZE0_USE_BARREL) += -mxl-barrel-shift
 CPUFLAGS-$(CONFIG_XILINX_MICROBLAZE0_USE_PCMP_INSTR) += -mxl-pattern-compare
-CPUFLAGS-$(CONFIG_BIG_ENDIAN) += -mbig-endian
-CPUFLAGS-$(CONFIG_LITTLE_ENDIAN) += -mlittle-endian
+
+ifdef CONFIG_CPU_BIG_ENDIAN
+KBUILD_CFLAGS += -mbig-endian
+KBUILD_AFLAGS += -mbig-endian
+LD += -EB
+else
+KBUILD_CFLAGS += -mlittle-endian
+KBUILD_AFLAGS += -mlittle-endian
+LD += -EL
+endif
 
 CPUFLAGS-1 += $(call cc-option,-mcpu=v$(CPU_VER))
 
 # r31 holds current when in kernel mode
-KBUILD_CFLAGS += -ffixed-r31 $(CPUFLAGS-1) $(CPUFLAGS-2)
-
-LDFLAGS		:=
-LDFLAGS_vmlinux	:=
+KBUILD_CFLAGS += -ffixed-r31 $(CPUFLAGS-y) $(CPUFLAGS-1) $(CPUFLAGS-2)
 
 head-y := arch/microblaze/kernel/head.o
 libs-y += arch/microblaze/lib/
-- 
2.9.0

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH 2/2] microblaze: fix iounmap prototype
  2018-01-02 11:47 [PATCH 1/2] microblaze: fix endian handling Arnd Bergmann
@ 2018-01-02 11:47 ` Arnd Bergmann
  2018-01-14  1:01 ` [PATCH 1/2] microblaze: fix endian handling kbuild test robot
  1 sibling, 0 replies; 7+ messages in thread
From: Arnd Bergmann @ 2018-01-02 11:47 UTC (permalink / raw)
  To: Michal Simek
  Cc: Andrew Morton, linux-arch, Babu Moger, linux-kernel, Arnd Bergmann

The missing 'volatile' keyword on the iounmap argument leads to lots of
harmless warnings in an allmodconfig build:

sound/pci/echoaudio/echoaudio.c:1879:10: warning: passing argument 1 of 'iounmap' discards 'volatile' qualifier from pointer target type [-Wdiscarded-qualifiers]

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
 arch/microblaze/include/asm/io.h | 2 +-
 arch/microblaze/mm/pgtable.c     | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/arch/microblaze/include/asm/io.h b/arch/microblaze/include/asm/io.h
index 39b6315db82e..c7968139486f 100644
--- a/arch/microblaze/include/asm/io.h
+++ b/arch/microblaze/include/asm/io.h
@@ -36,7 +36,7 @@ extern resource_size_t isa_mem_base;
 #ifdef CONFIG_MMU
 #define page_to_bus(page)	(page_to_phys(page))
 
-extern void iounmap(void __iomem *addr);
+extern void iounmap(volatile void __iomem *addr);
 
 extern void __iomem *ioremap(phys_addr_t address, unsigned long size);
 #define ioremap_nocache(addr, size)		ioremap((addr), (size))
diff --git a/arch/microblaze/mm/pgtable.c b/arch/microblaze/mm/pgtable.c
index 4c0599239915..7f525962cdfa 100644
--- a/arch/microblaze/mm/pgtable.c
+++ b/arch/microblaze/mm/pgtable.c
@@ -127,7 +127,7 @@ void __iomem *ioremap(phys_addr_t addr, unsigned long size)
 }
 EXPORT_SYMBOL(ioremap);
 
-void iounmap(void __iomem *addr)
+void iounmap(volatile void __iomem *addr)
 {
 	if ((__force void *)addr > high_memory &&
 					(unsigned long) addr < ioremap_bot)
-- 
2.9.0

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH 1/2] microblaze: fix endian handling
  2018-01-02 11:47 [PATCH 1/2] microblaze: fix endian handling Arnd Bergmann
  2018-01-02 11:47 ` [PATCH 2/2] microblaze: fix iounmap prototype Arnd Bergmann
@ 2018-01-14  1:01 ` kbuild test robot
  2018-01-15  9:29   ` Arnd Bergmann
  1 sibling, 1 reply; 7+ messages in thread
From: kbuild test robot @ 2018-01-14  1:01 UTC (permalink / raw)
  To: Arnd Bergmann
  Cc: kbuild-all, Michal Simek, Andrew Morton, linux-arch, Babu Moger,
	linux-kernel, Arnd Bergmann

[-- Attachment #1: Type: text/plain, Size: 1594 bytes --]

Hi Arnd,

I love your patch! Yet something to improve:

[auto build test ERROR on linus/master]
[also build test ERROR on v4.15-rc7 next-20180112]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]

url:    https://github.com/0day-ci/linux/commits/Arnd-Bergmann/microblaze-fix-endian-handling/20180105-120705
config: microblaze-mmu_defconfig (attached as .config)
compiler: microblaze-linux-gcc (GCC) 7.2.0
reproduce:
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # save the attached .config to linux build tree
        make.cross ARCH=microblaze 

All errors (new ones prefixed by >>):

>> arch/microblaze/lib/fastcopy.S:33:2: error: #error Microblaze LE not support ASM optimized lib func. Disable OPT_LIB_ASM.
    #error Microblaze LE not support ASM optimized lib func. Disable OPT_LIB_ASM.
     ^~~~~

vim +33 arch/microblaze/lib/fastcopy.S

de93c3c1 Michal Simek 2011-01-28 @33  #error Microblaze LE not support ASM optimized lib func. Disable OPT_LIB_ASM.
de93c3c1 Michal Simek 2011-01-28  34  #endif
de93c3c1 Michal Simek 2011-01-28  35  

:::::: The code at line 33 was first introduced by commit
:::::: de93c3c119382cb888ca8a94b642dbcf8035525e microblaze: Fix ASM optimized code for LE

:::::: TO: Michal Simek <monstr@monstr.eu>
:::::: CC: Michal Simek <monstr@monstr.eu>

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 13163 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH 1/2] microblaze: fix endian handling
  2018-01-14  1:01 ` [PATCH 1/2] microblaze: fix endian handling kbuild test robot
@ 2018-01-15  9:29   ` Arnd Bergmann
  2018-01-15 10:14     ` Michal Simek
  0 siblings, 1 reply; 7+ messages in thread
From: Arnd Bergmann @ 2018-01-15  9:29 UTC (permalink / raw)
  To: kbuild test robot
  Cc: kbuild-all, Michal Simek, Andrew Morton, linux-arch, Babu Moger,
	Linux Kernel Mailing List

On Sun, Jan 14, 2018 at 2:01 AM, kbuild test robot <lkp@intel.com> wrote:
> Hi Arnd,
>
> I love your patch! Yet something to improve:
>
> [auto build test ERROR on linus/master]
> [also build test ERROR on v4.15-rc7 next-20180112]
> [if your patch is applied to the wrong git tree, please drop us a note to help improve the system]
>
> url:    https://github.com/0day-ci/linux/commits/Arnd-Bergmann/microblaze-fix-endian-handling/20180105-120705
> config: microblaze-mmu_defconfig (attached as .config)
> compiler: microblaze-linux-gcc (GCC) 7.2.0
> reproduce:
>         wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
>         chmod +x ~/bin/make.cross
>         # save the attached .config to linux build tree
>         make.cross ARCH=microblaze
>
> All errors (new ones prefixed by >>):
>
>>> arch/microblaze/lib/fastcopy.S:33:2: error: #error Microblaze LE not support ASM optimized lib func. Disable OPT_LIB_ASM.
>     #error Microblaze LE not support ASM optimized lib func. Disable OPT_LIB_ASM.
>      ^~~~~
>
> vim +33 arch/microblaze/lib/fastcopy.S
>

This seems to be a result of fixing one bug so we run into one that we didn't
get to earlier. I still assume my patch is correct.

      Arnd

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH 1/2] microblaze: fix endian handling
  2018-01-15  9:29   ` Arnd Bergmann
@ 2018-01-15 10:14     ` Michal Simek
  2018-01-15 10:19       ` Arnd Bergmann
  0 siblings, 1 reply; 7+ messages in thread
From: Michal Simek @ 2018-01-15 10:14 UTC (permalink / raw)
  To: Arnd Bergmann, kbuild test robot
  Cc: kbuild-all, Andrew Morton, linux-arch, Babu Moger,
	Linux Kernel Mailing List


[-- Attachment #1.1: Type: text/plain, Size: 1957 bytes --]

On 15.1.2018 10:29, Arnd Bergmann wrote:
> On Sun, Jan 14, 2018 at 2:01 AM, kbuild test robot <lkp@intel.com> wrote:
>> Hi Arnd,
>>
>> I love your patch! Yet something to improve:
>>
>> [auto build test ERROR on linus/master]
>> [also build test ERROR on v4.15-rc7 next-20180112]
>> [if your patch is applied to the wrong git tree, please drop us a note to help improve the system]
>>
>> url:    https://github.com/0day-ci/linux/commits/Arnd-Bergmann/microblaze-fix-endian-handling/20180105-120705
>> config: microblaze-mmu_defconfig (attached as .config)
>> compiler: microblaze-linux-gcc (GCC) 7.2.0
>> reproduce:
>>         wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
>>         chmod +x ~/bin/make.cross
>>         # save the attached .config to linux build tree
>>         make.cross ARCH=microblaze
>>
>> All errors (new ones prefixed by >>):
>>
>>>> arch/microblaze/lib/fastcopy.S:33:2: error: #error Microblaze LE not support ASM optimized lib func. Disable OPT_LIB_ASM.
>>     #error Microblaze LE not support ASM optimized lib func. Disable OPT_LIB_ASM.
>>      ^~~~~
>>
>> vim +33 arch/microblaze/lib/fastcopy.S
>>
> 
> This seems to be a result of fixing one bug so we run into one that we didn't
> get to earlier. I still assume my patch is correct.

I will look at this later this week. Xilinx toolchain which I use
normally are microblaze for BE or microblazeel that's why proper flags
are default options already that's why I didn't see any issue.

Did you take toolchain from kernel.org?
https://www.kernel.org/pub/tools/crosstool/files/bin/x86_64/4.9.0/

Thanks,
Michal

-- 
Michal Simek, Ing. (M.Eng), OpenPGP -> KeyID: FE3D1F91
w: www.monstr.eu p: +42-0-721842854
Maintainer of Linux kernel - Xilinx Microblaze
Maintainer of Linux kernel - Xilinx Zynq ARM and ZynqMP ARM64 SoCs
U-Boot custodian - Xilinx Microblaze/Zynq/ZynqMP SoCs



[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 198 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH 1/2] microblaze: fix endian handling
  2018-01-15 10:14     ` Michal Simek
@ 2018-01-15 10:19       ` Arnd Bergmann
  2018-01-17 12:57         ` Michal Simek
  0 siblings, 1 reply; 7+ messages in thread
From: Arnd Bergmann @ 2018-01-15 10:19 UTC (permalink / raw)
  To: Michal Simek
  Cc: kbuild test robot, kbuild-all, Andrew Morton, linux-arch,
	Babu Moger, Linux Kernel Mailing List

On Mon, Jan 15, 2018 at 11:14 AM, Michal Simek <monstr@monstr.eu> wrote:
> On 15.1.2018 10:29, Arnd Bergmann wrote:
>> On Sun, Jan 14, 2018 at 2:01 AM, kbuild test robot <lkp@intel.com> wrote:
>>> Hi Arnd,
>>>
>>> I love your patch! Yet something to improve:
>>>
>>> [auto build test ERROR on linus/master]
>>> [also build test ERROR on v4.15-rc7 next-20180112]
>>> [if your patch is applied to the wrong git tree, please drop us a note to help improve the system]
>>>
>>> url:    https://github.com/0day-ci/linux/commits/Arnd-Bergmann/microblaze-fix-endian-handling/20180105-120705
>>> config: microblaze-mmu_defconfig (attached as .config)
>>> compiler: microblaze-linux-gcc (GCC) 7.2.0
>>> reproduce:
>>>         wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
>>>         chmod +x ~/bin/make.cross
>>>         # save the attached .config to linux build tree
>>>         make.cross ARCH=microblaze
>>>
>>> All errors (new ones prefixed by >>):
>>>
>>>>> arch/microblaze/lib/fastcopy.S:33:2: error: #error Microblaze LE not support ASM optimized lib func. Disable OPT_LIB_ASM.
>>>     #error Microblaze LE not support ASM optimized lib func. Disable OPT_LIB_ASM.
>>>      ^~~~~
>>>
>>> vim +33 arch/microblaze/lib/fastcopy.S
>>>
>>
>> This seems to be a result of fixing one bug so we run into one that we didn't
>> get to earlier. I still assume my patch is correct.
>
> I will look at this later this week. Xilinx toolchain which I use
> normally are microblaze for BE or microblazeel that's why proper flags
> are default options already that's why I didn't see any issue.
>
> Did you take toolchain from kernel.org?
> https://www.kernel.org/pub/tools/crosstool/files/bin/x86_64/4.9.0/

I used a gcc-7.2.1 that I built myself for all architectures in order to debug
a gcc issue that appeared in gcc-7.2.

The patch that got tested was my workaround for an obviously broken
allmodconfig build.

         Arnd

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH 1/2] microblaze: fix endian handling
  2018-01-15 10:19       ` Arnd Bergmann
@ 2018-01-17 12:57         ` Michal Simek
  0 siblings, 0 replies; 7+ messages in thread
From: Michal Simek @ 2018-01-17 12:57 UTC (permalink / raw)
  To: Arnd Bergmann
  Cc: kbuild test robot, kbuild-all, Andrew Morton, linux-arch,
	Babu Moger, Linux Kernel Mailing List


[-- Attachment #1.1: Type: text/plain, Size: 2405 bytes --]

On 15.1.2018 11:19, Arnd Bergmann wrote:
> On Mon, Jan 15, 2018 at 11:14 AM, Michal Simek <monstr@monstr.eu> wrote:
>> On 15.1.2018 10:29, Arnd Bergmann wrote:
>>> On Sun, Jan 14, 2018 at 2:01 AM, kbuild test robot <lkp@intel.com> wrote:
>>>> Hi Arnd,
>>>>
>>>> I love your patch! Yet something to improve:
>>>>
>>>> [auto build test ERROR on linus/master]
>>>> [also build test ERROR on v4.15-rc7 next-20180112]
>>>> [if your patch is applied to the wrong git tree, please drop us a note to help improve the system]
>>>>
>>>> url:    https://github.com/0day-ci/linux/commits/Arnd-Bergmann/microblaze-fix-endian-handling/20180105-120705
>>>> config: microblaze-mmu_defconfig (attached as .config)
>>>> compiler: microblaze-linux-gcc (GCC) 7.2.0
>>>> reproduce:
>>>>         wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
>>>>         chmod +x ~/bin/make.cross
>>>>         # save the attached .config to linux build tree
>>>>         make.cross ARCH=microblaze
>>>>
>>>> All errors (new ones prefixed by >>):
>>>>
>>>>>> arch/microblaze/lib/fastcopy.S:33:2: error: #error Microblaze LE not support ASM optimized lib func. Disable OPT_LIB_ASM.
>>>>     #error Microblaze LE not support ASM optimized lib func. Disable OPT_LIB_ASM.
>>>>      ^~~~~
>>>>
>>>> vim +33 arch/microblaze/lib/fastcopy.S
>>>>
>>>
>>> This seems to be a result of fixing one bug so we run into one that we didn't
>>> get to earlier. I still assume my patch is correct.
>>
>> I will look at this later this week. Xilinx toolchain which I use
>> normally are microblaze for BE or microblazeel that's why proper flags
>> are default options already that's why I didn't see any issue.
>>
>> Did you take toolchain from kernel.org?
>> https://www.kernel.org/pub/tools/crosstool/files/bin/x86_64/4.9.0/
> 
> I used a gcc-7.2.1 that I built myself for all architectures in order to debug
> a gcc issue that appeared in gcc-7.2.
> 
> The patch that got tested was my workaround for an obviously broken
> allmodconfig build.

ok.

Applied both.

Thanks,
Michal


-- 
Michal Simek, Ing. (M.Eng), OpenPGP -> KeyID: FE3D1F91
w: www.monstr.eu p: +42-0-721842854
Maintainer of Linux kernel - Xilinx Microblaze
Maintainer of Linux kernel - Xilinx Zynq ARM and ZynqMP ARM64 SoCs
U-Boot custodian - Xilinx Microblaze/Zynq/ZynqMP SoCs



[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 198 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2018-01-17 12:58 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-01-02 11:47 [PATCH 1/2] microblaze: fix endian handling Arnd Bergmann
2018-01-02 11:47 ` [PATCH 2/2] microblaze: fix iounmap prototype Arnd Bergmann
2018-01-14  1:01 ` [PATCH 1/2] microblaze: fix endian handling kbuild test robot
2018-01-15  9:29   ` Arnd Bergmann
2018-01-15 10:14     ` Michal Simek
2018-01-15 10:19       ` Arnd Bergmann
2018-01-17 12:57         ` Michal Simek

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).