diff mbox

arm64: Set UTS_MACHINE in the Makefile

Message ID 1472545895-7237-1-git-send-email-mmarek@suse.com (mailing list archive)
State New, archived
Headers show

Commit Message

Michal Marek Aug. 30, 2016, 8:31 a.m. UTC
The make rpm target depends on proper UTS_MACHINE definition.  Also, use
the variable in arch/arm64/kernel/setup.c, so that it's not accidentally
removed in the future.

Reported-and-tested-by: Fabian Vogt <fvogt@suse.com>
Signed-off-by: Michal Marek <mmarek@suse.com>
---
 arch/arm64/Makefile        | 2 ++
 arch/arm64/kernel/Makefile | 2 ++
 arch/arm64/kernel/setup.c  | 2 +-
 3 files changed, 5 insertions(+), 1 deletion(-)

Comments

Will Deacon Aug. 30, 2016, 9:53 a.m. UTC | #1
On Tue, Aug 30, 2016 at 10:31:35AM +0200, Michal Marek wrote:
> The make rpm target depends on proper UTS_MACHINE definition.  Also, use
> the variable in arch/arm64/kernel/setup.c, so that it's not accidentally
> removed in the future.
> 
> Reported-and-tested-by: Fabian Vogt <fvogt@suse.com>
> Signed-off-by: Michal Marek <mmarek@suse.com>
> ---

What exactly do you mean by "proper", here? Is it just the endianness
suffix that you need?

>  arch/arm64/Makefile        | 2 ++
>  arch/arm64/kernel/Makefile | 2 ++
>  arch/arm64/kernel/setup.c  | 2 +-
>  3 files changed, 5 insertions(+), 1 deletion(-)
> 
> diff --git a/arch/arm64/Makefile b/arch/arm64/Makefile
> index 5b54f8c021d8..ab3df36fdfbb 100644
> --- a/arch/arm64/Makefile
> +++ b/arch/arm64/Makefile
> @@ -38,10 +38,12 @@ ifeq ($(CONFIG_CPU_BIG_ENDIAN), y)
>  KBUILD_CPPFLAGS	+= -mbig-endian
>  AS		+= -EB
>  LD		+= -EB
> +UTS_MACHINE	:= aarch64_be
>  else
>  KBUILD_CPPFLAGS	+= -mlittle-endian
>  AS		+= -EL
>  LD		+= -EL
> +UTS_MACHINE	:= aarch64
>  endif

I think we're be better off changing scripts/package/Makefile to map
UTS_MACHINE into whatever rpm requires, just like scripts/package/builddeb
already does this for .deb (which I think ends up broken with your patch
applied).

Will
Michal Marek Aug. 30, 2016, 10:50 a.m. UTC | #2
On 2016-08-30 11:53, Will Deacon wrote:
> On Tue, Aug 30, 2016 at 10:31:35AM +0200, Michal Marek wrote:
>> The make rpm target depends on proper UTS_MACHINE definition.  Also, use
>> the variable in arch/arm64/kernel/setup.c, so that it's not accidentally
>> removed in the future.
>>
>> Reported-and-tested-by: Fabian Vogt <fvogt@suse.com>
>> Signed-off-by: Michal Marek <mmarek@suse.com>
>> ---
> 
> What exactly do you mean by "proper", here? Is it just the endianness
> suffix that you need?

The default for UTS_MACHINE is the kbuild arch name, which would be arm64.

Michal
Will Deacon Aug. 30, 2016, 11:20 a.m. UTC | #3
On Tue, Aug 30, 2016 at 12:50:41PM +0200, Michal Marek wrote:
> On 2016-08-30 11:53, Will Deacon wrote:
> > On Tue, Aug 30, 2016 at 10:31:35AM +0200, Michal Marek wrote:
> >> The make rpm target depends on proper UTS_MACHINE definition.  Also, use
> >> the variable in arch/arm64/kernel/setup.c, so that it's not accidentally
> >> removed in the future.
> >>
> >> Reported-and-tested-by: Fabian Vogt <fvogt@suse.com>
> >> Signed-off-by: Michal Marek <mmarek@suse.com>
> >> ---
> > 
> > What exactly do you mean by "proper", here? Is it just the endianness
> > suffix that you need?
> 
> The default for UTS_MACHINE is the kbuild arch name, which would be arm64.

Ok, but why doesn't that work for rpm?
Did you see the other part of my reply?

Will
Michal Marek Aug. 30, 2016, 11:53 a.m. UTC | #4
On 2016-08-30 13:20, Will Deacon wrote:
> On Tue, Aug 30, 2016 at 12:50:41PM +0200, Michal Marek wrote:
>> On 2016-08-30 11:53, Will Deacon wrote:
>>> On Tue, Aug 30, 2016 at 10:31:35AM +0200, Michal Marek wrote:
>>>> The make rpm target depends on proper UTS_MACHINE definition.  Also, use
>>>> the variable in arch/arm64/kernel/setup.c, so that it's not accidentally
>>>> removed in the future.
>>>>
>>>> Reported-and-tested-by: Fabian Vogt <fvogt@suse.com>
>>>> Signed-off-by: Michal Marek <mmarek@suse.com>
>>>> ---
>>>
>>> What exactly do you mean by "proper", here? Is it just the endianness
>>> suffix that you need?
>>
>> The default for UTS_MACHINE is the kbuild arch name, which would be arm64.
> 
> Ok, but why doesn't that work for rpm?

It does not work for rpm, because the arch/* subdirectory names are
unknown to userspace. rpmbuild --target ... expects the uname -m string
of the target architecture. What other architectures do is that they
change the UTS_MACHINE definition if it differs from the kbuild
architecture name (e.g. x86, power, s390).


> Did you see the other part of my reply?

Oops, I haven't.

On 2016-08-30 11:53, Will Deacon wrote:
> I think we're be better off changing scripts/package/Makefile to map
> UTS_MACHINE into whatever rpm requires, just like scripts/package/builddeb
> already does this for .deb (which I think ends up broken with your patch
> applied).

As explained above, rpm requires the UTS_MACHINE definition that other
architectures set in their Makefiles. Debian architectures use a
slightly different naming than the uname -m string, so a mapping is
needed. You are right about the breakage, I will send a v2.

Michal
diff mbox

Patch

diff --git a/arch/arm64/Makefile b/arch/arm64/Makefile
index 5b54f8c021d8..ab3df36fdfbb 100644
--- a/arch/arm64/Makefile
+++ b/arch/arm64/Makefile
@@ -38,10 +38,12 @@  ifeq ($(CONFIG_CPU_BIG_ENDIAN), y)
 KBUILD_CPPFLAGS	+= -mbig-endian
 AS		+= -EB
 LD		+= -EB
+UTS_MACHINE	:= aarch64_be
 else
 KBUILD_CPPFLAGS	+= -mlittle-endian
 AS		+= -EL
 LD		+= -EL
+UTS_MACHINE	:= aarch64
 endif
 
 CHECKFLAGS	+= -D__aarch64__
diff --git a/arch/arm64/kernel/Makefile b/arch/arm64/kernel/Makefile
index 14f7b651c787..7d66bbaafc0c 100644
--- a/arch/arm64/kernel/Makefile
+++ b/arch/arm64/kernel/Makefile
@@ -10,6 +10,8 @@  CFLAGS_REMOVE_ftrace.o = -pg
 CFLAGS_REMOVE_insn.o = -pg
 CFLAGS_REMOVE_return_address.o = -pg
 
+CFLAGS_setup.o = -DUTS_MACHINE='"$(UTS_MACHINE)"'
+
 # Object file lists.
 arm64-obj-y		:= debug-monitors.o entry.o irq.o fpsimd.o		\
 			   entry-fpsimd.o process.o ptrace.o setup.o signal.o	\
diff --git a/arch/arm64/kernel/setup.c b/arch/arm64/kernel/setup.c
index 536dce22fe76..c5dd09778c75 100644
--- a/arch/arm64/kernel/setup.c
+++ b/arch/arm64/kernel/setup.c
@@ -228,7 +228,7 @@  void __init setup_arch(char **cmdline_p)
 {
 	pr_info("Boot CPU: AArch64 Processor [%08x]\n", read_cpuid_id());
 
-	sprintf(init_utsname()->machine, ELF_PLATFORM);
+	sprintf(init_utsname()->machine, UTS_MACHINE);
 	init_mm.start_code = (unsigned long) _text;
 	init_mm.end_code   = (unsigned long) _etext;
 	init_mm.end_data   = (unsigned long) _edata;