public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Arnd Bergmann <arnd@arndb.de>
To: John Williams <jwilliams@itee.uq.edu.au>
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 14:31:25 +0200	[thread overview]
Message-ID: <200804281431.26570.arnd@arndb.de> (raw)
In-Reply-To: <48151726.9000204@itee.uq.edu.au>

On Monday 28 April 2008, John Williams wrote:
> 
> 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.

If this is the common case, that is a good argument for breaking the ABI
completely now. You will just require a new libc build with a new kernel.

> 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.

As far as I can tell, these distrbutions typically come with both
kernel and libc source code together. It would be logical to just
require updating both here as well.

> 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

It's more than just the syscall numbers that should ideally change.
The other changes I would recommend include moving to large file
types (64 bit off_t), 32 bit UIDs, cleaned up sysV-IPC types, and a
few others. All these break the user code in the same way that changing
the instruction set does, which is the reason that we can't change
any of the existing architectures that started out in the old days.

The syscall numbers are entirely arbitrary, that's why I suggested
in my approach 3. that you introduce a new set of syscall numbers for
the new ABI, and keep compatibility with the old calls in their existing
numbers as an out-of-tree patch.

If you assume that the user recompiles the libc and the kernel together,
you can obviously change syscall numbers and data types in any way you
please, but still I'd suggest you don't change them after the kernel
gets merged upstream.

How about this strategy then:
* Change all the data types and syscall numbers in the -for-2.6.27
branch to only include the minimal set, and a modern ABI
* Add the old interfaces as an out-of-tree patch that adds source
level compatibility with the old libc, but does not modify any
of the new interfaces, so that a patched kernel can run all binaries
built for the upstream version.
* phase out the old source interface gradually, as all users update
their libc source code.

This way, early adopters suffer the pain of incompatibility twice, but
get the clean kernel port quickly.

	Arnd <><

  reply	other threads:[~2008-04-28 12:31 UTC|newest]

Thread overview: 52+ 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 13:15 ` Arnd Bergmann
2008-04-23 21:16   ` Michal Simek
2008-04-23 21:38     ` Mike Frysinger
2008-04-24 11:11     ` microblaze syscall list Arnd Bergmann
2008-04-24 18:42       ` Michal Simek
2008-04-24 21:21         ` Arnd Bergmann
2008-04-25  9:36         ` [microblaze-uclinux] " John Williams
2008-04-25 10:06           ` Matthew Wilcox
2008-04-25 11:32             ` Geert Uytterhoeven
2008-04-27  2:04             ` John Williams
2008-04-27 15:52               ` Michal Simek
2008-04-27 16:50                 ` Alan Cox
2008-04-27 20:15                 ` Arnd Bergmann
2008-04-28  0:15                   ` John Williams
2008-04-28 12:31                     ` Arnd Bergmann [this message]
2008-05-01 19:17                       ` Arnd Bergmann
2008-05-02  5:38                         ` John Williams
2008-05-02  8:18                           ` Michal Simek
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-06  8:33                       ` Michal Simek
2008-04-24 20:51       ` Michal Simek
2008-04-24 21:37         ` Arnd Bergmann
2008-04-22 15:12 ` [RFC] Introduce __ARCH_WANT_SYS_SYSFS Randy Dunlap
2008-04-22 15:16   ` Will Newton
2008-04-22 15:24     ` Kyle McMartin
2008-04-22 15:34       ` Will Newton
2008-04-22 15:38         ` Kyle McMartin
2008-04-23 14:36           ` Will Newton
2008-04-23 14:59             ` Arnd Bergmann
2008-04-23 15:40             ` Kyle McMartin
2008-04-23 15:50               ` Will Newton
2008-04-23 16:05                 ` Mike Frysinger
2008-04-23 17:59                   ` Mike Frysinger
2008-04-24  9:18                     ` Will Newton
2008-04-23 18:44             ` Sam Ravnborg
2008-04-24 14:51   ` Adrian Bunk
2008-04-22 15:21 ` Kyle McMartin
2008-04-22 15:38   ` Arnd Bergmann
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=200804281431.26570.arnd@arndb.de \
    --to=arnd@arndb.de \
    --cc=John.Linn@xilinx.com \
    --cc=git@xilinx.com \
    --cc=john.williams@petalogix.com \
    --cc=jwilliams@itee.uq.edu.au \
    --cc=linux-arch@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=matthew@wil.cx \
    --cc=microblaze-uclinux@itee.uq.edu.au \
    --cc=monstr@seznam.cz \
    --cc=stephen.neuendorffer@xilinx.com \
    --cc=will.newton@gmail.com \
    /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