From: John Williams <jwilliams-rVRm/Wmeqae7NGdpmJTKYQ@public.gmane.org>
To: Arnd Bergmann <arnd-r2nGTMty4D4@public.gmane.org>
Cc: monstr-9Vj9tDbzfuSlVyrhU4qvOw@public.gmane.org,
microblaze-uclinux-rVRm/Wmeqae7NGdpmJTKYQ@public.gmane.org,
Matthew Wilcox <matthew-Ztpu424NOJ8@public.gmane.org>,
Will Newton <will.newton-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
Linux Kernel list
<linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
linux-arch-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
git-gjFFaj9aHVfQT0dZR+AlfA@public.gmane.org,
John Williams
<john.williams-g5w7nrANp4BDPfheJLI6IQ@public.gmane.org>,
Stephen Neuendorffer
<stephen.neuendorffer-gjFFaj9aHVfQT0dZR+AlfA@public.gmane.org>,
John Linn <John.Linn-gjFFaj9aHVfQT0dZR+AlfA@public.gmane.org>
Subject: Re: microblaze syscall list
Date: Mon, 28 Apr 2008 10:15:34 +1000 [thread overview]
Message-ID: <48151726.9000204@itee.uq.edu.au> (raw)
In-Reply-To: <200804272215.32862.arnd-r2nGTMty4D4@public.gmane.org>
Arnd Bergmann wrote:
> On Sunday 27 April 2008, Michal Simek wrote:
>> I thing you understand that we can't change all application per night. This is
>> not possible. But we have to start with change this.
>
> Note that the only thing you should need to change is the libc implementation
> (any version of it: glibc, uclibc, klibc, ...), but not any application source
> code, as the applications just call the functions that are defined in the libc.
> If you have binaries that are statically linked with their libc, you'd have
> to recompile or at least relink them. If you redefine data structures or
> types that are used in application code, like struct stat or off_t, you
> also need to recompile all user code.
Until very recently with the MMU support added to the CPU (and upcoming
MMU support patches for MicroBlaze), all apps were statically linked
anyway. So, this is not too much of an issue I don't think.
Because the CPU is so configurable re: instruction set and features, it
is common to rebuild your entire userland and libs + kernel in one go.
If you add support for HW integer mul or div, barrel shift etc, you need
to rebuild not just the kernel but apps and libs as well. Or rather,
rebuild apps, and relink against a different multilib'd libc.
So, the issue seems not so much that there's a bunch of legacy binaries
out there that will break, but rather that there will be a dead-zone
period in which the kernel is exporting an ABI that is simply not
available in the C libs and existing toolchains. We should be doing all
we can to encourage individual developers and distro maintainers (like
PetaLogix) to base from the kernel.org tree.
> I think you have three options here:
>
> 1. Keep the old syscall interface and just add new syscalls for the stuff
> that you are currently missing. Don't change userspace at all, but live
> with somewhat bloated kernels and libc forever and maintain a larger
> code base in the kernel.
>
> 2. Change the syscall interface in the kernel in the way we have discussed,
> and adapt the libc code along with it. Break all backwards compatibility
> and start out with a new leaner ABI. Old applications can still use
> your old out-of-tree kernels, or forks of that.
>
> 3. Merge only the ABI as in 2. into the mainline kernel, but use new
> syscall numbers for that. Maintain an out-of-tree patch that adds the
> old ABI for backwards compatibility so you can run old and new code
> on one kernel if you build with that patch, but eventually phase
> out the old ABI.
Maybe I misunderstand, but is there an option 1(a) where we keep the
old, add the new, and suffer the bloat for a short period until the
toolchains and C libs catch up and we remove out the old interfaces?
Are the old and new syscalls necessarily overloaded onto the same
numbers? We'd obviously like to be as "standard" as reasonably possible
regarding syscall numbers
> I won't try to force you to go either route, it's your own decision,
> but you should understand the tradeoffs. I don't think there is any
> value in trying to deprecate just part of the ABI and break some
> binaries but not others, this will only cause hard to find bugs. Make
> sure that if you decide to break backwards compatibility, you break it
> in an obvious way and get the most benefit out of it.
No argument there.
John
WARNING: multiple messages have this Message-ID (diff)
From: John Williams <jwilliams@itee.uq.edu.au>
To: Arnd Bergmann <arnd@arndb.de>
Cc: monstr@seznam.cz, microblaze-uclinux@itee.uq.edu.au,
Matthew Wilcox <matthew@wil.cx>,
Will Newton <will.newton@gmail.com>,
Linux Kernel list <linux-kernel@vger.kernel.org>,
linux-arch@vger.kernel.org, git@xilinx.com,
John Williams <john.williams@petalogix.com>,
Stephen Neuendorffer <stephen.neuendorffer@xilinx.com>,
John Linn <John.Linn@xilinx.com>
Subject: Re: microblaze syscall list
Date: Mon, 28 Apr 2008 10:15:34 +1000 [thread overview]
Message-ID: <48151726.9000204@itee.uq.edu.au> (raw)
Message-ID: <20080428001534.lM7m064VUVZoyhnt7ewzvqa4SHEaVRChVkDE8aPidko@z> (raw)
In-Reply-To: <200804272215.32862.arnd@arndb.de>
Arnd Bergmann wrote:
> On Sunday 27 April 2008, Michal Simek wrote:
>> I thing you understand that we can't change all application per night. This is
>> not possible. But we have to start with change this.
>
> Note that the only thing you should need to change is the libc implementation
> (any version of it: glibc, uclibc, klibc, ...), but not any application source
> code, as the applications just call the functions that are defined in the libc.
> If you have binaries that are statically linked with their libc, you'd have
> to recompile or at least relink them. If you redefine data structures or
> types that are used in application code, like struct stat or off_t, you
> also need to recompile all user code.
Until very recently with the MMU support added to the CPU (and upcoming
MMU support patches for MicroBlaze), all apps were statically linked
anyway. So, this is not too much of an issue I don't think.
Because the CPU is so configurable re: instruction set and features, it
is common to rebuild your entire userland and libs + kernel in one go.
If you add support for HW integer mul or div, barrel shift etc, you need
to rebuild not just the kernel but apps and libs as well. Or rather,
rebuild apps, and relink against a different multilib'd libc.
So, the issue seems not so much that there's a bunch of legacy binaries
out there that will break, but rather that there will be a dead-zone
period in which the kernel is exporting an ABI that is simply not
available in the C libs and existing toolchains. We should be doing all
we can to encourage individual developers and distro maintainers (like
PetaLogix) to base from the kernel.org tree.
> I think you have three options here:
>
> 1. Keep the old syscall interface and just add new syscalls for the stuff
> that you are currently missing. Don't change userspace at all, but live
> with somewhat bloated kernels and libc forever and maintain a larger
> code base in the kernel.
>
> 2. Change the syscall interface in the kernel in the way we have discussed,
> and adapt the libc code along with it. Break all backwards compatibility
> and start out with a new leaner ABI. Old applications can still use
> your old out-of-tree kernels, or forks of that.
>
> 3. Merge only the ABI as in 2. into the mainline kernel, but use new
> syscall numbers for that. Maintain an out-of-tree patch that adds the
> old ABI for backwards compatibility so you can run old and new code
> on one kernel if you build with that patch, but eventually phase
> out the old ABI.
Maybe I misunderstand, but is there an option 1(a) where we keep the
old, add the new, and suffer the bloat for a short period until the
toolchains and C libs catch up and we remove out the old interfaces?
Are the old and new syscalls necessarily overloaded onto the same
numbers? We'd obviously like to be as "standard" as reasonably possible
regarding syscall numbers
> I won't try to force you to go either route, it's your own decision,
> but you should understand the tradeoffs. I don't think there is any
> value in trying to deprecate just part of the ABI and break some
> binaries but not others, this will only cause hard to find bugs. Make
> sure that if you decide to break backwards compatibility, you break it
> in an obvious way and get the most benefit out of it.
No argument there.
John
next prev parent reply other threads:[~2008-04-28 0:15 UTC|newest]
Thread overview: 91+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-04-22 12:13 [RFC] Introduce __ARCH_WANT_SYS_SYSFS Will Newton
2008-04-22 12:13 ` Will Newton
2008-04-22 13:15 ` Arnd Bergmann
2008-04-22 13:15 ` Arnd Bergmann
[not found] ` <200804221515.28075.arnd-r2nGTMty4D4@public.gmane.org>
2008-04-23 21:16 ` Michal Simek
2008-04-23 21:16 ` Michal Simek
[not found] ` <480FA729.3000406-9Vj9tDbzfuSlVyrhU4qvOw@public.gmane.org>
2008-04-23 21:38 ` Mike Frysinger
2008-04-23 21:38 ` Mike Frysinger
2008-04-24 11:11 ` microblaze syscall list Arnd Bergmann
2008-04-24 11:11 ` Arnd Bergmann
2008-04-24 18:42 ` Michal Simek
2008-04-24 18:42 ` Michal Simek
[not found] ` <4810D4A4.7050900-9Vj9tDbzfuSlVyrhU4qvOw@public.gmane.org>
2008-04-24 21:21 ` Arnd Bergmann
2008-04-24 21:21 ` Arnd Bergmann
2008-04-25 9:36 ` [microblaze-uclinux] " John Williams
2008-04-25 9:36 ` John Williams
[not found] ` <4811A623.80104-rVRm/Wmeqae7NGdpmJTKYQ@public.gmane.org>
2008-04-25 10:06 ` Matthew Wilcox
2008-04-25 10:06 ` Matthew Wilcox
[not found] ` <20080425100614.GB14990-6jwH94ZQLHl74goWV3ctuw@public.gmane.org>
2008-04-25 11:32 ` Geert Uytterhoeven
2008-04-25 11:32 ` Geert Uytterhoeven
2008-04-27 2:04 ` John Williams
2008-04-27 2:04 ` John Williams
[not found] ` <4813DF3E.6080800-rVRm/Wmeqae7NGdpmJTKYQ@public.gmane.org>
2008-04-27 15:52 ` Michal Simek
2008-04-27 15:52 ` Michal Simek
[not found] ` <4814A153.3040600-9Vj9tDbzfuSlVyrhU4qvOw@public.gmane.org>
2008-04-27 16:50 ` Alan Cox
2008-04-27 16:50 ` Alan Cox
2008-04-27 20:15 ` Arnd Bergmann
2008-04-27 20:15 ` Arnd Bergmann
[not found] ` <200804272215.32862.arnd-r2nGTMty4D4@public.gmane.org>
2008-04-28 0:15 ` John Williams [this message]
2008-04-28 0:15 ` John Williams
2008-04-28 12:31 ` Arnd Bergmann
2008-04-28 12:31 ` Arnd Bergmann
2008-05-01 19:17 ` Arnd Bergmann
2008-05-02 5:38 ` John Williams
2008-05-02 8:18 ` Michal Simek
2008-05-02 8:18 ` Michal Simek
2008-05-03 3:49 ` John Williams
2008-05-03 3:49 ` John Williams
2008-05-03 9:16 ` Arnd Bergmann
2008-05-03 15:56 ` Ulrich Drepper
2008-05-03 21:14 ` Arnd Bergmann
2008-05-05 1:09 ` John Williams
2008-05-05 14:08 ` Arnd Bergmann
2008-05-03 21:57 ` Arnd Bergmann
2008-05-04 9:12 ` Michal Simek
2008-05-04 19:37 ` Arnd Bergmann
2008-05-05 6:18 ` Michal Simek
2008-05-04 22:09 ` H. Peter Anvin
2008-05-04 22:54 ` Arnd Bergmann
2008-05-04 22:53 ` H. Peter Anvin
2008-05-04 22:53 ` H. Peter Anvin
2008-05-06 8:33 ` Michal Simek
2008-04-28 3:58 ` Stephen Neuendorffer
[not found] ` <200804241311.09881.arnd-r2nGTMty4D4@public.gmane.org>
2008-04-24 20:51 ` Michal Simek
2008-04-24 20:51 ` Michal Simek
[not found] ` <4988.7968-24314-1195487808-1209070282-9Vj9tDbzfuSlVyrhU4qvOw@public.gmane.org>
2008-04-24 21:37 ` Arnd Bergmann
2008-04-24 21:37 ` Arnd Bergmann
[not found] ` <87a5b0800804220513t75690ceao938a288596b5ad0c-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2008-04-22 15:12 ` [RFC] Introduce __ARCH_WANT_SYS_SYSFS Randy Dunlap
2008-04-22 15:12 ` Randy Dunlap
[not found] ` <20080422081211.e85989ec.randy.dunlap-QHcLZuEGTsvQT0dZR+AlfA@public.gmane.org>
2008-04-22 15:16 ` Will Newton
2008-04-22 15:16 ` Will Newton
[not found] ` <87a5b0800804220816y72a7f4f9gec2111df08a1a57f-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2008-04-22 15:24 ` Kyle McMartin
2008-04-22 15:24 ` Kyle McMartin
[not found] ` <20080422152426.GG19802-EK4dZfYtfFRW/gs8oUvUg/d9D2ou9A/h@public.gmane.org>
2008-04-22 15:34 ` Will Newton
2008-04-22 15:34 ` Will Newton
[not found] ` <87a5b0800804220834q4d6daec1x4146d211115ab5c-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2008-04-22 15:38 ` Kyle McMartin
2008-04-22 15:38 ` Kyle McMartin
[not found] ` <20080422153849.GH19802-EK4dZfYtfFRW/gs8oUvUg/d9D2ou9A/h@public.gmane.org>
2008-04-23 14:36 ` Will Newton
2008-04-23 14:36 ` Will Newton
[not found] ` <87a5b0800804230736k340e7fe9mffbd72b5b8164015-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2008-04-23 14:59 ` Arnd Bergmann
2008-04-23 14:59 ` Arnd Bergmann
2008-04-23 15:40 ` Kyle McMartin
2008-04-23 15:40 ` Kyle McMartin
[not found] ` <20080423154038.GL19802-EK4dZfYtfFRW/gs8oUvUg/d9D2ou9A/h@public.gmane.org>
2008-04-23 15:50 ` Will Newton
2008-04-23 15:50 ` Will Newton
2008-04-23 16:05 ` Mike Frysinger
2008-04-23 16:05 ` Mike Frysinger
[not found] ` <8bd0f97a0804230905x19fd96aevc8f225d241e59369-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2008-04-23 17:59 ` Mike Frysinger
2008-04-23 17:59 ` Mike Frysinger
[not found] ` <8bd0f97a0804231059w76592878s3f6bf4a488b3ddea-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2008-04-24 9:18 ` Will Newton
2008-04-24 9:18 ` Will Newton
2008-04-23 18:44 ` Sam Ravnborg
2008-04-23 18:44 ` Sam Ravnborg
2008-04-24 14:51 ` Adrian Bunk
2008-04-24 14:51 ` Adrian Bunk
2008-04-22 15:21 ` Kyle McMartin
2008-04-22 15:21 ` Kyle McMartin
[not found] ` <20080422152122.GF19802-EK4dZfYtfFRW/gs8oUvUg/d9D2ou9A/h@public.gmane.org>
2008-04-22 15:38 ` Arnd Bergmann
2008-04-22 15:38 ` Arnd Bergmann
2008-04-22 15:42 ` Kyle McMartin
2008-04-22 15:42 ` Kyle McMartin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=48151726.9000204@itee.uq.edu.au \
--to=jwilliams-rvrm/wmeqae7ngdpmjtkyq@public.gmane.org \
--cc=John.Linn-gjFFaj9aHVfQT0dZR+AlfA@public.gmane.org \
--cc=arnd-r2nGTMty4D4@public.gmane.org \
--cc=git-gjFFaj9aHVfQT0dZR+AlfA@public.gmane.org \
--cc=john.williams-g5w7nrANp4BDPfheJLI6IQ@public.gmane.org \
--cc=linux-arch-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=matthew-Ztpu424NOJ8@public.gmane.org \
--cc=microblaze-uclinux-rVRm/Wmeqae7NGdpmJTKYQ@public.gmane.org \
--cc=monstr-9Vj9tDbzfuSlVyrhU4qvOw@public.gmane.org \
--cc=stephen.neuendorffer-gjFFaj9aHVfQT0dZR+AlfA@public.gmane.org \
--cc=will.newton-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).