diff mbox

[3/4] linux-user: set minimum kernel version to 2.6.32

Message ID 1393903321-6352-4-git-send-email-riku.voipio@linaro.org
State Superseded
Headers show

Commit Message

Riku Voipio March 4, 2014, 3:22 a.m. UTC
From: Riku Voipio <riku.voipio@linaro.org>

Popular glibc based distributions[1] require minimum
2.6.32 as kernel version. For some targets 2.6.18
would be enough, but dropping so low would mean some
suboptimal system calls could get used.

Set the minimum kernel advertized to 2.6.32 for
all architectures but aarch64 to ensure working qemu
linux-user in case host kernel is older.

[1] https://bugs.launchpad.net/ubuntu/+source/eglibc/+bug/921078

Signed-off-by: Riku Voipio <riku.voipio@linaro.org>
---
 linux-user/alpha/syscall.h      | 1 +
 linux-user/arm/syscall.h        | 1 +
 linux-user/cris/syscall.h       | 2 +-
 linux-user/i386/syscall.h       | 1 +
 linux-user/m68k/syscall.h       | 2 +-
 linux-user/microblaze/syscall.h | 2 +-
 linux-user/mips/syscall.h       | 1 +
 linux-user/mips64/syscall.h     | 1 +
 linux-user/openrisc/syscall.h   | 1 +
 linux-user/ppc/syscall.h        | 1 +
 linux-user/s390x/syscall.h      | 1 +
 linux-user/sh4/syscall.h        | 1 +
 linux-user/sparc/syscall.h      | 1 +
 linux-user/sparc64/syscall.h    | 1 +
 linux-user/unicore32/syscall.h  | 1 +
 linux-user/x86_64/syscall.h     | 1 +
 16 files changed, 16 insertions(+), 3 deletions(-)

Comments

Alex Bennée March 4, 2014, 11:32 a.m. UTC | #1
riku.voipio@linaro.org writes:

> From: Riku Voipio <riku.voipio@linaro.org>
>
> Popular glibc based distributions[1] require minimum
> 2.6.32 as kernel version. For some targets 2.6.18
> would be enough, but dropping so low would mean some
> suboptimal system calls could get used.

Is the effect of this to report system uname or minimum whichever is higher?

>
> Set the minimum kernel advertized to 2.6.32 for
> all architectures but aarch64 to ensure working qemu
> linux-user in case host kernel is older.

So was skipping setting it for aarch64 deliberate? It would be nice to
have an upstream fix for the hacks the distros are adding. I believe
they are patching UNAME to 3.7.0 for aarch64.

>
> [1] https://bugs.launchpad.net/ubuntu/+source/eglibc/+bug/921078
>
> Signed-off-by: Riku Voipio <riku.voipio@linaro.org>
> ---
>  linux-user/alpha/syscall.h      | 1 +
>  linux-user/arm/syscall.h        | 1 +
>  linux-user/cris/syscall.h       | 2 +-
>  linux-user/i386/syscall.h       | 1 +
>  linux-user/m68k/syscall.h       | 2 +-
>  linux-user/microblaze/syscall.h | 2 +-
>  linux-user/mips/syscall.h       | 1 +
>  linux-user/mips64/syscall.h     | 1 +
>  linux-user/openrisc/syscall.h   | 1 +
>  linux-user/ppc/syscall.h        | 1 +
>  linux-user/s390x/syscall.h      | 1 +
>  linux-user/sh4/syscall.h        | 1 +
>  linux-user/sparc/syscall.h      | 1 +
>  linux-user/sparc64/syscall.h    | 1 +
>  linux-user/unicore32/syscall.h  | 1 +
>  linux-user/x86_64/syscall.h     | 1 +
>  16 files changed, 16 insertions(+), 3 deletions(-)
>
> diff --git a/linux-user/alpha/syscall.h b/linux-user/alpha/syscall.h
> index 15a0100..ed13d9a 100644
> --- a/linux-user/alpha/syscall.h
> +++ b/linux-user/alpha/syscall.h
> @@ -39,6 +39,7 @@ struct target_pt_regs {
>  };
>  
>  #define UNAME_MACHINE "alpha"
> +#define UNAME_MINIMUM_RELEASE "2.6.32"
>  
>  #undef TARGET_EDEADLK
>  #define TARGET_EDEADLK		11
> diff --git a/linux-user/arm/syscall.h b/linux-user/arm/syscall.h
> index 73f2931..ce2c2a8 100644
> --- a/linux-user/arm/syscall.h
> +++ b/linux-user/arm/syscall.h
> @@ -40,5 +40,6 @@ struct target_pt_regs {
>  #else
>  #define UNAME_MACHINE "armv5tel"
>  #endif
> +#define UNAME_MINIMUM_RELEASE "2.6.32"
>  
>  #define TARGET_CLONE_BACKWARDS
> diff --git a/linux-user/cris/syscall.h b/linux-user/cris/syscall.h
> index 832ee64..f5783c0 100644
> --- a/linux-user/cris/syscall.h
> +++ b/linux-user/cris/syscall.h
> @@ -1,8 +1,8 @@
>  #ifndef CRIS_SYSCALL_H
>  #define CRIS_SYSCALL_H 1
>  
> -
>  #define UNAME_MACHINE "cris"
> +#define UNAME_MINIMUM_RELEASE "2.6.32"
>  
>  /* pt_regs not only specifices the format in the user-struct during
>   * ptrace but is also the frame format used in the kernel prologue/epilogues
> diff --git a/linux-user/i386/syscall.h b/linux-user/i386/syscall.h
> index 12b8c3b..9bfc1ad 100644
> --- a/linux-user/i386/syscall.h
> +++ b/linux-user/i386/syscall.h
> @@ -144,5 +144,6 @@ struct target_vm86plus_struct {
>  };
>  
>  #define UNAME_MACHINE "i686"
> +#define UNAME_MINIMUM_RELEASE "2.6.32"
>  
>  #define TARGET_CLONE_BACKWARDS
> diff --git a/linux-user/m68k/syscall.h b/linux-user/m68k/syscall.h
> index 2618793..889eaf7 100644
> --- a/linux-user/m68k/syscall.h
> +++ b/linux-user/m68k/syscall.h
> @@ -15,7 +15,7 @@ struct target_pt_regs {
>      uint16_t __fill;
>  };
>  
> -
>  #define UNAME_MACHINE "m68k"
> +#define UNAME_MINIMUM_RELEASE "2.6.32"
>  
>  void do_m68k_simcall(CPUM68KState *, int);
> diff --git a/linux-user/microblaze/syscall.h b/linux-user/microblaze/syscall.h
> index d550989..5b5f6b4 100644
> --- a/linux-user/microblaze/syscall.h
> +++ b/linux-user/microblaze/syscall.h
> @@ -1,8 +1,8 @@
>  #ifndef MICROBLAZE_SYSCALLS_H
>  #define MICROBLAZE_SYSCALLS_H 1
>  
> -
>  #define UNAME_MACHINE "microblaze"
> +#define UNAME_MINIMUM_RELEASE "2.6.32"
>  
>  /* We use microblaze_reg_t to keep things similar to the kernel sources.  */
>  typedef uint32_t microblaze_reg_t;
> diff --git a/linux-user/mips/syscall.h b/linux-user/mips/syscall.h
> index 9d437d9..5bc5696 100644
> --- a/linux-user/mips/syscall.h
> +++ b/linux-user/mips/syscall.h
> @@ -225,5 +225,6 @@ struct target_pt_regs {
>  #define TARGET_QEMU_ESIGRETURN 255
>  
>  #define UNAME_MACHINE "mips"
> +#define UNAME_MINIMUM_RELEASE "2.6.32"
>  
>  #define TARGET_CLONE_BACKWARDS
> diff --git a/linux-user/mips64/syscall.h b/linux-user/mips64/syscall.h
> index 1710f76..a7f5a58 100644
> --- a/linux-user/mips64/syscall.h
> +++ b/linux-user/mips64/syscall.h
> @@ -222,5 +222,6 @@ struct target_pt_regs {
>  #define TARGET_QEMU_ESIGRETURN 255
>  
>  #define UNAME_MACHINE "mips64"
> +#define UNAME_MINIMUM_RELEASE "2.6.32"
>  
>  #define TARGET_CLONE_BACKWARDS
> diff --git a/linux-user/openrisc/syscall.h b/linux-user/openrisc/syscall.h
> index bdbb577..c3b36da 100644
> --- a/linux-user/openrisc/syscall.h
> +++ b/linux-user/openrisc/syscall.h
> @@ -22,3 +22,4 @@ struct target_pt_regs {
>  };
>  
>  #define UNAME_MACHINE "openrisc"
> +#define UNAME_MINIMUM_RELEASE "2.6.32"
> diff --git a/linux-user/ppc/syscall.h b/linux-user/ppc/syscall.h
> index ba36acb..6514c63 100644
> --- a/linux-user/ppc/syscall.h
> +++ b/linux-user/ppc/syscall.h
> @@ -62,5 +62,6 @@ struct target_revectored_struct {
>  #else
>  #define UNAME_MACHINE "ppc"
>  #endif
> +#define UNAME_MINIMUM_RELEASE "2.6.32"
>  
>  #define TARGET_CLONE_BACKWARDS
> diff --git a/linux-user/s390x/syscall.h b/linux-user/s390x/syscall.h
> index e5ce30b..aaad512 100644
> --- a/linux-user/s390x/syscall.h
> +++ b/linux-user/s390x/syscall.h
> @@ -21,5 +21,6 @@ struct target_pt_regs {
>  };
>  
>  #define UNAME_MACHINE "s390x"
> +#define UNAME_MINIMUM_RELEASE "2.6.32"
>  
>  #define TARGET_CLONE_BACKWARDS2
> diff --git a/linux-user/sh4/syscall.h b/linux-user/sh4/syscall.h
> index 014bf58..ccd2216 100644
> --- a/linux-user/sh4/syscall.h
> +++ b/linux-user/sh4/syscall.h
> @@ -10,3 +10,4 @@ struct target_pt_regs {
>  };
>  
>  #define UNAME_MACHINE "sh4"
> +#define UNAME_MINIMUM_RELEASE "2.6.32"
> diff --git a/linux-user/sparc/syscall.h b/linux-user/sparc/syscall.h
> index 4cd64bf..9549ea0 100644
> --- a/linux-user/sparc/syscall.h
> +++ b/linux-user/sparc/syscall.h
> @@ -7,6 +7,7 @@ struct target_pt_regs {
>  };
>  
>  #define UNAME_MACHINE "sun4"
> +#define UNAME_MINIMUM_RELEASE "2.6.32"
>  
>  /* SPARC kernels don't define this in their Kconfig, but they have the
>   * same ABI as if they did, implemented by sparc-specific code which fishes
> diff --git a/linux-user/sparc64/syscall.h b/linux-user/sparc64/syscall.h
> index e60bf31..82b1680 100644
> --- a/linux-user/sparc64/syscall.h
> +++ b/linux-user/sparc64/syscall.h
> @@ -8,6 +8,7 @@ struct target_pt_regs {
>  };
>  
>  #define UNAME_MACHINE "sun4u"
> +#define UNAME_MINIMUM_RELEASE "2.6.32"
>  
>  /* SPARC kernels don't define this in their Kconfig, but they have the
>   * same ABI as if they did, implemented by sparc-specific code which fishes
> diff --git a/linux-user/unicore32/syscall.h b/linux-user/unicore32/syscall.h
> index 010cdd8..f7e5525 100644
> --- a/linux-user/unicore32/syscall.h
> +++ b/linux-user/unicore32/syscall.h
> @@ -51,5 +51,6 @@ struct target_pt_regs {
>  #define UC32_SYSCALL_NR_set_tls         (UC32_SYSCALL_ARCH_BASE + 5)
>  
>  #define UNAME_MACHINE "UniCore-II"
> +#define UNAME_MINIMUM_RELEASE "2.6.32"
>  
>  #endif /* __UC32_SYSCALL_H__ */
> diff --git a/linux-user/x86_64/syscall.h b/linux-user/x86_64/syscall.h
> index 81314cf..e03b5a0 100644
> --- a/linux-user/x86_64/syscall.h
> +++ b/linux-user/x86_64/syscall.h
> @@ -91,6 +91,7 @@ struct target_msqid64_ds {
>  };
>  
>  #define UNAME_MACHINE "x86_64"
> +#define UNAME_MINIMUM_RELEASE "2.6.32"
>  
>  #define TARGET_ARCH_SET_GS 0x1001
>  #define TARGET_ARCH_SET_FS 0x1002
Peter Maydell March 4, 2014, 11:41 a.m. UTC | #2
On 4 March 2014 11:32, Alex Bennée <alex.bennee@linaro.org> wrote:
>
> riku.voipio@linaro.org writes:
>
>> From: Riku Voipio <riku.voipio@linaro.org>
>>
>> Popular glibc based distributions[1] require minimum
>> 2.6.32 as kernel version. For some targets 2.6.18
>> would be enough, but dropping so low would mean some
>> suboptimal system calls could get used.
>
> Is the effect of this to report system uname or minimum whichever is higher?

That's what this patch does. The old configure stuff which
this patchset removed made it report "always that version",
IIRC.

>> Set the minimum kernel advertized to 2.6.32 for
>> all architectures but aarch64 to ensure working qemu
>> linux-user in case host kernel is older.
>
> So was skipping setting it for aarch64 deliberate?

Yes, it already sets the minimum higher than this.

>It would be nice to
> have an upstream fix for the hacks the distros are adding.

I think that's what this patchset is supposed to be :-)

> I believe they are patching UNAME to 3.7.0 for aarch64.

Only to the extent that they're still carrying bogus patches
borrowed from the SuSE tree rather than using the better
way of setting per-arch minumum reported uname that we
applied upstream.

thanks
-- PMM
Alex Bennée March 4, 2014, 4:31 p.m. UTC | #3
Peter Maydell <peter.maydell@linaro.org> writes:

> On 4 March 2014 11:32, Alex Bennée <alex.bennee@linaro.org> wrote:
>>
>> riku.voipio@linaro.org writes:
>>
>>> From: Riku Voipio <riku.voipio@linaro.org>
>>>
>>> Popular glibc based distributions[1] require minimum
>>> 2.6.32 as kernel version. For some targets 2.6.18
>>> would be enough, but dropping so low would mean some
>>> suboptimal system calls could get used.
<snip>
>>It would be nice to
>> have an upstream fix for the hacks the distros are adding.
>
> I think that's what this patchset is supposed to be :-)
>
>> I believe they are patching UNAME to 3.7.0 for aarch64.
>
> Only to the extent that they're still carrying bogus patches
> borrowed from the SuSE tree rather than using the better
> way of setting per-arch minumum reported uname that we
> applied upstream.
<snip>

Only I didn't see linux-user/aarch64 in the diffstat, or did I miss
another patch?
Peter Maydell March 4, 2014, 4:41 p.m. UTC | #4
On 4 March 2014 16:31, Alex Bennée <alex.bennee@linaro.org> wrote:
> Only I didn't see linux-user/aarch64 in the diffstat, or did I miss
> another patch?

That's because in master we're already setting the minimum
uname for aarch64...

thanks
-- PMM
Alex Bennée March 4, 2014, 5:38 p.m. UTC | #5
Peter Maydell <peter.maydell@linaro.org> writes:

> On 4 March 2014 16:31, Alex Bennée <alex.bennee@linaro.org> wrote:
>> Only I didn't see linux-user/aarch64 in the diffstat, or did I miss
>> another patch?
>
> That's because in master we're already setting the minimum
> uname for aarch64...

Ahh, sneaked in while I wasn't looking ;-)
Riku Voipio March 7, 2014, 2:19 a.m. UTC | #6
On 4 March 2014 13:41, Peter Maydell <peter.maydell@linaro.org> wrote:
> On 4 March 2014 11:32, Alex Bennée <alex.bennee@linaro.org> wrote:
> > Is the effect of this to report system uname or minimum whichever is
higher?
>
> That's what this patch does. The old configure stuff which
> this patchset removed made it report "always that version",
> IIRC.

Yes, configure indeed has that effect, so with the current ubuntu qemu you
get:

uname -r
3.8.0-35-generic

qemu-arm ./arm/busybox uname -r
2.6.32

With these patches, qemu will report 2.6.32 or newer, if host kernel is
newer.

> >It would be nice to
> > have an upstream fix for the hacks the distros are adding.

> I think that's what this patchset is supposed to be :-)

Yes. The patch 5/5 is  heavy hammer to make distributions start
using the new way. Else I fear they will just continue using the
configure flag and their own hacks.

> Only to the extent that they're still carrying bogus patches
> borrowed from the SuSE tree rather than using the better
> way of setting per-arch minumum reported uname that we
> applied upstream.

So you agree these patches are the way to go? If you believe
these are too close to hard freeze, I can just send this list of patches
for merging:

https://git.linaro.org/people/riku.voipio/qemu.git/shortlog/refs/heads/linux-user-for-upstream

Riku
Peter Maydell March 7, 2014, 8:45 a.m. UTC | #7
On 7 March 2014 02:19, Riku Voipio <riku.voipio@linaro.org> wrote:
> So you agree these patches are the way to go?

I haven't actually reviewed them but I think the idea is right,
yes.

-- PMM
Riku Voipio March 10, 2014, noon UTC | #8
On 7 March 2014 10:45, Peter Maydell <peter.maydell@linaro.org> wrote:
>> On 7 March 2014 02:19, Riku Voipio <riku.voipio@linaro.org> wrote:
> > So you agree these patches are the way to go?

> I haven't actually reviewed them but I think the idea is right,
> yes.

With the hard freeze getting close,  and me being away until wednesday, I
think I'll send a pull req for the reviewed patches now in que + this patch
from
this series. While this patch hasn't any reviews, it is probably less
controversial
than the others, and allows distributions to stop calling the configure
option.

Riku
diff mbox

Patch

diff --git a/linux-user/alpha/syscall.h b/linux-user/alpha/syscall.h
index 15a0100..ed13d9a 100644
--- a/linux-user/alpha/syscall.h
+++ b/linux-user/alpha/syscall.h
@@ -39,6 +39,7 @@  struct target_pt_regs {
 };
 
 #define UNAME_MACHINE "alpha"
+#define UNAME_MINIMUM_RELEASE "2.6.32"
 
 #undef TARGET_EDEADLK
 #define TARGET_EDEADLK		11
diff --git a/linux-user/arm/syscall.h b/linux-user/arm/syscall.h
index 73f2931..ce2c2a8 100644
--- a/linux-user/arm/syscall.h
+++ b/linux-user/arm/syscall.h
@@ -40,5 +40,6 @@  struct target_pt_regs {
 #else
 #define UNAME_MACHINE "armv5tel"
 #endif
+#define UNAME_MINIMUM_RELEASE "2.6.32"
 
 #define TARGET_CLONE_BACKWARDS
diff --git a/linux-user/cris/syscall.h b/linux-user/cris/syscall.h
index 832ee64..f5783c0 100644
--- a/linux-user/cris/syscall.h
+++ b/linux-user/cris/syscall.h
@@ -1,8 +1,8 @@ 
 #ifndef CRIS_SYSCALL_H
 #define CRIS_SYSCALL_H 1
 
-
 #define UNAME_MACHINE "cris"
+#define UNAME_MINIMUM_RELEASE "2.6.32"
 
 /* pt_regs not only specifices the format in the user-struct during
  * ptrace but is also the frame format used in the kernel prologue/epilogues
diff --git a/linux-user/i386/syscall.h b/linux-user/i386/syscall.h
index 12b8c3b..9bfc1ad 100644
--- a/linux-user/i386/syscall.h
+++ b/linux-user/i386/syscall.h
@@ -144,5 +144,6 @@  struct target_vm86plus_struct {
 };
 
 #define UNAME_MACHINE "i686"
+#define UNAME_MINIMUM_RELEASE "2.6.32"
 
 #define TARGET_CLONE_BACKWARDS
diff --git a/linux-user/m68k/syscall.h b/linux-user/m68k/syscall.h
index 2618793..889eaf7 100644
--- a/linux-user/m68k/syscall.h
+++ b/linux-user/m68k/syscall.h
@@ -15,7 +15,7 @@  struct target_pt_regs {
     uint16_t __fill;
 };
 
-
 #define UNAME_MACHINE "m68k"
+#define UNAME_MINIMUM_RELEASE "2.6.32"
 
 void do_m68k_simcall(CPUM68KState *, int);
diff --git a/linux-user/microblaze/syscall.h b/linux-user/microblaze/syscall.h
index d550989..5b5f6b4 100644
--- a/linux-user/microblaze/syscall.h
+++ b/linux-user/microblaze/syscall.h
@@ -1,8 +1,8 @@ 
 #ifndef MICROBLAZE_SYSCALLS_H
 #define MICROBLAZE_SYSCALLS_H 1
 
-
 #define UNAME_MACHINE "microblaze"
+#define UNAME_MINIMUM_RELEASE "2.6.32"
 
 /* We use microblaze_reg_t to keep things similar to the kernel sources.  */
 typedef uint32_t microblaze_reg_t;
diff --git a/linux-user/mips/syscall.h b/linux-user/mips/syscall.h
index 9d437d9..5bc5696 100644
--- a/linux-user/mips/syscall.h
+++ b/linux-user/mips/syscall.h
@@ -225,5 +225,6 @@  struct target_pt_regs {
 #define TARGET_QEMU_ESIGRETURN 255
 
 #define UNAME_MACHINE "mips"
+#define UNAME_MINIMUM_RELEASE "2.6.32"
 
 #define TARGET_CLONE_BACKWARDS
diff --git a/linux-user/mips64/syscall.h b/linux-user/mips64/syscall.h
index 1710f76..a7f5a58 100644
--- a/linux-user/mips64/syscall.h
+++ b/linux-user/mips64/syscall.h
@@ -222,5 +222,6 @@  struct target_pt_regs {
 #define TARGET_QEMU_ESIGRETURN 255
 
 #define UNAME_MACHINE "mips64"
+#define UNAME_MINIMUM_RELEASE "2.6.32"
 
 #define TARGET_CLONE_BACKWARDS
diff --git a/linux-user/openrisc/syscall.h b/linux-user/openrisc/syscall.h
index bdbb577..c3b36da 100644
--- a/linux-user/openrisc/syscall.h
+++ b/linux-user/openrisc/syscall.h
@@ -22,3 +22,4 @@  struct target_pt_regs {
 };
 
 #define UNAME_MACHINE "openrisc"
+#define UNAME_MINIMUM_RELEASE "2.6.32"
diff --git a/linux-user/ppc/syscall.h b/linux-user/ppc/syscall.h
index ba36acb..6514c63 100644
--- a/linux-user/ppc/syscall.h
+++ b/linux-user/ppc/syscall.h
@@ -62,5 +62,6 @@  struct target_revectored_struct {
 #else
 #define UNAME_MACHINE "ppc"
 #endif
+#define UNAME_MINIMUM_RELEASE "2.6.32"
 
 #define TARGET_CLONE_BACKWARDS
diff --git a/linux-user/s390x/syscall.h b/linux-user/s390x/syscall.h
index e5ce30b..aaad512 100644
--- a/linux-user/s390x/syscall.h
+++ b/linux-user/s390x/syscall.h
@@ -21,5 +21,6 @@  struct target_pt_regs {
 };
 
 #define UNAME_MACHINE "s390x"
+#define UNAME_MINIMUM_RELEASE "2.6.32"
 
 #define TARGET_CLONE_BACKWARDS2
diff --git a/linux-user/sh4/syscall.h b/linux-user/sh4/syscall.h
index 014bf58..ccd2216 100644
--- a/linux-user/sh4/syscall.h
+++ b/linux-user/sh4/syscall.h
@@ -10,3 +10,4 @@  struct target_pt_regs {
 };
 
 #define UNAME_MACHINE "sh4"
+#define UNAME_MINIMUM_RELEASE "2.6.32"
diff --git a/linux-user/sparc/syscall.h b/linux-user/sparc/syscall.h
index 4cd64bf..9549ea0 100644
--- a/linux-user/sparc/syscall.h
+++ b/linux-user/sparc/syscall.h
@@ -7,6 +7,7 @@  struct target_pt_regs {
 };
 
 #define UNAME_MACHINE "sun4"
+#define UNAME_MINIMUM_RELEASE "2.6.32"
 
 /* SPARC kernels don't define this in their Kconfig, but they have the
  * same ABI as if they did, implemented by sparc-specific code which fishes
diff --git a/linux-user/sparc64/syscall.h b/linux-user/sparc64/syscall.h
index e60bf31..82b1680 100644
--- a/linux-user/sparc64/syscall.h
+++ b/linux-user/sparc64/syscall.h
@@ -8,6 +8,7 @@  struct target_pt_regs {
 };
 
 #define UNAME_MACHINE "sun4u"
+#define UNAME_MINIMUM_RELEASE "2.6.32"
 
 /* SPARC kernels don't define this in their Kconfig, but they have the
  * same ABI as if they did, implemented by sparc-specific code which fishes
diff --git a/linux-user/unicore32/syscall.h b/linux-user/unicore32/syscall.h
index 010cdd8..f7e5525 100644
--- a/linux-user/unicore32/syscall.h
+++ b/linux-user/unicore32/syscall.h
@@ -51,5 +51,6 @@  struct target_pt_regs {
 #define UC32_SYSCALL_NR_set_tls         (UC32_SYSCALL_ARCH_BASE + 5)
 
 #define UNAME_MACHINE "UniCore-II"
+#define UNAME_MINIMUM_RELEASE "2.6.32"
 
 #endif /* __UC32_SYSCALL_H__ */
diff --git a/linux-user/x86_64/syscall.h b/linux-user/x86_64/syscall.h
index 81314cf..e03b5a0 100644
--- a/linux-user/x86_64/syscall.h
+++ b/linux-user/x86_64/syscall.h
@@ -91,6 +91,7 @@  struct target_msqid64_ds {
 };
 
 #define UNAME_MACHINE "x86_64"
+#define UNAME_MINIMUM_RELEASE "2.6.32"
 
 #define TARGET_ARCH_SET_GS 0x1001
 #define TARGET_ARCH_SET_FS 0x1002