commit-hurd
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[hurd] 01/04: Revert "hurd.hurd-console.init: Actually make ENABLE=false


From: Samuel Thibault
Subject: [hurd] 01/04: Revert "hurd.hurd-console.init: Actually make ENABLE=false in default work."
Date: Mon, 03 Feb 2014 22:36:46 +0000

This is an automated email from the git hooks/post-receive script.

sthibault pushed a commit to branch master
in repository hurd.

commit 54da971025faf7737986b7d775037628a4de3187
Author: Samuel Thibault <address@hidden>
Date:   Mon Feb 3 22:35:06 2014 +0000

    Revert "hurd.hurd-console.init: Actually make ENABLE=false in default work."
    
    This reverts commit 94f3c71706e2e5e864ed0a91c54d9ac14ccc22b7.
---
 Makeconf                                           |   2 +-
 Makefile                                           |   5 +-
 TODO                                               |   2 +-
 config.guess                                       | 140 +++-----
 config.sub                                         |  17 +-
 config/ttys                                        |  16 +-
 configure.ac                                       |  10 +-
 console-client/bdf.c                               |   2 -
 console-client/xkb/xkb-data/keymap/hurd            | 182 +++++-----
 daemons/rc.sh                                      |  63 +---
 daemons/runsystem.sh                               |   6 +-
 debian/changelog                                   |   6 -
 debian/hurd.hurd-console.init                      |   2 -
 doc/hurd.texi                                      |  24 +-
 exec/Makefile                                      |   3 +-
 exec/exec.c                                        |  48 +--
 exec/hashexec.c                                    | 130 +++----
 exec/main.c                                        |   2 -
 exec/priv.h                                        |   5 +-
 hurd/exec.defs                                     |   4 +-
 hurd/fs.defs                                       |  10 +-
 hurd/hurd_types.h                                  |   9 +-
 hurd/process.defs                                  |   6 +-
 hurd/process_request.defs                          |   5 +-
 include/pids.h                                     |   7 +-
 init/Makefile                                      |   2 +-
 init/init.c                                        | 103 ++----
 libdde-linux26/contrib/include/linux/etherdevice.h |  27 --
 libdde-linux26/contrib/include/linux/ethtool.h     |  36 +-
 libdde-linux26/contrib/include/linux/kernel.h      |   2 -
 libdde-linux26/contrib/include/linux/netdevice.h   |  90 +----
 libdde-linux26/contrib/include/linux/pci.h         |   1 -
 libdde-linux26/contrib/include/linux/pci_ids.h     | 177 +++-------
 libdde-linux26/contrib/include/linux/phy.h         |  19 +-
 libdde-linux26/contrib/include/linux/skbuff.h      |  20 +-
 libdde-linux26/contrib/include/linux/workqueue.h   |  23 +-
 libdde-linux26/contrib/kernel/rcupdate.c           |   1 -
 libdde-linux26/contrib/net/core/skb_dma_map.c      |  12 +-
 libdde-linux26/include/linux/kernel.h              |   2 -
 libdde-linux26/lib/src/Makefile                    |   3 -
 libdde-linux26/lib/src/net/core/dev.c              | 389 ++-------------------
 libdde-linux26/lib/src/net/sched/sch_generic.c     |  40 +--
 libdiskfs/Makefile                                 |   3 +-
 libdiskfs/boot-start.c                             |  26 +-
 libdiskfs/demuxer.c                                |   2 -
 libdiskfs/file-exec.c                              |  81 +----
 libdiskfs/file-utimes.c                            |   4 +-
 libdiskfs/init-init.c                              |   3 -
 libdiskfs/node-times.c                             |   6 +-
 libdiskfs/opts-common.c                            |   2 +-
 libfshelp/start-translator-long.c                  |  26 +-
 libmachdev/ds_routines.c                           |   2 +-
 libmachdev/net.c                                   |   4 +-
 libnetfs/Makefile                                  |   3 +-
 libnetfs/demuxer.c                                 |   2 -
 libnetfs/file-exec.c                               |  73 +---
 libports/manage-multithread.c                      |   7 -
 libtrivfs/Makefile                                 |   4 +-
 libtrivfs/demuxer.c                                |   2 -
 libtrivfs/file-exec.c                              |  27 +-
 libtrivfs/trivfs.h                                 |   1 -
 pfinet/linux-src/net/ipv4/devinet.c                |   2 -
 pfinet/options.c                                   | 381 ++++++--------------
 proc/Makefile                                      |   2 +-
 proc/main.c                                        |   9 +-
 proc/mgt.c                                         |  76 ++--
 proc/pgrp.c                                        |   4 +-
 proc/proc.h                                        |  10 +-
 proc/stubs.c                                       |   3 +-
 proc/wait.c                                        |   4 +-
 procfs/Makefile                                    |  47 ++-
 procfs/main.c                                      |   4 +-
 random/random.c                                    |   2 +-
 sutils/MAKEDEV.sh                                  |   2 +-
 trans/Makefile                                     |   7 +-
 trans/fakeroot.c                                   |  64 +---
 trans/proxy-defpager.c                             |   5 +-
 utils/fakeauth.c                                   |   9 +-
 utils/login.c                                      |  28 +-
 utils/mount.c                                      |   3 +-
 utils/rpctrace.c                                   |   4 -
 utils/shd.c                                        |   9 +-
 utils/uptime.sh                                    |   2 +-
 83 files changed, 638 insertions(+), 1970 deletions(-)

diff --git a/Makeconf b/Makeconf
index b8d7a29..5cf995d 100644
--- a/Makeconf
+++ b/Makeconf
@@ -575,7 +575,7 @@ vpath %.defs $(top_srcdir)/hurd
 # These we want to find in the libc include directory...
 mach_defs_names = bootstrap exc mach mach4 \
        mach_host mach_port mach_timer_reply memory_object \
-       memory_object_default notify experimental
+       memory_object_default notify
 device_defs_names = dev_forward device device_reply device_request
 
 mach_defs = $(addsuffix .defs,$(mach_defs_names))
diff --git a/Makefile b/Makefile
index 8adbf91..106f2f6 100644
--- a/Makefile
+++ b/Makefile
@@ -28,8 +28,7 @@ include ./Makeconf
 # Hurd libraries
 lib-subdirs = libshouldbeinlibc libihash libiohelp libports libthreads \
              libpager libfshelp libdiskfs libtrivfs libps \
-             libnetfs libpipe libstore libhurdbugaddr libftpconn libcons \
-             libmachdev libbpf libddekit libhurd-slab eth-filter 
eth-multiplexer
+             libnetfs libpipe libstore libhurdbugaddr libftpconn libcons
 
 # Hurd programs
 prog-subdirs = auth proc exec init term \
@@ -38,7 +37,7 @@ prog-subdirs = auth proc exec init term \
               login daemons boot console \
               hostmux usermux ftpfs trans \
               console-client utils sutils \
-              benchmarks fstests procfs random devnode
+              benchmarks fstests
 
 ifeq ($(HAVE_SUN_RPC),yes)
 prog-subdirs += nfs nfsd
diff --git a/TODO b/TODO
index 297ac98..d2500dc 100644
--- a/TODO
+++ b/TODO
@@ -135,7 +135,7 @@ See `tasks', the exported task list.
 
 ** libtrivfs
 *** Allow for read/write/exec to be passed down.
-*** Implement file_exec_file_name when appropriate. !!
+*** Implement file_exec when appropriate. !!
 *** Provide for the visible owner, etc., to be held in command-line args
     instead of the underlying node, when it's important. !!
 
diff --git a/config.guess b/config.guess
index b79252d..f475ceb 100755
--- a/config.guess
+++ b/config.guess
@@ -2,7 +2,7 @@
 # Attempt to guess a canonical system name.
 #   Copyright 1992-2013 Free Software Foundation, Inc.
 
-timestamp='2013-06-10'
+timestamp='2013-02-12'
 
 # This file is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License as published by
@@ -132,27 +132,6 @@ UNAME_RELEASE=`(uname -r) 2>/dev/null` || 
UNAME_RELEASE=unknown
 UNAME_SYSTEM=`(uname -s) 2>/dev/null`  || UNAME_SYSTEM=unknown
 UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
 
-case "${UNAME_SYSTEM}" in
-Linux|GNU|GNU/*)
-       # If the system lacks a compiler, then just pick glibc.
-       # We could probably try harder.
-       LIBC=gnu
-
-       eval $set_cc_for_build
-       cat <<-EOF > $dummy.c
-       #include <features.h>
-       #if defined(__UCLIBC__)
-       LIBC=uclibc
-       #elif defined(__dietlibc__)
-       LIBC=dietlibc
-       #else
-       LIBC=gnu
-       #endif
-       EOF
-       eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'`
-       ;;
-esac
-
 # Note: order is significant - the case branches are not exclusive.
 
 case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
@@ -874,21 +853,21 @@ EOF
        exit ;;
     *:GNU:*:*)
        # the GNU system
-       echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo 
${UNAME_RELEASE}|sed -e 's,/.*$,,'`
+       echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo 
${UNAME_RELEASE}|sed -e 's,/.*$,,'`
        exit ;;
     *:GNU/*:*:*)
        # other systems with GNU libc and userland
-       echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' 
| tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC}
+       echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' 
| tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu
        exit ;;
     i*86:Minix:*:*)
        echo ${UNAME_MACHINE}-pc-minix
        exit ;;
     aarch64:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
        exit ;;
     aarch64_be:Linux:*:*)
        UNAME_MACHINE=aarch64_be
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
        exit ;;
     alpha:Linux:*:*)
        case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
@@ -901,54 +880,59 @@ EOF
          EV68*) UNAME_MACHINE=alphaev68 ;;
        esac
        objdump --private-headers /bin/sh | grep -q ld.so.1
-       if test "$?" = 0 ; then LIBC="gnulibc1" ; fi
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-       exit ;;
-    arc:Linux:*:* | arceb:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+       if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
+       echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
        exit ;;
     arm*:Linux:*:*)
        eval $set_cc_for_build
        if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
            | grep -q __ARM_EABI__
        then
-           echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+           echo ${UNAME_MACHINE}-unknown-linux-gnu
        else
            if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
                | grep -q __ARM_PCS_VFP
            then
-               echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi
+               echo ${UNAME_MACHINE}-unknown-linux-gnueabi
            else
-               echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf
+               echo ${UNAME_MACHINE}-unknown-linux-gnueabihf
            fi
        fi
        exit ;;
     avr32*:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
        exit ;;
     cris:Linux:*:*)
-       echo ${UNAME_MACHINE}-axis-linux-${LIBC}
+       echo ${UNAME_MACHINE}-axis-linux-gnu
        exit ;;
     crisv32:Linux:*:*)
-       echo ${UNAME_MACHINE}-axis-linux-${LIBC}
+       echo ${UNAME_MACHINE}-axis-linux-gnu
        exit ;;
     frv:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
        exit ;;
     hexagon:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
        exit ;;
     i*86:Linux:*:*)
-       echo ${UNAME_MACHINE}-pc-linux-${LIBC}
+       LIBC=gnu
+       eval $set_cc_for_build
+       sed 's/^        //' << EOF >$dummy.c
+       #ifdef __dietlibc__
+       LIBC=dietlibc
+       #endif
+EOF
+       eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'`
+       echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
        exit ;;
     ia64:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
        exit ;;
     m32r*:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
        exit ;;
     m68*:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
        exit ;;
     mips:Linux:*:* | mips64:Linux:*:*)
        eval $set_cc_for_build
@@ -967,63 +951,57 @@ EOF
        #endif
 EOF
        eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
-       test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; }
+       test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
        ;;
     or1k:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
        exit ;;
     or32:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
        exit ;;
     padre:Linux:*:*)
-       echo sparc-unknown-linux-${LIBC}
+       echo sparc-unknown-linux-gnu
        exit ;;
     parisc64:Linux:*:* | hppa64:Linux:*:*)
-       echo hppa64-unknown-linux-${LIBC}
+       echo hppa64-unknown-linux-gnu
        exit ;;
     parisc:Linux:*:* | hppa:Linux:*:*)
        # Look for CPU level
        case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
-         PA7*) echo hppa1.1-unknown-linux-${LIBC} ;;
-         PA8*) echo hppa2.0-unknown-linux-${LIBC} ;;
-         *)    echo hppa-unknown-linux-${LIBC} ;;
+         PA7*) echo hppa1.1-unknown-linux-gnu ;;
+         PA8*) echo hppa2.0-unknown-linux-gnu ;;
+         *)    echo hppa-unknown-linux-gnu ;;
        esac
        exit ;;
     ppc64:Linux:*:*)
-       echo powerpc64-unknown-linux-${LIBC}
+       echo powerpc64-unknown-linux-gnu
        exit ;;
     ppc:Linux:*:*)
-       echo powerpc-unknown-linux-${LIBC}
-       exit ;;
-    ppc64le:Linux:*:*)
-       echo powerpc64le-unknown-linux-${LIBC}
-       exit ;;
-    ppcle:Linux:*:*)
-       echo powerpcle-unknown-linux-${LIBC}
+       echo powerpc-unknown-linux-gnu
        exit ;;
     s390:Linux:*:* | s390x:Linux:*:*)
-       echo ${UNAME_MACHINE}-ibm-linux-${LIBC}
+       echo ${UNAME_MACHINE}-ibm-linux
        exit ;;
     sh64*:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
        exit ;;
     sh*:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
        exit ;;
     sparc:Linux:*:* | sparc64:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
        exit ;;
     tile*:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
        exit ;;
     vax:Linux:*:*)
-       echo ${UNAME_MACHINE}-dec-linux-${LIBC}
+       echo ${UNAME_MACHINE}-dec-linux-gnu
        exit ;;
     x86_64:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
        exit ;;
     xtensa*:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
        exit ;;
     i*86:DYNIX/ptx:4*:*)
        # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
@@ -1256,21 +1234,19 @@ EOF
        exit ;;
     *:Darwin:*:*)
        UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
-       eval $set_cc_for_build
-       if test "$UNAME_PROCESSOR" = unknown ; then
-           UNAME_PROCESSOR=powerpc
-       fi
-       if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
-           if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
-               (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
-               grep IS_64BIT_ARCH >/dev/null
-           then
-               case $UNAME_PROCESSOR in
-                   i386) UNAME_PROCESSOR=x86_64 ;;
-                   powerpc) UNAME_PROCESSOR=powerpc64 ;;
-               esac
-           fi
-       fi
+       case $UNAME_PROCESSOR in
+           i386)
+               eval $set_cc_for_build
+               if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
+                 if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo 
'#endif') | \
+                     (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
+                     grep IS_64BIT_ARCH >/dev/null
+                 then
+                     UNAME_PROCESSOR="x86_64"
+                 fi
+               fi ;;
+           unknown) UNAME_PROCESSOR=powerpc ;;
+       esac
        echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
        exit ;;
     *:procnto*:*:* | *:QNX:[0123456789]*:*)
diff --git a/config.sub b/config.sub
index 9633db7..872199a 100755
--- a/config.sub
+++ b/config.sub
@@ -2,7 +2,7 @@
 # Configuration validation subroutine script.
 #   Copyright 1992-2013 Free Software Foundation, Inc.
 
-timestamp='2013-08-10'
+timestamp='2013-02-12'
 
 # This file is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License as published by
@@ -252,12 +252,12 @@ case $basic_machine in
        | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
        | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | 
alpha64pca5[67] \
        | am33_2.0 \
-       | arc | arceb \
+       | arc \
        | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \
        | avr | avr32 \
        | be32 | be64 \
        | bfin \
-       | c4x | c8051 | clipper \
+       | c4x | clipper \
        | d10v | d30v | dlx | dsp16xx \
        | epiphany \
        | fido | fr30 | frv \
@@ -366,13 +366,13 @@ case $basic_machine in
        | aarch64-* | aarch64_be-* \
        | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
        | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
-       | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \
+       | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
        | arm-*  | armbe-* | armle-* | armeb-* | armv*-* \
        | avr-* | avr32-* \
        | be32-* | be64-* \
        | bfin-* | bs2000-* \
        | c[123]* | c30-* | [cjt]90-* | c4x-* \
-       | c8051-* | clipper-* | craynv-* | cydra-* \
+       | clipper-* | craynv-* | cydra-* \
        | d10v-* | d30v-* | dlx-* \
        | elxsi-* \
        | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
@@ -794,7 +794,7 @@ case $basic_machine in
                os=-mingw64
                ;;
        mingw32)
-               basic_machine=i686-pc
+               basic_machine=i386-pc
                os=-mingw32
                ;;
        mingw32ce)
@@ -830,7 +830,7 @@ case $basic_machine in
                basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
                ;;
        msys)
-               basic_machine=i686-pc
+               basic_machine=i386-pc
                os=-msys
                ;;
        mvs)
@@ -1546,9 +1546,6 @@ case $basic_machine in
        c4x-* | tic4x-*)
                os=-coff
                ;;
-       c8051-*)
-               os=-elf
-               ;;
        hexagon-*)
                os=-elf
                ;;
diff --git a/config/ttys b/config/ttys
index 60f4815..2b3464d 100644
--- a/config/ttys
+++ b/config/ttys
@@ -4,11 +4,11 @@
 
 # name program                         type            status  comments
 
-console        "/sbin/getty 9600"              mach-gnu-color  on      secure 
trusted console
-tty1   "/sbin/getty 38400"             hurd            on      secure trusted 
console
-tty2   "/sbin/getty 38400"             hurd            on      secure trusted 
console
-tty3   "/sbin/getty 38400"             hurd            on      secure trusted 
console
-tty4   "/sbin/getty 38400"             hurd            on      secure trusted 
console
-tty5   "/sbin/getty 38400"             hurd            on      secure trusted 
console
-tty6   "/sbin/getty 38400"             hurd            on      secure trusted 
console
-#com0  "/sbin/getty 9600"              dialup          on      secure
+console        "/libexec/getty 9600"           mach-gnu-color  on      secure 
trusted console
+tty1   "/libexec/getty 38400"          hurd            on      secure trusted 
console
+tty2   "/libexec/getty 38400"          hurd            on      secure trusted 
console
+tty3   "/libexec/getty 38400"          hurd            on      secure trusted 
console
+tty4   "/libexec/getty 38400"          hurd            on      secure trusted 
console
+tty5   "/libexec/getty 38400"          hurd            on      secure trusted 
console
+tty6   "/libexec/getty 38400"          hurd            on      secure trusted 
console
+#com0  "/libexec/getty 9600"           dialup          on      secure
diff --git a/configure.ac b/configure.ac
index cd018a0..d822dd2 100644
--- a/configure.ac
+++ b/configure.ac
@@ -160,8 +160,8 @@ else
 fi
 AC_SUBST(VERSIONING)
 
-# Check if libc contains these functions.
-AC_CHECK_FUNCS(getgrouplist uselocale file_exec_file_name exec_exec_file_name 
_hurd_exec_file_name)
+# Check if libc contains getgrouplist and/or uselocale.
+AC_CHECK_FUNCS(getgrouplist uselocale)
 
 
 # From glibc HEAD, 2007-11-07.
@@ -227,12 +227,6 @@ AC_SUBST(boot_store_types)dnl
 AC_MSG_CHECKING(boot store types)
 AC_MSG_RESULT($boot_store_types)
 
-AC_CHECK_LIB(pciaccess, pci_system_init, LIBPCIACCESS=-lpciaccess, 
LIBPCIACCESS=no)
-AC_SUBST(LIBPCIACCESS)
-if test "$LIBPCIACCESS" = "no"; then
-  AC_MSG_ERROR([libpciaccess must be install in order to use libddekit])
-fi
-
 # Check for ncursesw, which is needed for the console-curses client.
 hurd_LIB_NCURSESW
 
diff --git a/console-client/bdf.c b/console-client/bdf.c
index a6cd5d5..f62a247 100644
--- a/console-client/bdf.c
+++ b/console-client/bdf.c
@@ -415,10 +415,8 @@ bdf_read (FILE *filep, bdf_font_t *font, int *linecount)
             glyphs.  */
          if (!strcmp (line, "ENDFONT"))
            {
-             /*
              if (parser.glyphs != bdf->glyphs_count)
                err = BDF_COUNT_MISMATCH;
-             */
              done = 1;
            }
          else
diff --git a/console-client/xkb/xkb-data/keymap/hurd 
b/console-client/xkb/xkb-data/keymap/hurd
index 3d47277..b123f2b 100644
--- a/console-client/xkb/xkb-data/keymap/hurd
+++ b/console-client/xkb/xkb-data/keymap/hurd
@@ -4,7 +4,7 @@
 xkb_keymap "Hurd" {
     xkb_keycodes       { include "xfree86"             };
     xkb_types          { include "default+hurd"        };
-    xkb_compatibility  { include 
"basic+mousekeys+accessx(basic)+misc+iso9995+level5+caps(caps_lock)"          };
+    xkb_compatibility  { include "default"             };
     xkb_symbols        { include 
"pc(pc105)+us+hurd+group(win_switch)+compose(menu)"   };
     xkb_geometry       { include "pc"                  };
 };
@@ -12,7 +12,7 @@ xkb_keymap "Hurd" {
 default xkb_keymap "us" {
     xkb_keycodes       { include "xfree86"             };
     xkb_types          { include "default+hurd"                };
-    xkb_compatibility  { include 
"basic+mousekeys+accessx(basic)+misc+iso9995+level5+caps(caps_lock)"          };
+    xkb_compatibility  { include "default"             };
     xkb_symbols                { include "pc(pc105)+us+hurd"           };
     xkb_geometry       { include "pc"                  };
 };
@@ -21,21 +21,21 @@ default xkb_keymap "us" {
 xkb_keymap "ar" {
     xkb_keycodes       { include "xfree86"             };
     xkb_types          { include "default+hurd"        };
-    xkb_compatibility  { include 
"basic+mousekeys+accessx(basic)+misc+iso9995+level5+caps(caps_lock)"          };
+    xkb_compatibility  { include "default"             };
     xkb_symbols                { include "pc(pc105)+ara+hurd"  };
     xkb_geometry       { include "pc(pc102)"           };
 };
 xkb_keymap "be"        {
     xkb_keycodes       { include "xfree86"             };
     xkb_types          { include "default+hurd"        };
-    xkb_compatibility  { include 
"basic+mousekeys+accessx(basic)+misc+iso9995+level5+caps(caps_lock)"          };
+    xkb_compatibility  { include "default"             };
     xkb_symbols                { include "pc(pc105)+be+hurd"   };
     xkb_geometry       { include "pc(pc102)"           };
 };
 xkb_keymap "bg"        {
     xkb_keycodes       { include "xfree86"             };
     xkb_types          { include "default+hurd"        };
-    xkb_compatibility  { include 
"basic+mousekeys+accessx(basic)+misc+iso9995+level5+caps(caps_lock)"          };
+    xkb_compatibility  { include "default"             };
     xkb_symbols                { include "pc(pc105)+bg+hurd"   };
     xkb_geometry       { include "pc(pc102)"           };
 };
@@ -43,7 +43,7 @@ xkb_keymap "bg"       {
 xkb_keymap "br"        {
     xkb_keycodes       { include "xfree86"     };
     xkb_types          { include "default+hurd"        };
-    xkb_compatibility  { include 
"basic+mousekeys+accessx(basic)+misc+iso9995+level5+caps(caps_lock)"          };
+    xkb_compatibility  { include "default"             };
     xkb_symbols                { include "pc(pc105)+br+hurd"   };
     xkb_geometry       { include "pc(abnt2)"           };
 };
@@ -53,168 +53,168 @@ xkb_keymap "br"   {
 xkb_keymap "cz" {
     xkb_keycodes       { include "xfree86"             };
     xkb_types          { include "default+hurd"        };
-    xkb_compatibility  { include 
"basic+mousekeys+accessx(basic)+misc+iso9995+level5+caps(caps_lock)"          };
+    xkb_compatibility  { include "default"             };
     xkb_symbols                { include "pc(pc105)+cz+hurd"   };
     xkb_geometry       { include "pc"                  };
 };
 xkb_keymap "de"        {
     xkb_keycodes       { include "xfree86"             };
     xkb_types          { include "default+hurd"        };
-    xkb_compatibility  { include 
"basic+mousekeys+accessx(basic)+misc+iso9995+level5+caps(caps_lock)"          };
+    xkb_compatibility  { include "default"             };
     xkb_symbols                { include "pc(pc105)+de+hurd"   };
     xkb_geometry       { include "pc(pc102)"           };
 };
 xkb_keymap "ch_de"     {
     xkb_keycodes       { include "xfree86"             };
     xkb_types          { include "default+hurd"        };
-    xkb_compatibility  { include 
"basic+mousekeys+accessx(basic)+misc+iso9995+level5+caps(caps_lock)"          };
+    xkb_compatibility  { include "default"             };
     xkb_symbols                { include "pc(pc105)+ch(de)+hurd"       };
     xkb_geometry       { include "pc(pc102)"           };
 };
 xkb_keymap "ch_fr"     {
     xkb_keycodes       { include "xfree86"             };
     xkb_types          { include "default+hurd"        };
-    xkb_compatibility  { include 
"basic+mousekeys+accessx(basic)+misc+iso9995+level5+caps(caps_lock)"          };
+    xkb_compatibility  { include "default"             };
     xkb_symbols                { include "pc(pc105)+ch(fr)+hurd"       };
     xkb_geometry       { include "pc(pc102)"           };
 };
 xkb_keymap "dk"        {
     xkb_keycodes       { include "xfree86"             };
     xkb_types          { include "default+hurd"        };
-    xkb_compatibility  { include 
"basic+mousekeys+accessx(basic)+misc+iso9995+level5+caps(caps_lock)"          };
+    xkb_compatibility  { include "default"             };
     xkb_symbols                { include "pc(pc105)+dk+hurd"   };
     xkb_geometry       { include "pc(pc102)"           };
 };
 xkb_keymap "dvorak" {
     xkb_keycodes       { include "xfree86"             };
     xkb_types          { include "default+hurd"        };
-    xkb_compatibility  { include 
"basic+mousekeys+accessx(basic)+misc+iso9995+level5+caps(caps_lock)"          };
+    xkb_compatibility  { include "default"             };
     xkb_symbols                { include "pc(pc105)+us(dvorak)+hurd"};
     xkb_geometry       { include "pc(pc102)"           };
 };
 xkb_keymap "en_US" {
     xkb_keycodes       { include "xfree86"             };
     xkb_types          { include "default+hurd"        };
-    xkb_compatibility  { include 
"basic+mousekeys+accessx(basic)+misc+iso9995+level5+caps(caps_lock)"          };
+    xkb_compatibility  { include "default"             };
     xkb_symbols        { include "pc(pc105)+us+hurd"   };
     xkb_geometry       { include "pc"                  };
 };
 xkb_keymap "es"        {
     xkb_keycodes       { include "xfree86"             };
     xkb_types          { include "default+hurd"        };
-    xkb_compatibility  { include 
"basic+mousekeys+accessx(basic)+misc+iso9995+level5+caps(caps_lock)"          };
+    xkb_compatibility  { include "default"             };
     xkb_symbols                { include "pc(pc105)+es+hurd"   };
     xkb_geometry       { include "pc(pc102)"           };
 };
 xkb_keymap "fr"        {
     xkb_keycodes       { include "xfree86"             };
     xkb_types          { include "default+hurd"        };
-    xkb_compatibility  { include 
"basic+mousekeys+accessx(basic)+misc+iso9995+level5+caps(caps_lock)"          };
+    xkb_compatibility  { include "default"             };
     xkb_symbols                { include "pc(pc105)+fr+hurd"   };
     xkb_geometry       { include "pc(pc102)"           };
 };
 xkb_keymap "fr-latin9" {
     xkb_keycodes        { include "xfree86"             };
     xkb_types           { include "default+hurd"        };
-    xkb_compatibility   { include 
"basic+mousekeys+accessx(basic)+misc+iso9995+level5+caps(caps_lock)"            
 };
+    xkb_compatibility   { include "default"             };
     xkb_symbols         { include "pc(pc105)+fr-latin9+hurd" };
     xkb_geometry        { include "pc"                 };
 };
 xkb_keymap "fr_CA"     {
     xkb_keycodes       { include "xfree86"             };
     xkb_types          { include "default+hurd"        };
-    xkb_compatibility  { include 
"basic+mousekeys+accessx(basic)+misc+iso9995+level5+caps(caps_lock)"          };
+    xkb_compatibility  { include "default"             };
     xkb_symbols                { include "pc(pc105)+ca+hurd"   };
     xkb_geometry       { include "pc(pc102)"           };
 };
 xkb_keymap "gb"        {
     xkb_keycodes       { include "xfree86"             };
     xkb_types          { include "default+hurd"        };
-    xkb_compatibility  { include 
"basic+mousekeys+accessx(basic)+misc+iso9995+level5+caps(caps_lock)"          };
+    xkb_compatibility  { include "default"             };
     xkb_symbols                { include "pc(pc105)+gb+hurd"   };
     xkb_geometry       { include "pc(pc102)"           };
 };
 xkb_keymap "hr"        {
     xkb_keycodes       { include "xfree86"             };
     xkb_types          { include "default+hurd"        };
-    xkb_compatibility  { include 
"basic+mousekeys+accessx(basic)+misc+iso9995+level5+caps(caps_lock)"          };
+    xkb_compatibility  { include "default"             };
     xkb_symbols                { include "pc(pc105)+hr+hurd"   };
     xkb_geometry       { include "pc(pc102)"           };
 };
 xkb_keymap "it"        {
     xkb_keycodes       { include "xfree86"             };
     xkb_types          { include "default+hurd"        };
-    xkb_compatibility  { include 
"basic+mousekeys+accessx(basic)+misc+iso9995+level5+caps(caps_lock)"          };
+    xkb_compatibility  { include "default"             };
     xkb_symbols                { include "pc(pc105)+it+hurd"   };
     xkb_geometry       { include "pc(pc102)"           };
 };
 xkb_keymap "jp106" {
     xkb_keycodes       { include "xfree86"     };
     xkb_types          { include "default+hurd"        };
-    xkb_compatibility  { include 
"basic+mousekeys+accessx(basic)+misc+iso9995+level5+caps(caps_lock)"          };
+    xkb_compatibility  { include "default"             };
     xkb_symbols                { include "jp(jp106)+hurd"      };
     xkb_geometry       { include "pc(jp106)"           };
 };
 xkb_keymap "lt"        {
     xkb_keycodes       { include "xfree86"             };
     xkb_types          { include "default+hurd"        };
-    xkb_compatibility  { include 
"basic+mousekeys+accessx(basic)+misc+iso9995+level5+caps(caps_lock)"          };
+    xkb_compatibility  { include "default"             };
     xkb_symbols                { include "pc(pc105)+lt+hurd"   };
     xkb_geometry       { include "pc(pc102)"           };
 };
 xkb_keymap "lt_std"    {
     xkb_keycodes       { include "xfree86"             };
     xkb_types          { include "default+hurd"        };
-    xkb_compatibility  { include 
"basic+mousekeys+accessx(basic)+misc+iso9995+level5+caps(caps_lock)"          };
+    xkb_compatibility  { include "default"             };
     xkb_symbols                { include "pc(pc105)+lt(std)+hurd"      };
     xkb_geometry       { include "pc(pc102)"           };
 };
 xkb_keymap "lv"        {
     xkb_keycodes       { include "xfree86"             };
     xkb_types          { include "default+hurd"        };
-    xkb_compatibility  { include 
"basic+mousekeys+accessx(basic)+misc+iso9995+level5+caps(caps_lock)"          };
+    xkb_compatibility  { include "default"             };
     xkb_symbols                { include "pc(pc105)+lv+hurd"   };
     xkb_geometry       { include "pc(pc102)"           };
 };
 xkb_keymap "mk" {
     xkb_keycodes       { include "xfree86"             };
     xkb_types          { include "default+hurd"        };
-    xkb_compatibility  { include 
"basic+mousekeys+accessx(basic)+misc+iso9995+level5+caps(caps_lock)"          };
+    xkb_compatibility  { include "default"             };
     xkb_symbols                { include "pc(pc105)+mk+hurd"   };
     xkb_geometry       { include "pc(pc102)"           };
 };
 xkb_keymap "mt" {
     xkb_keycodes       { include "xfree86"             };
     xkb_types          { include "default+hurd"        };
-    xkb_compatibility  { include 
"basic+mousekeys+accessx(basic)+misc+iso9995+level5+caps(caps_lock)"          };
+    xkb_compatibility  { include "default"             };
     xkb_symbols                { include "pc(pc105)+mt+hurd"   };
     xkb_geometry       { include "pc(pc102)"           };
 };
 xkb_keymap "neo"       {
     xkb_keycodes       { include "xfree86"             };
     xkb_types          { include "default+hurd"        };
-    xkb_compatibility  { include 
"basic+mousekeys+accessx(basic)+misc+iso9995+level5+caps(caps_lock)+caps(caps_lock)+misc(assign_shift_left_action)+level5(level5_lock)"
               };
+    xkb_compatibility  { include 
"default+caps(caps_lock)+misc(assign_shift_left_action)+level5(level5_lock)"    
      };
     xkb_symbols                { include "pc(pc105)+de(neo)+hurd"      };
     xkb_geometry       { include "pc(pc102)"           };
 };
 xkb_keymap "no"        {
     xkb_keycodes       { include "xfree86"             };
     xkb_types          { include "default+hurd"        };
-    xkb_compatibility  { include 
"basic+mousekeys+accessx(basic)+misc+iso9995+level5+caps(caps_lock)"          };
+    xkb_compatibility  { include "default"             };
     xkb_symbols                { include "pc(pc105)+no+hurd"   };
     xkb_geometry       { include "pc(pc102)"           };
 };
 xkb_keymap "pl"        {
     xkb_keycodes       { include "xfree86"             };
     xkb_types          { include "default+hurd"        };
-    xkb_compatibility  { include 
"basic+mousekeys+accessx(basic)+misc+iso9995+level5+caps(caps_lock)"          };
+    xkb_compatibility  { include "default"             };
     xkb_symbols                { include "pc(pc105)+pl+hurd"   };
     xkb_geometry       { include "pc(pc102)"           };
 };
 xkb_keymap "pt"        {
     xkb_keycodes       { include "xfree86"             };
     xkb_types          { include "default+hurd"        };
-    xkb_compatibility  { include 
"basic+mousekeys+accessx(basic)+misc+iso9995+level5+caps(caps_lock)"          };
+    xkb_compatibility  { include "default"             };
     xkb_symbols                { include "pc(pc105)+pt+hurd"   };
     xkb_geometry       { include "pc(pc102)"           };
 };
@@ -222,49 +222,49 @@ xkb_keymap "pt"   {
 xkb_keymap "ro" {
     xkb_keycodes       { include "xfree86"                     };
     xkb_types          { include "default+hurd"                };
-    xkb_compatibility  { include 
"basic+mousekeys+accessx(basic)+misc+iso9995+level5+caps(caps_lock)"            
      };
+    xkb_compatibility  { include "default"                     };
     xkb_symbols                { include "pc(pc105)+ro(pc101)+hurd"    };
     xkb_geometry       { include "pc(pc101)"                   };
 };
 xkb_keymap "ro_microsoft" {
     xkb_keycodes       { include "xfree86"                     };
     xkb_types          { include "default+hurd"                };
-    xkb_compatibility  { include 
"basic+mousekeys+accessx(basic)+misc+iso9995+level5+caps(caps_lock)"            
      };
+    xkb_compatibility  { include "default"                     };
     xkb_symbols                { include "pc(pc105)+ro(pc105)+hurd"    };
     xkb_geometry       { include "pc(pc105)"                   };
 };
 xkb_keymap "ru"        {
     xkb_keycodes       { include "xfree86"             };
     xkb_types          { include "default+hurd"        };
-    xkb_compatibility  { include 
"basic+mousekeys+accessx(basic)+misc+iso9995+level5+caps(caps_lock)"          };
+    xkb_compatibility  { include "default"             };
     xkb_symbols                { include "pc(pc105)+ru+hurd"   };
     xkb_geometry       { include "pc(pc102)"           };
 };
 xkb_keymap "se_FI"     {
     xkb_keycodes       { include "xfree86"             };
     xkb_types          { include "default+hurd"        };
-    xkb_compatibility  { include 
"basic+mousekeys+accessx(basic)+misc+iso9995+level5+caps(caps_lock)"          };
+    xkb_compatibility  { include "default"             };
     xkb_symbols                { include "pc(pc105)+fi+hurd"   };
     xkb_geometry       { include "pc(pc102)"           };
 };
 xkb_keymap "se_SE"     {
     xkb_keycodes       { include "xfree86"             };
     xkb_types          { include "default+hurd"        };
-    xkb_compatibility  { include 
"basic+mousekeys+accessx(basic)+misc+iso9995+level5+caps(caps_lock)"          };
+    xkb_compatibility  { include "default"             };
     xkb_symbols                { include "pc(pc105)+se+hurd"   };
     xkb_geometry       { include "pc(pc102)"           };
 };
 xkb_keymap "sl" {
     xkb_keycodes       { include "xfree86"             };
     xkb_types          { include "default+hurd"        };
-    xkb_compatibility  { include 
"basic+mousekeys+accessx(basic)+misc+iso9995+level5+caps(caps_lock)"          };
+    xkb_compatibility  { include "default"             };
     xkb_symbols                { include "pc(pc105)+si+hurd"   };
     xkb_geometry       { include "pc(pc102)"           };
 };
 xkb_keymap "sl_SI" {
     xkb_keycodes       { include "xfree86"             };
     xkb_types          { include "default+hurd"        };
-    xkb_compatibility  { include 
"basic+mousekeys+accessx(basic)+misc+iso9995+level5+caps(caps_lock)"          };
+    xkb_compatibility  { include "default"             };
     xkb_symbols                { include "pc(pc105)+si+hurd"   };
     xkb_geometry       { include "pc(pc102)"           };
 };
@@ -274,7 +274,7 @@ xkb_keymap "sl_SI" {
 xkb_keymap "sk" {
     xkb_keycodes       { include "xfree86"             };
     xkb_types          { include "default+hurd"        };
-    xkb_compatibility  { include 
"basic+mousekeys+accessx(basic)+misc+iso9995+level5+caps(caps_lock)"          };
+    xkb_compatibility  { include "default"             };
     xkb_symbols                { include "pc(pc105)+sk+hurd"   };
     xkb_geometry       { include "pc"                  };
 };
@@ -282,49 +282,49 @@ xkb_keymap "sk" {
 xkb_keymap "syr" {
     xkb_keycodes       { include "xfree86"             };
     xkb_types          { include "default+hurd"        };
-    xkb_compatibility  { include 
"basic+mousekeys+accessx(basic)+misc+iso9995+level5+caps(caps_lock)"          };
+    xkb_compatibility  { include "default"             };
     xkb_symbols                { include "pc(pc105)+syr+hurd"  };
     xkb_geometry       { include "pc(pc102)"           };
 };    
 xkb_keymap "th"        {
     xkb_keycodes       { include "xfree86"             };
     xkb_types          { include "default+hurd"        };
-    xkb_compatibility  { include 
"basic+mousekeys+accessx(basic)+misc+iso9995+level5+caps(caps_lock)"          };
+    xkb_compatibility  { include "default"             };
     xkb_symbols                { include "pc(pc105)+th+hurd"   };
     xkb_geometry       { include "pc(pc102)"           };
 };
 xkb_keymap "th_tis"    {
     xkb_keycodes       { include "xfree86"             };
     xkb_types          { include "default+hurd"        };
-    xkb_compatibility  { include 
"basic+mousekeys+accessx(basic)+misc+iso9995+level5+caps(caps_lock)"          };
+    xkb_compatibility  { include "default"             };
     xkb_symbols                { include "pc(pc105)+th(tis)+hurd"      };
     xkb_geometry       { include "pc(pc102)"           };
 };
 xkb_keymap "th_pat"    {
     xkb_keycodes       { include "xfree86"             };
     xkb_types          { include "default+hurd"        };
-    xkb_compatibility  { include 
"basic+mousekeys+accessx(basic)+misc+iso9995+level5+caps(caps_lock)"          };
+    xkb_compatibility  { include "default"             };
     xkb_symbols                { include "pc(pc105)+th(pat)+hurd"      };
     xkb_geometry       { include "pc(pc102)"           };
 };
 xkb_keymap "tr" {
     xkb_keycodes       { include "xfree86"             };
     xkb_types          { include "default+hurd"        };
-    xkb_compatibility  { include 
"basic+mousekeys+accessx(basic)+misc+iso9995+level5+caps(caps_lock)"          };
+    xkb_compatibility  { include "default"             };
     xkb_symbols                { include "pc(pc105)+tr+hurd"   };
     xkb_geometry       { include "pc(pc102)"           };
 };
 xkb_keymap "uk" {
     xkb_keycodes       { include "xfree86"             };
     xkb_types          { include "default+hurd"        };
-    xkb_compatibility  { include 
"basic+mousekeys+accessx(basic)+misc+iso9995+level5+caps(caps_lock)"          };
+    xkb_compatibility  { include "default"             };
     xkb_symbols                { include "pc(pc105)+uk)+hurd"  };
     xkb_geometry       { include "pc(pc102)"           };
 };
 xkb_keymap "us_flexpro" {
     xkb_keycodes       { include "xfree86"             };
     xkb_types          { include "default+hurd"        };
-    xkb_compatibility  { include 
"basic+mousekeys+accessx(basic)+misc+iso9995+level5+caps(caps_lock)"          };
+    xkb_compatibility  { include "default"             };
     xkb_symbols                { include "us(pc105)+hurd"      };
     xkb_geometry       { include "keytronic(FlexPro)"  };
 };
@@ -334,14 +334,14 @@ xkb_keymap "us_flexpro" {
 xkb_keymap "us_intl" {
     xkb_keycodes       { include "xfree86"             };
     xkb_types          { include "default+hurd"        };
-    xkb_compatibility  { include 
"basic+mousekeys+accessx(basic)+misc+iso9995+level5+caps(caps_lock)"          };
+    xkb_compatibility  { include "default"             };
     xkb_symbols                { include "us(pc101)+us(intl)+hurd"     };
     xkb_geometry       { include "pc"                  };
 };
 xkb_keymap "us_microsoft" {
     xkb_keycodes       { include "xfree86"             };
     xkb_types          { include "default+hurd"        };
-    xkb_compatibility  { include 
"basic+mousekeys+accessx(basic)+misc+iso9995+level5+caps(caps_lock)"          };
+    xkb_compatibility  { include "default"             };
     xkb_symbols                { include "us(pc105)+hurd"      };
     xkb_geometry       { include "microsoft"           };
 };
@@ -349,7 +349,7 @@ xkb_keymap "us_microsoft" {
 xkb_keymap "uz" {
     xkb_keycodes       { include "xfree86"             };
     xkb_types          { include "default+hurd"        };
-    xkb_compatibility  { include 
"basic+mousekeys+accessx(basic)+misc+iso9995+level5+caps(caps_lock)"          };
+    xkb_compatibility  { include "default"             };
     xkb_symbols                { include "pc(pc105)+uz+hurd"   };
     xkb_geometry       { include "pc(pc102)"           };
 };
@@ -358,35 +358,35 @@ xkb_keymap "uz" {
 xkb_keymap "cz_qwerty" {
     xkb_keycodes       { include "xfree86"             };
     xkb_types          { include "default+hurd"        };
-    xkb_compatibility  { include 
"basic+mousekeys+accessx(basic)+misc+iso9995+level5+caps(caps_lock)"          };
+    xkb_compatibility  { include "default"             };
     xkb_symbols                { include "pc(pc105)+cz(qwerty)+hurd"   };
     xkb_geometry       { include "pc"                  };
 };
 xkb_keymap "de_CH"     {
     xkb_keycodes       { include "xfree86"             };
     xkb_types          { include "default+hurd"        };
-    xkb_compatibility  { include 
"basic+mousekeys+accessx(basic)+misc+iso9995+level5+caps(caps_lock)"          };
+    xkb_compatibility  { include "default"             };
     xkb_symbols                { include "pc(pc105)+ch(de)+hurd"       };
     xkb_geometry       { include "pc(pc102)"           };
 };
 xkb_keymap "fr_CH"     {
     xkb_keycodes       { include "xfree86"             };
     xkb_types          { include "default+hurd"        };
-    xkb_compatibility  { include 
"basic+mousekeys+accessx(basic)+misc+iso9995+level5+caps(caps_lock)"          };
+    xkb_compatibility  { include "default"             };
     xkb_symbols                { include "pc(pc105)+ch(fr)+hurd"       };
     xkb_geometry       { include "pc(pc102)"           };
 };
 xkb_keymap "mt_us" {
     xkb_keycodes       { include "xfree86"             };
     xkb_types          { include "default+hurd"        };
-    xkb_compatibility  { include 
"basic+mousekeys+accessx(basic)+misc+iso9995+level5+caps(caps_lock)"          };
+    xkb_compatibility  { include "default"             };
     xkb_symbols                { include "pc(pc105)+mt(us)+hurd"       };
     xkb_geometry       { include "pc(pc102)"           };
 };
 xkb_keymap "sk_qwerty" {
     xkb_keycodes       { include "xfree86"             };
     xkb_types          { include "default+hurd"        };
-    xkb_compatibility  { include 
"basic+mousekeys+accessx(basic)+misc+iso9995+level5+caps(caps_lock)"          };
+    xkb_compatibility  { include "default"             };
     xkb_symbols                { include "pc(pc105)+sk(qwerty)+hurd"   };
     xkb_geometry       { include "pc"                  };
 };
@@ -395,266 +395,266 @@ xkb_keymap "sk_qwerty" {
 xkb_keymap "al"        {
     xkb_keycodes       { include "xfree86"             };
     xkb_types          { include "default+hurd"        };
-    xkb_compatibility  { include 
"basic+mousekeys+accessx(basic)+misc+iso9995+level5+caps(caps_lock)"          };
+    xkb_compatibility  { include "default"             };
     xkb_symbols                { include "pc(pc105)+al+hurd"   };
     xkb_geometry       { include "pc(pc102)"           };
 };
 xkb_keymap "ara"       {
     xkb_keycodes       { include "xfree86"             };
     xkb_types          { include "default+hurd"        };
-    xkb_compatibility  { include 
"basic+mousekeys+accessx(basic)+misc+iso9995+level5+caps(caps_lock)"          };
+    xkb_compatibility  { include "default"             };
     xkb_symbols                { include "pc(pc105)+ara+hurd"  };
     xkb_geometry       { include "pc(pc102)"           };
 };
 xkb_keymap "bd"        {
     xkb_keycodes       { include "xfree86"             };
     xkb_types          { include "default+hurd"        };
-    xkb_compatibility  { include 
"basic+mousekeys+accessx(basic)+misc+iso9995+level5+caps(caps_lock)"          };
+    xkb_compatibility  { include "default"             };
     xkb_symbols                { include "pc(pc105)+bd+hurd"   };
     xkb_geometry       { include "pc(pc102)"           };
 };
 xkb_keymap "by"        {
     xkb_keycodes       { include "xfree86"             };
     xkb_types          { include "default+hurd"        };
-    xkb_compatibility  { include 
"basic+mousekeys+accessx(basic)+misc+iso9995+level5+caps(caps_lock)"          };
+    xkb_compatibility  { include "default"             };
     xkb_symbols                { include "pc(pc105)+by+hurd"   };
     xkb_geometry       { include "pc(pc102)"           };
 };
 xkb_keymap "in"        {
     xkb_keycodes       { include "xfree86"             };
     xkb_types          { include "default+hurd"        };
-    xkb_compatibility  { include 
"basic+mousekeys+accessx(basic)+misc+iso9995+level5+caps(caps_lock)"          };
+    xkb_compatibility  { include "default"             };
     xkb_symbols                { include "pc(pc105)+in+hurd"   };
     xkb_geometry       { include "pc(pc102)"           };
 };
 xkb_keymap "ba"        {
     xkb_keycodes       { include "xfree86"             };
     xkb_types          { include "default+hurd"        };
-    xkb_compatibility  { include 
"basic+mousekeys+accessx(basic)+misc+iso9995+level5+caps(caps_lock)"          };
+    xkb_compatibility  { include "default"             };
     xkb_symbols                { include "pc(pc105)+ba+hurd"   };
     xkb_geometry       { include "pc(pc102)"           };
 };
 xkb_keymap "ca"        {
     xkb_keycodes       { include "xfree86"             };
     xkb_types          { include "default+hurd"        };
-    xkb_compatibility  { include 
"basic+mousekeys+accessx(basic)+misc+iso9995+level5+caps(caps_lock)"          };
+    xkb_compatibility  { include "default"             };
     xkb_symbols                { include "pc(pc105)+ca+hurd"   };
     xkb_geometry       { include "pc(pc102)"           };
 };
 xkb_keymap "cn"        {
     xkb_keycodes       { include "xfree86"             };
     xkb_types          { include "default+hurd"        };
-    xkb_compatibility  { include 
"basic+mousekeys+accessx(basic)+misc+iso9995+level5+caps(caps_lock)"          };
+    xkb_compatibility  { include "default"             };
     xkb_symbols                { include "pc(pc105)+cn+hurd"   };
     xkb_geometry       { include "pc(pc102)"           };
 };
 xkb_keymap "nl"        {
     xkb_keycodes       { include "xfree86"             };
     xkb_types          { include "default+hurd"        };
-    xkb_compatibility  { include 
"basic+mousekeys+accessx(basic)+misc+iso9995+level5+caps(caps_lock)"          };
+    xkb_compatibility  { include "default"             };
     xkb_symbols                { include "pc(pc105)+nl+hurd"   };
     xkb_geometry       { include "pc(pc102)"           };
 };
 xkb_keymap "bt"        {
     xkb_keycodes       { include "xfree86"             };
     xkb_types          { include "default+hurd"        };
-    xkb_compatibility  { include 
"basic+mousekeys+accessx(basic)+misc+iso9995+level5+caps(caps_lock)"          };
+    xkb_compatibility  { include "default"             };
     xkb_symbols                { include "pc(pc105)+bt+hurd"   };
     xkb_geometry       { include "pc(pc102)"           };
 };
 xkb_keymap "epo"       {
     xkb_keycodes       { include "xfree86"             };
     xkb_types          { include "default+hurd"        };
-    xkb_compatibility  { include 
"basic+mousekeys+accessx(basic)+misc+iso9995+level5+caps(caps_lock)"          };
+    xkb_compatibility  { include "default"             };
     xkb_symbols                { include "pc(pc105)+epo+hurd"  };
     xkb_geometry       { include "pc(pc102)"           };
 };
 xkb_keymap "ee"        {
     xkb_keycodes       { include "xfree86"             };
     xkb_types          { include "default+hurd"        };
-    xkb_compatibility  { include 
"basic+mousekeys+accessx(basic)+misc+iso9995+level5+caps(caps_lock)"          };
+    xkb_compatibility  { include "default"             };
     xkb_symbols                { include "pc(pc105)+ee+hurd"   };
     xkb_geometry       { include "pc(pc102)"           };
 };
 xkb_keymap "et"        {
     xkb_keycodes       { include "xfree86"             };
     xkb_types          { include "default+hurd"        };
-    xkb_compatibility  { include 
"basic+mousekeys+accessx(basic)+misc+iso9995+level5+caps(caps_lock)"          };
+    xkb_compatibility  { include "default"             };
     xkb_symbols                { include "pc(pc105)+et+hurd"   };
     xkb_geometry       { include "pc(pc102)"           };
 };
 xkb_keymap "fi"        {
     xkb_keycodes       { include "xfree86"             };
     xkb_types          { include "default+hurd"        };
-    xkb_compatibility  { include 
"basic+mousekeys+accessx(basic)+misc+iso9995+level5+caps(caps_lock)"          };
+    xkb_compatibility  { include "default"             };
     xkb_symbols                { include "pc(pc105)+fi+hurd"   };
     xkb_geometry       { include "pc(pc102)"           };
 };
 xkb_keymap "ge"        {
     xkb_keycodes       { include "xfree86"             };
     xkb_types          { include "default+hurd"        };
-    xkb_compatibility  { include 
"basic+mousekeys+accessx(basic)+misc+iso9995+level5+caps(caps_lock)"          };
+    xkb_compatibility  { include "default"             };
     xkb_symbols                { include "pc(pc105)+ge+hurd"   };
     xkb_geometry       { include "pc(pc102)"           };
 };
 xkb_keymap "gr"        {
     xkb_keycodes       { include "xfree86"             };
     xkb_types          { include "default+hurd"        };
-    xkb_compatibility  { include 
"basic+mousekeys+accessx(basic)+misc+iso9995+level5+caps(caps_lock)"          };
+    xkb_compatibility  { include "default"             };
     xkb_symbols                { include "pc(pc105)+gr+hurd"   };
     xkb_geometry       { include "pc(pc102)"           };
 };
 xkb_keymap "il"        {
     xkb_keycodes       { include "xfree86"             };
     xkb_types          { include "default+hurd"        };
-    xkb_compatibility  { include 
"basic+mousekeys+accessx(basic)+misc+iso9995+level5+caps(caps_lock)"          };
+    xkb_compatibility  { include "default"             };
     xkb_symbols                { include "pc(pc105)+il+hurd"   };
     xkb_geometry       { include "pc(pc102)"           };
 };
 xkb_keymap "hu"        {
     xkb_keycodes       { include "xfree86"             };
     xkb_types          { include "default+hurd"        };
-    xkb_compatibility  { include 
"basic+mousekeys+accessx(basic)+misc+iso9995+level5+caps(caps_lock)"          };
+    xkb_compatibility  { include "default"             };
     xkb_symbols                { include "pc(pc105)+hu+hurd"   };
     xkb_geometry       { include "pc(pc102)"           };
 };
 xkb_keymap "is"        {
     xkb_keycodes       { include "xfree86"             };
     xkb_types          { include "default+hurd"        };
-    xkb_compatibility  { include 
"basic+mousekeys+accessx(basic)+misc+iso9995+level5+caps(caps_lock)"          };
+    xkb_compatibility  { include "default"             };
     xkb_symbols                { include "pc(pc105)+is+hurd"   };
     xkb_geometry       { include "pc(pc102)"           };
 };
 xkb_keymap "ie"        {
     xkb_keycodes       { include "xfree86"             };
     xkb_types          { include "default+hurd"        };
-    xkb_compatibility  { include 
"basic+mousekeys+accessx(basic)+misc+iso9995+level5+caps(caps_lock)"          };
+    xkb_compatibility  { include "default"             };
     xkb_symbols                { include "pc(pc105)+ie+hurd"   };
     xkb_geometry       { include "pc(pc102)"           };
 };
 xkb_keymap "jp"        {
     xkb_keycodes       { include "xfree86"             };
     xkb_types          { include "default+hurd"        };
-    xkb_compatibility  { include 
"basic+mousekeys+accessx(basic)+misc+iso9995+level5+caps(caps_lock)"          };
+    xkb_compatibility  { include "default"             };
     xkb_symbols                { include "pc(pc105)+jp+hurd"   };
     xkb_geometry       { include "pc(pc102)"           };
 };
 xkb_keymap "kz"        {
     xkb_keycodes       { include "xfree86"             };
     xkb_types          { include "default+hurd"        };
-    xkb_compatibility  { include 
"basic+mousekeys+accessx(basic)+misc+iso9995+level5+caps(caps_lock)"          };
+    xkb_compatibility  { include "default"             };
     xkb_symbols                { include "pc(pc105)+kz+hurd"   };
     xkb_geometry       { include "pc(pc102)"           };
 };
 xkb_keymap "kh"        {
     xkb_keycodes       { include "xfree86"             };
     xkb_types          { include "default+hurd"        };
-    xkb_compatibility  { include 
"basic+mousekeys+accessx(basic)+misc+iso9995+level5+caps(caps_lock)"          };
+    xkb_compatibility  { include "default"             };
     xkb_symbols                { include "pc(pc105)+kh+hurd"   };
     xkb_geometry       { include "pc(pc102)"           };
 };
 xkb_keymap "kg"        {
     xkb_keycodes       { include "xfree86"             };
     xkb_types          { include "default+hurd"        };
-    xkb_compatibility  { include 
"basic+mousekeys+accessx(basic)+misc+iso9995+level5+caps(caps_lock)"          };
+    xkb_compatibility  { include "default"             };
     xkb_symbols                { include "pc(pc105)+kg+hurd"   };
     xkb_geometry       { include "pc(pc102)"           };
 };
 xkb_keymap "kr"        {
     xkb_keycodes       { include "xfree86"             };
     xkb_types          { include "default+hurd"        };
-    xkb_compatibility  { include 
"basic+mousekeys+accessx(basic)+misc+iso9995+level5+caps(caps_lock)"          };
+    xkb_compatibility  { include "default"             };
     xkb_symbols                { include "pc(pc105)+kr+hurd"   };
     xkb_geometry       { include "pc(pc102)"           };
 };
 xkb_keymap "la"        {
     xkb_keycodes       { include "xfree86"             };
     xkb_types          { include "default+hurd"        };
-    xkb_compatibility  { include 
"basic+mousekeys+accessx(basic)+misc+iso9995+level5+caps(caps_lock)"          };
+    xkb_compatibility  { include "default"             };
     xkb_symbols                { include "pc(pc105)+la+hurd"   };
     xkb_geometry       { include "pc(pc102)"           };
 };
 xkb_keymap "latam"     {
     xkb_keycodes       { include "xfree86"             };
     xkb_types          { include "default+hurd"        };
-    xkb_compatibility  { include 
"basic+mousekeys+accessx(basic)+misc+iso9995+level5+caps(caps_lock)"          };
+    xkb_compatibility  { include "default"             };
     xkb_symbols                { include "pc(pc105)+latam+hurd"        };
     xkb_geometry       { include "pc(pc102)"           };
 };
 xkb_keymap "np"        {
     xkb_keycodes       { include "xfree86"             };
     xkb_types          { include "default+hurd"        };
-    xkb_compatibility  { include 
"basic+mousekeys+accessx(basic)+misc+iso9995+level5+caps(caps_lock)"          };
+    xkb_compatibility  { include "default"             };
     xkb_symbols                { include "pc(pc105)+np+hurd"   };
     xkb_geometry       { include "pc(pc102)"           };
 };
 xkb_keymap "ir"        {
     xkb_keycodes       { include "xfree86"             };
     xkb_types          { include "default+hurd"        };
-    xkb_compatibility  { include 
"basic+mousekeys+accessx(basic)+misc+iso9995+level5+caps(caps_lock)"          };
+    xkb_compatibility  { include "default"             };
     xkb_symbols                { include "pc(pc105)+ir+hurd"   };
     xkb_geometry       { include "pc(pc102)"           };
 };
 xkb_keymap "rs"        {
     xkb_keycodes       { include "xfree86"             };
     xkb_types          { include "default+hurd"        };
-    xkb_compatibility  { include 
"basic+mousekeys+accessx(basic)+misc+iso9995+level5+caps(caps_lock)"          };
+    xkb_compatibility  { include "default"             };
     xkb_symbols                { include "pc(pc105)+rs+hurd"   };
     xkb_geometry       { include "pc(pc102)"           };
 };
 xkb_keymap "pk"        {
     xkb_keycodes       { include "xfree86"             };
     xkb_types          { include "default+hurd"        };
-    xkb_compatibility  { include 
"basic+mousekeys+accessx(basic)+misc+iso9995+level5+caps(caps_lock)"          };
+    xkb_compatibility  { include "default"             };
     xkb_symbols                { include "pc(pc105)+pk+hurd"   };
     xkb_geometry       { include "pc(pc102)"           };
 };
 xkb_keymap "lk"        {
     xkb_keycodes       { include "xfree86"             };
     xkb_types          { include "default+hurd"        };
-    xkb_compatibility  { include 
"basic+mousekeys+accessx(basic)+misc+iso9995+level5+caps(caps_lock)"          };
+    xkb_compatibility  { include "default"             };
     xkb_symbols                { include "pc(pc105)+lk+hurd"   };
     xkb_geometry       { include "pc(pc102)"           };
 };
 xkb_keymap "si"        {
     xkb_keycodes       { include "xfree86"             };
     xkb_types          { include "default+hurd"        };
-    xkb_compatibility  { include 
"basic+mousekeys+accessx(basic)+misc+iso9995+level5+caps(caps_lock)"          };
+    xkb_compatibility  { include "default"             };
     xkb_symbols                { include "pc(pc105)+si+hurd"   };
     xkb_geometry       { include "pc(pc102)"           };
 };
 xkb_keymap "se"        {
     xkb_keycodes       { include "xfree86"             };
     xkb_types          { include "default+hurd"        };
-    xkb_compatibility  { include 
"basic+mousekeys+accessx(basic)+misc+iso9995+level5+caps(caps_lock)"          };
+    xkb_compatibility  { include "default"             };
     xkb_symbols                { include "pc(pc105)+se+hurd"   };
     xkb_geometry       { include "pc(pc102)"           };
 };
 xkb_keymap "ch"        {
     xkb_keycodes       { include "xfree86"             };
     xkb_types          { include "default+hurd"        };
-    xkb_compatibility  { include 
"basic+mousekeys+accessx(basic)+misc+iso9995+level5+caps(caps_lock)"          };
+    xkb_compatibility  { include "default"             };
     xkb_symbols                { include "pc(pc105)+ch+hurd"   };
     xkb_geometry       { include "pc(pc102)"           };
 };
 xkb_keymap "tr"        {
     xkb_keycodes       { include "xfree86"             };
     xkb_types          { include "default+hurd"        };
-    xkb_compatibility  { include 
"basic+mousekeys+accessx(basic)+misc+iso9995+level5+caps(caps_lock)"          };
+    xkb_compatibility  { include "default"             };
     xkb_symbols                { include "pc(pc105)+tr+hurd"   };
     xkb_geometry       { include "pc(pc102)"           };
 };
 xkb_keymap "ua"        {
     xkb_keycodes       { include "xfree86"             };
     xkb_types          { include "default+hurd"        };
-    xkb_compatibility  { include 
"basic+mousekeys+accessx(basic)+misc+iso9995+level5+caps(caps_lock)"          };
+    xkb_compatibility  { include "default"             };
     xkb_symbols                { include "pc(pc105)+ua+hurd"   };
     xkb_geometry       { include "pc(pc102)"           };
 };
 xkb_keymap "vn"        {
     xkb_keycodes       { include "xfree86"             };
     xkb_types          { include "default+hurd"        };
-    xkb_compatibility  { include 
"basic+mousekeys+accessx(basic)+misc+iso9995+level5+caps(caps_lock)"          };
+    xkb_compatibility  { include "default"             };
     xkb_symbols                { include "pc(pc105)+vn+hurd"   };
     xkb_geometry       { include "pc(pc102)"           };
 };
diff --git a/daemons/rc.sh b/daemons/rc.sh
index 2b16192..5cf44fa 100644
--- a/daemons/rc.sh
+++ b/daemons/rc.sh
@@ -1,6 +1,6 @@
 #!/bin/bash
 
-PATH=/bin:/sbin:/usr/bin:/usr/sbin
+PATH=/bin:/sbin
 
 # Start the default pager.  It will bail if there is already one running.
 /hurd/mach-defpager
@@ -19,17 +19,14 @@ then
        echo Automatic boot in progress...
        date
 
-       fsysopts / --update --readonly
-       /sbin/fsck -p -A
+       /sbin/fsck --preen --writable
 
        case $? in
        # Successful completion
        0)
-               fsysopts / --update --writable
                ;;
        # Filesystem modified (but ok now)
        1)
-               fsysopts / --update --writable
                ;;
        # Filesystem modified, filesystem should be restarted
        # Ideally we would only restart the filesystem
@@ -93,32 +90,12 @@ if test -d /tmp; then
 
 fi
 if test -d /var/run; then
-  (cd /var/run && {
-    find . ! -type d ! -name utmp ! -name innd.pid \
-      -exec rm -f -- {} \;
-    cp /dev/null utmp
-    if grep -q ^utmp: /etc/group
-    then
-       chmod 664 utmp
-       chgrp utmp utmp
-    fi; })
+  (cd /var/run && { rm -rf -- *; cp /dev/null utmp; chmod 644 utmp; })
 fi
-
-# until we properly start /etc/rcS.d
-rm -fr /run/*
-mkdir -p /run/lock /run/shm
-chmod 1777 /run/lock /run/shm
-: > /run/utmp
-
 echo done
 
-# See whether procfs is set up
-if ! test -e /proc/cmdline ; then
-  settrans -c /proc /hurd/procfs --compatible
-fi
-
-# This file must exist for e2fsck to work.
-ln -s /proc/mounts /var/run/mtab
+# This file must exist for e2fsck to work. XXX
+touch /var/run/mtab
 
 #echo -n restoring pty permissions...
 #chmod 666 /dev/tty[pqrs]*
@@ -132,25 +109,15 @@ ln -s /proc/mounts /var/run/mtab
 
 chmod 664 /etc/motd
 
-(
-       trap ":" INT QUIT TSTP
-
-       if [ -d /etc/rc.boot ]
-       then
-               for i in /etc/rc.boot/S*
-               do
-                       [ ! -f $i ] && continue
-                       $i start
-               done
-       fi
-       if [ -d /etc/rc2.d ]
-       then
-               for i in /etc/rc2.d/S*
-               do
-                       [ ! -f $i ] && continue
-                       $i start
-               done
-       fi
-)
+echo -n starting daemons:
+
+/sbin/syslogd  && echo -n ' syslogd'
+/sbin/inetd    && echo -n ' inetd'
+
+if test -x /sbin/sendmail -a -r /etc/sendmail.cf; then
+  /sbin/sendmail -bd -q30m     && echo -n ' sendmail'
+fi
+
+echo .
 
 date
diff --git a/daemons/runsystem.sh b/daemons/runsystem.sh
index 3384479..f4f2771 100644
--- a/daemons/runsystem.sh
+++ b/daemons/runsystem.sh
@@ -11,7 +11,7 @@
 ### Where to find programs, etc.
 ###
 
-PATH=/bin:/sbin:/usr/bin:/usr/sbin
+PATH=/bin:/sbin
 export PATH
 
 umask 022
@@ -23,8 +23,8 @@ fallback_shells='/bin/sh /bin/bash /bin/csh /bin/ash /bin/shd'
 SHELL=/bin/sh
 
 # Programs that do multi-user startup.
-RUNCOM=/etc/hurd/rc
-RUNTTYS=/sbin/runttys
+RUNCOM=/libexec/rc
+RUNTTYS=/libexec/runttys
 # Signals that we should pass down to runttys.
 runttys_sigs='TERM INT HUP TSTP'
 
diff --git a/debian/changelog b/debian/changelog
index 9cc7be8..9bb0240 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,9 +1,3 @@
-hurd (1:0.5.git20140113-2) UNRELEASED; urgency=low
-
-  * hurd.hurd-console.init: Actually make ENABLE=false in default work.
-
- -- Samuel Thibault <address@hidden>  Tue, 19 Nov 2013 00:21:47 +0100
-
 hurd (1:0.5.git20140113-1) unstable; urgency=low
 
   [ Samuel Thibault ]
diff --git a/debian/hurd.hurd-console.init b/debian/hurd.hurd-console.init
index 095e8cb..cac6fc2 100644
--- a/debian/hurd.hurd-console.init
+++ b/debian/hurd.hurd-console.init
@@ -25,8 +25,6 @@ SCRIPTNAME=/etc/init.d/hurd-$NAME
 # Read configuration variable file if it is present
 [ -r /etc/default/hurd-$NAME ] && . /etc/default/hurd-$NAME
 
-[ "$ENABLE" = true ] || exit 0
-
 # Augment the arguments.
 DAEMON_ARGS="${DAEMON_ARGS} ${DISPLAY} ${KBD} ${KBD_REPEAT} \
              ${SPEAKER} ${MOUSE} ${MOUSE_REPEAT}"
diff --git a/doc/hurd.texi b/doc/hurd.texi
index 6e79c3e..07ddfb4 100644
--- a/doc/hurd.texi
+++ b/doc/hurd.texi
@@ -102,7 +102,7 @@ This file documents the GNU Hurd kernel component.  This 
edition of the
 documentation was last updated for version @value{VERSION} of the Hurd.
 
 Copyright @copyright{} 1994, 1996, 1998, 1999, 2000, 2001, 2002, 2003,
-2004, 2005, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+2004, 2005, 2007, 2008, 2009 Free Software Foundation, Inc.
 
 @quotation
 Permission is granted to make and distribute verbatim copies of
@@ -566,7 +566,7 @@ The @option{--multiboot-command-line} option tells the file 
system server that
 it is a root filesystem, which triggers it to run @command{/hurd/init} as PID
 1.  @command{/hurd/init} starts the @command{/hurd/proc} and
 @command{/hurd/auth} servers.  After the servers are launched
address@hidden/hurd/init} starts the @command{/etc/hurd/runsystem.sh} script to
address@hidden/hurd/init} starts the @command{/libexec/runsystem.sh} script to
 finish booting.
 
 After the Hurd has been booted, other sets of core Hurd servers can be
@@ -2737,10 +2737,10 @@ write the file.
 @node Program Execution
 @subsection Program Execution
 
address@hidden file_exec_file_name
address@hidden file_exec
 Execution of programs on the Hurd is done through fileservers with the
address@hidden RPC.  The fileserver is expected to verify that
-the user is allowed to execute the file, make whatever modifications to the
address@hidden RPC.  The fileserver is expected to verify that the
+user is allowed to execute the file, make whatever modifications to the
 ports are necessary for setuid execution, and then invoke the standard
 execserver found on @file{/servers/exec}.
 
@@ -2752,13 +2752,13 @@ The file must be opened for execution; if it is not, 
@code{EBADF} should
 be returned.  In addition, at least one of the execute bits must be on.  A
 failure of this check should result in @code{EACCES}---not
 @code{ENOEXEC}.  It is not proper for the fileserver ever to respond to
-the @code{file_exec_file_name} RPC with @code{ENOEXEC}.
+the @code{file_exec} RPC with @code{ENOEXEC}.
 
 If either the setuid or setgid bits are set, the server needs to
 construct a new authentication handle with the additional new ID's.
-Then all the ports passed to @code{file_exec_file_name} need to be
-reauthenticated with the new handle.  If the fileserver is unable to make the
-new authentication handle (for example, because it is not running as root)
+Then all the ports passed to @code{file_exec} need to be reauthenticated
+with the new handle.  If the fileserver is unable to make the new
+authentication handle (for example, because it is not running as root)
 it is not acceptable to return an error; in such a case the server
 should simply silently fail to implement the setuid/setgid semantics.
 
@@ -2766,14 +2766,14 @@ If the setuid/setgid transformation adds a new uid or 
gid to the user's
 authentication handle that was not previously present (as opposed to
 merely reordering them), then the @code{EXEC_SECURE} and
 @code{EXEC_NEWTASK} flags should both be added in the call to
address@hidden
address@hidden
 
 The server then needs to open a new port onto the executed file which
 will not share any file pointers with the port the user passed in,
 opened with @code{O_READ}.  Finally, all the information (mutated
 appropriately for setuid/setgid) should be sent to the execserver with
address@hidden  Whatever error code @code{exec_exec_file_name}
-returns should be returned to the caller of @code{file_exec_file_name}.
address@hidden  Whatever error code @code{exec_exec} returns should
+returned to the caller of @code{file_exec}.
 
 @node File Locking
 @subsection File Locking
diff --git a/exec/Makefile b/exec/Makefile
index a285c13..3ef742d 100644
--- a/exec/Makefile
+++ b/exec/Makefile
@@ -22,7 +22,7 @@ makemode := server
 
 SRCS = exec.c main.c hashexec.c hostarch.c
 OBJS = main.o hostarch.o exec.o hashexec.o \
-       execServer.o exec_startupServer.o exec_experimentalServer.o
+       execServer.o exec_startupServer.o
 
 target = exec
 #targets = exec exec.static
@@ -30,7 +30,6 @@ HURDLIBS = trivfs fshelp iohelp ports ihash shouldbeinlibc
 OTHERLIBS = -lpthread
 
 exec-MIGSFLAGS = -imacros $(srcdir)/execmutations.h
-exec_experimental-MIGSFLAGS = -imacros $(srcdir)/execmutations.h
 
 include ../Makeconf
 
diff --git a/exec/exec.c b/exec/exec.c
index 5dc7998..fad9492 100644
--- a/exec/exec.c
+++ b/exec/exec.c
@@ -1,6 +1,6 @@
 /* GNU Hurd standard exec server.
-   Copyright (C) 1992 ,1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
-   2002, 2004, 2010 Free Software Foundation, Inc.
+   Copyright (C) 1992,93,94,95,96,98,99,2000,01,02,04
+       Free Software Foundation, Inc.
    Written by Roland McGrath.
 
    Can exec ELF format directly.
@@ -738,7 +738,6 @@ static error_t
 do_exec (file_t file,
         task_t oldtask,
         int flags,
-        char *filename,
         char *argv, mach_msg_type_number_t argvlen, boolean_t argv_copy,
         char *envp, mach_msg_type_number_t envplen, boolean_t envp_copy,
         mach_port_t *dtable, mach_msg_type_number_t dtablesize,
@@ -797,7 +796,7 @@ do_exec (file_t file,
     {
       /* Check for a #! executable file.  */
       check_hashbang (&e,
-                     file, oldtask, flags, filename,
+                     file, oldtask, flags,
                      argv, argvlen, argv_copy,
                      envp, envplen, envp_copy,
                      dtable, dtablesize, dtable_copy,
@@ -1357,7 +1356,6 @@ do_exec (file_t file,
   return e.error;
 }
 
-/* Deprecated.  */
 kern_return_t
 S_exec_exec (struct trivfs_protid *protid,
             file_t file,
@@ -1374,51 +1372,13 @@ S_exec_exec (struct trivfs_protid *protid,
             mach_port_t *deallocnames, mach_msg_type_number_t ndeallocnames,
             mach_port_t *destroynames, mach_msg_type_number_t ndestroynames)
 {
-  return S_exec_exec_file_name (protid,
-                               file,
-                               oldtask,
-                               flags,
-                               "",
-                               argv, argvlen, argv_copy,
-                               envp, envplen, envp_copy,
-                               dtable, dtablesize,
-                               dtable_copy,
-                               portarray, nports,
-                               portarray_copy,
-                               intarray, nints,
-                               intarray_copy,
-                               deallocnames, ndeallocnames,
-                               destroynames, ndestroynames);
-}
-
-kern_return_t
-S_exec_exec_file_name (struct trivfs_protid *protid,
-                      file_t file,
-                      task_t oldtask,
-                      int flags,
-                      char *filename,
-                      char *argv, mach_msg_type_number_t argvlen,
-                      boolean_t argv_copy,
-                      char *envp, mach_msg_type_number_t envplen,
-                      boolean_t envp_copy,
-                      mach_port_t *dtable, mach_msg_type_number_t dtablesize,
-                      boolean_t dtable_copy,
-                      mach_port_t *portarray, mach_msg_type_number_t nports,
-                      boolean_t portarray_copy,
-                      int *intarray, mach_msg_type_number_t nints,
-                      boolean_t intarray_copy,
-                      mach_port_t *deallocnames,
-                      mach_msg_type_number_t ndeallocnames,
-                      mach_port_t *destroynames,
-                      mach_msg_type_number_t ndestroynames)
-{
   if (! protid)
     return EOPNOTSUPP;
 
   /* There were no user-specified exec servers,
      or none of them could be found.  */
 
-  return do_exec (file, oldtask, flags, filename,
+  return do_exec (file, oldtask, flags,
                  argv, argvlen, argv_copy,
                  envp, envplen, envp_copy,
                  dtable, dtablesize, dtable_copy,
diff --git a/exec/hashexec.c b/exec/hashexec.c
index 3f6f916..5641218 100644
--- a/exec/hashexec.c
+++ b/exec/hashexec.c
@@ -1,6 +1,5 @@
 /* GNU Hurd standard exec server, #! script execution support.
-   Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2002, 2010
-   Free Software Foundation, Inc.
+   Copyright (C) 1995,96,97,98,99,2000,02 Free Software Foundation, Inc.
    Written by Roland McGrath.
 
 This file is part of the GNU Hurd.
@@ -24,9 +23,6 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 
02139, USA.  */
 #include <unistd.h>
 #include <envz.h>
 #include <sys/param.h>
-#ifdef HAVE_FILE_EXEC_FILE_NAME
-#include <hurd/fs_experimental.h>
-#endif
 
 /* This is called to check E for a #! interpreter specification.  E has
    already been prepared (successfully) and checked (unsuccessfully).  If
@@ -39,7 +35,6 @@ check_hashbang (struct execdata *e,
                file_t file,
                task_t oldtask,
                int flags,
-               char *file_name_exec,
                char *argv, u_int argvlen, boolean_t argv_copy,
                char *envp, u_int envplen, boolean_t envp_copy,
                mach_port_t *dtable, u_int dtablesize, boolean_t dtable_copy,
@@ -230,13 +225,10 @@ check_hashbang (struct execdata *e,
            file_name = NULL;
          else if (! (flags & EXEC_SECURE))
            {
-             /* Try to figure out the file's name.  If FILE_NAME_EXEC
-                is not NULL and not the empty string, then it's the
-                file's name.  Otherwise we guess that if ARGV[0]
-                contains a slash, it might be the name of the file;
-                and that if it contains no slash, looking for files
-                named by ARGV[0] in the `PATH' environment variable
-                might find it.  */
+             /* Try to figure out the file's name.  We guess that if ARGV[0]
+                contains a slash, it might be the name of the file; and that
+                if it contains no slash, looking for files named by ARGV[0] in
+                the `PATH' environment variable might find it.  */
 
              error_t error;
              char *name;
@@ -272,58 +264,48 @@ check_hashbang (struct execdata *e,
                  return err;
                }
 
-             if (file_name_exec && file_name_exec[0] != '\0')
-               name = file_name_exec;
-             else
+             error = io_identity (file, &fileid, &filefsid, &fileno);
+             if (error)
+               goto out;
+             mach_port_deallocate (mach_task_self (), filefsid);
+
+             if (memchr (argv, '\0', argvlen) == NULL)
                {
-                 /* Try to locate the file.  */
-                 error = io_identity (file, &fileid, &filefsid, &fileno);
-                 if (error)
-                   goto out;
-                 mach_port_deallocate (mach_task_self (), filefsid);
+                 name = alloca (argvlen + 1);
+                 bcopy (argv, name, argvlen);
+                 name[argvlen] = '\0';
+               }
+             else
+               name = argv;
+
+             if (strchr (name, '/') != NULL)
+               error = lookup (name, 0, &name_file);
+             else if ((error = hurd_catch_signal
+                       (sigmask (SIGBUS) | sigmask (SIGSEGV),
+                        (vm_address_t) envp, (vm_address_t) envp + envplen,
+                        &search_path, SIG_ERR)))
+               name_file = MACH_PORT_NULL;
 
-                 if (memchr (argv, '\0', argvlen) == NULL)
+             if (!error && name_file != MACH_PORT_NULL)
+               {
+                 mach_port_t id, fsid;
+                 ino_t ino;
+                 error = io_identity (name_file, &id, &fsid, &ino);
+                 mach_port_deallocate (mach_task_self (), name_file);
+                 if (!error)
                    {
-                     name = alloca (argvlen + 1);
-                     bcopy (argv, name, argvlen);
-                     name[argvlen] = '\0';
+                     mach_port_deallocate (mach_task_self (), fsid);
+                     mach_port_deallocate (mach_task_self (), id);
                    }
-                 else
-                   name = argv;
-
-                 if (strchr (name, '/') != NULL)
-                   error = lookup (name, 0, &name_file);
-                 else if ((error = hurd_catch_signal
-                           (sigmask (SIGBUS) | sigmask (SIGSEGV),
-                            (vm_address_t) envp, (vm_address_t) envp + envplen,
-                            &search_path, SIG_ERR)))
-                   name_file = MACH_PORT_NULL;
-
-                 /* See whether we found the right file.  */
-                 if (!error && name_file != MACH_PORT_NULL)
+                 if (!error && id == fileid)
                    {
-                     mach_port_t id, fsid;
-                     ino_t ino;
-                     error = io_identity (name_file, &id, &fsid, &ino);
-                     mach_port_deallocate (mach_task_self (), name_file);
-                     if (!error)
-                       {
-                         mach_port_deallocate (mach_task_self (), fsid);
-                         mach_port_deallocate (mach_task_self (), id);
-                         if (id != fileid)
-                           error = 1;
-                       }
+                     file_name = name;
+                     free_file_name = free_name;
                    }
+                 else if (free_name)
+                   free (name);
                }
 
-             if (!error)
-               {
-                 file_name = name;
-                 free_file_name = free_name;
-               }
-             else if (free_name)
-               free (name);
-
              mach_port_deallocate (mach_task_self (), fileid);
            }
 
@@ -433,32 +415,16 @@ check_hashbang (struct execdata *e,
     /* We cannot open the interpreter file to execute it.  Lose!  */
     return;
 
-#ifdef HAVE_FILE_EXEC_FILE_NAME
   /* Execute the interpreter program.  */
-  e->error = file_exec_file_name (interp_file,
-                                 oldtask, flags, interp,
-                                 new_argv, new_argvlen, envp, envplen,
-                                 new_dtable ?: dtable,
-                                 MACH_MSG_TYPE_COPY_SEND,
-                                 new_dtable ? new_dtablesize : dtablesize,
-                                 portarray, MACH_MSG_TYPE_COPY_SEND, nports,
-                                 intarray, nints,
-                                 deallocnames, ndeallocnames,
-                                 destroynames, ndestroynames);
-  /* For backwards compatibility.  Just drop it when we kill file_exec.  */
-  if (e->error == MIG_BAD_ID)
-#endif
-    e->error = file_exec (interp_file,
-                         oldtask, flags,
-                         new_argv, new_argvlen, envp, envplen,
-                         new_dtable ?: dtable, MACH_MSG_TYPE_COPY_SEND,
-                         new_dtable ? new_dtablesize : dtablesize,
-                         portarray, MACH_MSG_TYPE_COPY_SEND, nports,
-                         intarray, nints,
-                         deallocnames, ndeallocnames,
-                         destroynames, ndestroynames);
-
-
+  e->error = file_exec (interp_file,
+                       oldtask, flags,
+                       new_argv, new_argvlen, envp, envplen,
+                       new_dtable ?: dtable, MACH_MSG_TYPE_COPY_SEND,
+                       new_dtable ? new_dtablesize : dtablesize,
+                       portarray, MACH_MSG_TYPE_COPY_SEND, nports,
+                       intarray, nints,
+                       deallocnames, ndeallocnames,
+                       destroynames, ndestroynames);
   mach_port_deallocate (mach_task_self (), interp_file);
   munmap (new_argv, new_argvlen);
 
diff --git a/exec/main.c b/exec/main.c
index c885466..41b1db4 100644
--- a/exec/main.c
+++ b/exec/main.c
@@ -50,12 +50,10 @@ static int
 exec_demuxer (mach_msg_header_t *inp, mach_msg_header_t *outp)
 {
   mig_routine_t exec_server_routine (mach_msg_header_t *);
-  mig_routine_t exec_experimental_server_routine (mach_msg_header_t *);
   mig_routine_t exec_startup_server_routine (mach_msg_header_t *);
 
   mig_routine_t routine;
   if ((routine = exec_server_routine (inp)) ||
-      (routine = exec_experimental_server_routine (inp)) ||
       (routine = NULL, trivfs_demuxer (inp, outp)) ||
       (routine = exec_startup_server_routine (inp)))
     {
diff --git a/exec/priv.h b/exec/priv.h
index cfd73be..85e03ae 100644
--- a/exec/priv.h
+++ b/exec/priv.h
@@ -1,6 +1,5 @@
 /* GNU Hurd standard exec server, private declarations.
-   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1999, 2000, 2002, 2004,
-   2010 Free Software Foundation, Inc.
+   Copyright (C) 1992,93,94,95,96,99,2000,02, 04 Free Software Foundation, Inc.
    Written by Roland McGrath.
 
 This file is part of the GNU Hurd.
@@ -33,7 +32,6 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 
02139, USA.  */
 #include <link.h>              /* This gives us the ElfW macro.  */
 #include <fcntl.h>
 #include "exec_S.h"
-#include "exec_experimental_S.h"
 
 
 #ifndef exec_priv_h
@@ -136,7 +134,6 @@ void check_hashbang (struct execdata *e,
                     file_t file,
                     task_t oldtask,
                     int flags,
-                    char *filename,
                     char *argv, u_int argvlen, boolean_t argv_copy,
                     char *envp, u_int envplen, boolean_t envp_copy,
                     mach_port_t *dtable, u_int dtablesize,
diff --git a/hurd/exec.defs b/hurd/exec.defs
index 7433cc2..2888fb1 100644
--- a/hurd/exec.defs
+++ b/hurd/exec.defs
@@ -1,6 +1,5 @@
 /* Interface definitions for the exec servers.
-   Copyright (C) 1991, 1992, 1993, 1994, 1995, 2001, 2010
-   Free Software Foundation, Inc.
+   Copyright (C) 1991,92,93,94,95,2001 Free Software Foundation, Inc.
 
 This file is part of the GNU Hurd.
 
@@ -30,7 +29,6 @@ EXEC_IMPORTS
 
 INTR_INTERFACE
 
-/* Deprecated: use exec_exec_file_name instead.  */
 routine exec_exec (
        execserver: file_t;
        file: mach_port_send_t;
diff --git a/hurd/fs.defs b/hurd/fs.defs
index 1aced0c..52d83bd 100644
--- a/hurd/fs.defs
+++ b/hurd/fs.defs
@@ -1,6 +1,5 @@
 /* Definitions for the filesystem interface.
-   Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2002, 2010
-   Free Software Foundation, Inc.
+   Copyright (C) 1994,95,96,97,98,99,2002 Free Software Foundation, Inc.
 
 This file is part of the GNU Hurd.
 
@@ -36,8 +35,7 @@ INTR_INTERFACE
 /* Overlay a task with a file.  Necessary initialization, including
    authentication changes associated with set[ug]id execution must be
    handled by the filesystem.  Filesystems normally implement this by
-   using exec_newtask or exec_loadtask as appropriate.
-   Deprecated: use file_exec_file_name instead.  */
+   using exec_newtask or exec_loadtask as appropriate.  */
 routine file_exec (
        exec_file: file_t;
        RPT
@@ -131,8 +129,8 @@ routine file_lock_stat (
    (regardless of the current open modes for this port).  ALLOWED is a
    bitwise OR of O_READ, O_WRITE, and O_EXEC.  This is not necessarily the
    same as what an open or exec would allow; O_EXEC is set for root even if
-   no executable bits are on (in which case file_exec_file_name should fail)
-   and O_WRITE is set a directory can be modified, even though it can't be
+   no executable bits are on (in which case file_exec should fail) and
+   O_WRITE is set a directory can be modified, even though it can't be
    written directly.  */
 routine file_check_access (
        file: file_t;
diff --git a/hurd/hurd_types.h b/hurd/hurd_types.h
index 5e470eb..7d1bb73 100644
--- a/hurd/hurd_types.h
+++ b/hurd/hurd_types.h
@@ -1,6 +1,5 @@
 /* C declarations for Hurd server interfaces
-   Copyright (C) 1993, 1994, 1995, 1996, 1998, 1999, 2001, 2002,
-   2010 Free Software Foundation, Inc.
+   Copyright (C) 1993,94,95,96,98,99,2001,02 Free Software Foundation, Inc.
 
 This file is part of the GNU Hurd.
 
@@ -79,7 +78,7 @@ typedef struct timespec timespec_t;
 /* Many such parameters and flags are also defined in various libc
    headers. */
 
-/* Bits for flags in fs.defs:file_exec_file_name and exec.defs:exec_* calls: */
+/* Bits for flags in fs.defs:file_exec and exec.defs:exec_* calls: */
 #define EXEC_NEWTASK   0x00000001 /* Create new task; kill old one.  */
 #define EXEC_SECURE    0x00000002 /* Use secure values of portarray, etc. */
 #define EXEC_DEFAULTS  0x00000004 /* Use defaults for unspecified ports.  */
@@ -345,7 +344,7 @@ typedef int *procinfo_t;
 #define FSTYPE_MEMFS   0x00000019 /* In-core filesystem */
 #define FSTYPE_ISO9660 0x0000001a /* ISO9660 */
 
-/* Standard port assignments for file_exec_file_name and exec_* */
+/* Standard port assignments for file_exec and exec_* */
 enum
   {
     INIT_PORT_CWDIR,
@@ -359,7 +358,7 @@ enum
     INIT_PORT_MAX
   };
 
-/* Standard ints for file_exec_file_name and exec_* */
+/* Standard ints for file_exec and exec_* */
 enum
   {
     INIT_UMASK,
diff --git a/hurd/process.defs b/hurd/process.defs
index 8c17666..bf90556 100644
--- a/hurd/process.defs
+++ b/hurd/process.defs
@@ -373,11 +373,7 @@ routine proc_getnports (
 
 /*** Routines related to early server bootstrapping ***/
 
-/* Set the task of process HURD_PID_INIT. Only the startup process
-   HURD_PID_STARTUP may use this interface.  */
-routine proc_set_init_task (
-       process: process_t;
-       task: task_t);
+skip;  /* Reserved for proc_set_init_task */
 
 /* Inform the process server that the process is important.  */
 routine proc_mark_important (
diff --git a/hurd/process_request.defs b/hurd/process_request.defs
index cb8f083..38e7146 100644
--- a/hurd/process_request.defs
+++ b/hurd/process_request.defs
@@ -374,10 +374,7 @@ simpleroutine proc_getnports_request (
 
 /*** Routines related to early server bootstrapping ***/
 
-simpleroutine proc_set_init_task_request (
-       process: process_t;
-       ureplyport reply: reply_port_t;
-       task: task_t);
+skip;  /* Reserved for proc_set_init_task */
 
 /* Inform the process server that the process is important.  */
 simpleroutine proc_mark_important_request (
diff --git a/include/pids.h b/include/pids.h
index dff7635..22415f4 100644
--- a/include/pids.h
+++ b/include/pids.h
@@ -22,9 +22,8 @@
 #ifndef _HURD_PROCESSES_H
 #define _HURD_PROCESSES_H
 
-#define HURD_PID_INIT          1
-#define HURD_PID_STARTUP       2
-#define HURD_PID_KERNEL                3
-#define HURD_PID_PROC          4
+#define HURD_PID_STARTUP       1
+#define HURD_PID_KERNEL                2
+#define HURD_PID_PROC          3
 
 #endif  /* _HURD_PROCESSES_H */
diff --git a/init/Makefile b/init/Makefile
index 5ae3b50..ffb82ff 100644
--- a/init/Makefile
+++ b/init/Makefile
@@ -21,7 +21,7 @@ makemode := server
 SRCS = init.c stubs.c
 OBJS = $(SRCS:.c=.o) \
        startupServer.o notifyServer.o startup_replyUser.o msgServer.o \
-       startup_notifyUser.o processUser.o
+       startup_notifyUser.o
 target = init
 HURDLIBS = shouldbeinlibc
 
diff --git a/init/init.c b/init/init.c
index b49c5f2..b7b40bd 100644
--- a/init/init.c
+++ b/init/init.c
@@ -1,7 +1,7 @@
 /* Start and maintain hurd core servers and system run state
 
    Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-     2005, 2008, 2010, 2013 Free Software Foundation, Inc.
+     2005, 2008, 2013 Free Software Foundation, Inc.
    This file is part of the GNU Hurd.
 
    The GNU Hurd is free software; you can redistribute it and/or modify
@@ -24,9 +24,6 @@
    one file. */
 #include <hurd.h>
 #include <hurd/fs.h>
-#ifdef HAVE_FILE_EXEC_FILE_NAME
-#include <hurd/fs_experimental.h>
-#endif
 #include <hurd/fsys.h>
 #include <device/device.h>
 #include <stdio.h>
@@ -379,28 +376,13 @@ run (const char *server, mach_port_t *ports, task_t *task)
              printf ("Pausing for %s\n", prog);
              getchar ();
            }
-#ifdef HAVE_FILE_EXEC_FILE_NAME
-         err = file_exec_file_name (file, *task, 0, (char *)prog,
-                                    (char *)prog,
-                                    strlen (prog) + 1, /* Args.  */
-                                    startup_envz, startup_envz_len,
-                                    default_dtable,
-                                    MACH_MSG_TYPE_COPY_SEND, 3,
-                                    ports, MACH_MSG_TYPE_COPY_SEND,
-                                    INIT_PORT_MAX,
-                                    default_ints, INIT_INT_MAX,
-                                    NULL, 0, NULL, 0);
-         /* For backwards compatibility.  Just drop it when we kill
-            file_exec.  */
-         if (err == MIG_BAD_ID)
-#endif
-           err = file_exec (file, *task, 0,
-                            (char *)prog, strlen (prog) + 1, /* Args.  */
-                            startup_envz, startup_envz_len,
-                            default_dtable, MACH_MSG_TYPE_COPY_SEND, 3,
-                            ports, MACH_MSG_TYPE_COPY_SEND, INIT_PORT_MAX,
-                            default_ints, INIT_INT_MAX,
-                            NULL, 0, NULL, 0);
+         err = file_exec (file, *task, 0,
+                          (char *)prog, strlen (prog) + 1, /* Args.  */
+                          startup_envz, startup_envz_len,
+                          default_dtable, MACH_MSG_TYPE_COPY_SEND, 3,
+                          ports, MACH_MSG_TYPE_COPY_SEND, INIT_PORT_MAX,
+                          default_ints, INIT_INT_MAX,
+                          NULL, 0, NULL, 0);
          if (!err)
            break;
 
@@ -487,27 +469,14 @@ run_for_real (char *filename, char *args, int arglen, 
mach_port_t ctty,
     ++progname;
   else
     progname = filename;
-#ifdef HAVE_FILE_EXEC_FILE_NAME
-  err = file_exec_file_name (file, task, 0, filename,
-                            args, arglen,
-                            startup_envz, startup_envz_len,
-                            default_dtable, MACH_MSG_TYPE_COPY_SEND, 3,
-                            default_ports, MACH_MSG_TYPE_COPY_SEND,
-                            INIT_PORT_MAX,
-                            default_ints, INIT_INT_MAX,
-                            NULL, 0, NULL, 0);
-  /* For backwards compatibility.  Just drop it when we kill file_exec.  */
-  if (err == MIG_BAD_ID)
-#endif
-    err = file_exec (file, task, 0,
-                    args, arglen,
-                    startup_envz, startup_envz_len,
-                    default_dtable, MACH_MSG_TYPE_COPY_SEND, 3,
-                    default_ports, MACH_MSG_TYPE_COPY_SEND,
-                    INIT_PORT_MAX,
-                    default_ints, INIT_INT_MAX,
-                    NULL, 0, NULL, 0);
-
+  err = file_exec (file, task, 0,
+                  args, arglen,
+                  startup_envz, startup_envz_len,
+                  default_dtable, MACH_MSG_TYPE_COPY_SEND, 3,
+                  default_ports, MACH_MSG_TYPE_COPY_SEND,
+                  INIT_PORT_MAX,
+                  default_ints, INIT_INT_MAX,
+                  NULL, 0, NULL, 0);
   mach_port_deallocate (mach_task_self (), default_ports[INIT_PORT_PROC]);
   mach_port_deallocate (mach_task_self (), task);
   if (ctty != MACH_PORT_NULL)
@@ -927,7 +896,7 @@ frob_kernel_process (void)
 /** Running userland.  **/
 
 /* In the "split-init" setup, we just run a single program (usually
-   /etc/hurd/runsystem) that is not expected to ever exit (or stop).
+   /libexec/runsystem) that is not expected to ever exit (or stop).
    If it does exit (or can't be started), we go to an emergency single-user
    shell as a fallback.  */
 
@@ -1044,7 +1013,7 @@ process_signal (int signo)
     }
 }
 
-/* Start the child program PROG.  It is run via /sbin/console-run
+/* Start the child program PROG.  It is run via /libexec/console-run
    with the given additional arguments.  */
 static int
 start_child (const char *prog, char **progargs)
@@ -1056,7 +1025,7 @@ start_child (const char *prog, char **progargs)
 
   if (progargs == 0)
     {
-      const char *argv[] = { "/sbin/console-run", prog, 0 };
+      const char *argv[] = { "/libexec/console-run", prog, 0 };
       err = argz_create ((char **) argv, &args, &arglen);
     }
   else
@@ -1066,7 +1035,7 @@ start_child (const char *prog, char **progargs)
        ++argc;
       {
        const char *argv[2 + argc + 1];
-       argv[0] = "/sbin/console-run";
+       argv[0] = "/libexec/console-run";
        argv[1] = prog;
        argv[2 + argc] = 0;
        while (argc-- > 0)
@@ -1089,7 +1058,7 @@ start_child (const char *prog, char **progargs)
               NULL, 0, /* OSF Mach */
 #endif
               0, &child_task);
-  proc_set_init_task (procserver, child_task);
+  proc_child (procserver, child_task);
   proc_task2pid (procserver, child_task, &child_pid);
   proc_task2proc (procserver, child_task, &default_ports[INIT_PORT_PROC]);
 
@@ -1099,26 +1068,13 @@ start_child (const char *prog, char **progargs)
       getchar ();
     }
 
-#ifdef HAVE_FILE_EXEC_FILE_NAME
-  err = file_exec_file_name (file, child_task, 0, args,
-                            args, arglen,
-                            startup_envz, startup_envz_len,
-                            NULL, MACH_MSG_TYPE_COPY_SEND, 0, /* No fds.  */
-                            default_ports, MACH_MSG_TYPE_COPY_SEND,
-                            INIT_PORT_MAX,
-                            default_ints, INIT_INT_MAX,
-                            NULL, 0, NULL, 0);
-  /* For backwards compatibility.  Just drop it when we kill file_exec.  */
-  if (err == MIG_BAD_ID)
-#endif
-    err = file_exec (file, child_task, 0,
-                    args, arglen,
-                    startup_envz, startup_envz_len,
-                    NULL, MACH_MSG_TYPE_COPY_SEND, 0, /* No fds.  */
-                    default_ports, MACH_MSG_TYPE_COPY_SEND, INIT_PORT_MAX,
-                    default_ints, INIT_INT_MAX,
-                    NULL, 0, NULL, 0);
-
+  err = file_exec (file, child_task, 0,
+                  args, arglen,
+                  startup_envz, startup_envz_len,
+                  NULL, MACH_MSG_TYPE_COPY_SEND, 0, /* No fds.  */
+                  default_ports, MACH_MSG_TYPE_COPY_SEND, INIT_PORT_MAX,
+                  default_ints, INIT_INT_MAX,
+                  NULL, 0, NULL, 0);
   proc_mark_important (default_ports[INIT_PORT_PROC]);
   mach_port_deallocate (mach_task_self (), default_ports[INIT_PORT_PROC]);
   mach_port_deallocate (mach_task_self (), file);
@@ -1139,8 +1095,7 @@ launch_something (const char *why)
   static unsigned int try;
   static const char *const tries[] =
   {
-    "/etc/hurd/runsystem",
-    "/etc/hurd/runsystem.gnu",
+    "/libexec/runsystem",
     _PATH_BSHELL,
     "/bin/shd",                        /* XXX */
   };
diff --git a/libdde-linux26/contrib/include/linux/etherdevice.h 
b/libdde-linux26/contrib/include/linux/etherdevice.h
index fbb3836..1cb0f0b 100644
--- a/libdde-linux26/contrib/include/linux/etherdevice.h
+++ b/libdde-linux26/contrib/include/linux/etherdevice.h
@@ -182,33 +182,6 @@ static inline unsigned compare_ether_addr_64bits(const u8 
addr1[6+2],
        return compare_ether_addr(addr1, addr2);
 #endif
 }
-
-/**
- * is_etherdev_addr - Tell if given Ethernet address belongs to the device.
- * @dev: Pointer to a device structure
- * @addr: Pointer to a six-byte array containing the Ethernet address
- *
- * Compare passed address with all addresses of the device. Return true if the
- * address if one of the device addresses.
- *
- * Note that this function calls compare_ether_addr_64bits() so take care of
- * the right padding.
- */
-static inline bool is_etherdev_addr(const struct net_device *dev,
-                                   const u8 addr[6 + 2])
-{
-       struct netdev_hw_addr *ha;
-       int res = 1;
-
-       rcu_read_lock();
-       for_each_dev_addr(dev, ha) {
-               res = compare_ether_addr_64bits(addr, ha->addr);
-               if (!res)
-                       break;
-       }
-       rcu_read_unlock();
-       return !res;
-}
 #endif /* __KERNEL__ */
 
 #endif /* _LINUX_ETHERDEVICE_H */
diff --git a/libdde-linux26/contrib/include/linux/ethtool.h 
b/libdde-linux26/contrib/include/linux/ethtool.h
index 45f34dc..27c67a5 100644
--- a/libdde-linux26/contrib/include/linux/ethtool.h
+++ b/libdde-linux26/contrib/include/linux/ethtool.h
@@ -25,14 +25,11 @@ struct ethtool_cmd {
        __u8    phy_address;
        __u8    transceiver;    /* Which transceiver to use */
        __u8    autoneg;        /* Enable or disable autonegotiation */
-       __u8    mdio_support;
        __u32   maxtxpkt;       /* Tx pkts before generating tx int */
        __u32   maxrxpkt;       /* Rx pkts before generating rx int */
        __u16   speed_hi;
-       __u8    eth_tp_mdix;
-       __u8    reserved2;
-       __u32   lp_advertising; /* Features the link partner advertises */
-       __u32   reserved[2];
+       __u16   reserved2;
+       __u32   reserved[3];
 };
 
 static inline void ethtool_cmd_speed_set(struct ethtool_cmd *ep,
@@ -472,13 +469,6 @@ struct ethtool_ops {
 #define        ETHTOOL_SRXFH           0x0000002a /* Set RX flow hash 
configuration */
 #define ETHTOOL_GGRO           0x0000002b /* Get GRO enable (ethtool_value) */
 #define ETHTOOL_SGRO           0x0000002c /* Set GRO enable (ethtool_value) */
-#define        ETHTOOL_GRXRINGS        0x0000002d /* Get RX rings available 
for LB */
-#define        ETHTOOL_GRXCLSRLCNT     0x0000002e /* Get RX class rule count */
-#define        ETHTOOL_GRXCLSRULE      0x0000002f /* Get RX classification 
rule */
-#define        ETHTOOL_GRXCLSRLALL     0x00000030 /* Get all RX classification 
rule */
-#define        ETHTOOL_SRXCLSRLDEL     0x00000031 /* Delete RX classification 
rule */
-#define        ETHTOOL_SRXCLSRLINS     0x00000032 /* Insert RX classification 
rule */
-#define        ETHTOOL_FLASHDEV        0x00000033 /* Flash firmware to device 
*/
 
 /* compatibility with older code */
 #define SPARC_ETH_GSET         ETHTOOL_GSET
@@ -501,11 +491,6 @@ struct ethtool_ops {
 #define SUPPORTED_Pause                        (1 << 13)
 #define SUPPORTED_Asym_Pause           (1 << 14)
 #define SUPPORTED_2500baseX_Full       (1 << 15)
-#define SUPPORTED_Backplane            (1 << 16)
-#define SUPPORTED_1000baseKX_Full      (1 << 17)
-#define SUPPORTED_10000baseKX4_Full    (1 << 18)
-#define SUPPORTED_10000baseKR_Full     (1 << 19)
-#define SUPPORTED_10000baseR_FEC       (1 << 20)
 
 /* Indicates what features are advertised by the interface. */
 #define ADVERTISED_10baseT_Half                (1 << 0)
@@ -524,11 +509,6 @@ struct ethtool_ops {
 #define ADVERTISED_Pause               (1 << 13)
 #define ADVERTISED_Asym_Pause          (1 << 14)
 #define ADVERTISED_2500baseX_Full      (1 << 15)
-#define ADVERTISED_Backplane           (1 << 16)
-#define ADVERTISED_1000baseKX_Full     (1 << 17)
-#define ADVERTISED_10000baseKX4_Full   (1 << 18)
-#define ADVERTISED_10000baseKR_Full    (1 << 19)
-#define ADVERTISED_10000baseR_FEC      (1 << 20)
 
 /* The following are all involved in forcing a particular link
  * mode for the device for setting things.  When getting the
@@ -553,7 +533,6 @@ struct ethtool_ops {
 #define PORT_MII               0x02
 #define PORT_FIBRE             0x03
 #define PORT_BNC               0x04
-#define PORT_OTHER             0xff
 
 /* Which transceiver to use. */
 #define XCVR_INTERNAL          0x00
@@ -568,11 +547,6 @@ struct ethtool_ops {
 #define AUTONEG_DISABLE                0x00
 #define AUTONEG_ENABLE         0x01
 
-/* Mode MDI or MDI-X */
-#define ETH_TP_MDI_INVALID     0x00
-#define ETH_TP_MDI             0x01
-#define ETH_TP_MDI_X           0x02
-
 /* Wake-On-Lan options. */
 #define WAKE_PHY               (1 << 0)
 #define WAKE_UCAST             (1 << 1)
@@ -591,11 +565,6 @@ struct ethtool_ops {
 #define        UDP_V6_FLOW     0x06
 #define        SCTP_V6_FLOW    0x07
 #define        AH_ESP_V6_FLOW  0x08
-#define        AH_V4_FLOW      0x09
-#define        ESP_V4_FLOW     0x0a
-#define        AH_V6_FLOW      0x0b
-#define        ESP_V6_FLOW     0x0c
-#define        IP_USER_FLOW    0x0d
 
 /* L3-L4 network traffic flow hash options */
 #define        RXH_DEV_PORT    (1 << 0)
@@ -608,6 +577,5 @@ struct ethtool_ops {
 #define        RXH_L4_B_2_3    (1 << 7) /* dst port in case of TCP/UDP/SCTP */
 #define        RXH_DISCARD     (1 << 31)
 
-#define        RX_CLS_FLOW_DISC        0xffffffffffffffffULL
 
 #endif /* _LINUX_ETHTOOL_H */
diff --git a/libdde-linux26/contrib/include/linux/kernel.h 
b/libdde-linux26/contrib/include/linux/kernel.h
index 0bded10..7fa3718 100644
--- a/libdde-linux26/contrib/include/linux/kernel.h
+++ b/libdde-linux26/contrib/include/linux/kernel.h
@@ -353,8 +353,6 @@ static inline char *pack_hex_byte(char *buf, u8 byte)
         printk(KERN_NOTICE pr_fmt(fmt), ##__VA_ARGS__)
 #define pr_info(fmt, ...) \
         printk(KERN_INFO pr_fmt(fmt), ##__VA_ARGS__)
-#define pr_cont(fmt, ...) \
-        printk(KERN_CONT fmt, ##__VA_ARGS__)
 
 /* If you are writing a driver, please use dev_dbg instead */
 #if defined(DEBUG)
diff --git a/libdde-linux26/contrib/include/linux/netdevice.h 
b/libdde-linux26/contrib/include/linux/netdevice.h
index 4414989..6593667 100644
--- a/libdde-linux26/contrib/include/linux/netdevice.h
+++ b/libdde-linux26/contrib/include/linux/netdevice.h
@@ -37,7 +37,6 @@
 #include <asm/byteorder.h>
 
 #include <linux/device.h>
-#include <linux/rculist.h>
 #include <linux/percpu.h>
 #include <linux/dmaengine.h>
 #include <linux/workqueue.h>
@@ -82,19 +81,17 @@ struct wireless_dev;
 #define net_xmit_eval(e)       ((e) == NET_XMIT_CN? 0 : (e))
 #define net_xmit_errno(e)      ((e) != NET_XMIT_CN ? -ENOBUFS : 0)
 
-/* Driver transmit return codes */
-enum netdev_tx {
-       NETDEV_TX_OK = 0,       /* driver took care of packet */
-       NETDEV_TX_BUSY,         /* driver tx path was busy*/
-       NETDEV_TX_LOCKED = -1,  /* driver tx lock was already taken */
-};
-typedef enum netdev_tx netdev_tx_t;
-
 #endif
 
 #define MAX_ADDR_LEN   32              /* Largest hardware address length */
 
+/* Driver transmit return codes */
+#define NETDEV_TX_OK 0         /* driver took care of packet */
+#define NETDEV_TX_BUSY 1       /* driver tx path was busy*/
+#define NETDEV_TX_LOCKED -1    /* driver tx lock was already taken */
+
 #ifdef  __KERNEL__
+
 /*
  *     Compute the worst case header length according to the protocols
  *     used.
@@ -212,24 +209,6 @@ struct dev_addr_list
 #define dmi_users      da_users
 #define dmi_gusers     da_gusers
 
-struct netdev_hw_addr {
-       struct list_head        list;
-       unsigned char           addr[MAX_ADDR_LEN];
-       unsigned char           type;
-#define NETDEV_HW_ADDR_T_LAN           1
-#define NETDEV_HW_ADDR_T_SAN           2
-#define NETDEV_HW_ADDR_T_SLAVE         3
-#define NETDEV_HW_ADDR_T_UNICAST       4
-       int                     refcount;
-       bool                    synced;
-       struct rcu_head         rcu_head;
-};
-
-struct netdev_hw_addr_list {
-       struct list_head        list;
-       int                     count;
-};
-
 struct hh_cache
 {
        struct hh_cache *hh_next;       /* Next entry                        */
@@ -462,10 +441,6 @@ struct netdev_queue {
        spinlock_t              _xmit_lock;
        int                     xmit_lock_owner;
        struct Qdisc            *qdisc_sleeping;
-       /*
-        * please use this field instead of dev->trans_start
-        */
-       unsigned long           trans_start;
 } ____cacheline_aligned_in_smp;
 
 
@@ -492,11 +467,9 @@ struct netdev_queue {
  *     This function is called when network device transistions to the down
  *     state.
  *
- * netdev_tx_t (*ndo_start_xmit)(struct sk_buff *skb,
- *                               struct net_device *dev);
+ * int (*ndo_start_xmit)(struct sk_buff *skb, struct net_device *dev);
  *     Called when a packet needs to be transmitted.
- *     Must return NETDEV_TX_OK , NETDEV_TX_BUSY.
- *        (can also return NETDEV_TX_LOCKED iff NETIF_F_LLTX)
+ *     Must return NETDEV_TX_OK , NETDEV_TX_BUSY, or NETDEV_TX_LOCKED,
  *     Required can not be NULL.
  *
  * u16 (*ndo_select_queue)(struct net_device *dev, struct sk_buff *skb);
@@ -567,7 +540,7 @@ struct net_device_ops {
        void                    (*ndo_uninit)(struct net_device *dev);
        int                     (*ndo_open)(struct net_device *dev);
        int                     (*ndo_stop)(struct net_device *dev);
-       netdev_tx_t             (*ndo_start_xmit) (struct sk_buff *skb,
+       int                     (*ndo_start_xmit) (struct sk_buff *skb,
                                                   struct net_device *dev);
        u16                     (*ndo_select_queue)(struct net_device *dev,
                                                    struct sk_buff *skb);
@@ -751,10 +724,10 @@ struct net_device
        unsigned char           addr_len;       /* hardware address length      
*/
        unsigned short          dev_id;         /* for shared network cards */
 
-       struct netdev_hw_addr_list      uc;     /* Secondary unicast
-                                                  mac addresses */
-       int                     uc_promisc;
        spinlock_t              addr_list_lock;
+       struct dev_addr_list    *uc_list;       /* Secondary unicast mac 
addresses */
+       int                     uc_count;       /* Number of installed ucasts   
*/
+       int                     uc_promisc;
        struct dev_addr_list    *mc_list;       /* Multicast mac addresses      
*/
        int                     mc_count;       /* Number of installed mcasts   
*/
        unsigned int            promiscuity;
@@ -780,12 +753,8 @@ struct net_device
  */
        unsigned long           last_rx;        /* Time of last Rx      */
        /* Interface address info used in eth_type_trans() */
-       unsigned char           *dev_addr;      /* hw address, (before bcast
-                                                  because most packets are
-                                                  unicast) */
-
-       struct netdev_hw_addr_list      dev_addrs; /* list of device
-                                                     hw addresses */
+       unsigned char           dev_addr[MAX_ADDR_LEN]; /* hw address, (before 
bcast 
+                                                          because most packets 
are unicast) */
 
        unsigned char           broadcast[MAX_ADDR_LEN];        /* hw bcast add 
*/
 
@@ -805,11 +774,6 @@ struct net_device
  * One part is mostly used on xmit path (device)
  */
        /* These may be needed for future network-power-down code. */
-
-       /*
-        * trans_start here is expensive for high speed devices on SMP,
-        * please use netdev_queue->trans_start instead.
-        */
        unsigned long           trans_start;    /* Time (in jiffies) of last Tx 
*/
 
        int                     watchdog_timeo; /* used by dev_watchdog() */
@@ -1486,8 +1450,6 @@ static inline int netif_carrier_ok(const struct 
net_device *dev)
        return !test_bit(__LINK_STATE_NOCARRIER, &dev->state);
 }
 
-extern unsigned long dev_trans_start(struct net_device *dev);
-
 extern void __netdev_watchdog_up(struct net_device *dev);
 
 extern void netif_carrier_on(struct net_device *dev);
@@ -1802,13 +1764,6 @@ static inline void netif_addr_unlock_bh(struct 
net_device *dev)
        spin_unlock_bh(&dev->addr_list_lock);
 }
 
-/*
- * dev_addrs walker. Should be used only for read access. Call with
- * rcu_read_lock held.
- */
-#define for_each_dev_addr(dev, ha) \
-               list_for_each_entry_rcu(ha, &dev->dev_addrs.list, list)
-
 /* These functions live elsewhere (drivers/net/net_init.c, but related) */
 
 extern void            ether_setup(struct net_device *dev);
@@ -1821,24 +1776,11 @@ extern struct net_device *alloc_netdev_mq(int 
sizeof_priv, const char *name,
        alloc_netdev_mq(sizeof_priv, name, setup, 1)
 extern int             register_netdev(struct net_device *dev);
 extern void            unregister_netdev(struct net_device *dev);
-
-/* Functions used for device addresses handling */
-extern int dev_addr_add(struct net_device *dev, unsigned char *addr,
-                       unsigned char addr_type);
-extern int dev_addr_del(struct net_device *dev, unsigned char *addr,
-                       unsigned char addr_type);
-extern int dev_addr_add_multiple(struct net_device *to_dev,
-                                struct net_device *from_dev,
-                                unsigned char addr_type);
-extern int dev_addr_del_multiple(struct net_device *to_dev,
-                                struct net_device *from_dev,
-                                unsigned char addr_type);
-
 /* Functions used for secondary unicast and multicast support */
 extern void            dev_set_rx_mode(struct net_device *dev);
 extern void            __dev_set_rx_mode(struct net_device *dev);
-extern int             dev_unicast_delete(struct net_device *dev, void *addr);
-extern int             dev_unicast_add(struct net_device *dev, void *addr);
+extern int             dev_unicast_delete(struct net_device *dev, void *addr, 
int alen);
+extern int             dev_unicast_add(struct net_device *dev, void *addr, int 
alen);
 extern int             dev_unicast_sync(struct net_device *to, struct 
net_device *from);
 extern void            dev_unicast_unsync(struct net_device *to, struct 
net_device *from);
 extern int             dev_mc_delete(struct net_device *dev, void *addr, int 
alen, int all);
diff --git a/libdde-linux26/contrib/include/linux/pci.h 
b/libdde-linux26/contrib/include/linux/pci.h
index c7fb660..7bd624b 100644
--- a/libdde-linux26/contrib/include/linux/pci.h
+++ b/libdde-linux26/contrib/include/linux/pci.h
@@ -256,7 +256,6 @@ struct pci_dev {
        unsigned int    ari_enabled:1;  /* ARI forwarding */
        unsigned int    is_managed:1;
        unsigned int    is_pcie:1;
-       unsigned int    needs_freset:1; /* Dev requires fundamental reset */
        unsigned int    state_saved:1;
        pci_dev_flags_t dev_flags;
        atomic_t        enable_cnt;     /* pci_enable_device has been called */
diff --git a/libdde-linux26/contrib/include/linux/pci_ids.h 
b/libdde-linux26/contrib/include/linux/pci_ids.h
index a339386..aca8c45 100644
--- a/libdde-linux26/contrib/include/linux/pci_ids.h
+++ b/libdde-linux26/contrib/include/linux/pci_ids.h
@@ -2,9 +2,6 @@
  *     PCI Class, Vendor and Device IDs
  *
  *     Please keep sorted.
- *
- *     Do not add new entries to this file unless the definitions
- *     are shared between multiple drivers.
  */
 
 /* Device classes and subclasses */
@@ -107,7 +104,6 @@
 #define PCI_CLASS_SERIAL_USB_UHCI      0x0c0300
 #define PCI_CLASS_SERIAL_USB_OHCI      0x0c0310
 #define PCI_CLASS_SERIAL_USB_EHCI      0x0c0320
-#define PCI_CLASS_SERIAL_USB_XHCI      0x0c0330
 #define PCI_CLASS_SERIAL_FIBER         0x0c04
 #define PCI_CLASS_SERIAL_SMBUS         0x0c05
 
@@ -393,9 +389,6 @@
 #define PCI_DEVICE_ID_VLSI_82C147      0x0105
 #define PCI_DEVICE_ID_VLSI_VAS96011    0x0702
 
-/* AMD RD890 Chipset */
-#define PCI_DEVICE_ID_RD890_IOMMU      0x5a23
-
 #define PCI_VENDOR_ID_ADL              0x1005
 #define PCI_DEVICE_ID_ADL_2301         0x2301
 
@@ -485,9 +478,6 @@
 #define PCI_DEVICE_ID_IBM_ICOM_V2_ONE_PORT_RVX_ONE_PORT_MDM_PCIE 0x0361
 #define PCI_DEVICE_ID_IBM_ICOM_FOUR_PORT_MODEL 0x252
 
-#define PCI_SUBVENDOR_ID_IBM           0x1014
-#define PCI_SUBDEVICE_ID_IBM_SATURN_SERIAL_ONE_PORT    0x03d4
-
 #define PCI_VENDOR_ID_UNISYS           0x1018
 #define PCI_DEVICE_ID_UNISYS_DMA_DIRECTOR 0x001C
 
@@ -536,7 +526,6 @@
 #define PCI_DEVICE_ID_AMD_OPUS_7443    0x7443
 #define PCI_DEVICE_ID_AMD_VIPER_7443   0x7443
 #define PCI_DEVICE_ID_AMD_OPUS_7445    0x7445
-#define PCI_DEVICE_ID_AMD_8111_PCI     0x7460
 #define PCI_DEVICE_ID_AMD_8111_LPC     0x7468
 #define PCI_DEVICE_ID_AMD_8111_IDE     0x7469
 #define PCI_DEVICE_ID_AMD_8111_SMBUS2  0x746a
@@ -546,8 +535,6 @@
 #define PCI_DEVICE_ID_AMD_8131_BRIDGE  0x7450
 #define PCI_DEVICE_ID_AMD_8131_APIC    0x7451
 #define PCI_DEVICE_ID_AMD_8132_BRIDGE  0x7458
-#define PCI_DEVICE_ID_AMD_HUDSON2_SMBUS        0x780b
-#define PCI_DEVICE_ID_AMD_CS5535_IDE    0x208F
 #define PCI_DEVICE_ID_AMD_CS5536_ISA    0x2090
 #define PCI_DEVICE_ID_AMD_CS5536_FLASH  0x2091
 #define PCI_DEVICE_ID_AMD_CS5536_AUDIO  0x2093
@@ -556,10 +543,9 @@
 #define PCI_DEVICE_ID_AMD_CS5536_UDC    0x2096
 #define PCI_DEVICE_ID_AMD_CS5536_UOC    0x2097
 #define PCI_DEVICE_ID_AMD_CS5536_IDE    0x209A
+
 #define PCI_DEVICE_ID_AMD_LX_VIDEO  0x2081
 #define PCI_DEVICE_ID_AMD_LX_AES    0x2082
-#define PCI_DEVICE_ID_AMD_HUDSON2_IDE          0x780c
-#define PCI_DEVICE_ID_AMD_HUDSON2_SATA_IDE     0x7800
 
 #define PCI_VENDOR_ID_TRIDENT          0x1023
 #define PCI_DEVICE_ID_TRIDENT_4DWAVE_DX        0x2000
@@ -605,8 +591,6 @@
 #define PCI_DEVICE_ID_MATROX_G550      0x2527
 #define PCI_DEVICE_ID_MATROX_VIA       0x4536
 
-#define PCI_VENDOR_ID_MOBILITY_ELECTRONICS     0x14f2
-
 #define PCI_VENDOR_ID_CT               0x102c
 #define PCI_DEVICE_ID_CT_69000         0x00c0
 #define PCI_DEVICE_ID_CT_65545         0x00d8
@@ -782,7 +766,6 @@
 #define PCI_DEVICE_ID_TI_X515          0x8036
 #define PCI_DEVICE_ID_TI_XX12          0x8039
 #define PCI_DEVICE_ID_TI_XX12_FM       0x803b
-#define PCI_DEVICE_ID_TI_XIO2000A      0x8231
 #define PCI_DEVICE_ID_TI_1130          0xac12
 #define PCI_DEVICE_ID_TI_1031          0xac13
 #define PCI_DEVICE_ID_TI_1131          0xac15
@@ -851,8 +834,6 @@
 #define PCI_DEVICE_ID_PROMISE_20276    0x5275
 #define PCI_DEVICE_ID_PROMISE_20277    0x7275
 
-#define PCI_VENDOR_ID_FOXCONN          0x105b
-
 #define PCI_VENDOR_ID_UMC              0x1060
 #define PCI_DEVICE_ID_UMC_UM8673F      0x0101
 #define PCI_DEVICE_ID_UMC_UM8886BF     0x673a
@@ -892,7 +873,6 @@
 #define PCI_DEVICE_ID_APPLE_SH_SUNGEM   0x0051
 #define PCI_DEVICE_ID_APPLE_U3L_AGP    0x0058
 #define PCI_DEVICE_ID_APPLE_U3H_AGP    0x0059
-#define PCI_DEVICE_ID_APPLE_U4_PCIE    0x005b
 #define PCI_DEVICE_ID_APPLE_IPID2_AGP  0x0066
 #define PCI_DEVICE_ID_APPLE_IPID2_ATA  0x0069
 #define PCI_DEVICE_ID_APPLE_IPID2_FW   0x006a
@@ -961,32 +941,6 @@
 #define PCI_DEVICE_ID_SUN_TOMATILLO    0xa801
 #define PCI_DEVICE_ID_SUN_CASSINI      0xabba
 
-#define PCI_VENDOR_ID_NI               0x1093
-#define PCI_DEVICE_ID_NI_PCI2322       0xd130
-#define PCI_DEVICE_ID_NI_PCI2324       0xd140
-#define PCI_DEVICE_ID_NI_PCI2328       0xd150
-#define PCI_DEVICE_ID_NI_PXI8422_2322  0xd190
-#define PCI_DEVICE_ID_NI_PXI8422_2324  0xd1a0
-#define PCI_DEVICE_ID_NI_PXI8420_2322  0xd1d0
-#define PCI_DEVICE_ID_NI_PXI8420_2324  0xd1e0
-#define PCI_DEVICE_ID_NI_PXI8420_2328  0xd1f0
-#define PCI_DEVICE_ID_NI_PXI8420_23216 0xd1f1
-#define PCI_DEVICE_ID_NI_PCI2322I      0xd250
-#define PCI_DEVICE_ID_NI_PCI2324I      0xd270
-#define PCI_DEVICE_ID_NI_PCI23216      0xd2b0
-#define PCI_DEVICE_ID_NI_PXI8430_2322  0x7080
-#define PCI_DEVICE_ID_NI_PCI8430_2322  0x70db
-#define PCI_DEVICE_ID_NI_PXI8430_2324  0x70dd
-#define PCI_DEVICE_ID_NI_PCI8430_2324  0x70df
-#define PCI_DEVICE_ID_NI_PXI8430_2328  0x70e2
-#define PCI_DEVICE_ID_NI_PCI8430_2328  0x70e4
-#define PCI_DEVICE_ID_NI_PXI8430_23216 0x70e6
-#define PCI_DEVICE_ID_NI_PCI8430_23216 0x70e7
-#define PCI_DEVICE_ID_NI_PXI8432_2322  0x70e8
-#define PCI_DEVICE_ID_NI_PCI8432_2322  0x70ea
-#define PCI_DEVICE_ID_NI_PXI8432_2324  0x70ec
-#define PCI_DEVICE_ID_NI_PCI8432_2324  0x70ee
-
 #define PCI_VENDOR_ID_CMD              0x1095
 #define PCI_DEVICE_ID_CMD_643          0x0643
 #define PCI_DEVICE_ID_CMD_646          0x0646
@@ -1022,7 +976,6 @@
 #define PCI_DEVICE_ID_PLX_PCI200SYN    0x3196
 #define PCI_DEVICE_ID_PLX_9030          0x9030
 #define PCI_DEVICE_ID_PLX_9050         0x9050
-#define PCI_DEVICE_ID_PLX_9056         0x9056
 #define PCI_DEVICE_ID_PLX_9080         0x9080
 #define PCI_DEVICE_ID_PLX_GTEK_SERIAL2 0xa001
 
@@ -1084,6 +1037,8 @@
 #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP04_SMBUS        0x0034
 #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP04_IDE  0x0035
 #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP04_SATA 0x0036
+#define PCI_DEVICE_ID_NVIDIA_NVENET_10         0x0037
+#define PCI_DEVICE_ID_NVIDIA_NVENET_11         0x0038
 #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP04_SATA2        0x003e
 #define PCI_DEVICE_ID_NVIDIA_GEFORCE_6800_ULTRA 0x0040
 #define PCI_DEVICE_ID_NVIDIA_GEFORCE_6800       0x0041
@@ -1094,16 +1049,21 @@
 #define PCI_DEVICE_ID_NVIDIA_NFORCE_CK804_IDE  0x0053
 #define PCI_DEVICE_ID_NVIDIA_NFORCE_CK804_SATA 0x0054
 #define PCI_DEVICE_ID_NVIDIA_NFORCE_CK804_SATA2        0x0055
+#define PCI_DEVICE_ID_NVIDIA_NVENET_8          0x0056
+#define PCI_DEVICE_ID_NVIDIA_NVENET_9          0x0057
 #define PCI_DEVICE_ID_NVIDIA_CK804_AUDIO       0x0059
 #define PCI_DEVICE_ID_NVIDIA_CK804_PCIE                0x005d
 #define PCI_DEVICE_ID_NVIDIA_NFORCE2_SMBUS     0x0064
 #define PCI_DEVICE_ID_NVIDIA_NFORCE2_IDE       0x0065
+#define PCI_DEVICE_ID_NVIDIA_NVENET_2          0x0066
 #define PCI_DEVICE_ID_NVIDIA_MCP2_MODEM                0x0069
 #define PCI_DEVICE_ID_NVIDIA_MCP2_AUDIO                0x006a
 #define PCI_DEVICE_ID_NVIDIA_NFORCE2S_SMBUS    0x0084
 #define PCI_DEVICE_ID_NVIDIA_NFORCE2S_IDE      0x0085
+#define PCI_DEVICE_ID_NVIDIA_NVENET_4          0x0086
 #define PCI_DEVICE_ID_NVIDIA_MCP2S_MODEM       0x0089
 #define PCI_DEVICE_ID_NVIDIA_CK8_AUDIO         0x008a
+#define PCI_DEVICE_ID_NVIDIA_NVENET_5          0x008c
 #define PCI_DEVICE_ID_NVIDIA_NFORCE2S_SATA     0x008e
 #define PCI_DEVICE_ID_NVIDIA_GEFORCE_7800_GT   0x0090
 #define PCI_DEVICE_ID_NVIDIA_GEFORCE_7800_GTX  0x0091
@@ -1119,12 +1079,15 @@
 #define PCI_DEVICE_ID_NVIDIA_NFORCE3           0x00d1
 #define PCI_DEVICE_ID_NVIDIA_NFORCE3_SMBUS     0x00d4
 #define PCI_DEVICE_ID_NVIDIA_NFORCE3_IDE       0x00d5
+#define PCI_DEVICE_ID_NVIDIA_NVENET_3          0x00d6
 #define PCI_DEVICE_ID_NVIDIA_MCP3_MODEM                0x00d9
 #define PCI_DEVICE_ID_NVIDIA_MCP3_AUDIO                0x00da
+#define PCI_DEVICE_ID_NVIDIA_NVENET_7          0x00df
 #define PCI_DEVICE_ID_NVIDIA_NFORCE3S          0x00e1
 #define PCI_DEVICE_ID_NVIDIA_NFORCE3S_SATA     0x00e3
 #define PCI_DEVICE_ID_NVIDIA_NFORCE3S_SMBUS    0x00e4
 #define PCI_DEVICE_ID_NVIDIA_NFORCE3S_IDE      0x00e5
+#define PCI_DEVICE_ID_NVIDIA_NVENET_6          0x00e6
 #define PCI_DEVICE_ID_NVIDIA_CK8S_AUDIO                0x00ea
 #define PCI_DEVICE_ID_NVIDIA_NFORCE3S_SATA2    0x00ee
 #define PCIE_DEVICE_ID_NVIDIA_GEFORCE_6800_ALT1 0x00f0
@@ -1184,6 +1147,7 @@
 #define PCI_DEVICE_ID_NVIDIA_NFORCE_SMBUS      0x01b4
 #define PCI_DEVICE_ID_NVIDIA_NFORCE_IDE                0x01bc
 #define PCI_DEVICE_ID_NVIDIA_MCP1_MODEM                0x01c1
+#define PCI_DEVICE_ID_NVIDIA_NVENET_1          0x01c3
 #define PCI_DEVICE_ID_NVIDIA_NFORCE2           0x01e0
 #define PCI_DEVICE_ID_NVIDIA_GEFORCE3          0x0200
 #define PCI_DEVICE_ID_NVIDIA_GEFORCE3_1                0x0201
@@ -1206,6 +1170,8 @@
 #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP55_IDE  0x036E
 #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP55_SATA 0x037E
 #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP55_SATA2        0x037F
+#define PCI_DEVICE_ID_NVIDIA_NVENET_12         0x0268
+#define PCI_DEVICE_ID_NVIDIA_NVENET_13         0x0269
 #define PCI_DEVICE_ID_NVIDIA_GEFORCE4_TI_4800  0x0280
 #define PCI_DEVICE_ID_NVIDIA_GEFORCE4_TI_4800_8X    0x0281
 #define PCI_DEVICE_ID_NVIDIA_GEFORCE4_TI_4800SE     0x0282
@@ -1252,22 +1218,42 @@
 #define PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_GO5700_2    0x0348
 #define PCI_DEVICE_ID_NVIDIA_QUADRO_FX_GO1000       0x034C
 #define PCI_DEVICE_ID_NVIDIA_QUADRO_FX_1100         0x034E
+#define PCI_DEVICE_ID_NVIDIA_NVENET_14              0x0372
 #define PCI_DEVICE_ID_NVIDIA_NVENET_15              0x0373
+#define PCI_DEVICE_ID_NVIDIA_NVENET_16              0x03E5
+#define PCI_DEVICE_ID_NVIDIA_NVENET_17              0x03E6
 #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP61_SATA      0x03E7
 #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP61_SMBUS            0x03EB
 #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP61_IDE       0x03EC
+#define PCI_DEVICE_ID_NVIDIA_NVENET_18              0x03EE
+#define PCI_DEVICE_ID_NVIDIA_NVENET_19              0x03EF
 #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP61_SATA2     0x03F6
 #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP61_SATA3     0x03F7
 #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP65_SMBUS            0x0446
 #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP65_IDE      0x0448
-#define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP67_SMBUS     0x0542
+#define PCI_DEVICE_ID_NVIDIA_NVENET_20              0x0450
+#define PCI_DEVICE_ID_NVIDIA_NVENET_21              0x0451
+#define PCI_DEVICE_ID_NVIDIA_NVENET_22              0x0452
+#define PCI_DEVICE_ID_NVIDIA_NVENET_23              0x0453
+#define PCI_DEVICE_ID_NVIDIA_NVENET_24              0x054C
+#define PCI_DEVICE_ID_NVIDIA_NVENET_25              0x054D
+#define PCI_DEVICE_ID_NVIDIA_NVENET_26              0x054E
+#define PCI_DEVICE_ID_NVIDIA_NVENET_27              0x054F
+#define PCI_DEVICE_ID_NVIDIA_NVENET_28              0x07DC
+#define PCI_DEVICE_ID_NVIDIA_NVENET_29              0x07DD
+#define PCI_DEVICE_ID_NVIDIA_NVENET_30              0x07DE
+#define PCI_DEVICE_ID_NVIDIA_NVENET_31              0x07DF
 #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP67_IDE       0x0560
 #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP73_IDE       0x056C
-#define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP78S_SMBUS    0x0752
 #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP77_IDE       0x0759
-#define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP73_SMBUS     0x07D8
-#define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP79_SMBUS     0x0AA2
-#define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP89_SATA     0x0D85
+#define PCI_DEVICE_ID_NVIDIA_NVENET_32              0x0760
+#define PCI_DEVICE_ID_NVIDIA_NVENET_33              0x0761
+#define PCI_DEVICE_ID_NVIDIA_NVENET_34              0x0762
+#define PCI_DEVICE_ID_NVIDIA_NVENET_35              0x0763
+#define PCI_DEVICE_ID_NVIDIA_NVENET_36              0x0AB0
+#define PCI_DEVICE_ID_NVIDIA_NVENET_37              0x0AB1
+#define PCI_DEVICE_ID_NVIDIA_NVENET_38              0x0AB2
+#define PCI_DEVICE_ID_NVIDIA_NVENET_39              0x0AB3
 
 #define PCI_VENDOR_ID_IMS              0x10e0
 #define PCI_DEVICE_ID_IMS_TT128                0x9128
@@ -1295,13 +1281,6 @@
 
 #define PCI_VENDOR_ID_CREATIVE         0x1102 /* duplicate: ECTIVA */
 #define PCI_DEVICE_ID_CREATIVE_EMU10K1 0x0002
-#define PCI_DEVICE_ID_CREATIVE_20K1    0x0005
-#define PCI_DEVICE_ID_CREATIVE_20K2    0x000b
-#define PCI_SUBDEVICE_ID_CREATIVE_SB0760       0x0024
-#define PCI_SUBDEVICE_ID_CREATIVE_SB08801      0x0041
-#define PCI_SUBDEVICE_ID_CREATIVE_SB08802      0x0042
-#define PCI_SUBDEVICE_ID_CREATIVE_SB08803      0x0043
-#define PCI_SUBDEVICE_ID_CREATIVE_HENDRIX      0x6000
 
 #define PCI_VENDOR_ID_ECTIVA           0x1102 /* duplicate: CREATIVE */
 #define PCI_DEVICE_ID_ECTIVA_EV1938    0x8938
@@ -1394,7 +1373,7 @@
 #define PCI_DEVICE_ID_VIA_82C598_1     0x8598
 #define PCI_DEVICE_ID_VIA_838X_1       0xB188
 #define PCI_DEVICE_ID_VIA_83_87XX_1    0xB198
-#define PCI_DEVICE_ID_VIA_VX855_IDE    0xC409
+#define PCI_DEVICE_ID_VIA_C409_IDE     0XC409
 #define PCI_DEVICE_ID_VIA_ANON         0xFFFF
 
 #define PCI_VENDOR_ID_SIEMENS           0x110A
@@ -1494,7 +1473,6 @@
 #define PCI_DEVICE_ID_SERVERWORKS_HT1000IDE 0x0214
 #define PCI_DEVICE_ID_SERVERWORKS_CSB6IDE2 0x0217
 #define PCI_DEVICE_ID_SERVERWORKS_CSB6LPC 0x0227
-#define PCI_DEVICE_ID_SERVERWORKS_HT1100LD 0x0408
 
 #define PCI_VENDOR_ID_SBE              0x1176
 #define PCI_DEVICE_ID_SBE_WANXL100     0x0301
@@ -1538,8 +1516,6 @@
 #define PCI_DEVICE_ID_ARTOP_ATP860R    0x0007
 #define PCI_DEVICE_ID_ARTOP_ATP865     0x0008
 #define PCI_DEVICE_ID_ARTOP_ATP865R    0x0009
-#define PCI_DEVICE_ID_ARTOP_ATP867A    0x000A
-#define PCI_DEVICE_ID_ARTOP_ATP867B    0x000B
 #define PCI_DEVICE_ID_ARTOP_AEC7610    0x8002
 #define PCI_DEVICE_ID_ARTOP_AEC7612UW  0x8010
 #define PCI_DEVICE_ID_ARTOP_AEC7612U   0x8020
@@ -1837,10 +1813,6 @@
 #define PCI_SUBDEVICE_ID_HYPERCOPE_METRO       0x0107
 #define PCI_SUBDEVICE_ID_HYPERCOPE_CHAMP2      0x0108
 
-#define PCI_VENDOR_ID_DIGIGRAM         0x1369
-#define PCI_SUBDEVICE_ID_DIGIGRAM_LX6464ES_SERIAL_SUBSYSTEM    0xc001
-#define PCI_SUBDEVICE_ID_DIGIGRAM_LX6464ES_CAE_SERIAL_SUBSYSTEM        0xc002
-
 #define PCI_VENDOR_ID_KAWASAKI         0x136b
 #define PCI_DEVICE_ID_MCHIP_KL5A72002  0xff01
 
@@ -1908,8 +1880,6 @@
 #define PCI_SUBDEVICE_ID_CCD_SWYX4S    0xB540
 #define PCI_SUBDEVICE_ID_CCD_JH4S20    0xB550
 #define PCI_SUBDEVICE_ID_CCD_IOB8ST_1  0xB552
-#define PCI_SUBDEVICE_ID_CCD_JHSE1     0xB553
-#define PCI_SUBDEVICE_ID_CCD_JH8S      0xB55B
 #define PCI_SUBDEVICE_ID_CCD_BN4S      0xB560
 #define PCI_SUBDEVICE_ID_CCD_BN8S      0xB562
 #define PCI_SUBDEVICE_ID_CCD_BNE1      0xB563
@@ -1962,8 +1932,6 @@
 #define PCI_DEVICE_ID_LAVA_DSERIAL     0x0100 /* 2x 16550 */
 #define PCI_DEVICE_ID_LAVA_QUATRO_A    0x0101 /* 2x 16550, half of 4 port */
 #define PCI_DEVICE_ID_LAVA_QUATRO_B    0x0102 /* 2x 16550, half of 4 port */
-#define PCI_DEVICE_ID_LAVA_QUATTRO_A   0x0120 /* 2x 16550A, half of 4 port */
-#define PCI_DEVICE_ID_LAVA_QUATTRO_B   0x0121 /* 2x 16550A, half of 4 port */
 #define PCI_DEVICE_ID_LAVA_OCTO_A      0x0180 /* 4x 16550A, half of 8 port */
 #define PCI_DEVICE_ID_LAVA_OCTO_B      0x0181 /* 4x 16550A, half of 8 port */
 #define PCI_DEVICE_ID_LAVA_PORT_PLUS   0x0200 /* 2x 16650 */
@@ -1994,21 +1962,15 @@
 #define PCI_DEVICE_ID_OXSEMI_PCIe952_1_U       0xC118
 #define PCI_DEVICE_ID_OXSEMI_PCIe952_1_GU      0xC11C
 #define PCI_DEVICE_ID_OXSEMI_16PCI954  0x9501
-#define PCI_DEVICE_ID_OXSEMI_C950      0x950B
 #define PCI_DEVICE_ID_OXSEMI_16PCI95N  0x9511
 #define PCI_DEVICE_ID_OXSEMI_16PCI954PP        0x9513
 #define PCI_DEVICE_ID_OXSEMI_16PCI952  0x9521
 #define PCI_DEVICE_ID_OXSEMI_16PCI952PP        0x9523
-#define PCI_SUBDEVICE_ID_OXSEMI_C950   0x0001
 
 #define PCI_VENDOR_ID_CHELSIO          0x1425
 
 #define PCI_VENDOR_ID_SAMSUNG          0x144d
 
-#define PCI_VENDOR_ID_GIGABYTE         0x1458
-
-#define PCI_VENDOR_ID_AMBIT            0x1468
-
 #define PCI_VENDOR_ID_MYRICOM          0x14c1
 
 #define PCI_VENDOR_ID_TITAN            0x14D2
@@ -2036,7 +1998,6 @@
 #define PCI_DEVICE_ID_AFAVLAB_P030     0x2182
 #define PCI_SUBDEVICE_ID_AFAVLAB_P061          0x2150
 
-#define PCI_VENDOR_ID_BCM_GVC          0x14a4
 #define PCI_VENDOR_ID_BROADCOM         0x14e4
 #define PCI_DEVICE_ID_TIGON3_5752      0x1600
 #define PCI_DEVICE_ID_TIGON3_5752M     0x1601
@@ -2086,6 +2047,7 @@
 #define PCI_DEVICE_ID_TIGON3_5787M     0x1693
 #define PCI_DEVICE_ID_TIGON3_5782      0x1696
 #define PCI_DEVICE_ID_TIGON3_5784      0x1698
+#define PCI_DEVICE_ID_TIGON3_5785      0x1699
 #define PCI_DEVICE_ID_TIGON3_5786      0x169a
 #define PCI_DEVICE_ID_TIGON3_5787      0x169b
 #define PCI_DEVICE_ID_TIGON3_5788      0x169c
@@ -2115,7 +2077,6 @@
 #define PCI_VENDOR_ID_MAINPINE         0x1522
 #define PCI_DEVICE_ID_MAINPINE_PBRIDGE 0x0100
 #define PCI_VENDOR_ID_ENE              0x1524
-#define PCI_DEVICE_ID_ENE_CB710_FLASH  0x0510
 #define PCI_DEVICE_ID_ENE_CB712_SD     0x0550
 #define PCI_DEVICE_ID_ENE_CB712_SD_2   0x0551
 #define PCI_DEVICE_ID_ENE_CB714_SD     0x0750
@@ -2151,8 +2112,6 @@
 #define PCI_DEVICE_ID_MELLANOX_SINAI_OLD 0x5e8c
 #define PCI_DEVICE_ID_MELLANOX_SINAI   0x6274
 
-#define PCI_VENDOR_ID_DFI              0x15bd
-
 #define PCI_VENDOR_ID_QUICKNET         0x15e2
 #define PCI_DEVICE_ID_QUICKNET_XJ      0x0500
 
@@ -2172,10 +2131,6 @@
 #define PCI_DEVICE_ID_ADDIDATA_APCI7420_3      0x700D
 #define PCI_DEVICE_ID_ADDIDATA_APCI7300_3      0x700E
 #define PCI_DEVICE_ID_ADDIDATA_APCI7800_3      0x700F
-#define PCI_DEVICE_ID_ADDIDATA_APCIe7300       0x7010
-#define PCI_DEVICE_ID_ADDIDATA_APCIe7420       0x7011
-#define PCI_DEVICE_ID_ADDIDATA_APCIe7500       0x7012
-#define PCI_DEVICE_ID_ADDIDATA_APCIe7800       0x7013
 
 #define PCI_VENDOR_ID_PDC              0x15e9
 
@@ -2260,20 +2215,10 @@
 
 #define PCI_VENDOR_ID_TOPSPIN          0x1867
 
-#define PCI_VENDOR_ID_SILAN            0x1904
-
 #define PCI_VENDOR_ID_TDI               0x192E
 #define PCI_DEVICE_ID_TDI_EHCI          0x0101
 
 #define PCI_VENDOR_ID_FREESCALE                0x1957
-#define PCI_DEVICE_ID_MPC8315E         0x00b4
-#define PCI_DEVICE_ID_MPC8315          0x00b5
-#define PCI_DEVICE_ID_MPC8314E         0x00b6
-#define PCI_DEVICE_ID_MPC8314          0x00b7
-#define PCI_DEVICE_ID_MPC8378E         0x00c4
-#define PCI_DEVICE_ID_MPC8378          0x00c5
-#define PCI_DEVICE_ID_MPC8377E         0x00c6
-#define PCI_DEVICE_ID_MPC8377          0x00c7
 #define PCI_DEVICE_ID_MPC8548E         0x0012
 #define PCI_DEVICE_ID_MPC8548          0x0013
 #define PCI_DEVICE_ID_MPC8543E         0x0014
@@ -2281,8 +2226,6 @@
 #define PCI_DEVICE_ID_MPC8547E         0x0018
 #define PCI_DEVICE_ID_MPC8545E         0x0019
 #define PCI_DEVICE_ID_MPC8545          0x001a
-#define PCI_DEVICE_ID_MPC8569E         0x0061
-#define PCI_DEVICE_ID_MPC8569          0x0060
 #define PCI_DEVICE_ID_MPC8568E         0x0020
 #define PCI_DEVICE_ID_MPC8568          0x0021
 #define PCI_DEVICE_ID_MPC8567E         0x0022
@@ -2295,22 +2238,6 @@
 #define PCI_DEVICE_ID_MPC8572          0x0041
 #define PCI_DEVICE_ID_MPC8536E         0x0050
 #define PCI_DEVICE_ID_MPC8536          0x0051
-#define PCI_DEVICE_ID_P2020E           0x0070
-#define PCI_DEVICE_ID_P2020            0x0071
-#define PCI_DEVICE_ID_P2010E           0x0078
-#define PCI_DEVICE_ID_P2010            0x0079
-#define PCI_DEVICE_ID_P1020E           0x0100
-#define PCI_DEVICE_ID_P1020            0x0101
-#define PCI_DEVICE_ID_P1011E           0x0108
-#define PCI_DEVICE_ID_P1011            0x0109
-#define PCI_DEVICE_ID_P1022E           0x0110
-#define PCI_DEVICE_ID_P1022            0x0111
-#define PCI_DEVICE_ID_P1013E           0x0118
-#define PCI_DEVICE_ID_P1013            0x0119
-#define PCI_DEVICE_ID_P4080E           0x0400
-#define PCI_DEVICE_ID_P4080            0x0401
-#define PCI_DEVICE_ID_P4040E           0x0408
-#define PCI_DEVICE_ID_P4040            0x0409
 #define PCI_DEVICE_ID_MPC8641          0x7010
 #define PCI_DEVICE_ID_MPC8641D         0x7011
 #define PCI_DEVICE_ID_MPC8610          0x7018
@@ -2324,7 +2251,6 @@
 #define PCI_VENDOR_ID_JMICRON          0x197B
 #define PCI_DEVICE_ID_JMICRON_JMB360   0x2360
 #define PCI_DEVICE_ID_JMICRON_JMB361   0x2361
-#define PCI_DEVICE_ID_JMICRON_JMB362   0x2362
 #define PCI_DEVICE_ID_JMICRON_JMB363   0x2363
 #define PCI_DEVICE_ID_JMICRON_JMB365   0x2365
 #define PCI_DEVICE_ID_JMICRON_JMB366   0x2366
@@ -2337,10 +2263,6 @@
 #define PCI_DEVICE_ID_KORENIX_JETCARDF0        0x1600
 #define PCI_DEVICE_ID_KORENIX_JETCARDF1        0x16ff
 
-#define PCI_VENDOR_ID_QMI              0x1a32
-
-#define PCI_VENDOR_ID_AZWAVE           0x1a3b
-
 #define PCI_VENDOR_ID_TEKRAM           0x1de1
 #define PCI_DEVICE_ID_TEKRAM_DC290     0xdc29
 
@@ -2420,9 +2342,6 @@
 #define PCI_DEVICE_ID_INTEL_82840_HB   0x1a21
 #define PCI_DEVICE_ID_INTEL_82845_HB   0x1a30
 #define PCI_DEVICE_ID_INTEL_IOAT       0x1a38
-#define PCI_DEVICE_ID_INTEL_CPT_SMBUS  0x1c22
-#define PCI_DEVICE_ID_INTEL_CPT_LPC1   0x1c42
-#define PCI_DEVICE_ID_INTEL_CPT_LPC2   0x1c43
 #define PCI_DEVICE_ID_INTEL_82801AA_0  0x2410
 #define PCI_DEVICE_ID_INTEL_82801AA_1  0x2411
 #define PCI_DEVICE_ID_INTEL_82801AA_3  0x2413
@@ -2454,7 +2373,6 @@
 #define PCI_DEVICE_ID_INTEL_82801CA_12 0x248c
 #define PCI_DEVICE_ID_INTEL_82801DB_0  0x24c0
 #define PCI_DEVICE_ID_INTEL_82801DB_1  0x24c1
-#define PCI_DEVICE_ID_INTEL_82801DB_2  0x24c2
 #define PCI_DEVICE_ID_INTEL_82801DB_3  0x24c3
 #define PCI_DEVICE_ID_INTEL_82801DB_5  0x24c5
 #define PCI_DEVICE_ID_INTEL_82801DB_6  0x24c6
@@ -2545,8 +2463,6 @@
 #define PCI_DEVICE_ID_INTEL_IOAT_TBG3  0x3433
 #define PCI_DEVICE_ID_INTEL_82830_HB   0x3575
 #define PCI_DEVICE_ID_INTEL_82830_CGC  0x3577
-#define PCI_DEVICE_ID_INTEL_82854_HB   0x358c
-#define PCI_DEVICE_ID_INTEL_82854_IG   0x358e
 #define PCI_DEVICE_ID_INTEL_82855GM_HB 0x3580
 #define PCI_DEVICE_ID_INTEL_82855GM_IG 0x3582
 #define PCI_DEVICE_ID_INTEL_E7520_MCH  0x3590
@@ -2560,16 +2476,6 @@
 #define PCI_DEVICE_ID_INTEL_E7525_MCH  0x359e
 #define PCI_DEVICE_ID_INTEL_IOAT_CNB   0x360b
 #define PCI_DEVICE_ID_INTEL_FBD_CNB    0x360c
-#define PCI_DEVICE_ID_INTEL_IOAT_JSF0  0x3710
-#define PCI_DEVICE_ID_INTEL_IOAT_JSF1  0x3711
-#define PCI_DEVICE_ID_INTEL_IOAT_JSF2  0x3712
-#define PCI_DEVICE_ID_INTEL_IOAT_JSF3  0x3713
-#define PCI_DEVICE_ID_INTEL_IOAT_JSF4  0x3714
-#define PCI_DEVICE_ID_INTEL_IOAT_JSF5  0x3715
-#define PCI_DEVICE_ID_INTEL_IOAT_JSF6  0x3716
-#define PCI_DEVICE_ID_INTEL_IOAT_JSF7  0x3717
-#define PCI_DEVICE_ID_INTEL_IOAT_JSF8  0x3718
-#define PCI_DEVICE_ID_INTEL_IOAT_JSF9  0x3719
 #define PCI_DEVICE_ID_INTEL_ICH10_0    0x3a14
 #define PCI_DEVICE_ID_INTEL_ICH10_1    0x3a16
 #define PCI_DEVICE_ID_INTEL_ICH10_2    0x3a18
@@ -2700,7 +2606,6 @@
 #define PCI_DEVICE_ID_NETMOS_9835      0x9835
 #define PCI_DEVICE_ID_NETMOS_9845      0x9845
 #define PCI_DEVICE_ID_NETMOS_9855      0x9855
-#define PCI_DEVICE_ID_NETMOS_9901      0x9901
 
 #define PCI_VENDOR_ID_3COM_2           0xa727
 
diff --git a/libdde-linux26/contrib/include/linux/phy.h 
b/libdde-linux26/contrib/include/linux/phy.h
index b1368b8..d7e54d9 100644
--- a/libdde-linux26/contrib/include/linux/phy.h
+++ b/libdde-linux26/contrib/include/linux/phy.h
@@ -79,7 +79,7 @@ typedef enum {
  * Need to be a little smaller than phydev->dev.bus_id to leave room
  * for the ":%02x"
  */
-#define MII_BUS_ID_SIZE        (20 - 3)
+#define MII_BUS_ID_SIZE        (BUS_ID_SIZE - 3)
 
 /*
  * The Bus class for PHYs.  Devices which provide access to
@@ -315,7 +315,8 @@ struct phy_device {
 
        /* Interrupt and Polling infrastructure */
        struct work_struct phy_queue;
-       struct delayed_work state_queue;
+       struct work_struct state_queue;
+       struct timer_list phy_timer;
        atomic_t irq_disable;
 
        struct mutex lock;
@@ -388,12 +389,6 @@ struct phy_driver {
        /* Enables or disables interrupts */
        int (*config_intr)(struct phy_device *phydev);
 
-       /*
-        * Checks if the PHY generated an interrupt.
-        * For multi-PHY devices with shared PHY interrupt pin
-        */
-       int (*did_interrupt)(struct phy_device *phydev);
-
        /* Clears up any memory if needed */
        void (*remove)(struct phy_device *phydev);
 
@@ -407,7 +402,7 @@ struct phy_driver {
 /* A Structure for boards to register fixups with the PHY Lib */
 struct phy_fixup {
        struct list_head list;
-       char bus_id[20];
+       char bus_id[BUS_ID_SIZE];
        u32 phy_uid;
        u32 phy_uid_mask;
        int (*run)(struct phy_device *phydev);
@@ -444,16 +439,10 @@ static inline int phy_write(struct phy_device *phydev, 
u16 regnum, u16 val)
 
 int get_phy_id(struct mii_bus *bus, int addr, u32 *phy_id);
 struct phy_device* get_phy_device(struct mii_bus *bus, int addr);
-int phy_device_register(struct phy_device *phy);
 int phy_clear_interrupt(struct phy_device *phydev);
 int phy_config_interrupt(struct phy_device *phydev, u32 interrupts);
-int phy_attach_direct(struct net_device *dev, struct phy_device *phydev,
-               u32 flags, phy_interface_t interface);
 struct phy_device * phy_attach(struct net_device *dev,
                const char *bus_id, u32 flags, phy_interface_t interface);
-int phy_connect_direct(struct net_device *dev, struct phy_device *phydev,
-               void (*handler)(struct net_device *), u32 flags,
-               phy_interface_t interface);
 struct phy_device * phy_connect(struct net_device *dev, const char *bus_id,
                void (*handler)(struct net_device *), u32 flags,
                phy_interface_t interface);
diff --git a/libdde-linux26/contrib/include/linux/skbuff.h 
b/libdde-linux26/contrib/include/linux/skbuff.h
index 745f615..a9e9534 100644
--- a/libdde-linux26/contrib/include/linux/skbuff.h
+++ b/libdde-linux26/contrib/include/linux/skbuff.h
@@ -142,9 +142,6 @@ struct skb_shared_info {
        atomic_t        dataref;
        unsigned short  nr_frags;
        unsigned short  gso_size;
-#ifdef CONFIG_HAS_DMA
-       dma_addr_t      dma_head;
-#endif
        /* Warning: this field is not always filled in (UFO)! */
        unsigned short  gso_segs;
        unsigned short  gso_type;
@@ -155,7 +152,7 @@ struct skb_shared_info {
        struct sk_buff  *frag_list;
        skb_frag_t      frags[MAX_SKB_FRAGS];
 #ifdef CONFIG_HAS_DMA
-       dma_addr_t      dma_maps[MAX_SKB_FRAGS];
+       dma_addr_t      dma_maps[MAX_SKB_FRAGS + 1];
 #endif
 };
 
@@ -1903,21 +1900,6 @@ static inline void skb_copy_queue_mapping(struct sk_buff 
*to, const struct sk_bu
        to->queue_mapping = from->queue_mapping;
 }
 
-static inline void skb_record_rx_queue(struct sk_buff *skb, u16 rx_queue)
-{
-       skb->queue_mapping = rx_queue + 1;
-}
-
-static inline u16 skb_get_rx_queue(struct sk_buff *skb)
-{
-       return skb->queue_mapping - 1;
-}
-
-static inline bool skb_rx_queue_recorded(struct sk_buff *skb)
-{
-       return (skb->queue_mapping != 0);
-}
-
 #ifdef CONFIG_XFRM
 static inline struct sec_path *skb_sec_path(struct sk_buff *skb)
 {
diff --git a/libdde-linux26/contrib/include/linux/workqueue.h 
b/libdde-linux26/contrib/include/linux/workqueue.h
index cf24c20..3cd51e5 100644
--- a/libdde-linux26/contrib/include/linux/workqueue.h
+++ b/libdde-linux26/contrib/include/linux/workqueue.h
@@ -41,11 +41,6 @@ struct delayed_work {
        struct timer_list timer;
 };
 
-static inline struct delayed_work *to_delayed_work(struct work_struct *work)
-{
-       return container_of(work, struct delayed_work, work);
-}
-
 struct execute_work {
        struct work_struct work;
 };
@@ -94,7 +89,7 @@ struct execute_work {
 /*
  * initialize all of a work item in one go
  *
- * NOTE! No point in using "atomic_long_set()": using a direct
+ * NOTE! No point in using "atomic_long_set()": useing a direct
  * assignment of the work data initializer allows the compiler
  * to generate better code.
  */
@@ -207,7 +202,6 @@ extern int queue_delayed_work_on(int cpu, struct 
workqueue_struct *wq,
 
 extern void flush_workqueue(struct workqueue_struct *wq);
 extern void flush_scheduled_work(void);
-extern void flush_delayed_work(struct delayed_work *work);
 
 extern int schedule_work(struct work_struct *work);
 extern int schedule_work_on(int cpu, struct work_struct *work);
@@ -241,21 +235,6 @@ static inline int cancel_delayed_work(struct delayed_work 
*work)
        return ret;
 }
 
-/*
- * Like above, but uses del_timer() instead of del_timer_sync(). This means,
- * if it returns 0 the timer function may be running and the queueing is in
- * progress.
- */
-static inline int __cancel_delayed_work(struct delayed_work *work)
-{
-       int ret;
-
-       ret = del_timer(&work->timer);
-       if (ret)
-               work_clear_pending(&work->work);
-       return ret;
-}
-
 extern int cancel_delayed_work_sync(struct delayed_work *work);
 
 /* Obsolete. use cancel_delayed_work_sync() */
diff --git a/libdde-linux26/contrib/kernel/rcupdate.c 
b/libdde-linux26/contrib/kernel/rcupdate.c
index c6bfa1a..cae8a05 100644
--- a/libdde-linux26/contrib/kernel/rcupdate.c
+++ b/libdde-linux26/contrib/kernel/rcupdate.c
@@ -180,7 +180,6 @@ void __init rcu_init(void)
 {
        __rcu_init();
 }
-core_initcall(rcu_init);
 
 void rcu_scheduler_starting(void)
 {
diff --git a/libdde-linux26/contrib/net/core/skb_dma_map.c 
b/libdde-linux26/contrib/net/core/skb_dma_map.c
index 07d4ac5..8623492 100644
--- a/libdde-linux26/contrib/net/core/skb_dma_map.c
+++ b/libdde-linux26/contrib/net/core/skb_dma_map.c
@@ -20,7 +20,7 @@ int skb_dma_map(struct device *dev, struct sk_buff *skb,
        if (dma_mapping_error(dev, map))
                goto out_err;
 
-       sp->dma_head = map;
+       sp->dma_maps[0] = map;
        for (i = 0; i < sp->nr_frags; i++) {
                skb_frag_t *fp = &sp->frags[i];
 
@@ -28,7 +28,7 @@ int skb_dma_map(struct device *dev, struct sk_buff *skb,
                                   fp->size, dir);
                if (dma_mapping_error(dev, map))
                        goto unwind;
-               sp->dma_maps[i] = map;
+               sp->dma_maps[i + 1] = map;
        }
        sp->num_dma_maps = i + 1;
 
@@ -38,10 +38,10 @@ unwind:
        while (--i >= 0) {
                skb_frag_t *fp = &sp->frags[i];
 
-               dma_unmap_page(dev, sp->dma_maps[i],
+               dma_unmap_page(dev, sp->dma_maps[i + 1],
                               fp->size, dir);
        }
-       dma_unmap_single(dev, sp->dma_head,
+       dma_unmap_single(dev, sp->dma_maps[0],
                         skb_headlen(skb), dir);
 out_err:
        return -ENOMEM;
@@ -54,12 +54,12 @@ void skb_dma_unmap(struct device *dev, struct sk_buff *skb,
        struct skb_shared_info *sp = skb_shinfo(skb);
        int i;
 
-       dma_unmap_single(dev, sp->dma_head,
+       dma_unmap_single(dev, sp->dma_maps[0],
                         skb_headlen(skb), dir);
        for (i = 0; i < sp->nr_frags; i++) {
                skb_frag_t *fp = &sp->frags[i];
 
-               dma_unmap_page(dev, sp->dma_maps[i],
+               dma_unmap_page(dev, sp->dma_maps[i + 1],
                               fp->size, dir);
        }
 }
diff --git a/libdde-linux26/include/linux/kernel.h 
b/libdde-linux26/include/linux/kernel.h
index 6354939..573ed07 100644
--- a/libdde-linux26/include/linux/kernel.h
+++ b/libdde-linux26/include/linux/kernel.h
@@ -363,8 +363,6 @@ static inline char *pack_hex_byte(char *buf, u8 byte)
         printk(KERN_NOTICE pr_fmt(fmt), ##__VA_ARGS__)
 #define pr_info(fmt, ...) \
         printk(KERN_INFO pr_fmt(fmt), ##__VA_ARGS__)
-#define pr_cont(fmt, ...) \
-        printk(KERN_CONT fmt, ##__VA_ARGS__)
 
 #if defined(DEBUG)
 #ifndef DDE_LINUX
diff --git a/libdde-linux26/lib/src/Makefile b/libdde-linux26/lib/src/Makefile
index abcc533..4f1ec09 100644
--- a/libdde-linux26/lib/src/Makefile
+++ b/libdde-linux26/lib/src/Makefile
@@ -91,8 +91,6 @@ SRC_C_libdde_linux26.o.a += \
                                kernel/kthread.c \
                                kernel/mutex.c \
                                kernel/notifier.c \
-                               kernel/rcupdate.c \
-                               kernel/rcuclassic.c \
                                kernel/resource.c \
                                kernel/rwsem.c \
                                kernel/sched.c \
@@ -108,7 +106,6 @@ SRC_C_libdde_linux26.o.a += \
                                lib/crc32.c \
                                lib/ctype.c \
                                lib/cpumask.c \
-                               lib/devres.c \
                                lib/find_next_bit.c \
                                lib/hexdump.c \
                                lib/idr.c \
diff --git a/libdde-linux26/lib/src/net/core/dev.c 
b/libdde-linux26/lib/src/net/core/dev.c
index 3c3a1d1..cf03652 100644
--- a/libdde-linux26/lib/src/net/core/dev.c
+++ b/libdde-linux26/lib/src/net/core/dev.c
@@ -1731,13 +1731,6 @@ static u16 simple_tx_hash(struct net_device *dev, struct 
sk_buff *skb)
                simple_tx_hashrnd_initialized = 1;
        }
 
-       if (skb_rx_queue_recorded(skb)) {
-               u32 val = skb_get_rx_queue(skb);
-
-               hash = jhash_1word(val, simple_tx_hashrnd);
-               goto out;
-       }
-
        switch (skb->protocol) {
        case htons(ETH_P_IP):
                if (!(ip_hdr(skb)->frag_off & htons(IP_MF | IP_OFFSET)))
@@ -1775,7 +1768,6 @@ static u16 simple_tx_hash(struct net_device *dev, struct 
sk_buff *skb)
 
        hash = jhash_3words(addr1, addr2, ports, simple_tx_hashrnd);
 
-out:
        return (u16) (((u64) hash * dev->real_num_tx_queues) >> 32);
 }
 
@@ -3385,10 +3377,10 @@ void __dev_set_rx_mode(struct net_device *dev)
                /* Unicast addresses changes may only happen under the rtnl,
                 * therefore calling __dev_set_promiscuity here is safe.
                 */
-               if (dev->uc.count > 0 && !dev->uc_promisc) {
+               if (dev->uc_count > 0 && !dev->uc_promisc) {
                        __dev_set_promiscuity(dev, 1);
                        dev->uc_promisc = 1;
-               } else if (dev->uc.count == 0 && dev->uc_promisc) {
+               } else if (dev->uc_count == 0 && dev->uc_promisc) {
                        __dev_set_promiscuity(dev, -1);
                        dev->uc_promisc = 0;
                }
@@ -3405,316 +3397,6 @@ void dev_set_rx_mode(struct net_device *dev)
        netif_addr_unlock_bh(dev);
 }
 
-/* hw addresses list handling functions */
-
-static int __hw_addr_add(struct netdev_hw_addr_list *list, unsigned char *addr,
-                        int addr_len, unsigned char addr_type)
-{
-       struct netdev_hw_addr *ha;
-       int alloc_size;
-
-       if (addr_len > MAX_ADDR_LEN)
-               return -EINVAL;
-
-       list_for_each_entry(ha, &list->list, list) {
-               if (!memcmp(ha->addr, addr, addr_len) &&
-                   ha->type == addr_type) {
-                       ha->refcount++;
-                       return 0;
-               }
-       }
-
-
-       alloc_size = sizeof(*ha);
-       if (alloc_size < L1_CACHE_BYTES)
-               alloc_size = L1_CACHE_BYTES;
-       ha = kmalloc(alloc_size, GFP_ATOMIC);
-       if (!ha)
-               return -ENOMEM;
-       memcpy(ha->addr, addr, addr_len);
-       ha->type = addr_type;
-       ha->refcount = 1;
-       ha->synced = false;
-       list_add_tail_rcu(&ha->list, &list->list);
-       list->count++;
-       return 0;
-}
-
-static void ha_rcu_free(struct rcu_head *head)
-{
-       struct netdev_hw_addr *ha;
-
-       ha = container_of(head, struct netdev_hw_addr, rcu_head);
-       kfree(ha);
-}
-
-static int __hw_addr_del(struct netdev_hw_addr_list *list, unsigned char *addr,
-                        int addr_len, unsigned char addr_type)
-{
-       struct netdev_hw_addr *ha;
-
-       list_for_each_entry(ha, &list->list, list) {
-               if (!memcmp(ha->addr, addr, addr_len) &&
-                   (ha->type == addr_type || !addr_type)) {
-                       if (--ha->refcount)
-                               return 0;
-                       list_del_rcu(&ha->list);
-                       call_rcu(&ha->rcu_head, ha_rcu_free);
-                       list->count--;
-                       return 0;
-               }
-       }
-       return -ENOENT;
-}
-
-static int __hw_addr_add_multiple(struct netdev_hw_addr_list *to_list,
-                                 struct netdev_hw_addr_list *from_list,
-                                 int addr_len,
-                                 unsigned char addr_type)
-{
-       int err;
-       struct netdev_hw_addr *ha, *ha2;
-       unsigned char type;
-
-       list_for_each_entry(ha, &from_list->list, list) {
-               type = addr_type ? addr_type : ha->type;
-               err = __hw_addr_add(to_list, ha->addr, addr_len, type);
-               if (err)
-                       goto unroll;
-       }
-       return 0;
-
-unroll:
-       list_for_each_entry(ha2, &from_list->list, list) {
-               if (ha2 == ha)
-                       break;
-               type = addr_type ? addr_type : ha2->type;
-               __hw_addr_del(to_list, ha2->addr, addr_len, type);
-       }
-       return err;
-}
-
-static void __hw_addr_del_multiple(struct netdev_hw_addr_list *to_list,
-                                  struct netdev_hw_addr_list *from_list,
-                                  int addr_len,
-                                  unsigned char addr_type)
-{
-       struct netdev_hw_addr *ha;
-       unsigned char type;
-
-       list_for_each_entry(ha, &from_list->list, list) {
-               type = addr_type ? addr_type : ha->type;
-               __hw_addr_del(to_list, ha->addr, addr_len, addr_type);
-       }
-}
-
-static int __hw_addr_sync(struct netdev_hw_addr_list *to_list,
-                         struct netdev_hw_addr_list *from_list,
-                         int addr_len)
-{
-       int err = 0;
-       struct netdev_hw_addr *ha, *tmp;
-
-       list_for_each_entry_safe(ha, tmp, &from_list->list, list) {
-               if (!ha->synced) {
-                       err = __hw_addr_add(to_list, ha->addr,
-                                           addr_len, ha->type);
-                       if (err)
-                               break;
-                       ha->synced = true;
-                       ha->refcount++;
-               } else if (ha->refcount == 1) {
-                       __hw_addr_del(to_list, ha->addr, addr_len, ha->type);
-                       __hw_addr_del(from_list, ha->addr, addr_len, ha->type);
-               }
-       }
-       return err;
-}
-
-static void __hw_addr_unsync(struct netdev_hw_addr_list *to_list,
-                            struct netdev_hw_addr_list *from_list,
-                            int addr_len)
-{
-       struct netdev_hw_addr *ha, *tmp;
-
-       list_for_each_entry_safe(ha, tmp, &from_list->list, list) {
-               if (ha->synced) {
-                       __hw_addr_del(to_list, ha->addr,
-                                     addr_len, ha->type);
-                       ha->synced = false;
-                       __hw_addr_del(from_list, ha->addr,
-                                     addr_len, ha->type);
-               }
-       }
-}
-
-static void __hw_addr_flush(struct netdev_hw_addr_list *list)
-{
-       struct netdev_hw_addr *ha, *tmp;
-
-       list_for_each_entry_safe(ha, tmp, &list->list, list) {
-               list_del_rcu(&ha->list);
-               call_rcu(&ha->rcu_head, ha_rcu_free);
-       }
-       list->count = 0;
-}
-
-static void __hw_addr_init(struct netdev_hw_addr_list *list)
-{
-       INIT_LIST_HEAD(&list->list);
-       list->count = 0;
-}
-
-/* Device addresses handling functions */
-
-static void dev_addr_flush(struct net_device *dev)
-{
-       /* rtnl_mutex must be held here */
-
-       __hw_addr_flush(&dev->dev_addrs);
-       dev->dev_addr = NULL;
-}
-
-static int dev_addr_init(struct net_device *dev)
-{
-       unsigned char addr[MAX_ADDR_LEN];
-       struct netdev_hw_addr *ha;
-       int err;
-
-       /* rtnl_mutex must be held here */
-
-       __hw_addr_init(&dev->dev_addrs);
-       memset(addr, 0, sizeof(addr));
-       err = __hw_addr_add(&dev->dev_addrs, addr, sizeof(addr),
-                           NETDEV_HW_ADDR_T_LAN);
-       if (!err) {
-               /*
-                * Get the first (previously created) address from the list
-                * and set dev_addr pointer to this location.
-                */
-               ha = list_first_entry(&dev->dev_addrs.list,
-                                     struct netdev_hw_addr, list);
-               dev->dev_addr = ha->addr;
-       }
-       return err;
-}
-
-/**
- *     dev_addr_add    - Add a device address
- *     @dev: device
- *     @addr: address to add
- *     @addr_type: address type
- *
- *     Add a device address to the device or increase the reference count if
- *     it already exists.
- *
- *     The caller must hold the rtnl_mutex.
- */
-int dev_addr_add(struct net_device *dev, unsigned char *addr,
-                unsigned char addr_type)
-{
-       int err;
-
-       ASSERT_RTNL();
-
-       err = __hw_addr_add(&dev->dev_addrs, addr, dev->addr_len, addr_type);
-       if (!err)
-               call_netdevice_notifiers(NETDEV_CHANGEADDR, dev);
-       return err;
-}
-EXPORT_SYMBOL(dev_addr_add);
-
-/**
- *     dev_addr_del    - Release a device address.
- *     @dev: device
- *     @addr: address to delete
- *     @addr_type: address type
- *
- *     Release reference to a device address and remove it from the device
- *     if the reference count drops to zero.
- *
- *     The caller must hold the rtnl_mutex.
- */
-int dev_addr_del(struct net_device *dev, unsigned char *addr,
-                unsigned char addr_type)
-{
-       int err;
-       struct netdev_hw_addr *ha;
-
-       ASSERT_RTNL();
-
-       /*
-        * We can not remove the first address from the list because
-        * dev->dev_addr points to that.
-        */
-       ha = list_first_entry(&dev->dev_addrs.list,
-                             struct netdev_hw_addr, list);
-       if (ha->addr == dev->dev_addr && ha->refcount == 1)
-               return -ENOENT;
-
-       err = __hw_addr_del(&dev->dev_addrs, addr, dev->addr_len,
-                           addr_type);
-       if (!err)
-               call_netdevice_notifiers(NETDEV_CHANGEADDR, dev);
-       return err;
-}
-EXPORT_SYMBOL(dev_addr_del);
-
-/**
- *     dev_addr_add_multiple   - Add device addresses from another device
- *     @to_dev: device to which addresses will be added
- *     @from_dev: device from which addresses will be added
- *     @addr_type: address type - 0 means type will be used from from_dev
- *
- *     Add device addresses of the one device to another.
- **
- *     The caller must hold the rtnl_mutex.
- */
-int dev_addr_add_multiple(struct net_device *to_dev,
-                         struct net_device *from_dev,
-                         unsigned char addr_type)
-{
-       int err;
-
-       ASSERT_RTNL();
-
-       if (from_dev->addr_len != to_dev->addr_len)
-               return -EINVAL;
-       err = __hw_addr_add_multiple(&to_dev->dev_addrs, &from_dev->dev_addrs,
-                                    to_dev->addr_len, addr_type);
-       if (!err)
-               call_netdevice_notifiers(NETDEV_CHANGEADDR, to_dev);
-       return err;
-}
-EXPORT_SYMBOL(dev_addr_add_multiple);
-
-/**
- *     dev_addr_del_multiple   - Delete device addresses by another device
- *     @to_dev: device where the addresses will be deleted
- *     @from_dev: device by which addresses the addresses will be deleted
- *     @addr_type: address type - 0 means type will used from from_dev
- *
- *     Deletes addresses in to device by the list of addresses in from device.
- *
- *     The caller must hold the rtnl_mutex.
- */
-int dev_addr_del_multiple(struct net_device *to_dev,
-                         struct net_device *from_dev,
-                         unsigned char addr_type)
-{
-       ASSERT_RTNL();
-
-       if (from_dev->addr_len != to_dev->addr_len)
-               return -EINVAL;
-       __hw_addr_del_multiple(&to_dev->dev_addrs, &from_dev->dev_addrs,
-                              to_dev->addr_len, addr_type);
-       call_netdevice_notifiers(NETDEV_CHANGEADDR, to_dev);
-       return 0;
-}
-EXPORT_SYMBOL(dev_addr_del_multiple);
-
-/* multicast addresses handling functions */
-
 int __dev_addr_delete(struct dev_addr_list **list, int *count,
                      void *addr, int alen, int glbl)
 {
@@ -3777,22 +3459,24 @@ int __dev_addr_add(struct dev_addr_list **list, int 
*count,
  *     dev_unicast_delete      - Release secondary unicast address.
  *     @dev: device
  *     @addr: address to delete
+ *     @alen: length of @addr
  *
  *     Release reference to a secondary unicast address and remove it
  *     from the device if the reference count drops to zero.
  *
  *     The caller must hold the rtnl_mutex.
  */
-int dev_unicast_delete(struct net_device *dev, void *addr)
+int dev_unicast_delete(struct net_device *dev, void *addr, int alen)
 {
        int err;
 
        ASSERT_RTNL();
 
-       err = __hw_addr_del(&dev->uc, addr, dev->addr_len,
-                           NETDEV_HW_ADDR_T_UNICAST);
+       netif_addr_lock_bh(dev);
+       err = __dev_addr_delete(&dev->uc_list, &dev->uc_count, addr, alen, 0);
        if (!err)
                __dev_set_rx_mode(dev);
+       netif_addr_unlock_bh(dev);
        return err;
 }
 EXPORT_SYMBOL(dev_unicast_delete);
@@ -3801,22 +3485,24 @@ EXPORT_SYMBOL(dev_unicast_delete);
  *     dev_unicast_add         - add a secondary unicast address
  *     @dev: device
  *     @addr: address to add
+ *     @alen: length of @addr
  *
  *     Add a secondary unicast address to the device or increase
  *     the reference count if it already exists.
  *
  *     The caller must hold the rtnl_mutex.
  */
-int dev_unicast_add(struct net_device *dev, void *addr)
+int dev_unicast_add(struct net_device *dev, void *addr, int alen)
 {
        int err;
 
        ASSERT_RTNL();
 
-       err = __hw_addr_add(&dev->uc, addr, dev->addr_len,
-                           NETDEV_HW_ADDR_T_UNICAST);
+       netif_addr_lock_bh(dev);
+       err = __dev_addr_add(&dev->uc_list, &dev->uc_count, addr, alen, 0);
        if (!err)
                __dev_set_rx_mode(dev);
+       netif_addr_unlock_bh(dev);
        return err;
 }
 EXPORT_SYMBOL(dev_unicast_add);
@@ -3873,7 +3559,8 @@ void __dev_addr_unsync(struct dev_addr_list **to, int 
*to_count,
  *     @from: source device
  *
  *     Add newly added addresses to the destination device and release
- *     addresses that have no users left.
+ *     addresses that have no users left. The source device must be
+ *     locked by netif_addr_lock_bh.
  *
  *     This function is intended to be called from the dev->set_rx_mode
  *     function of layered software devices.
@@ -3882,14 +3569,12 @@ int dev_unicast_sync(struct net_device *to, struct 
net_device *from)
 {
        int err = 0;
 
-       ASSERT_RTNL();
-
-       if (to->addr_len != from->addr_len)
-               return -EINVAL;
-
-       err = __hw_addr_sync(&to->uc, &from->uc, to->addr_len);
+       netif_addr_lock_bh(to);
+       err = __dev_addr_sync(&to->uc_list, &to->uc_count,
+                             &from->uc_list, &from->uc_count);
        if (!err)
                __dev_set_rx_mode(to);
+       netif_addr_unlock_bh(to);
        return err;
 }
 EXPORT_SYMBOL(dev_unicast_sync);
@@ -3905,30 +3590,17 @@ EXPORT_SYMBOL(dev_unicast_sync);
  */
 void dev_unicast_unsync(struct net_device *to, struct net_device *from)
 {
-       ASSERT_RTNL();
+       netif_addr_lock_bh(from);
+       netif_addr_lock(to);
 
-       if (to->addr_len != from->addr_len)
-               return;
-
-       __hw_addr_unsync(&to->uc, &from->uc, to->addr_len);
+       __dev_addr_unsync(&to->uc_list, &to->uc_count,
+                         &from->uc_list, &from->uc_count);
        __dev_set_rx_mode(to);
-}
-EXPORT_SYMBOL(dev_unicast_unsync);
 
-static void dev_unicast_flush(struct net_device *dev)
-{
-       /* rtnl_mutex must be held here */
-
-       __hw_addr_flush(&dev->uc);
-}
-
-static void dev_unicast_init(struct net_device *dev)
-{
-       /* rtnl_mutex must be held here */
-
-       __hw_addr_init(&dev->uc);
+       netif_addr_unlock(to);
+       netif_addr_unlock_bh(from);
 }
-
+EXPORT_SYMBOL(dev_unicast_unsync);
 
 static void __dev_addr_discard(struct dev_addr_list **list)
 {
@@ -3948,6 +3620,9 @@ static void dev_addr_discard(struct net_device *dev)
 {
        netif_addr_lock_bh(dev);
 
+       __dev_addr_discard(&dev->uc_list);
+       dev->uc_count = 0;
+
        __dev_addr_discard(&dev->mc_list);
        dev->mc_count = 0;
 
@@ -4538,7 +4213,6 @@ static void rollback_registered(struct net_device *dev)
        /*
         *      Flush the unicast and multicast chains
         */
-       dev_unicast_flush(dev);
        dev_addr_discard(dev);
 
        if (dev->netdev_ops->ndo_uninit)
@@ -5055,8 +4729,6 @@ struct net_device *alloc_netdev_mq(int sizeof_priv, const 
char *name,
        dev = (struct net_device *)
                (((long)p + NETDEV_ALIGN_CONST) & ~NETDEV_ALIGN_CONST);
        dev->padded = (char *)dev - (char *)p;
-       dev_unicast_init(dev);
-
        dev_net_set(dev, &init_net);
 
        dev->_tx = tx;
@@ -5065,7 +4737,6 @@ struct net_device *alloc_netdev_mq(int sizeof_priv, const 
char *name,
 
        dev->gso_max_size = GSO_MAX_SIZE;
 
-       dev_addr_init(dev);
        netdev_init_queues(dev);
 
        INIT_LIST_HEAD(&dev->napi_list);
@@ -5091,9 +4762,6 @@ void free_netdev(struct net_device *dev)
 
        kfree(dev->_tx);
 
-       /* Flush device addresses */
-       dev_addr_flush(dev);
-
        list_for_each_entry_safe(p, n, &dev->napi_list, dev_list)
                netif_napi_del(p);
 
@@ -5255,7 +4923,6 @@ int dev_change_net_namespace(struct net_device *dev, 
struct net *net, const char
        /*
         *      Flush the unicast and multicast chains
         */
-       dev_unicast_flush(dev);
        dev_addr_discard(dev);
 
        netdev_unregister_kobject(dev);
diff --git a/libdde-linux26/lib/src/net/sched/sch_generic.c 
b/libdde-linux26/lib/src/net/sched/sch_generic.c
index 252ac98..a2acd6c 100644
--- a/libdde-linux26/lib/src/net/sched/sch_generic.c
+++ b/libdde-linux26/lib/src/net/sched/sch_generic.c
@@ -200,21 +200,6 @@ void __qdisc_run(struct Qdisc *q)
        clear_bit(__QDISC_STATE_RUNNING, &q->state);
 }
 
-unsigned long dev_trans_start(struct net_device *dev)
-{
-       unsigned long val, res = dev->trans_start;
-       unsigned int i;
-
-       for (i = 0; i < dev->num_tx_queues; i++) {
-               val = netdev_get_tx_queue(dev, i)->trans_start;
-               if (val && time_after(val, res))
-                       res = val;
-       }
-       dev->trans_start = res;
-       return res;
-}
-EXPORT_SYMBOL(dev_trans_start);
-
 static void dev_watchdog(unsigned long arg)
 {
        struct net_device *dev = (struct net_device *)arg;
@@ -224,30 +209,25 @@ static void dev_watchdog(unsigned long arg)
                if (netif_device_present(dev) &&
                    netif_running(dev) &&
                    netif_carrier_ok(dev)) {
-                       int some_queue_timedout = 0;
+                       int some_queue_stopped = 0;
                        unsigned int i;
-                       unsigned long trans_start;
 
                        for (i = 0; i < dev->num_tx_queues; i++) {
                                struct netdev_queue *txq;
 
                                txq = netdev_get_tx_queue(dev, i);
-                               /*
-                                * old device drivers set dev->trans_start
-                                */
-                               trans_start = txq->trans_start ? : 
dev->trans_start;
-                               if (netif_tx_queue_stopped(txq) &&
-                                   time_after(jiffies, (trans_start +
-                                                        dev->watchdog_timeo))) 
{
-                                       some_queue_timedout = 1;
+                               if (netif_tx_queue_stopped(txq)) {
+                                       some_queue_stopped = 1;
                                        break;
                                }
                        }
 
-                       if (some_queue_timedout) {
+                       if (some_queue_stopped &&
+                           time_after(jiffies, (dev->trans_start +
+                                                dev->watchdog_timeo))) {
                                char drivername[64];
-                               WARN_ONCE(1, KERN_INFO "NETDEV WATCHDOG: %s 
(%s): transmit queue %u timed out\n",
-                                      dev->name, netdev_drivername(dev, 
drivername, 64), i);
+                               WARN_ONCE(1, KERN_INFO "NETDEV WATCHDOG: %s 
(%s): transmit timed out\n",
+                                      dev->name, netdev_drivername(dev, 
drivername, 64));
                                dev->netdev_ops->ndo_tx_timeout(dev);
                        }
                        if (!mod_timer(&dev->watchdog_timer,
@@ -632,10 +612,8 @@ static void transition_one_qdisc(struct net_device *dev,
                clear_bit(__QDISC_STATE_DEACTIVATED, &new_qdisc->state);
 
        rcu_assign_pointer(dev_queue->qdisc, new_qdisc);
-       if (need_watchdog_p && new_qdisc != &noqueue_qdisc) {
-               dev_queue->trans_start = 0;
+       if (need_watchdog_p && new_qdisc != &noqueue_qdisc)
                *need_watchdog_p = 1;
-       }
 }
 
 void dev_activate(struct net_device *dev)
diff --git a/libdiskfs/Makefile b/libdiskfs/Makefile
index c1dd567..03c2e2b 100644
--- a/libdiskfs/Makefile
+++ b/libdiskfs/Makefile
@@ -56,7 +56,7 @@ OTHERSRCS = conch-fetch.c conch-set.c dir-clear.c dir-init.c 
dir-renamed.c \
 SRCS = $(OTHERSRCS) $(FSSRCS) $(IOSRCS) $(FSYSSRCS) $(IFSOCKSRCS)
 installhdrs = diskfs.h diskfs-pager.h
 
-MIGSTUBS = fsServer.o fs_experimentalServer.o ioServer.o fsysServer.o 
exec_startupServer.o \
+MIGSTUBS = fsServer.o ioServer.o fsysServer.o exec_startupServer.o \
        fsys_replyUser.o fs_notifyUser.o ifsockServer.o \
        startup_notifyServer.o
 OBJS = $(sort $(SRCS:.c=.o) $(MIGSTUBS))
@@ -66,7 +66,6 @@ LDLIBS += -lpthread
 
 fsys-MIGSFLAGS = -imacros $(srcdir)/fsmutations.h -DREPLY_PORTS
 fs-MIGSFLAGS = -imacros $(srcdir)/fsmutations.h
-fs_experimental-MIGSFLAGS = -imacros $(srcdir)/fsmutations.h
 io-MIGSFLAGS = -imacros $(srcdir)/fsmutations.h
 ifsock-MIGSFLAGS = -imacros $(srcdir)/fsmutations.h
 MIGCOMSFLAGS = -prefix diskfs_
diff --git a/libdiskfs/boot-start.c b/libdiskfs/boot-start.c
index f0fb3f2..6d9a773 100644
--- a/libdiskfs/boot-start.c
+++ b/libdiskfs/boot-start.c
@@ -128,13 +128,8 @@ diskfs_start_bootstrap ()
       assert (_hurd_ports);
       assert (_hurd_ports[INIT_PORT_CRDIR].port != MACH_PORT_NULL);
       diskfs_exec = file_name_lookup (_SERVERS_EXEC, 0, 0);
-      if (diskfs_exec == MACH_PORT_NULL) 
-       {
-         /* Debian specifc work-around for install bootstrapping.  */
-         diskfs_exec = file_name_lookup ("/tmp/exec", 0, 0);
-         if (diskfs_exec == MACH_PORT_NULL)
-           error (1, errno, "%s", _SERVERS_EXEC);
-       }
+      if (diskfs_exec == MACH_PORT_NULL)
+       error (1, errno, "%s", _SERVERS_EXEC);
       else
        {
 #ifndef NDEBUG
@@ -184,15 +179,8 @@ diskfs_start_bootstrap ()
                        &retry, pathbuf, &execnode);
       if (err)
        {
-          /* If /servers/exec is not available (which is the case during
-             installation, try /tmp/exec as well.  */
-          err = dir_lookup (root_pt, "/tmp/exec", O_NOTRANS, 0,
-                           &retry, pathbuf, &execnode);
-         if (err) 
-           {
-             error (0, err, "cannot set translator on %s", _SERVERS_EXEC);
-             mach_port_deallocate (mach_task_self (), diskfs_exec_ctl);
-           }
+         error (0, err, "cannot set translator on %s", _SERVERS_EXEC);
+         mach_port_deallocate (mach_task_self (), diskfs_exec_ctl);
        }
       else
        {
@@ -208,7 +196,7 @@ diskfs_start_bootstrap ()
       diskfs_exec_ctl = MACH_PORT_NULL;        /* Not used after this.  */
     }
 
-  /* Cache the exec server port for file_exec_file_name to use.  */
+  /* Cache the exec server port for file_exec to use.  */
   _hurd_port_set (&_diskfs_exec_portcell, diskfs_exec);
 
   if (_diskfs_boot_command)
@@ -419,10 +407,6 @@ diskfs_execboot_fsys_startup (mach_port_t port, int flags,
 
   err = dir_lookup (rootport, _SERVERS_EXEC, flags|O_NOTRANS, 0,
                    &retry, pathbuf, real);
-  if (err) 
-    /* Try /tmp/exec as well, in case we're installing.  */
-    err = dir_lookup (rootport, "/tmp/exec", flags|O_NOTRANS|O_CREAT, 0,
-                     &retry, pathbuf, real);
   assert_perror (err);
   assert (retry == FS_RETRY_NORMAL);
   assert (pathbuf[0] == '\0');
diff --git a/libdiskfs/demuxer.c b/libdiskfs/demuxer.c
index 3401cec..5412f26 100644
--- a/libdiskfs/demuxer.c
+++ b/libdiskfs/demuxer.c
@@ -23,7 +23,6 @@ diskfs_demuxer (mach_msg_header_t *inp,
 {
   mig_routine_t diskfs_io_server_routine (mach_msg_header_t *);
   mig_routine_t diskfs_fs_server_routine (mach_msg_header_t *);
-  mig_routine_t diskfs_fs_experimental_server_routine (mach_msg_header_t *);
   mig_routine_t ports_notify_server_routine (mach_msg_header_t *);
   mig_routine_t diskfs_fsys_server_routine (mach_msg_header_t *);
   mig_routine_t ports_interrupt_server_routine (mach_msg_header_t *);
@@ -34,7 +33,6 @@ diskfs_demuxer (mach_msg_header_t *inp,
   mig_routine_t routine;
   if ((routine = diskfs_io_server_routine (inp)) ||
       (routine = diskfs_fs_server_routine (inp)) ||
-      (routine = diskfs_fs_experimental_server_routine (inp)) ||
       (routine = ports_notify_server_routine (inp)) ||
       (routine = diskfs_fsys_server_routine (inp)) ||
       (routine = ports_interrupt_server_routine (inp)) ||
diff --git a/libdiskfs/file-exec.c b/libdiskfs/file-exec.c
index 3fe4059..9572dbe 100644
--- a/libdiskfs/file-exec.c
+++ b/libdiskfs/file-exec.c
@@ -1,6 +1,5 @@
-/* File execution (file_exec_file_name RPC) for diskfs servers, using exec 
server.
-   Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 2000, 2002,
-   2010 Free Software Foundation, Inc.
+/* File execution (file_exec RPC) for diskfs servers, using exec server.
+   Copyright (C) 1993,94,95,96,97,98,2000,02 Free Software Foundation, Inc.
 
 This file is part of the GNU Hurd.
 
@@ -22,14 +21,10 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 
02139, USA.  */
 
 #include "priv.h"
 #include "fs_S.h"
-#include "fs_experimental_S.h"
 #include <sys/stat.h>
 #include <fcntl.h>
 #include <hurd/exec.h>
 #include <hurd/paths.h>
-#ifdef HAVE_EXEC_EXEC_FILE_NAME
-#include <hurd/exec_experimental.h>
-#endif
 #include <string.h>
 #include <idvec.h>
 
@@ -52,39 +47,6 @@ diskfs_S_file_exec (struct protid *cred,
                    mach_port_t *destroynames,
                    size_t destroynameslen)
 {
-  return diskfs_S_file_exec_file_name (cred,
-                                      task,
-                                      flags,
-                                      "",
-                                      argv, argvlen,
-                                      envp, envplen,
-                                      fds, fdslen,
-                                      portarray, portarraylen,
-                                      intarray, intarraylen,
-                                      deallocnames, deallocnameslen,
-                                      destroynames, destroynameslen);
-}
-
-kern_return_t
-diskfs_S_file_exec_file_name (struct protid *cred,
-                             task_t task,
-                             int flags,
-                             char *filename,
-                             char *argv,
-                             size_t argvlen,
-                             char *envp,
-                             size_t envplen,
-                             mach_port_t *fds,
-                             size_t fdslen,
-                             mach_port_t *portarray,
-                             size_t portarraylen,
-                             int *intarray,
-                             size_t intarraylen,
-                             mach_port_t *deallocnames,
-                             size_t deallocnameslen,
-                             mach_port_t *destroynames,
-                             size_t destroynameslen)
-{
   struct node *np;
   uid_t uid;
   gid_t gid;
@@ -174,9 +136,9 @@ diskfs_S_file_exec_file_name (struct protid *cred,
 
   if (! err)
     /* Make a new peropen for the exec server to access the file, since any
-       seeking the exec server might want to do should not affect the original
-       peropen on which file_exec_file_name was called.  (The new protid
-       for this peropen clones the caller's iouser to preserve the caller's
+       seeking the exec server might want to do should not affect the
+       original peropen on which file_exec was called.  (The new protid for
+       this peropen clones the caller's iouser to preserve the caller's
        authentication credentials.)  The new peropen's openmodes must have
        O_READ even if the caller had only O_EXEC privilege, so the exec
        server can read the executable file.  We also include O_EXEC so that
@@ -197,31 +159,14 @@ diskfs_S_file_exec_file_name (struct protid *cred,
       do
        {
          right = ports_get_send_right (newpi);
-#ifdef HAVE_EXEC_EXEC_FILE_NAME
-         err = exec_exec_file_name (execserver,
-                                    right, MACH_MSG_TYPE_COPY_SEND,
-                                    task, flags, filename,
-                                    argv, argvlen, envp, envplen,
-                                    fds, MACH_MSG_TYPE_COPY_SEND, fdslen,
-                                    portarray, MACH_MSG_TYPE_COPY_SEND,
-                                    portarraylen,
-                                    intarray, intarraylen,
-                                    deallocnames, deallocnameslen,
-                                    destroynames, destroynameslen);
-         /* For backwards compatibility.  Just drop it when we kill
-            exec_exec.  */
-         if (err == MIG_BAD_ID)
-#endif
-           err = exec_exec (execserver,
-                            right, MACH_MSG_TYPE_COPY_SEND,
-                            task, flags, argv, argvlen, envp, envplen,
-                            fds, MACH_MSG_TYPE_COPY_SEND, fdslen,
-                            portarray, MACH_MSG_TYPE_COPY_SEND, portarraylen,
-                            intarray, intarraylen,
-                            deallocnames, deallocnameslen,
-                            destroynames, destroynameslen);
-
-
+         err = exec_exec (execserver,
+                          right, MACH_MSG_TYPE_COPY_SEND,
+                          task, flags, argv, argvlen, envp, envplen,
+                          fds, MACH_MSG_TYPE_COPY_SEND, fdslen,
+                          portarray, MACH_MSG_TYPE_COPY_SEND, portarraylen,
+                          intarray, intarraylen,
+                          deallocnames, deallocnameslen,
+                          destroynames, destroynameslen);
          mach_port_deallocate (mach_task_self (), right);
          if (err == MACH_SEND_INVALID_DEST)
            {
diff --git a/libdiskfs/file-utimes.c b/libdiskfs/file-utimes.c
index 7ac5d50..39fac50 100644
--- a/libdiskfs/file-utimes.c
+++ b/libdiskfs/file-utimes.c
@@ -33,7 +33,7 @@ diskfs_S_file_utimes (struct protid *cred,
                         else
                           {
                             np->dn_stat.st_atim.tv_sec = atime.seconds;
-                            np->dn_stat.st_atim.tv_nsec = 0;
+                            np->dn_stat.st_atim.tv_nsec = atime.microseconds * 
1000;
                             np->dn_set_atime = 0;
                           }
                         
@@ -42,7 +42,7 @@ diskfs_S_file_utimes (struct protid *cred,
                         else
                           {
                             np->dn_stat.st_mtim.tv_sec = mtime.seconds;
-                            np->dn_stat.st_mtim.tv_nsec = 0;
+                            np->dn_stat.st_mtim.tv_nsec = mtime.microseconds * 
1000;
                             np->dn_set_mtime = 0;
                           }
                         
diff --git a/libdiskfs/init-init.c b/libdiskfs/init-init.c
index cb9fcf5..35be7ed 100644
--- a/libdiskfs/init-init.c
+++ b/libdiskfs/init-init.c
@@ -57,9 +57,6 @@ diskfs_init_diskfs (void)
 {
   error_t err;
 
-  /* See `node-create.c'.  */
-  _diskfs_no_inherit_dir_group = 1;
-
   if (diskfs_boot_filesystem ())
     /* This is a boot filesystem, we have to do some things specially.  */
     {
diff --git a/libdiskfs/node-times.c b/libdiskfs/node-times.c
index d4a7388..67f0142 100644
--- a/libdiskfs/node-times.c
+++ b/libdiskfs/node-times.c
@@ -53,21 +53,21 @@ diskfs_set_node_times (struct node *np)
   if (np->dn_set_mtime)
     {
       np->dn_stat.st_mtim.tv_sec = t.tv_sec;
-      np->dn_stat.st_mtim.tv_nsec = 0;
+      np->dn_stat.st_mtim.tv_nsec = t.tv_usec * 1000;
       np->dn_stat_dirty = 1;
       np->dn_set_mtime = 0;
     }
   if (np->dn_set_atime)
     {
       np->dn_stat.st_atim.tv_sec = t.tv_sec;
-      np->dn_stat.st_atim.tv_nsec = 0;
+      np->dn_stat.st_atim.tv_nsec = t.tv_usec * 1000;
       np->dn_stat_dirty = 1;
       np->dn_set_atime = 0;
     }
   if (np->dn_set_ctime)
     {
       np->dn_stat.st_ctim.tv_sec = t.tv_sec;
-      np->dn_stat.st_ctim.tv_nsec = 0;
+      np->dn_stat.st_ctim.tv_nsec = t.tv_usec * 1000;
       np->dn_stat_dirty = 1;
       np->dn_set_ctime = 0;
     }
diff --git a/libdiskfs/opts-common.c b/libdiskfs/opts-common.c
index e3cbd31..d37c286 100644
--- a/libdiskfs/opts-common.c
+++ b/libdiskfs/opts-common.c
@@ -52,7 +52,7 @@ const struct argp_option diskfs_common_options[] =
   {"nogrpid",    0,   0, OPTION_ALIAS | OPTION_HIDDEN},
   {"sysvgroups", 0,   0, OPTION_ALIAS | OPTION_HIDDEN},
   {"inherit-dir-group", OPT_INHERIT_DIR_GROUP, 0, 0,
-   "Create new nodes with gid of parent dir"},
+   "Create new nodes with gid of parent dir (default)"},
   {"grpid",    0,   0, OPTION_ALIAS | OPTION_HIDDEN},
   {"bsdgroups", 0,   0, OPTION_ALIAS | OPTION_HIDDEN},
   {0, 0}
diff --git a/libfshelp/start-translator-long.c 
b/libfshelp/start-translator-long.c
index 8927c0d..64a20be 100644
--- a/libfshelp/start-translator-long.c
+++ b/libfshelp/start-translator-long.c
@@ -1,6 +1,5 @@
 /*
-   Copyright (C) 1995, 1996, 1999, 2000, 2002, 2004, 2010
-   Free Software Foundation, Inc.
+   Copyright (C) 1995,96,99,2000,02, 04 Free Software Foundation, Inc.
    Written by Miles Bader and Michael I. Bushnell.
 
    This file is part of the GNU Hurd.
@@ -28,9 +27,6 @@
 #include <string.h>
 #include <assert.h>
 #include "fshelp.h"
-#ifdef HAVE_FILE_EXEC_FILE_NAME
-#include <hurd/fs_experimental.h>
-#endif
 
 
 /* The data passed in the various messages we're interested in.  */
@@ -276,22 +272,12 @@ fshelp_start_translator_long (fshelp_open_fn_t 
underlying_open_fn,
   saveport = ports[INIT_PORT_BOOTSTRAP];
   ports[INIT_PORT_BOOTSTRAP] = bootstrap;
 
-#ifdef HAVE_FILE_EXEC_FILE_NAME
   /* Try and exec the translator in TASK...  */
-  err = file_exec_file_name (executable, task, EXEC_DEFAULTS, name,
-                            argz, argz_len, 0, 0,
-                            fds, fds_type, fds_len,
-                            ports, ports_type, ports_len,
-                            ints, ints_len, 0, 0, 0, 0);
-  /* For backwards compatibility.  Just drop it when we kill file_exec.  */
-  if (err == MIG_BAD_ID)
-#endif
-    err = file_exec (executable, task, EXEC_DEFAULTS,
-                    argz, argz_len, 0, 0,
-                    fds, fds_type, fds_len,
-                    ports, ports_type, ports_len,
-                    ints, ints_len, 0, 0, 0, 0);
-
+  err = file_exec (executable, task, EXEC_DEFAULTS,
+                  argz, argz_len, 0, 0,
+                  fds, fds_type, fds_len,
+                  ports, ports_type, ports_len,
+                  ints, ints_len, 0, 0, 0, 0);
   ports_moved = 1;
 
   if (ports_type == MACH_MSG_TYPE_COPY_SEND)
diff --git a/libmachdev/ds_routines.c b/libmachdev/ds_routines.c
index 62b3ee3..d22fb2f 100644
--- a/libmachdev/ds_routines.c
+++ b/libmachdev/ds_routines.c
@@ -205,7 +205,7 @@ ds_device_close (device_t dev)
   ret = (device->emul_ops->close
         ? (*device->emul_ops->close) (device->emul_data)
         : D_SUCCESS);
-  //mach_device_deallocate (device_to_pi (device));
+  mach_device_deallocate (device_to_pi (device));
 
   ports_port_deref (device_to_pi (device));
   return ret;
diff --git a/libmachdev/net.c b/libmachdev/net.c
index 00a019b..501c9bb 100644
--- a/libmachdev/net.c
+++ b/libmachdev/net.c
@@ -212,7 +212,7 @@ deliver_msg(struct net_rcv_msg *msg, if_filter_list_t *ifp)
                          MACH_SEND_MSG|MACH_SEND_TIMEOUT,
                          msg->msg_hdr.msgh_size, 0, MACH_PORT_NULL,
                          0, MACH_PORT_NULL);
-         if (0 && err != MACH_MSG_SUCCESS)
+         if (err != MACH_MSG_SUCCESS)
            {
              /* TODO: remove from filter */
            }
@@ -375,7 +375,7 @@ device_open (mach_port_t reply_port, mach_msg_type_name_t 
reply_port_type,
     }
 
   *devp = ports_get_right (nd);
-  *devicePoly = MACH_MSG_TYPE_MAKE_SEND;
+  *devicePoly = MACH_MSG_TYPE_COPY_SEND;
   return D_SUCCESS;
 }
 
diff --git a/libnetfs/Makefile b/libnetfs/Makefile
index 6bbb80e..1a71b49 100644
--- a/libnetfs/Makefile
+++ b/libnetfs/Makefile
@@ -59,13 +59,12 @@ SRCS= $(OTHERSRCS) $(FSSRCS) $(IOSRCS) $(FSYSSRCS) 
$(IFSOCKSRCS)
 
 installhdrs=netfs.h
 
-MIGSTUBS= ioServer.o fsServer.o fs_experimentalServer.o fsysServer.o 
fsys_replyUser.o ifsockServer.o
+MIGSTUBS= ioServer.o fsServer.o fsysServer.o fsys_replyUser.o ifsockServer.o
 
 OBJS=$(sort $(SRCS:.c=.o) $(MIGSTUBS))
 
 fsys-MIGSFLAGS = -imacros $(srcdir)/mutations.h -DREPLY_PORTS
 fs-MIGSFLAGS = -imacros $(srcdir)/mutations.h
-fs_experimental-MIGSFLAGS = -imacros $(srcdir)/mutations.h
 io-MIGSFLAGS = -imacros $(srcdir)/mutations.h
 ifsock-MIGSFLAGS = -imacros $(srcdir)/mutations.h
 MIGCOMSFLAGS = -prefix netfs_
diff --git a/libnetfs/demuxer.c b/libnetfs/demuxer.c
index 5a38ca2..8ef4d86 100644
--- a/libnetfs/demuxer.c
+++ b/libnetfs/demuxer.c
@@ -26,7 +26,6 @@ netfs_demuxer (mach_msg_header_t *inp,
 {
   mig_routine_t netfs_io_server_routine (mach_msg_header_t *);
   mig_routine_t netfs_fs_server_routine (mach_msg_header_t *);
-  mig_routine_t netfs_fs_experimental_server_routine (mach_msg_header_t *);
   mig_routine_t ports_notify_server_routine (mach_msg_header_t *);
   mig_routine_t netfs_fsys_server_routine (mach_msg_header_t *);
   mig_routine_t ports_interrupt_server_routine (mach_msg_header_t *);
@@ -35,7 +34,6 @@ netfs_demuxer (mach_msg_header_t *inp,
   mig_routine_t routine;
   if ((routine = netfs_io_server_routine (inp)) ||
       (routine = netfs_fs_server_routine (inp)) ||
-      (routine = netfs_fs_experimental_server_routine (inp)) ||
       (routine = ports_notify_server_routine (inp)) ||
       (routine = netfs_fsys_server_routine (inp)) ||
       (routine = ports_interrupt_server_routine (inp)) ||
diff --git a/libnetfs/file-exec.c b/libnetfs/file-exec.c
index ffaf598..638f0ae 100644
--- a/libnetfs/file-exec.c
+++ b/libnetfs/file-exec.c
@@ -1,6 +1,5 @@
 /*
-   Copyright (C) 1996, 1997, 2000, 2001, 2002, 2010
-   Free Software Foundation, Inc.
+   Copyright (C) 1996,97,2000,01,02 Free Software Foundation, Inc.
    Written by Michael I. Bushnell, p/BSG.
 
    This file is part of the GNU Hurd.
@@ -24,14 +23,10 @@
 #include "netfs.h"
 #include "execserver.h"
 #include "fs_S.h"
-#include "fs_experimental_S.h"
 #include <sys/stat.h>
 #include <fcntl.h>
 #include <hurd/exec.h>
 #include <hurd/paths.h>
-#ifdef HAVE_EXEC_EXEC_FILE_NAME
-#include <hurd/exec_experimental.h>
-#endif
 #include <string.h>
 #include <idvec.h>
 
@@ -54,39 +49,6 @@ netfs_S_file_exec (struct protid *cred,
                   mach_port_t *destroynames,
                   size_t destroynameslen)
 {
-  return netfs_S_file_exec_file_name (cred,
-                                     task,
-                                     flags,
-                                     "",
-                                     argv, argvlen,
-                                     envp, envplen,
-                                     fds, fdslen,
-                                     portarray, portarraylen,
-                                     intarray, intarraylen,
-                                     deallocnames, deallocnameslen,
-                                     destroynames, destroynameslen);
-}
-
-kern_return_t
-netfs_S_file_exec_file_name (struct protid *cred,
-                            task_t task,
-                            int flags,
-                            char *filename,
-                            char *argv,
-                            size_t argvlen,
-                            char *envp,
-                            size_t envplen,
-                            mach_port_t *fds,
-                            size_t fdslen,
-                            mach_port_t *portarray,
-                            size_t portarraylen,
-                            int *intarray,
-                            size_t intarraylen,
-                            mach_port_t *deallocnames,
-                            size_t deallocnameslen,
-                            mach_port_t *destroynames,
-                            size_t destroynameslen)
-{
   struct node *np;
   error_t err;
   uid_t uid;
@@ -171,31 +133,14 @@ netfs_S_file_exec_file_name (struct protid *cred,
          if (newpi)
            {
              right = ports_get_send_right (newpi);
-#ifdef HAVE_EXEC_EXEC_FILE_NAME
-             err = exec_exec_file_name (_netfs_exec,
-                                        right, MACH_MSG_TYPE_COPY_SEND,
-                                        task, flags, filename,
-                                        argv, argvlen, envp, envplen,
-                                        fds, MACH_MSG_TYPE_COPY_SEND, fdslen,
-                                        portarray, MACH_MSG_TYPE_COPY_SEND,
-                                        portarraylen,
-                                        intarray, intarraylen,
-                                        deallocnames, deallocnameslen,
-                                        destroynames, destroynameslen);
-             /* For backwards compatibility.  Just drop it when we kill
-                exec_exec.  */
-             if (err == MIG_BAD_ID)
-#endif
-               err = exec_exec (_netfs_exec,
-                                right, MACH_MSG_TYPE_COPY_SEND,
-                                task, flags, argv, argvlen, envp, envplen,
-                                fds, MACH_MSG_TYPE_COPY_SEND, fdslen,
-                                portarray, MACH_MSG_TYPE_COPY_SEND,
-                                portarraylen,
-                                intarray, intarraylen,
-                                deallocnames, deallocnameslen,
-                                destroynames, destroynameslen);
-
+             err = exec_exec (_netfs_exec,
+                              right, MACH_MSG_TYPE_COPY_SEND,
+                              task, flags, argv, argvlen, envp, envplen,
+                              fds, MACH_MSG_TYPE_COPY_SEND, fdslen,
+                              portarray, MACH_MSG_TYPE_COPY_SEND, portarraylen,
+                              intarray, intarraylen,
+                              deallocnames, deallocnameslen,
+                              destroynames, destroynameslen);
              mach_port_deallocate (mach_task_self (), right);
              ports_port_deref (newpi);
            }
diff --git a/libports/manage-multithread.c b/libports/manage-multithread.c
index 008f805..64e442f 100644
--- a/libports/manage-multithread.c
+++ b/libports/manage-multithread.c
@@ -28,10 +28,6 @@
 
 #define STACK_SIZE (64 * 1024)
 
-/* FIXME Until threadvars are completely replaced with correct TLS, use this
-   hack to set the stack size.  */
-size_t __pthread_stack_default_size = STACK_SIZE;
-
 #define THREAD_PRI 2
 
 /* XXX To reduce starvation, the priority of new threads is initially
@@ -110,7 +106,6 @@ ports_manage_port_operations_multithread (struct 
port_bucket *bucket,
 
   auto void * thread_function (void *);
 
-  /* FIXME This is currently a no-op.  */
   pthread_attr_init (&attr);
   pthread_attr_setstacksize (&attr, STACK_SIZE);
 
@@ -241,7 +236,5 @@ ports_manage_port_operations_multithread (struct 
port_bucket *bucket,
       return NULL;
     }
 
-  thread_timeout = global_timeout = 0; /* XXX */
-
   thread_function ((void *) 1);
 }
diff --git a/libtrivfs/Makefile b/libtrivfs/Makefile
index c6bd3f8..241b76d 100644
--- a/libtrivfs/Makefile
+++ b/libtrivfs/Makefile
@@ -44,7 +44,7 @@ OTHERSRCS=demuxer.c protid-clean.c protid-dup.c cntl-create.c 
\
 
 SRCS=$(FSSRCS) $(IOSRCS) $(FSYSSRCS) $(OTHERSRCS)
 
-MIGSTUBS=fsServer.o fs_experimentalServer.o ioServer.o fsysServer.o 
fsys_replyUser.o
+MIGSTUBS=fsServer.o ioServer.o fsysServer.o fsys_replyUser.o
 
 libname = libtrivfs
 HURDLIBS = fshelp iohelp ports shouldbeinlibc
@@ -54,7 +54,7 @@ MIGCOMSFLAGS = -prefix trivfs_
 installhdrs := trivfs.h
 mig-sheader-prefix = trivfs_
 ifndef no_deps
-installhdrs += $(patsubst %,trivfs_%_S.h,fs fs_experimental io fsys)
+installhdrs += $(patsubst %,trivfs_%_S.h,fs io fsys)
 endif
 
 include ../Makeconf
diff --git a/libtrivfs/demuxer.c b/libtrivfs/demuxer.c
index df7f5b9..411699f 100644
--- a/libtrivfs/demuxer.c
+++ b/libtrivfs/demuxer.c
@@ -27,7 +27,6 @@ trivfs_demuxer (mach_msg_header_t *inp,
 {
   mig_routine_t trivfs_io_server_routine (mach_msg_header_t *);
   mig_routine_t trivfs_fs_server_routine (mach_msg_header_t *);
-  mig_routine_t trivfs_fs_experimental_server_routine (mach_msg_header_t *);
   mig_routine_t ports_notify_server_routine (mach_msg_header_t *);
   mig_routine_t trivfs_fsys_server_routine (mach_msg_header_t *);
   mig_routine_t ports_interrupt_server_routine (mach_msg_header_t *);
@@ -36,7 +35,6 @@ trivfs_demuxer (mach_msg_header_t *inp,
   mig_routine_t routine;
   if ((routine = trivfs_io_server_routine (inp)) ||
       (routine = trivfs_fs_server_routine (inp)) ||
-      (routine = trivfs_fs_experimental_server_routine (inp)) ||
       (routine = ports_notify_server_routine (inp)) ||
       (routine = trivfs_fsys_server_routine (inp)) ||
       (routine = ports_interrupt_server_routine (inp)))
diff --git a/libtrivfs/file-exec.c b/libtrivfs/file-exec.c
index f626955..a3ab048 100644
--- a/libtrivfs/file-exec.c
+++ b/libtrivfs/file-exec.c
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 1994, 2002, 2010 Free Software Foundation, Inc.
+   Copyright (C) 1994,2002 Free Software Foundation, Inc.
 
    This program is free software; you can redistribute it and/or
    modify it under the terms of the GNU General Public License as
@@ -40,28 +40,3 @@ trivfs_S_file_exec (trivfs_protid_t exec_file,
 {
   return EOPNOTSUPP;
 }
-
-kern_return_t
-trivfs_S_file_exec_file_name (trivfs_protid_t exec_file,
-                             mach_port_t reply,
-                             mach_msg_type_name_t replyPoly,
-                             mach_port_t exec_task,
-                             int flags,
-                             string_t filename,
-                             data_t argv,
-                             mach_msg_type_number_t argvCnt,
-                             data_t envp,
-                             mach_msg_type_number_t envpCnt,
-                             portarray_t fdarray,
-                             mach_msg_type_number_t fdarrayCnt,
-                             portarray_t portarray,
-                             mach_msg_type_number_t portarrayCnt,
-                             intarray_t intarray,
-                             mach_msg_type_number_t intarrayCnt,
-                             mach_port_array_t deallocnames,
-                             mach_msg_type_number_t deallocnamesCnt,
-                             mach_port_array_t destroynames,
-                             mach_msg_type_number_t destroynamesCnt)
-{
-  return EOPNOTSUPP;
-}
diff --git a/libtrivfs/trivfs.h b/libtrivfs/trivfs.h
index dba5dad..cf817b5 100644
--- a/libtrivfs/trivfs.h
+++ b/libtrivfs/trivfs.h
@@ -299,7 +299,6 @@ extern size_t trivfs_num_dynamic_port_buckets;
 /* These are the MiG-generated headers that declare prototypes
    for the server functions.  */
 #include <hurd/trivfs_fs_S.h>
-#include <hurd/trivfs_fs_experimental_S.h>
 #include <hurd/trivfs_io_S.h>
 #include <hurd/trivfs_fsys_S.h>
 
diff --git a/pfinet/linux-src/net/ipv4/devinet.c 
b/pfinet/linux-src/net/ipv4/devinet.c
index a566743..0416ee8 100644
--- a/pfinet/linux-src/net/ipv4/devinet.c
+++ b/pfinet/linux-src/net/ipv4/devinet.c
@@ -214,12 +214,10 @@ inet_insert_ifa(struct in_device *in_dev, struct 
in_ifaddr *ifa)
 {
        struct in_ifaddr *ifa1, **ifap, **last_primary;
 
-#ifndef _HURD_
        if (ifa->ifa_local == 0) {
                inet_free_ifa(ifa);
                return 0;
        }
-#endif
 
        ifa->ifa_flags &= ~IFA_F_SECONDARY;
        last_primary = &in_dev->ifa_list;
diff --git a/pfinet/options.c b/pfinet/options.c
index 4115518..1d0a9e1 100644
--- a/pfinet/options.c
+++ b/pfinet/options.c
@@ -60,26 +60,23 @@ extern struct inet6_dev *ipv6_find_idev (struct device 
*dev);
 extern int inet6_addr_add (int ifindex, struct in6_addr *pfx, int plen);
 extern int inet6_addr_del (int ifindex, struct in6_addr *pfx, int plen);
 
-#ifdef CONFIG_IPV6
-static struct rt6_info * ipv6_get_dflt_router (void);
-#endif
-
 
 /* Pfinet options.  Used for both startup and runtime.  */
 static const struct argp_option options[] =
 {
-  {"interface", 'i', "DEVICE",   0,  "Network interface to use", 1},
+  {"interface", 'i', "DEVICE",  0,  "Network interface to use", 1},
   {0,0,0,0,"These apply to a given interface:", 2},
-  {"address",   'a', "ADDRESS",  OPTION_ARG_OPTIONAL, "Set the network 
address"},
-  {"netmask",   'm', "MASK",     OPTION_ARG_OPTIONAL, "Set the netmask"},
-  {"peer",      'p', "ADDRESS",  OPTION_ARG_OPTIONAL, "Set the peer address"},
-  {"gateway",   'g', "ADDRESS",  OPTION_ARG_OPTIONAL, "Set the default 
gateway"},
-  {"ipv4",      '4', "NAME",     0, "Put active IPv4 translator on NAME"},
+  {"address",   'a', "ADDRESS", 0, "Set the network address"},
+  {"netmask",   'm', "MASK",    0, "Set the netmask"},
+  {"peer",      'p', "ADDRESS", 0, "Set the peer address"},
+  {"gateway",   'g', "ADDRESS", 0, "Set the default gateway"},
+  {"ipv4",      '4', "NAME",    0, "Put active IPv4 translator on NAME"},
 #ifdef CONFIG_IPV6  
-  {"ipv6",      '6', "NAME",     0, "Put active IPv6 translator on NAME"},
-  {"address6",  'A', "ADDR/LEN", OPTION_ARG_OPTIONAL, "Set the global IPv6 
address"},
-  {"gateway6",  'G', "ADDRESS",  OPTION_ARG_OPTIONAL, "Set the IPv6 default 
gateway"},
+  {"ipv6",      '6', "NAME",    0, "Put active IPv6 translator on NAME"},
+  {"address6",  'A', "ADDR/LEN",0, "Set the global IPv6 address"},
+  {"gateway6",  'G', "ADDRESS", 0, "Set the IPv6 default gateway"},
 #endif
+  {"shutdown",  's', 0,         0, "Shut it down"},
   {0}
 };
 
@@ -115,50 +112,6 @@ struct parse_hook
   struct parse_interface *curint;
 };
 
-static void
-parse_interface_copy_device(struct device *src,
-                            struct parse_interface *dst)
-{
-  uint32_t broad;
-  struct rt_key key = { 0 };
-  struct inet6_dev *idev = NULL;
-  struct fib_result res;
-
-  inquire_device (src, &dst->address, &dst->netmask, 
-                  &dst->peer, &broad);
-  /* Get gateway */
-  dst->gateway = INADDR_NONE;
-  key.oif = src->ifindex;
-  if (! main_table->tb_lookup (main_table, &key, &res)
-      && FIB_RES_GW(res) != INADDR_ANY)
-    dst->gateway = FIB_RES_GW (res);
-#ifdef CONFIG_IPV6
-  if (trivfs_protid_portclasses[PORTCLASS_INET6] != MACH_PORT_NULL)
-    idev = ipv6_find_idev(src);
-
-  if (idev)
-  {
-    struct inet6_ifaddr *ifa = idev->addr_list;
-    
-    /* Look for IPv6 default router and add it to the interface,
-     * if it belongs to it.
-     */
-    struct rt6_info *rt6i = ipv6_get_dflt_router();
-    if (rt6i->rt6i_dev == src) 
-      memcpy (&dst->gateway6, &rt6i->rt6i_gateway, sizeof (struct in6_addr));
-    /* Search for global address and set it in dst */
-    do 
-    {
-      if (!IN6_IS_ADDR_LINKLOCAL (&ifa->addr)) {
-        memcpy (&dst->address6, ifa, sizeof (struct inet6_ifaddr));
-        break;
-      }
-    }
-    while ((ifa = ifa->if_next));
-  }
-#endif
-}
-
 /* Adds an empty interface slot to H, and sets H's current interface to it, or
    returns an error. */
 static error_t
@@ -169,7 +122,6 @@ parse_hook_add_interface (struct parse_hook *h)
             (h->num_interfaces + 1) * sizeof (struct parse_interface));
   if (! new)
     return ENOMEM;
-
   h->interfaces = new;
   h->num_interfaces++;
   h->curint = new + h->num_interfaces - 1;
@@ -231,16 +183,10 @@ parse_opt (int opt, char *arg, struct argp_state *state)
      if (addr == INADDR_NONE) PERR (EINVAL, "Malformed %s", type);           \
      addr; })
 
-  if (!arg && state->next < state->argc
-      && (*state->argv[state->next] != '-'))
-    {
-      arg = state->argv[state->next];
-      state->next ++;
-    }
-
   switch (opt)
     {
-      struct parse_interface *in, *gw4_in;
+      struct parse_interface *in;
+      uint32_t gateway;
 #ifdef CONFIG_IPV6
       struct parse_interface *gw6_in;
       char *ptr;
@@ -271,59 +217,29 @@ parse_opt (int opt, char *arg, struct argp_state *state)
       if (err)
        FAIL (err, 10, err, "%s", arg);
 
-      /* Set old interface values */
-      parse_interface_copy_device (in->device, in);
       break;
 
     case 'a':
-      if (arg)
-      {
-        h->curint->address = ADDR (arg, "address");
-        if (!IN_CLASSA (ntohl (h->curint->address))
-            && !IN_CLASSB (ntohl (h->curint->address))
-            && !IN_CLASSC (ntohl (h->curint->address)))
-          {
-            if (IN_MULTICAST (ntohl (h->curint->address)))
-              FAIL (EINVAL, 1, 0,
-                    "%s: Cannot set interface address to multicast address",
-                    arg);
-            else
-              FAIL (EINVAL, 1, 0,
-                    "%s: Illegal or undefined network address", arg);
-          }
-      } else { 
-        h->curint->address = ADDR ("0.0.0.0", "address");
-        h->curint->netmask = ADDR ("255.0.0.0", "netmask");
-        h->curint->gateway = INADDR_NONE;
-      }
+      h->curint->address = ADDR (arg, "address");
+      if (!IN_CLASSA (ntohl (h->curint->address))
+         && !IN_CLASSB (ntohl (h->curint->address))
+         && !IN_CLASSC (ntohl (h->curint->address)))
+       {
+         if (IN_MULTICAST (ntohl (h->curint->address)))
+           FAIL (EINVAL, 1, 0,
+                 "%s: Cannot set interface address to multicast address",
+                 arg);
+         else
+           FAIL (EINVAL, 1, 0,
+                 "%s: Illegal or undefined network address", arg);
+       }
       break;
-
     case 'm':
-      if (arg)
-        h->curint->netmask = ADDR (arg, "netmask"); 
-      else 
-        h->curint->netmask = INADDR_NONE;
-      break;
-
+      h->curint->netmask = ADDR (arg, "netmask"); break;
     case 'p':
-      if (arg)
-        h->curint->peer = ADDR (arg, "peer"); 
-      else 
-        h->curint->peer = INADDR_NONE;
-      break;
-
+      h->curint->peer = ADDR (arg, "peer"); break;
     case 'g':
-      if (arg)
-       {
-         /* Remove an possible other default gateway */ 
-         for (in = h->interfaces; in < h->interfaces + h->num_interfaces; 
-              in++)
-           in->gateway = INADDR_NONE;
-         h->curint->gateway = ADDR (arg, "gateway");
-       }
-      else 
-        h->curint->gateway = INADDR_NONE;
-      break;
+      h->curint->gateway = ADDR (arg, "gateway"); break;
 
     case '4':
       pfinet_bind (PORTCLASS_INET, arg);
@@ -338,46 +254,36 @@ parse_opt (int opt, char *arg, struct argp_state *state)
       break;
 
     case 'A':
-      if (arg)
+      if ((ptr = strchr (arg, '/'))) 
        {
-         if ((ptr = strchr (arg, '/'))) 
-           {
-             h->curint->address6.prefix_len = atoi (ptr + 1);
-             if (h->curint->address6.prefix_len > 128) 
-               FAIL (EINVAL, 1, 0, "%s: The prefix-length is invalid", arg);
-             
-             *ptr = 0;
-           }
-         else
-           {
-             h->curint->address6.prefix_len = 64;
-             fprintf (stderr, "No prefix-length given, "
-                      "defaulting to %s/64.\n", arg);
-           }
-
-         if (inet_pton (AF_INET6, arg, &h->curint->address6.addr) <= 0)
-           PERR (EINVAL, "Malformed address");
+         h->curint->address6.prefix_len = atoi (ptr + 1);
+         if (h->curint->address6.prefix_len > 128) 
+           FAIL (EINVAL, 1, 0, "%s: The prefix-length is invalid", arg);
 
-         if (IN6_IS_ADDR_MULTICAST (&h->curint->address6.addr))
-           FAIL (EINVAL, 1, 0, "%s: Cannot set interface address to "
-                 "multicast address", arg);
+         *ptr = 0;
        }
       else
-        memset (&h->curint->address6, 0, sizeof (struct inet6_ifaddr));
+       {
+         h->curint->address6.prefix_len = 64;
+         fprintf (stderr, "No prefix-length given, defaulting to %s/64.\n",
+                  arg);
+       }
+
+      if (inet_pton (AF_INET6, arg, &h->curint->address6.addr) <= 0)
+       PERR (EINVAL, "Malformed address");
+
+      if (IN6_IS_ADDR_MULTICAST (&h->curint->address6.addr))
+       FAIL (EINVAL, 1, 0, "%s: Cannot set interface address to "
+             "multicast address", arg);
       break;
 
     case 'G':
-      if (arg)
-       {
-         if (inet_pton (AF_INET6, arg, &h->curint->gateway6) <= 0)
-           PERR (EINVAL, "Malformed gateway");
+      if (inet_pton (AF_INET6, arg, &h->curint->gateway6) <= 0)
+       PERR (EINVAL, "Malformed gateway");
 
-         if (IN6_IS_ADDR_MULTICAST (&h->curint->gateway6))
-           FAIL (EINVAL, 1, 0, "%s: Cannot set gateway to "
-                 "multicast address", arg);
-       }
-      else
-        memset (&h->curint->gateway6, 0, sizeof (struct in6_addr));
+      if (IN6_IS_ADDR_MULTICAST (&h->curint->gateway6))
+       FAIL (EINVAL, 1, 0, "%s: Cannot set gateway to "
+             "multicast address", arg);
       break;
 #endif /* CONFIG_IPV6 */
 
@@ -417,19 +323,20 @@ parse_opt (int opt, char *arg, struct argp_state *state)
          /* Specifying a netmask for an address-less interface is a no-no.  */
          FAIL (EDESTADDRREQ, 14, 0, "Cannot set netmask");
 #endif
+
+      gateway = INADDR_NONE;
 #ifdef CONFIG_IPV6
       gw6_in = NULL;
 #endif
-      gw4_in = NULL;
       for (in = h->interfaces; in < h->interfaces + h->num_interfaces; in++)
        {
-          /* delete interface if it doesn't match the actual netmask */
-          if (! ( (h->curint->address & h->curint->netmask) 
-                  == (h->curint->gateway & h->curint->netmask))) 
-            h->curint->gateway = INADDR_NONE;
-
          if (in->gateway != INADDR_NONE)
-              gw4_in = in;
+           {
+             if (gateway != INADDR_NONE)
+               FAIL (err, 15, 0, "Cannot have multiple default gateways");
+             gateway = in->gateway;
+             in->gateway = INADDR_NONE;
+           }
 
 #ifdef CONFIG_IPV6
          if (!IN6_IS_ADDR_UNSPECIFIED (&in->gateway6))
@@ -454,20 +361,15 @@ parse_opt (int opt, char *arg, struct argp_state *state)
            idev = ipv6_find_idev(in->device);
 #endif
 
-         if (in->address == INADDR_NONE && in->netmask == INADDR_NONE)
+         if (in->address != INADDR_NONE || in->netmask != INADDR_NONE)
            {
-             h->curint->address = ADDR ("0.0.0.0", "address");
-             h->curint->netmask = ADDR ("255.0.0.0", "netmask");
-           }
-
-         if (in->device)
-           err = configure_device (in->device, in->address, in->netmask,
-                                   in->peer, INADDR_NONE);
-
-         if (err)
-           {
-             pthread_mutex_unlock (&global_lock);
-             FAIL (err, 16, 0, "cannot configure interface");
+             err = configure_device (in->device, in->address, in->netmask,
+                                     in->peer, INADDR_NONE);
+             if (err)
+               {
+                 pthread_mutex_unlock (&global_lock);
+                 FAIL (err, 16, 0, "cannot configure interface");
+               }
            }
 
 #ifdef CONFIG_IPV6
@@ -475,25 +377,24 @@ parse_opt (int opt, char *arg, struct argp_state *state)
            continue;
 
          /* First let's remove all non-local addresses. */
-         struct inet6_ifaddr *ifa = idev->addr_list;
- 
-         while (ifa)
-           {
-             struct inet6_ifaddr *c_ifa = ifa;
-             ifa = ifa->if_next;
- 
-             if (!IN6_IS_ADDR_UNSPECIFIED (&in->address6.addr)
-                 && IN6_ARE_ADDR_EQUAL (&c_ifa->addr, &in->address6.addr))
-               memset (&in->address6, 0, sizeof (struct inet6_ifaddr));
-  
-             else if (!IN6_IS_ADDR_LINKLOCAL (&c_ifa->addr)
-                      && !IN6_IS_ADDR_SITELOCAL (&c_ifa->addr))
-               inet6_addr_del (in->device->ifindex, &c_ifa->addr,
-                               c_ifa->prefix_len);
-           }
- 
-         if (!IN6_IS_ADDR_UNSPECIFIED (&in->address6.addr))
-           {
+         struct inet6_ifaddr *ifa = idev->addr_list;
+
+         while (ifa)
+           {
+             struct inet6_ifaddr *c_ifa = ifa;
+             ifa = ifa->if_next;
+
+             if (IN6_ARE_ADDR_EQUAL (&c_ifa->addr, &in->address6.addr))
+               memset (&in->address6, 0, sizeof (struct inet6_ifaddr));
+
+             else if (!IN6_IS_ADDR_LINKLOCAL (&c_ifa->addr)
+                      && !IN6_IS_ADDR_SITELOCAL (&c_ifa->addr))
+               inet6_addr_del (in->device->ifindex, &c_ifa->addr,
+                               c_ifa->prefix_len);
+           }
+
+         if (!IN6_IS_ADDR_UNSPECIFIED (&in->address6.addr))
+           {
              /* Now assign the new address */
              inet6_addr_add (in->device->ifindex, &in->address6.addr,
                              in->address6.prefix_len);
@@ -517,40 +418,33 @@ parse_opt (int opt, char *arg, struct argp_state *state)
        req.nlh.nlmsg_seq = 0;
        req.nlh.nlmsg_len = NLMSG_LENGTH (sizeof req.rtm);
 
-       memset (&req.rtm, 0, sizeof req.rtm);
-       memset (&rta, 0, sizeof rta);
+       bzero (&req.rtm, sizeof req.rtm);
+       bzero (&rta, sizeof rta);
        req.rtm.rtm_scope = RT_SCOPE_UNIVERSE;
        req.rtm.rtm_type = RTN_UNICAST;
        req.rtm.rtm_protocol = RTPROT_STATIC;
+       rta.rta_gw = &gateway;
 
-       if (!gw4_in)
+       if (gateway == INADDR_NONE)
          {
-           /* Delete any existing default route on configured devices  */
-            for (in = h->interfaces; in < h->interfaces + h->num_interfaces;
-                 in++) {
-              req.nlh.nlmsg_type = RTM_DELROUTE;
-              req.nlh.nlmsg_flags = 0;
-              rta.rta_oif = &in->device->ifindex;
-              tb = fib_get_table (req.rtm.rtm_table);
-              if (tb)
-                {
-                  err = - (*tb->tb_delete) 
-                    (tb, &req.rtm, &rta, &req.nlh, 0);
-                  if (err && err != ESRCH)
-                    {
-                      pthread_mutex_unlock (&global_lock);
-                      FAIL (err, 17, 0, 
-                            "cannot remove old default gateway");
-                    }
-                  err = 0;
-                }
-            }
+           /* Delete any existing default route.  */
+           req.nlh.nlmsg_type = RTM_DELROUTE;
+           req.nlh.nlmsg_flags = 0;
+           tb = fib_get_table (req.rtm.rtm_table);
+           if (tb)
+             {
+               err = - (*tb->tb_delete) (tb, &req.rtm, &rta, &req.nlh, 0);
+               if (err && err != ESRCH)
+                 {
+                   pthread_mutex_unlock (&global_lock);
+                   FAIL (err, 17, 0, "cannot remove old default gateway");
+                 }
+               err = 0;
+             }
          }
        else
          {
            /* Add a default route, replacing any existing one.  */
-            rta.rta_oif = &gw4_in->device->ifindex;
-            rta.rta_gw = &gw4_in->gateway;
            req.nlh.nlmsg_type = RTM_NEWROUTE;
            req.nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_CREATE | NLM_F_REPLACE;
            tb = fib_new_table (req.rtm.rtm_table);
@@ -573,77 +467,13 @@ parse_opt (int opt, char *arg, struct argp_state *state)
          if (!gw6_in || rt6i->rt6i_dev != gw6_in->device
              || !IN6_ARE_ADDR_EQUAL (&rt6i->rt6i_gateway, &gw6_in->gateway6))
            {
-              /* Delete any existing default route on configured devices  */
-              for (in = h->interfaces; in < h->interfaces 
-                   + h->num_interfaces; in++) 
-                if (rt6i->rt6i_dev == in->device || gw6_in )
-                  rt6_purge_dflt_routers (0);
-
+             rt6_purge_dflt_routers (0);
              if (gw6_in)
                rt6_add_dflt_router (&gw6_in->gateway6, gw6_in->device);
            }
        }
 #endif       
 
-      /*  Setup the routing required for DHCP. */
-      for (in = h->interfaces; in < h->interfaces + h->num_interfaces; in++)
-       {
-         struct kern_rta rta;
-         struct
-         {
-           struct nlmsghdr nlh;
-           struct rtmsg rtm;
-         } req;
-         struct fib_table *tb;
-         struct rtentry route;
-         struct sockaddr_in *dst;
-         struct device *dev;
-
-         if (!in->device)
-           continue;
-
-         dst = (struct sockaddr_in *) &route.rt_dst;
-         if (!in->device->name) 
-           {
-             pthread_mutex_unlock (&global_lock);
-             FAIL (ENODEV, 17, 0, "unknown device");
-           }
-         dev = dev_get (in->device->name);
-         if (!dev)
-           {
-             pthread_mutex_unlock (&global_lock);
-             FAIL (ENODEV, 17, 0, "unknown device");
-           }
-
-         /* Simulate the SIOCADDRT behavior.  */
-         memset (&route, 0, sizeof (struct rtentry));
-         memset (&req.rtm, 0, sizeof req.rtm);
-         memset (&rta, 0, sizeof rta);
-         req.nlh.nlmsg_type = RTM_NEWROUTE;
-
-         /* Append this routing for 0.0.0.0.  By this way we can send always
-            dhcp messages (e.g dhcp renew). */
-         req.nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_CREATE
-           | NLM_F_APPEND;
-         req.rtm.rtm_protocol = RTPROT_BOOT;
-         req.rtm.rtm_scope = RT_SCOPE_LINK;
-         req.rtm.rtm_type = RTN_UNICAST;
-         rta.rta_dst = &dst->sin_addr.s_addr;
-         rta.rta_oif = &dev->ifindex;
-
-         tb = fib_new_table (req.rtm.rtm_table);
-         if (tb)
-           err = tb->tb_insert (tb, &req.rtm, &rta, &req.nlh, NULL);
-         else
-           err = ENOBUFS;
-
-         if (err)
-           {
-             pthread_mutex_unlock (&global_lock);
-             FAIL (err, 17, 0, "cannot add route");
-           }
-       }
-
       pthread_mutex_unlock (&global_lock);
 
       /* Fall through to free hook.  */
@@ -696,9 +526,8 @@ trivfs_append_args (struct trivfs_control *fsys, char 
**argz, size_t *argz_len)
         ADD_ADDR_OPT ("netmask", mask);
       if (peer != addr)
        ADD_ADDR_OPT ("peer", peer);
-      key.oif = dev->ifindex;
-      if (! main_table->tb_lookup (main_table, &key, &res)
-          && FIB_RES_GW(res) != INADDR_ANY)
+      key.iif = dev->ifindex;
+      if (! main_table->tb_lookup (main_table, &key, &res)) 
        ADD_ADDR_OPT ("gateway", FIB_RES_GW (res));
 
 #undef ADD_ADDR_OPT
diff --git a/proc/Makefile b/proc/Makefile
index dc768d3..2eed13c 100644
--- a/proc/Makefile
+++ b/proc/Makefile
@@ -29,7 +29,7 @@ MIGSFLAGS="-DPROCESS_INTRAN=pstruct_t reqport_find 
(process_t)" \
        "-DPROCESS_IMPORTS=import \"proc.h\";"
 
 MIGSTUBS = processServer.o notifyServer.o \
-       ourmsgUser.o proc_excUser.o proc_excServer.o processUser.o
+       ourmsgUser.o proc_excUser.o proc_excServer.o
 OBJS = $(SRCS:.c=.o) $(MIGSTUBS)
 HURDLIBS = ihash ports shouldbeinlibc
 OTHERLIBS = -lpthread
diff --git a/proc/main.c b/proc/main.c
index 32da1e3..5d6dc21 100644
--- a/proc/main.c
+++ b/proc/main.c
@@ -1,5 +1,5 @@
 /* Initialization of the proc server
-   Copyright (C) 1993,94,95,96,97,99,2000,01,13 Free Software Foundation, Inc.
+   Copyright (C) 1993,94,95,96,97,99,2000,01 Free Software Foundation, Inc.
 
 This file is part of the GNU Hurd.
 
@@ -88,12 +88,7 @@ main (int argc, char **argv, char **envp)
   generic_port = ports_get_right (genport);
 
   /* Create the initial proc object for init (PID 1).  */
-  init_proc = create_init_proc ();
-
-  /* Create the startup proc object for /hurd/init (PID 2).  */
-  startup_proc = allocate_proc (MACH_PORT_NULL);
-  startup_proc->p_deadmsg = 1;
-  complete_proc (startup_proc, HURD_PID_STARTUP);
+  startup_proc = create_startup_proc ();
 
   /* Create our own proc object.  */
   self_proc = allocate_proc (mach_task_self ());
diff --git a/proc/mgt.c b/proc/mgt.c
index 00296fe..602ba84 100644
--- a/proc/mgt.c
+++ b/proc/mgt.c
@@ -1,6 +1,5 @@
 /* Process management
-   Copyright (C) 1992,93,94,95,96,99,2000,01,02,13
-     Free Software Foundation, Inc.
+   Copyright (C) 1992,93,94,95,96,99,2000,01,02 Free Software Foundation, Inc.
 
 This file is part of the GNU Hurd.
 
@@ -185,7 +184,7 @@ S_proc_child (struct proc *parentp,
   /* Process hierarchy.  Remove from our current location
      and place us under our new parent.  Sanity check to make sure
      parent is currently init. */
-  assert (childp->p_parent == init_proc);
+  assert (childp->p_parent == startup_proc);
   if (childp->p_sib)
     childp->p_sib->p_prevsib = childp->p_prevsib;
   *childp->p_prevsib = childp->p_sib;
@@ -591,7 +590,7 @@ allocate_proc (task_t task)
 /* Allocate and initialize the proc structure for init (PID 1),
    the original parent of all other procs.  */
 struct proc *
-create_init_proc (void)
+create_startup_proc (void)
 {
   static const uid_t zero;
   struct proc *p;
@@ -600,7 +599,7 @@ create_init_proc (void)
   p = allocate_proc (MACH_PORT_NULL);
   assert (p);
 
-  p->p_pid = HURD_PID_INIT;
+  p->p_pid = HURD_PID_STARTUP;
 
   p->p_parent = p;
   p->p_sib = 0;
@@ -648,7 +647,7 @@ proc_death_notify (struct proc *p)
 }
 
 /* Complete a new process that has been allocated but not entirely initialized.
-   This gets called for every process except init_proc (PID 1).  */
+   This gets called for every process except startup_proc (PID 1).  */
 void
 complete_proc (struct proc *p, pid_t pid)
 {
@@ -667,47 +666,30 @@ complete_proc (struct proc *p, pid_t pid)
 
   p->p_pid = pid;
 
-  if (pid == HURD_PID_STARTUP)
-    {
-      /* Equip HURD_PID_STARTUP with the same credentials as
-         HURD_PID_INIT.  */
-      static const uid_t zero;
-      p->p_id = make_ids (&zero, 1);
-      assert (p->p_id);
-    }
-  else
-    {
-      ids_ref (&nullids);
-      p->p_id = &nullids;
-    }
+  ids_ref (&nullids);
+  p->p_id = &nullids;
 
   p->p_login = nulllogin;
   p->p_login->l_refcnt++;
 
   /* Our parent is init for now.  */
-  p->p_parent = init_proc;
+  p->p_parent = startup_proc;
 
-  p->p_sib = init_proc->p_ochild;
-  p->p_prevsib = &init_proc->p_ochild;
+  p->p_sib = startup_proc->p_ochild;
+  p->p_prevsib = &startup_proc->p_ochild;
   if (p->p_sib)
     p->p_sib->p_prevsib = &p->p_sib;
-  init_proc->p_ochild = p;
+  startup_proc->p_ochild = p;
   p->p_loginleader = 0;
   p->p_ochild = 0;
   p->p_parentset = 0;
 
   p->p_noowner = 1;
 
-  p->p_pgrp = init_proc->p_pgrp;
+  p->p_pgrp = startup_proc->p_pgrp;
 
-  /* At this point, we do not know the task of the startup process,
-     defer registering death notifications and adding it to the hash
-     tables.  */
-  if (pid != HURD_PID_STARTUP)
-    {
-      proc_death_notify (p);
-      add_proc_to_hash (p);
-    }
+  proc_death_notify (p);
+  add_proc_to_hash (p);
   join_pgrp (p);
 }
 
@@ -769,7 +751,7 @@ process_has_exited (struct proc *p)
            nowait_msg_proc_newids (tp->p_msgport, tp->p_task,
                                    1, tp->p_pgrp->pg_pgid,
                                    !tp->p_pgrp->pg_orphcnt);
-         tp->p_parent = init_proc;
+         tp->p_parent = startup_proc;
          if (tp->p_dead)
            isdead = 1;
        }
@@ -777,17 +759,17 @@ process_has_exited (struct proc *p)
        nowait_msg_proc_newids (tp->p_msgport, tp->p_task,
                                1, tp->p_pgrp->pg_pgid,
                                !tp->p_pgrp->pg_orphcnt);
-      tp->p_parent = init_proc;
+      tp->p_parent = startup_proc;
 
       /* And now append the lists. */
-      tp->p_sib = init_proc->p_ochild;
+      tp->p_sib = startup_proc->p_ochild;
       if (tp->p_sib)
        tp->p_sib->p_prevsib = &tp->p_sib;
-      init_proc->p_ochild = p->p_ochild;
-      p->p_ochild->p_prevsib = &init_proc->p_ochild;
+      startup_proc->p_ochild = p->p_ochild;
+      p->p_ochild->p_prevsib = &startup_proc->p_ochild;
 
       if (isdead)
-       alert_parent (init_proc);
+       alert_parent (startup_proc);
     }
 
   /* If an operation is in progress for this process, cause it
@@ -967,21 +949,3 @@ S_proc_get_code (struct proc *callerp,
 
   return 0;
 }
-
-/* Implement proc_set_init_task as described in <hurd/process.defs>.  */
-error_t
-S_proc_set_init_task(struct proc *callerp,
-                    task_t task)
-{
-  if (! callerp)
-    return EOPNOTSUPP;
-
-  if (callerp != startup_proc)
-    return EPERM;
-
-  init_proc->p_task = task;
-  proc_death_notify (init_proc);
-  add_proc_to_hash (init_proc);
-
-  return 0;
-}
diff --git a/proc/pgrp.c b/proc/pgrp.c
index 853925f..a828e17 100644
--- a/proc/pgrp.c
+++ b/proc/pgrp.c
@@ -423,8 +423,8 @@ leave_pgrp (struct proc *p)
       if (dosignal)
        for (ip = pg->pg_plist; ip; ip = ip->p_gnext)
          {
-           send_signal (ip->p_msgport, SIGHUP, 0, ip->p_task);
-           send_signal (ip->p_msgport, SIGCONT, 0, ip->p_task);
+           send_signal (ip->p_msgport, SIGHUP, ip->p_task);
+           send_signal (ip->p_msgport, SIGCONT, ip->p_task);
          }
     }
 }
diff --git a/proc/proc.h b/proc/proc.h
index a070559..12f56da 100644
--- a/proc/proc.h
+++ b/proc/proc.h
@@ -1,6 +1,5 @@
 /* Process server definitions
-   Copyright (C) 1992,93,94,95,96,99,2000,01,13
-     Free Software Foundation, Inc.
+   Copyright (C) 1992,93,94,95,96,99,2000,01 Free Software Foundation, Inc.
 
 This file is part of the GNU Hurd.
 
@@ -135,8 +134,7 @@ struct exc
 
 mach_port_t authserver;
 struct proc *self_proc;                /* process HURD_PID_PROC (us) */
-struct proc *init_proc;                /* process 1 (sysvinit) */
-struct proc *startup_proc;     /* process 2 (hurd/init) */
+struct proc *startup_proc;     /* process 1 (init) */
 
 struct port_bucket *proc_bucket;
 struct port_class *proc_class;
@@ -192,7 +190,7 @@ void exc_clean (void *);
 struct proc *add_tasks (task_t);
 int pidfree (pid_t);
 
-struct proc *create_init_proc (void);
+struct proc *create_startup_proc (void);
 struct proc *allocate_proc (task_t);
 void proc_death_notify (struct proc *);
 void complete_proc (struct proc *, pid_t);
@@ -208,7 +206,7 @@ void complete_exit (struct proc *);
 
 void initialize_version_info (void);
 
-void send_signal (mach_port_t, int, int, mach_port_t);
+void send_signal (mach_port_t, int, mach_port_t);
 
 
 #endif
diff --git a/proc/stubs.c b/proc/stubs.c
index df99f26..096e55e 100644
--- a/proc/stubs.c
+++ b/proc/stubs.c
@@ -77,7 +77,6 @@ blocking_message_send (void *arg)
 void
 send_signal (mach_port_t msgport,
             int signal,
-            int sigcode,
             mach_port_t refport)
 {
   error_t err;
@@ -120,7 +119,7 @@ send_signal (mach_port_t msgport,
       0,                       /* msgt_unused */
     },
     /* Sigcode */
-    sigcode,
+    0,
     {
       /* Type descriptor for refport */
       MACH_MSG_TYPE_COPY_SEND, /* msgt_name */
diff --git a/proc/wait.c b/proc/wait.c
index a99f5f8..824e667 100644
--- a/proc/wait.c
+++ b/proc/wait.c
@@ -144,7 +144,7 @@ alert_parent (struct proc *p)
   /* We accumulate the aggregate usage stats of all our dead children.  */
   rusage_add (&p->p_parent->p_child_rusage, &p->p_rusage);
 
-  send_signal (p->p_parent->p_msgport, SIGCHLD, CLD_EXITED, 
p->p_parent->p_task);
+  send_signal (p->p_parent->p_msgport, SIGCHLD, p->p_parent->p_task);
 
   if (!p->p_exiting)
     {
@@ -257,7 +257,7 @@ S_proc_mark_stop (struct proc *p,
     }
 
   if (!p->p_parent->p_nostopcld)
-    send_signal (p->p_parent->p_msgport, SIGCHLD, CLD_STOPPED, 
p->p_parent->p_task);
+    send_signal (p->p_parent->p_msgport, SIGCHLD, p->p_parent->p_task);
 
   return 0;
 }
diff --git a/procfs/Makefile b/procfs/Makefile
index ca93a41..5c51c1d 100644
--- a/procfs/Makefile
+++ b/procfs/Makefile
@@ -1,31 +1,26 @@
-#   Makefile - for procfs
-# 
-#   Copyright (C) 2008 Free Software Foundation, Inc.
-#
-#   This program is free software; you can redistribute it and/or
-#   modify it under the terms of the GNU General Public License as
-#   published by the Free Software Foundation; either version 2, or (at
-#   your option) any later version.
-#
-#   This program is distributed in the hope that it will be useful, but
-#   WITHOUT ANY WARRANTY; without even the implied warranty of
-#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-#   General Public License for more details.
-#
-#   You should have received a copy of the GNU General Public License
-#   along with this program; if not, write to the Free Software
-#   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+TARGET = procfs
+OBJS = procfs.o netfs.o procfs_dir.o \
+       process.o proclist.o rootdir.o dircat.o main.o
+LIBS = -lnetfs -lps -lfshelp -lpthread
 
-dir := procfs
-makemode := server
+CC = gcc
+CFLAGS = -Wall -g
+CPPFLAGS =
+LDFLAGS =
 
-target = procfs
+ifdef PROFILE
+CFLAGS= -g -pg
+CPPFLAGS= -DPROFILE
+LDFLAGS= -static
+LIBS= -lnetfs -lfshelp -liohelp -lps -lports -lpthread -lihash -lshouldbeinlibc
+endif
 
-SRCS = procfs.c netfs.c procfs_dir.c process.c proclist.c rootdir.c dircat.c 
main.c
-LCLHDRS = dircat.h main.h process.h procfs.h procfs_dir.h proclist.h rootdir.h
+CPPFLAGS += -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64
 
-OBJS = $(SRCS:.c=.o)
-HURDLIBS = netfs fshelp iohelp ps ports ihash shouldbeinlibc
-OTHERLIBS = -lpthread
+all: $(TARGET)
 
-include ../Makeconf
+$(TARGET): $(OBJS)
+       $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(LIBS)
+
+clean:
+       $(RM) $(TARGET) $(OBJS)
diff --git a/procfs/main.c b/procfs/main.c
index 8727f86..54e9682 100644
--- a/procfs/main.c
+++ b/procfs/main.c
@@ -42,7 +42,7 @@ uid_t opt_anon_owner;
 #define OPT_CLK_TCK    sysconf(_SC_CLK_TCK)
 #define OPT_STAT_MODE  0400
 #define OPT_FAKE_SELF  -1
-#define OPT_KERNEL_PID 3
+#define OPT_KERNEL_PID 2
 #define OPT_ANON_OWNER 0
 
 #define NODEV_KEY  -1 /* <= 0, so no short option. */
@@ -153,7 +153,7 @@ struct argp_option common_options[] = {
   { "kernel-process", 'k', "PID", 0,
       "Process identifier for the kernel, used to retreive its command "
       "line, as well as the global up and idle times. "
-      "(default: 3)" },
+      "(default: 2)" },
   { "compatible", 'c', NULL, 0,
       "Try to be compatible with the Linux procps utilities.  "
       "Currently equivalent to -h 100 -s 0444 -S 1." },
diff --git a/random/random.c b/random/random.c
index 8b0367b..5ef814f 100644
--- a/random/random.c
+++ b/random/random.c
@@ -50,7 +50,7 @@ pthread_cond_t select_alert;  /* For read and select.  */
    numbers.
    2: Strong random numbers with a somewhat guaranteed entropy.
 */
-#define DEFAULT_LEVEL 1
+#define DEFAULT_LEVEL 2
 static int level = DEFAULT_LEVEL;
 
 /* Name of file to use as seed.  */
diff --git a/sutils/MAKEDEV.sh b/sutils/MAKEDEV.sh
index 772d78f..0a8f514 100644
--- a/sutils/MAKEDEV.sh
+++ b/sutils/MAKEDEV.sh
@@ -100,7 +100,7 @@ mkdev() {
        ;;
 
       std)
-       mkdev console tty null zero full fd time mem klog
+       mkdev console tty null zero full fd time mem klog shm
        ;;
       console|com[0-9])
        st $I root 600 /hurd/term ${DEVDIR}/$I device $I;;
diff --git a/trans/Makefile b/trans/Makefile
index fa28e46..291df2f 100644
--- a/trans/Makefile
+++ b/trans/Makefile
@@ -27,7 +27,7 @@ SRCS = ifsock.c symlink.c magic.c null.c fifo.c new-fifo.c 
fwd.c \
        fakeroot.c proxy-defpager.c remap.c mtab.c
 OBJS = $(SRCS:.c=.o) fsysServer.o ifsockServer.o passwordServer.o \
        crashServer.o crash_replyUser.o msgServer.o \
-       ourdefault_pagerServer.o ourdefault_pagerUser.o \
+       default_pagerServer.o default_pagerUser.o \
        device_replyServer.o elfcore.o
 HURDLIBS = ports netfs trivfs iohelp fshelp pipe ihash shouldbeinlibc
 LDLIBS += -lpthread
@@ -35,9 +35,6 @@ password-LDLIBS = $(LIBCRYPT)
 
 include ../Makeconf
 
-ourdefault_pager.defs: default_pager.defs
-       $(CPP) $(CPPFLAGS) -x c $< | sed -e 
'/MACH_MSG_TYPE_MAKE_SEND;/s/MAKE/COPY/' | sed -e '/subsystem/iserverprefix 
S_;' > $@
-
 vpath elfcore.c $(top_srcdir)/exec
 
 symlink: fsysServer.o
@@ -45,7 +42,7 @@ ifsock: ifsockServer.o
 crash: crashServer.o crash_replyUser.o msgServer.o elfcore.o
 password: passwordServer.o
 streamio: device_replyServer.o
-proxy-defpager: ourdefault_pagerServer.o ourdefault_pagerUser.o
+proxy-defpager: default_pagerServer.o default_pagerUser.o
 
 proxy-defpager crash password streamio: ../libports/libports.a 
../libtrivfs/libtrivfs.a ../libfshelp/libfshelp.a
 fifo new-fifo: ../libpipe/libpipe.a
diff --git a/trans/fakeroot.c b/trans/fakeroot.c
index 11ed6b3..0e0b618 100644
--- a/trans/fakeroot.c
+++ b/trans/fakeroot.c
@@ -28,9 +28,6 @@
 #include <pthread.h>
 #include <hurd/ihash.h>
 #include <hurd/paths.h>
-#ifdef HAVE_FILE_EXEC_FILE_NAME
-#include <hurd/fs_experimental.h>
-#endif
 
 #include <version.h>
 
@@ -781,39 +778,6 @@ netfs_S_file_exec (struct protid *user,
                    mach_port_t *destroynames,
                    size_t destroynameslen)
 {
-  return netfs_S_file_exec_file_name (user,
-                                     task,
-                                     flags,
-                                     "",
-                                     argv, argvlen,
-                                     envp, envplen,
-                                     fds, fdslen,
-                                     portarray, portarraylen,
-                                     intarray, intarraylen,
-                                     deallocnames, deallocnameslen,
-                                     destroynames, destroynameslen);
-}
-
-kern_return_t
-netfs_S_file_exec_file_name (struct protid *user,
-                            task_t task,
-                            int flags,
-                            char *filename,
-                            char *argv,
-                            size_t argvlen,
-                            char *envp,
-                            size_t envplen,
-                            mach_port_t *fds,
-                            size_t fdslen,
-                            mach_port_t *portarray,
-                            size_t portarraylen,
-                            int *intarray,
-                            size_t intarraylen,
-                            mach_port_t *deallocnames,
-                            size_t deallocnameslen,
-                            mach_port_t *destroynames,
-                            size_t destroynameslen)
-{
   error_t err;
   file_t file;
 
@@ -830,29 +794,13 @@ netfs_S_file_exec_file_name (struct protid *user,
 
   if (!err)
     {
-#ifdef HAVE_FILE_EXEC_FILE_NAME
       /* We cannot use MACH_MSG_TYPE_MOVE_SEND because we might need to
         retry an interrupted call that would have consumed the rights.  */
-      err = file_exec_file_name (user->po->np->nn->file, task, flags,
-                                filename,
-                                argv, argvlen,
-                                envp, envplen,
-                                fds, MACH_MSG_TYPE_COPY_SEND, fdslen,
-                                portarray, MACH_MSG_TYPE_COPY_SEND,
-                                portarraylen,
-                                intarray, intarraylen,
-                                deallocnames, deallocnameslen,
-                                destroynames, destroynameslen);
-      /* For backwards compatibility.  Just drop it when we kill
-        file_exec.  */
-      if (err == MIG_BAD_ID)
-#endif
-       err = file_exec (user->po->np->nn->file, task, flags, argv, argvlen,
-                        envp, envplen, fds, MACH_MSG_TYPE_COPY_SEND, fdslen,
-                        portarray, MACH_MSG_TYPE_COPY_SEND, portarraylen,
-                        intarray, intarraylen, deallocnames, deallocnameslen,
-                        destroynames, destroynameslen);
-
+      err = file_exec (user->po->np->nn->file, task, flags, argv, argvlen,
+                      envp, envplen, fds, MACH_MSG_TYPE_COPY_SEND, fdslen,
+                      portarray, MACH_MSG_TYPE_COPY_SEND, portarraylen,
+                      intarray, intarraylen, deallocnames, deallocnameslen,
+                      destroynames, destroynameslen);
       mach_port_deallocate (mach_task_self (), file);
     }
 
@@ -982,7 +930,6 @@ netfs_demuxer (mach_msg_header_t *inp,
 {
   mig_routine_t netfs_io_server_routine (mach_msg_header_t *);
   mig_routine_t netfs_fs_server_routine (mach_msg_header_t *);
-  mig_routine_t netfs_fs_experimental_server_routine (mach_msg_header_t *);
   mig_routine_t ports_notify_server_routine (mach_msg_header_t *);
   mig_routine_t netfs_fsys_server_routine (mach_msg_header_t *);
   mig_routine_t ports_interrupt_server_routine (mach_msg_header_t *);
@@ -990,7 +937,6 @@ netfs_demuxer (mach_msg_header_t *inp,
   mig_routine_t routine;
   if ((routine = netfs_io_server_routine (inp)) ||
       (routine = netfs_fs_server_routine (inp)) ||
-      (routine = netfs_fs_experimental_server_routine (inp)) ||
       (routine = ports_notify_server_routine (inp)) ||
       (routine = netfs_fsys_server_routine (inp)) ||
       /* XXX we should intercept interrupt_operation and do
diff --git a/trans/proxy-defpager.c b/trans/proxy-defpager.c
index 453130e..0a5ab65 100644
--- a/trans/proxy-defpager.c
+++ b/trans/proxy-defpager.c
@@ -23,10 +23,9 @@
 #include <error.h>
 #include <version.h>
 #include <hurd/paths.h>
-#include <string.h>
 
-#include "ourdefault_pager_S.h"
-#include "ourdefault_pager_U.h"
+#include "default_pager_S.h"
+#include "default_pager_U.h"
 
 static mach_port_t real_defpager, dev_master;
 
diff --git a/utils/fakeauth.c b/utils/fakeauth.c
index 2cd8357..2c72c89 100644
--- a/utils/fakeauth.c
+++ b/utils/fakeauth.c
@@ -1,5 +1,5 @@
 /* fakeauth -- proxy auth server to lie to users about what their IDs are
-   Copyright (C) 2002, 2010 Free Software Foundation, Inc.
+   Copyright (C) 2002 Free Software Foundation, Inc.
 
    This program is free software; you can redistribute it and/or
    modify it under the terms of the GNU General Public License as
@@ -405,7 +405,7 @@ believe it has restricted them to different identities or 
no identity at all.\
   /* We cannot use fork because it doesn't do the right thing with our send
      rights that point to our own receive rights, i.e. the new auth port.
      Since posix_spawn might be implemented with fork (prior to glibc 2.3),
-     we cannot use that simple interface either.  We use _hurd_exec_file_name
+     we cannot use that simple interface either.  We use _hurd_exec
      directly to effect what posix_spawn does in the simple case.  */
   {
     task_t newtask;
@@ -430,12 +430,7 @@ believe it has restricted them to different identities or 
no identity at all.\
     if (err)
       error (3, err, "proc_child");
 
-#ifdef HAVE__HURD_EXEC_FILE_NAME
-    err = _hurd_exec_file_name (newtask, execfile, argv[argi],
-                               &argv[argi], environ);
-#else
     err = _hurd_exec (newtask, execfile, &argv[argi], environ);
-#endif
     mach_port_deallocate (mach_task_self (), newtask);
     mach_port_deallocate (mach_task_self (), execfile);
     if (err)
diff --git a/utils/login.c b/utils/login.c
index 808a244..cad3b1e 100644
--- a/utils/login.c
+++ b/utils/login.c
@@ -1,7 +1,6 @@
 /* Hurdish login
 
-   Copyright (C) 1995, 1996, 1997, 1998, 1999, 2002, 2010
-   Free Software Foundation, Inc.
+   Copyright (C) 1995,96,97,98,99,2002 Free Software Foundation, Inc.
 
    Written by Miles Bader <address@hidden>
 
@@ -47,9 +46,6 @@
 #include <error.h>
 #include <timefmt.h>
 #include <hurd/lookup.h>
-#ifdef HAVE_FILE_EXEC_FILE_NAME
-#include <hurd/fs_experimental.h>
-#endif
 #include <ugids.h>
 
 const char *argp_program_version = STANDARD_HURD_VERSION (login);
@@ -886,22 +882,12 @@ main(int argc, char *argv[])
        }
     }
 
-#ifdef HAVE_FILE_EXEC_FILE_NAME
-  err = file_exec_file_name (exec, mach_task_self (), EXEC_DEFAULTS, shell,
-                            sh_args, sh_args_len, env, env_len,
-                            fds, MACH_MSG_TYPE_COPY_SEND, 3,
-                            ports, MACH_MSG_TYPE_COPY_SEND, INIT_PORT_MAX,
-                            ints, INIT_INT_MAX,
-                            0, 0, 0, 0);
-  /* Fallback in case the file server hasn't been restarted.  */
-  if (err == MIG_BAD_ID)
-#endif
-    err = file_exec (exec, mach_task_self (), EXEC_DEFAULTS,
-                    sh_args, sh_args_len, env, env_len,
-                    fds, MACH_MSG_TYPE_COPY_SEND, 3,
-                    ports, MACH_MSG_TYPE_COPY_SEND, INIT_PORT_MAX,
-                    ints, INIT_INT_MAX,
-                    0, 0, 0, 0);
+  err = file_exec (exec, mach_task_self (), EXEC_DEFAULTS,
+                  sh_args, sh_args_len, env, env_len,
+                  fds, MACH_MSG_TYPE_COPY_SEND, 3,
+                  ports, MACH_MSG_TYPE_COPY_SEND, INIT_PORT_MAX,
+                  ints, INIT_INT_MAX,
+                  0, 0, 0, 0);
   if (err)
     error(5, err, "%s", shell);
 
diff --git a/utils/mount.c b/utils/mount.c
index 734023f..df77c66 100644
--- a/utils/mount.c
+++ b/utils/mount.c
@@ -273,8 +273,7 @@ do_mount (struct fs *fs, int remount)
       {
        ARGZ (add (&fsopts, &fsopts_len, o));
       }
-    else if (strcmp (o, "defaults") != 0 &&
-            strcmp (o, "loop") != 0)
+    else if (strcmp (o, "defaults") != 0)
       {
        /* Prepend `--' to the option to make a long option switch,
           e.g. `--ro' or `--rsize=1024'.  */
diff --git a/utils/rpctrace.c b/utils/rpctrace.c
index e9b634a..d7ee203 100644
--- a/utils/rpctrace.c
+++ b/utils/rpctrace.c
@@ -1734,11 +1734,7 @@ traced_spawn (char **argv, char **envp)
   /* Now actually run the command they told us to trace.  We do the exec on
      the actual task, so the RPCs to map in the program itself do not get
      traced.  Could have an option to use TASK_WRAPPER here instead.  */
-#ifdef HAVE__HURD_EXEC_FILE_NAME
-  err = _hurd_exec_file_name (traced_task, file, *argv, argv, envp);
-#else
   err = _hurd_exec (traced_task, file, argv, envp);
-#endif
   if (err)
     error (2, err, "cannot exec `%s'", argv[0]);
 
diff --git a/utils/shd.c b/utils/shd.c
index 855284f..a1a4b26 100644
--- a/utils/shd.c
+++ b/utils/shd.c
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 1994, 1995, 1999, 2002, 2010 Free Software Foundation
+   Copyright (C) 1994,95,99,2002 Free Software Foundation
 
    This program is free software; you can redistribute it and/or
    modify it under the terms of the GNU General Public License as
@@ -159,18 +159,15 @@ run (char **argv, int fd0, int fd1)
              movefd (fd1, 1, &save1))
            return -1;
 
-#ifdef HAVE__HURD_EXEC_FILE_NAME
-         err = _hurd_exec_file_name (task, file, program, argv, environ);
-#else
          err = _hurd_exec (task, file, argv, environ);
-#endif
+
          if (restorefd (fd0, 0, &save0) ||
              restorefd (fd1, 1, &save1))
            return -1;
 
          if (err)
            {
-             error (0, err, "_hurd_exec_file_name");
+             error (0, err, "_hurd_exec");
              err = task_terminate (task);
              if (err)
                error (0, err, "task_terminate");
diff --git a/utils/uptime.sh b/utils/uptime.sh
index b37f869..8e52c81 100644
--- a/utils/uptime.sh
+++ b/utils/uptime.sh
@@ -25,7 +25,7 @@
 USAGE="Usage: $0 [OPTION...]"
 DOC="Show system uptime, number of users, and load"
 
-W=${W-/usr/bin/w-hurd}
+W=${W-/bin/w}
 
 while :; do
   case "$1" in

-- 
Alioth's /usr/local/bin/git-commit-notice on 
/srv/git.debian.org/git/pkg-hurd/hurd.git



reply via email to

[Prev in Thread] Current Thread [Next in Thread]