commit-hurd
[Top][All Lists]
Advanced

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

[gnumach] 01/02: Imported Upstream version 1.4+git20141211


From: Samuel Thibault
Subject: [gnumach] 01/02: Imported Upstream version 1.4+git20141211
Date: Thu, 11 Dec 2014 00:16:04 +0000

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

sthibault pushed a commit to branch master
in repository gnumach.

commit 38f3ad84a0c2b0e2492f100321f3cf09e527a174
Author: Samuel Thibault <address@hidden>
Date:   Wed Dec 10 23:37:18 2014 +0000

    Imported Upstream version 1.4+git20141211
---
 ChangeLog                           | 162 ++++++++++++++++++++++++
 Makefile.in                         |  84 ++++++++-----
 Makefrag.am                         |  11 +-
 build-aux/config.guess              | 192 ++++-------------------------
 build-aux/config.sub                |  30 +++--
 build-aux/missing                   |   4 +-
 build-aux/test-driver               |  20 ++-
 configure                           |  20 +--
 doc/mach.info                       | 240 ++++++++++++++++++------------------
 doc/mach.info-1                     |  24 ++--
 doc/mach.info-2                     |   4 +-
 doc/mach.texi                       |   2 +-
 doc/stamp-vti                       |   6 +-
 doc/version.texi                    |   6 +-
 i386/i386/db_interface.c            |  23 +++-
 include/device/device.defs          |   8 +-
 include/device/device_reply.defs    |   8 +-
 include/device/device_request.defs  |   8 +-
 include/mach/gnumach.defs           |  12 ++
 include/mach/mach.defs              |   4 +
 include/mach/mach_host.defs         |   4 +
 include/mach/mach_port.defs         |   9 +-
 include/mach/mach_types.defs        |   2 -
 include/mach/port.h                 |   2 +
 include/mach/std_types.defs         |   8 +-
 include/mach/task_notify.defs       |  36 ++++++
 ipc/mach_port.c                     |  40 ------
 kern/counters.c                     |   3 +-
 kern/counters.h                     |   3 +-
 kern/ipc_sched.c                    |   4 +-
 kern/sched_prim.c                   |   8 +-
 kern/task.c                         |  70 +++++++++--
 kern/task.h                         |   1 +
 kern/task_notify.cli                |   7 ++
 linux/dev/arch/i386/kernel/irq.c    |   2 +-
 linux/dev/drivers/block/genhd.c     |  26 ++++
 linux/pcmcia-cs/clients/axnet_cs.c  |   2 +-
 linux/src/drivers/block/ide.c       |  22 +++-
 linux/src/drivers/block/ide.h       |   1 +
 linux/src/drivers/net/3c507.c       |   4 +-
 linux/src/drivers/net/3c509.c       |   2 +-
 linux/src/drivers/net/3c515.c       |   4 +-
 linux/src/drivers/net/ac3200.c      |   2 +-
 linux/src/drivers/net/apricot.c     |   2 +-
 linux/src/drivers/net/at1700.c      |   2 +-
 linux/src/drivers/net/de4x5.c       |   2 +-
 linux/src/drivers/net/de600.c       |   2 +-
 linux/src/drivers/net/de620.c       |   2 +-
 linux/src/drivers/net/depca.c       |   2 +-
 linux/src/drivers/net/e2100.c       |   2 +-
 linux/src/drivers/net/eepro.c       |   2 +-
 linux/src/drivers/net/eepro100.c    |   2 +-
 linux/src/drivers/net/eexpress.c    |   2 +-
 linux/src/drivers/net/ewrk3.c       |   2 +-
 linux/src/drivers/net/fmv18x.c      |   2 +-
 linux/src/drivers/net/hp-plus.c     |   2 +-
 linux/src/drivers/net/hp.c          |   2 +-
 linux/src/drivers/net/lance.c       |   2 +-
 linux/src/drivers/net/ne.c          |   2 +-
 linux/src/drivers/net/pcnet32.c     |   2 +-
 linux/src/drivers/net/seeq8005.c    |   2 +-
 linux/src/drivers/net/smc-ultra.c   |   2 +-
 linux/src/drivers/net/smc-ultra32.c |   2 +-
 linux/src/drivers/net/wd.c          |   2 +-
 version.m4                          |   2 +-
 vm/vm_user.c                        |   5 +-
 66 files changed, 699 insertions(+), 480 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index b3681aa..c764b0e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,165 @@
+2014-12-11  Samuel Thibault  <address@hidden>
+
+       Ship missing file
+       * Makefrag.am (EXTRA_DIST): Add kern/task_notify.cli.
+
+2014-12-09  Justus Winter  <address@hidden>
+
+       include: add X_IMPORTS to ipc definitions
+       This makes it possible to inject imports.
+
+       * include/mach/gnumach.defs: Make it possible to inject imports.
+       * include/mach/mach.defs: Likewise.
+       * include/mach/mach_host.defs: Likewise.
+
+2014-12-09  Justus Winter  <address@hidden>
+
+       kern: provide notifications about new tasks
+       These notifications are sent to the port registered via
+       `register_new_task_notification' and provide a robust parental
+       relation between tasks to a userspace server.
+
+       * Makefrag.am: Add task_notify.defs.
+       * include/mach/gnumach.defs: Add register_new_task_notification.
+       * include/mach/task_notify.defs: New file.
+       * kern/task.c (new_task_notification): New variable.
+       (task_create): Send new task notifications.
+       (register_new_task_notification): Add server function.
+       * kern/task_notify.cli: New file.
+
+2014-12-09  Justus Winter  <address@hidden>
+
+       Retire procedure `old_mach_port_get_receive_status'
+       Retire the compatibility RPC `old_mach_port_get_receive_status' that
+       works like `mach_port_get_receive_status' but returns an
+       `old_mach_port_status' object that lacks the `mps_seqno' field.
+
+       Do not remove the type yet, so we do not break anyones build.  The RPC
+       stubs currently distributed with the glibc require it.
+
+       * include/mach/mach_port.defs (old_mach_port_get_receive_status): Drop 
RPC.
+       * include/mach/mach_types.defs (old_mach_port_status_t): Drop type.
+       * include/mach/port.h (old_mach_port_status_t): Add note to remove
+       this for the 1.6 release.
+       * ipc/mach_port.c (old_mach_port_get_receive_status): Drop function.
+
+2014-12-07  Samuel Thibault  <address@hidden>
+
+       Fix pthread_create warning on translator termination
+       This was due to task_terminate not actually properly suspending threads
+       before disable the task port, which was thus preventing pthread_create
+       from being able to create a stack. Thanks Gabriele Giacone for finding
+       out a reproducer of this.
+
+       * kern/task.h (task_hold_locked): New declaration.
+       * kern/task.c (task_hold): Move the locked part of the code into...
+       (task_hold_locked): ... new function.
+       (task_terminate): Call task_hold_locked just before deactivating the
+       task. Call ipc_task_disable after waiting for threads to actually
+       suspend with task_dowait.
+
+2014-12-01  Justus Winter  <address@hidden>
+
+       kern: disable all counters by default
+       Make all five non-conditional counters conditional ones.  Casual
+       checking revealed that the hits-to-miss ratio is excellent.
+
+       * kern/counters.c: Make all counters conditional.
+       * kern/counters.h: Likewise.
+       * kern/ipc_sched.c: Likewise.
+       * kern/sched_prim.c: Likewise.
+
+2014-11-28  Justus Winter  <address@hidden>
+
+       include: make `mach_port_t' payload-aware
+       Honor a new macro `MACH_PAYLOAD_TO_PORT' to inject a translation
+       function mapping payloads to port names in the definition of
+       `mach_port_t'.
+
+       * include/mach/std_types.defs (mach_port_t): Honor
+       `MACH_PAYLOAD_TO_PORT'.
+       * include/device/device.defs (reply_port_t): Likewise.
+       * include/device/device_reply.defs (reply_port_t): Likewise.
+       * include/device/device_request.defs (reply_port_t): Likewise.
+
+2014-11-23  Samuel Thibault  <address@hidden>
+
+       Fix programming PIT counter
+       * linux/dev/arch/i386/kernel/irq.c (init_IRQ): Properly mask 8 bits of
+       PIT counter.
+
+2014-11-21  David Michael  <address@hidden>
+
+       Correct GCC's -Wformat-security issues
+       * linux/pcmcia-cs/clients/axnet_cs.c (axdev_init): Add a format string
+       literal where printk only has a single variable argument.
+       * linux/src/drivers/net/3c507.c (el16_probe1): Likewise.
+       * linux/src/drivers/net/3c509.c (el3_probe): Likewise.
+       * linux/src/drivers/net/3c515.c (init_module): Likewise.
+       (tc515_probe): Likewise.
+       * linux/src/drivers/net/ac3200.c (ac_probe1): Likewise.
+       * linux/src/drivers/net/apricot.c (apricot_probe): Likewise.
+       * linux/src/drivers/net/at1700.c (at1700_probe1): Likewise.
+       * linux/src/drivers/net/de4x5.c (de4x5_hw_init): Likewise.
+       * linux/src/drivers/net/de600.c (de600_probe): Likewise.
+       * linux/src/drivers/net/de620.c (de620_probe): Likewise.
+       * linux/src/drivers/net/depca.c (depca_hw_init): Likewise.
+       * linux/src/drivers/net/e2100.c (e21_probe1): Likewise.
+       * linux/src/drivers/net/eepro.c (eepro_probe1): Likewise.
+       * linux/src/drivers/net/eepro100.c (speedo_found1): Likewise.
+       * linux/src/drivers/net/eexpress.c (eexp_hw_probe): Likewise.
+       * linux/src/drivers/net/ewrk3.c (ewrk3_hw_init): Likewise.
+       * linux/src/drivers/net/fmv18x.c (fmv18x_probe1): Likewise.
+       * linux/src/drivers/net/hp-plus.c (hpp_probe1): Likewise.
+       * linux/src/drivers/net/hp.c (hp_probe1): Likewise.
+       * linux/src/drivers/net/lance.c (lance_probe1): Likewise.
+       * linux/src/drivers/net/ne.c (ne_probe1): Likewise.
+       * linux/src/drivers/net/pcnet32.c (pcnet32_probe1): Likewise.
+       * linux/src/drivers/net/seeq8005.c (seeq8005_probe1): Likewise.
+       * linux/src/drivers/net/smc-ultra.c (ultra_probe1): Likewise.
+       * linux/src/drivers/net/smc-ultra32.c (ultra32_probe1): Likewise.
+       * linux/src/drivers/net/wd.c (wd_probe1): Likewise.
+
+2014-11-16  Samuel Thibault  <address@hidden>
+
+       Only set debug registers when they are used
+       * i386/i386/db_interface.c (zero_dr): New variable
+       (db_load_context): Do not set debug registers to zero when they are 
already
+       zero.
+       (db_dr): When kernel debug registers get zero, record that the debug
+       registers have been zeroed.
+
+2014-11-13  Samuel Thibault  <address@hidden>
+
+       Add nodma options
+       Some very slow qemu instances would eventually trigger DMA timeouts,
+       let's give a way to disable DMA there, it does not actually slow down
+       operations anyway.
+
+       * linux/src/drivers/block/ide.h (ide_drive_s): Add nodma field.
+       * linux/src/drivers/block/ide.c (do_identify): Do not call
+       dmaproc(ide_dma_check) when nodma is 1.
+       (ide_setup): Add nodma option.
+
+2014-11-12  Samuel Thibault  <address@hidden>
+
+       Pass ide and hd kernel options to ide driver
+       * linux/dev/drivers/block/genhd.c: Include <linux/hdreg.h> and
+       <alloca.h>
+       (device_setup): Look for ide and hd options, and call ide_setup with
+       them.
+       * linux/src/drivers/block/ide.c (ide_setup) [MACH]: Parse hd[0-7] 
instead
+       of hd[a-h].
+
+2014-11-10  Samuel Thibault  <address@hidden>
+
+       Fix documentation for vm_map
+       doc/mach.texi (vm_map): Document that vm_map uses the address as a
+       starting hint even when anywhere is TRUE.
+
+       Revert "Make vm_map really ignore `address' when `anywhere' is true"
+       This reverts commit 5ae510e35c54009626999a88f0f1cb34d6dfc94f.
+
 2014-11-03  Justus Winter  <address@hidden>
 
        include: add a payload-aware intran mutator for device_t
diff --git a/Makefile.in b/Makefile.in
index a3870ca..db851e2 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -1207,6 +1207,7 @@ nodist_lib_dep_tr_for_defs_a_OBJECTS = 
vm/lib_dep_tr_for_defs_a-memory_object_us
        vm/lib_dep_tr_for_defs_a-memory_object_default.user.defs.$(OBJEXT) \
        device/lib_dep_tr_for_defs_a-device_reply.user.defs.$(OBJEXT) \
        device/lib_dep_tr_for_defs_a-memory_object_reply.user.defs.$(OBJEXT) \
+       kern/lib_dep_tr_for_defs_a-task_notify.user.defs.$(OBJEXT) \
        device/lib_dep_tr_for_defs_a-device.server.defs.$(OBJEXT) \
        device/lib_dep_tr_for_defs_a-device_pager.server.defs.$(OBJEXT) \
        ipc/lib_dep_tr_for_defs_a-mach_port.server.defs.$(OBJEXT) \
@@ -1500,7 +1501,7 @@ nodist_libkernel_a_OBJECTS = version.$(OBJEXT) \
        vm/memory_object_default.user.$(OBJEXT) \
        device/device_reply.user.$(OBJEXT) \
        device/memory_object_reply.user.$(OBJEXT) \
-       device/device.server.$(OBJEXT) \
+       kern/task_notify.user.$(OBJEXT) device/device.server.$(OBJEXT) \
        device/device_pager.server.$(OBJEXT) \
        ipc/mach_port.server.$(OBJEXT) kern/mach.server.$(OBJEXT) \
        kern/mach4.server.$(OBJEXT) kern/gnumach.server.$(OBJEXT) \
@@ -2439,11 +2440,12 @@ DIST_SUBDIRS =
 #
 EXTRA_DIST = gensym.awk ipc/mach_port.srv kern/mach.srv kern/mach4.srv \
        kern/gnumach.srv kern/mach_debug.srv kern/mach_host.srv \
-       vm/memory_object_default.cli vm/memory_object_user.cli \
-       device/device.srv device/device_pager.srv \
-       device/device_reply.cli device/memory_object_reply.cli include \
-       $(am__append_13) $(am__append_20) $(am__append_24) \
-       $(am__append_26) $(am__append_30) $(am__append_41) \
+       kern/task_notify.cli vm/memory_object_default.cli \
+       vm/memory_object_user.cli device/device.srv \
+       device/device_pager.srv device/device_reply.cli \
+       device/memory_object_reply.cli include $(am__append_13) \
+       $(am__append_20) $(am__append_24) $(am__append_26) \
+       $(am__append_30) $(am__append_41) \
        linux/src/drivers/scsi/NCR5380.c \
        linux/src/drivers/scsi/NCR5380.h linux/src/drivers/net/8390.h \
        linux/src/drivers/net/kern_compat.h linux/pcmcia-cs/glue/ds.c \
@@ -2615,19 +2617,20 @@ nodist_libkernel_a_SOURCES = version.c 
vm/memory_object_user.user.h \
        device/device_reply.user.msgids \
        device/memory_object_reply.user.h \
        device/memory_object_reply.user.c \
-       device/memory_object_reply.user.msgids device/device.server.h \
-       device/device.server.c device/device.server.msgids \
-       device/device_pager.server.h device/device_pager.server.c \
-       device/device_pager.server.msgids ipc/mach_port.server.h \
-       ipc/mach_port.server.c ipc/mach_port.server.msgids \
-       kern/mach.server.h kern/mach.server.c kern/mach.server.msgids \
-       kern/mach4.server.h kern/mach4.server.c \
-       kern/mach4.server.msgids kern/gnumach.server.h \
-       kern/gnumach.server.c kern/gnumach.server.msgids \
-       kern/mach_debug.server.h kern/mach_debug.server.c \
-       kern/mach_debug.server.msgids kern/mach_host.server.h \
-       kern/mach_host.server.c kern/mach_host.server.msgids \
-       $(am__append_122)
+       device/memory_object_reply.user.msgids kern/task_notify.user.h \
+       kern/task_notify.user.c kern/task_notify.user.msgids \
+       device/device.server.h device/device.server.c \
+       device/device.server.msgids device/device_pager.server.h \
+       device/device_pager.server.c device/device_pager.server.msgids \
+       ipc/mach_port.server.h ipc/mach_port.server.c \
+       ipc/mach_port.server.msgids kern/mach.server.h \
+       kern/mach.server.c kern/mach.server.msgids kern/mach4.server.h \
+       kern/mach4.server.c kern/mach4.server.msgids \
+       kern/gnumach.server.h kern/gnumach.server.c \
+       kern/gnumach.server.msgids kern/mach_debug.server.h \
+       kern/mach_debug.server.c kern/mach_debug.server.msgids \
+       kern/mach_host.server.h kern/mach_host.server.c \
+       kern/mach_host.server.msgids $(am__append_122)
 gnumach_o_LDADD = libkernel.a $(am__append_6) $(am__append_100)
 gnumach_SOURCES = 
 gnumach_LINKFLAGS = $(am__append_123) $(am__append_126)
@@ -2653,11 +2656,11 @@ nodist_lib_dep_tr_for_defs_a_SOURCES =  \
        vm/memory_object_default.user.defs.c \
        device/device_reply.user.defs.c \
        device/memory_object_reply.user.defs.c \
-       device/device.server.defs.c device/device_pager.server.defs.c \
-       ipc/mach_port.server.defs.c kern/mach.server.defs.c \
-       kern/mach4.server.defs.c kern/gnumach.server.defs.c \
-       kern/mach_debug.server.defs.c kern/mach_host.server.defs.c \
-       $(am__append_121)
+       kern/task_notify.user.defs.c device/device.server.defs.c \
+       device/device_pager.server.defs.c ipc/mach_port.server.defs.c \
+       kern/mach.server.defs.c kern/mach4.server.defs.c \
+       kern/gnumach.server.defs.c kern/mach_debug.server.defs.c \
+       kern/mach_host.server.defs.c $(am__append_121)
 # Preprocess only.
 lib_dep_tr_for_defs_a_CPPFLAGS = $(AM_CPPFLAGS) \
        -E
@@ -2690,6 +2693,7 @@ include_mach_HEADERS = \
        include/mach/mach.defs \
        include/mach/mach4.defs \
        include/mach/gnumach.defs \
+       include/mach/task_notify.defs \
        include/mach/mach_host.defs \
        include/mach/mach_port.defs \
        include/mach/mach_types.defs \
@@ -3006,6 +3010,14 @@ 
device/lib_dep_tr_for_defs_a-device_reply.user.defs.$(OBJEXT):  \
        device/$(am__dirstamp) device/$(DEPDIR)/$(am__dirstamp)
 device/lib_dep_tr_for_defs_a-memory_object_reply.user.defs.$(OBJEXT):  \
        device/$(am__dirstamp) device/$(DEPDIR)/$(am__dirstamp)
+kern/$(am__dirstamp):
+       @$(MKDIR_P) kern
+       @: > kern/$(am__dirstamp)
+kern/$(DEPDIR)/$(am__dirstamp):
+       @$(MKDIR_P) kern/$(DEPDIR)
+       @: > kern/$(DEPDIR)/$(am__dirstamp)
+kern/lib_dep_tr_for_defs_a-task_notify.user.defs.$(OBJEXT):  \
+       kern/$(am__dirstamp) kern/$(DEPDIR)/$(am__dirstamp)
 device/lib_dep_tr_for_defs_a-device.server.defs.$(OBJEXT):  \
        device/$(am__dirstamp) device/$(DEPDIR)/$(am__dirstamp)
 device/lib_dep_tr_for_defs_a-device_pager.server.defs.$(OBJEXT):  \
@@ -3018,12 +3030,6 @@ ipc/$(DEPDIR)/$(am__dirstamp):
        @: > ipc/$(DEPDIR)/$(am__dirstamp)
 ipc/lib_dep_tr_for_defs_a-mach_port.server.defs.$(OBJEXT):  \
        ipc/$(am__dirstamp) ipc/$(DEPDIR)/$(am__dirstamp)
-kern/$(am__dirstamp):
-       @$(MKDIR_P) kern
-       @: > kern/$(am__dirstamp)
-kern/$(DEPDIR)/$(am__dirstamp):
-       @$(MKDIR_P) kern/$(DEPDIR)
-       @: > kern/$(DEPDIR)/$(am__dirstamp)
 kern/lib_dep_tr_for_defs_a-mach.server.defs.$(OBJEXT):  \
        kern/$(am__dirstamp) kern/$(DEPDIR)/$(am__dirstamp)
 kern/lib_dep_tr_for_defs_a-mach4.server.defs.$(OBJEXT):  \
@@ -3432,6 +3438,8 @@ device/device_reply.user.$(OBJEXT): 
device/$(am__dirstamp) \
        device/$(DEPDIR)/$(am__dirstamp)
 device/memory_object_reply.user.$(OBJEXT): device/$(am__dirstamp) \
        device/$(DEPDIR)/$(am__dirstamp)
+kern/task_notify.user.$(OBJEXT): kern/$(am__dirstamp) \
+       kern/$(DEPDIR)/$(am__dirstamp)
 device/device.server.$(OBJEXT): device/$(am__dirstamp) \
        device/$(DEPDIR)/$(am__dirstamp)
 device/device_pager.server.$(OBJEXT): device/$(am__dirstamp) \
@@ -4267,6 +4275,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
 @AMDEP_TRUE@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
 @AMDEP_TRUE@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
 @AMDEP_TRUE@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
 @AMDEP_TRUE@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
 @AMDEP_TRUE@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
@@ -4291,6 +4300,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
 @AMDEP_TRUE@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
 @AMDEP_TRUE@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
 @AMDEP_TRUE@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
 @AMDEP_TRUE@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
 @AMDEP_TRUE@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
@@ -4572,6 +4582,20 @@ 
device/lib_dep_tr_for_defs_a-memory_object_reply.user.defs.obj: device/memory_ob
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) 
$(INCLUDES) $(lib_dep_tr_for_defs_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) 
$(CFLAGS) -c -o device/lib_dep_tr_for_defs_a-memory_object_reply.user.defs.obj 
`if test -f 'device/memory_object_reply.user.defs.c'; then $(CYGPATH_W) 
'device/memory_object_reply.user.defs.c'; else $(CYGPATH_W) 
'$(srcdir)/device/memory_object_reply.user.defs.c'; fi`
 
+kern/lib_dep_tr_for_defs_a-task_notify.user.defs.o: 
kern/task_notify.user.defs.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(lib_dep_tr_for_defs_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT 
kern/lib_dep_tr_for_defs_a-task_notify.user.defs.o -MD -MP -MF 
kern/$(DEPDIR)/lib_dep_tr_for_defs_a-task_notify.user.defs.Tpo -c -o 
kern/lib_dep_tr_for_defs_a-task_notify.user.defs.o `test -f 
'kern/task_notify.user.defs.c' || echo '$(srcdir)/'`kern/task_notify.user.defs.c
address@hidden@ $(AM_V_at)$(am__mv) 
kern/$(DEPDIR)/lib_dep_tr_for_defs_a-task_notify.user.defs.Tpo 
kern/$(DEPDIR)/lib_dep_tr_for_defs_a-task_notify.user.defs.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='kern/task_notify.user.defs.c' 
object='kern/lib_dep_tr_for_defs_a-task_notify.user.defs.o' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(lib_dep_tr_for_defs_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o 
kern/lib_dep_tr_for_defs_a-task_notify.user.defs.o `test -f 
'kern/task_notify.user.defs.c' || echo '$(srcdir)/'`kern/task_notify.user.defs.c
+
+kern/lib_dep_tr_for_defs_a-task_notify.user.defs.obj: 
kern/task_notify.user.defs.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(lib_dep_tr_for_defs_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT 
kern/lib_dep_tr_for_defs_a-task_notify.user.defs.obj -MD -MP -MF 
kern/$(DEPDIR)/lib_dep_tr_for_defs_a-task_notify.user.defs.Tpo -c -o 
kern/lib_dep_tr_for_defs_a-task_notify.user.defs.obj `if test -f 
'kern/task_notify.user.defs.c'; then $(CYGPATH_W) 
'kern/task_notify.user.defs.c'; else $(CYGPATH_W) 
'$(srcdir)/kern/task_notify.user.defs.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv) 
kern/$(DEPDIR)/lib_dep_tr_for_defs_a-task_notify.user.defs.Tpo 
kern/$(DEPDIR)/lib_dep_tr_for_defs_a-task_notify.user.defs.Po
address@hidden@@am__fastdepCC_FALSE@    
$(AM_V_CC)source='kern/task_notify.user.defs.c' 
object='kern/lib_dep_tr_for_defs_a-task_notify.user.defs.obj' libtool=no 
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@    DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(lib_dep_tr_for_defs_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o 
kern/lib_dep_tr_for_defs_a-task_notify.user.defs.obj `if test -f 
'kern/task_notify.user.defs.c'; then $(CYGPATH_W) 
'kern/task_notify.user.defs.c'; else $(CYGPATH_W) 
'$(srcdir)/kern/task_notify.user.defs.c'; fi`
+
 device/lib_dep_tr_for_defs_a-device.server.defs.o: device/device.server.defs.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(lib_dep_tr_for_defs_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT 
device/lib_dep_tr_for_defs_a-device.server.defs.o -MD -MP -MF 
device/$(DEPDIR)/lib_dep_tr_for_defs_a-device.server.defs.Tpo -c -o 
device/lib_dep_tr_for_defs_a-device.server.defs.o `test -f 
'device/device.server.defs.c' || echo '$(srcdir)/'`device/device.server.defs.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) 
device/$(DEPDIR)/lib_dep_tr_for_defs_a-device.server.defs.Tpo 
device/$(DEPDIR)/lib_dep_tr_for_defs_a-device.server.defs.Po
diff --git a/Makefrag.am b/Makefrag.am
index 5e98b21..9166143 100644
--- a/Makefrag.am
+++ b/Makefrag.am
@@ -221,7 +221,8 @@ EXTRA_DIST += \
        kern/mach4.srv \
        kern/gnumach.srv \
        kern/mach_debug.srv \
-       kern/mach_host.srv
+       kern/mach_host.srv \
+       kern/task_notify.cli
 
 
 #
@@ -364,6 +365,7 @@ include_mach_HEADERS = \
        include/mach/mach.defs \
        include/mach/mach4.defs \
        include/mach/gnumach.defs \
+       include/mach/task_notify.defs \
        include/mach/mach_host.defs \
        include/mach/mach_port.defs \
        include/mach/mach_types.defs \
@@ -488,6 +490,13 @@ nodist_libkernel_a_SOURCES += \
 #      device/device_reply.user.defs
 #      device/memory_object_reply.user.defs
 
+nodist_lib_dep_tr_for_defs_a_SOURCES += \
+       kern/task_notify.user.defs.c
+nodist_libkernel_a_SOURCES += \
+       kern/task_notify.user.h \
+       kern/task_notify.user.c \
+       kern/task_notify.user.msgids
+
 # Server stubs.
 nodist_lib_dep_tr_for_defs_a_SOURCES += \
        device/device.server.defs.c \
diff --git a/build-aux/config.guess b/build-aux/config.guess
index b79252d..1f5c50c 100755
--- a/build-aux/config.guess
+++ b/build-aux/config.guess
@@ -1,8 +1,8 @@
 #! /bin/sh
 # Attempt to guess a canonical system name.
-#   Copyright 1992-2013 Free Software Foundation, Inc.
+#   Copyright 1992-2014 Free Software Foundation, Inc.
 
-timestamp='2013-06-10'
+timestamp='2014-03-23'
 
 # 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
@@ -50,7 +50,7 @@ version="\
 GNU config.guess ($timestamp)
 
 Originally written by Per Bothner.
-Copyright 1992-2013 Free Software Foundation, Inc.
+Copyright 1992-2014 Free Software Foundation, Inc.
 
 This is free software; see the source for copying conditions.  There is NO
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -149,7 +149,7 @@ Linux|GNU|GNU/*)
        LIBC=gnu
        #endif
        EOF
-       eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'`
+       eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC' | sed 's, 
,,g'`
        ;;
 esac
 
@@ -826,7 +826,7 @@ EOF
     *:MINGW*:*)
        echo ${UNAME_MACHINE}-pc-mingw32
        exit ;;
-    i*:MSYS*:*)
+    *:MSYS*:*)
        echo ${UNAME_MACHINE}-pc-msys
        exit ;;
     i*:windows32*:*)
@@ -969,10 +969,10 @@ EOF
        eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
        test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; }
        ;;
-    or1k:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+    openrisc*:Linux:*:*)
+       echo or1k-unknown-linux-${LIBC}
        exit ;;
-    or32:Linux:*:*)
+    or32:Linux:*:* | or1k*:Linux:*:*)
        echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
        exit ;;
     padre:Linux:*:*)
@@ -1260,16 +1260,26 @@ EOF
        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
+       if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then
+           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
+       elif test "$UNAME_PROCESSOR" = i386 ; then
+           # Avoid executing cc on OS X 10.9, as it ships with a stub
+           # that puts up a graphical alert prompting to install
+           # developer tools.  Any system running Mac OS X 10.7 or
+           # later (Darwin 11 and later) is required to have a 64-bit
+           # processor. This is not true of the ARM version of Darwin
+           # that Apple uses in portable devices.
+           UNAME_PROCESSOR=x86_64
        fi
        echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
        exit ;;
@@ -1361,154 +1371,6 @@ EOF
        exit ;;
 esac
 
-eval $set_cc_for_build
-cat >$dummy.c <<EOF
-#ifdef _SEQUENT_
-# include <sys/types.h>
-# include <sys/utsname.h>
-#endif
-main ()
-{
-#if defined (sony)
-#if defined (MIPSEB)
-  /* BFD wants "bsd" instead of "newsos".  Perhaps BFD should be changed,
-     I don't know....  */
-  printf ("mips-sony-bsd\n"); exit (0);
-#else
-#include <sys/param.h>
-  printf ("m68k-sony-newsos%s\n",
-#ifdef NEWSOS4
-       "4"
-#else
-       ""
-#endif
-       ); exit (0);
-#endif
-#endif
-
-#if defined (__arm) && defined (__acorn) && defined (__unix)
-  printf ("arm-acorn-riscix\n"); exit (0);
-#endif
-
-#if defined (hp300) && !defined (hpux)
-  printf ("m68k-hp-bsd\n"); exit (0);
-#endif
-
-#if defined (NeXT)
-#if !defined (__ARCHITECTURE__)
-#define __ARCHITECTURE__ "m68k"
-#endif
-  int version;
-  version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
-  if (version < 4)
-    printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
-  else
-    printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
-  exit (0);
-#endif
-
-#if defined (MULTIMAX) || defined (n16)
-#if defined (UMAXV)
-  printf ("ns32k-encore-sysv\n"); exit (0);
-#else
-#if defined (CMU)
-  printf ("ns32k-encore-mach\n"); exit (0);
-#else
-  printf ("ns32k-encore-bsd\n"); exit (0);
-#endif
-#endif
-#endif
-
-#if defined (__386BSD__)
-  printf ("i386-pc-bsd\n"); exit (0);
-#endif
-
-#if defined (sequent)
-#if defined (i386)
-  printf ("i386-sequent-dynix\n"); exit (0);
-#endif
-#if defined (ns32000)
-  printf ("ns32k-sequent-dynix\n"); exit (0);
-#endif
-#endif
-
-#if defined (_SEQUENT_)
-    struct utsname un;
-
-    uname(&un);
-
-    if (strncmp(un.version, "V2", 2) == 0) {
-       printf ("i386-sequent-ptx2\n"); exit (0);
-    }
-    if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
-       printf ("i386-sequent-ptx1\n"); exit (0);
-    }
-    printf ("i386-sequent-ptx\n"); exit (0);
-
-#endif
-
-#if defined (vax)
-# if !defined (ultrix)
-#  include <sys/param.h>
-#  if defined (BSD)
-#   if BSD == 43
-      printf ("vax-dec-bsd4.3\n"); exit (0);
-#   else
-#    if BSD == 199006
-      printf ("vax-dec-bsd4.3reno\n"); exit (0);
-#    else
-      printf ("vax-dec-bsd\n"); exit (0);
-#    endif
-#   endif
-#  else
-    printf ("vax-dec-bsd\n"); exit (0);
-#  endif
-# else
-    printf ("vax-dec-ultrix\n"); exit (0);
-# endif
-#endif
-
-#if defined (alliant) && defined (i860)
-  printf ("i860-alliant-bsd\n"); exit (0);
-#endif
-
-  exit (1);
-}
-EOF
-
-$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` &&
-       { echo "$SYSTEM_NAME"; exit; }
-
-# Apollos put the system type in the environment.
-
-test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; }
-
-# Convex versions that predate uname can use getsysinfo(1)
-
-if [ -x /usr/convex/getsysinfo ]
-then
-    case `getsysinfo -f cpu_type` in
-    c1*)
-       echo c1-convex-bsd
-       exit ;;
-    c2*)
-       if getsysinfo -f scalar_acc
-       then echo c32-convex-bsd
-       else echo c2-convex-bsd
-       fi
-       exit ;;
-    c34*)
-       echo c34-convex-bsd
-       exit ;;
-    c38*)
-       echo c38-convex-bsd
-       exit ;;
-    c4*)
-       echo c4-convex-bsd
-       exit ;;
-    esac
-fi
-
 cat >&2 <<EOF
 $0: unable to guess system type
 
diff --git a/build-aux/config.sub b/build-aux/config.sub
index 9633db7..bba4efb 100755
--- a/build-aux/config.sub
+++ b/build-aux/config.sub
@@ -1,8 +1,8 @@
 #! /bin/sh
 # Configuration validation subroutine script.
-#   Copyright 1992-2013 Free Software Foundation, Inc.
+#   Copyright 1992-2014 Free Software Foundation, Inc.
 
-timestamp='2013-08-10'
+timestamp='2014-09-11'
 
 # 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
@@ -68,7 +68,7 @@ Report bugs and patches to <address@hidden>."
 version="\
 GNU config.sub ($timestamp)
 
-Copyright 1992-2013 Free Software Foundation, Inc.
+Copyright 1992-2014 Free Software Foundation, Inc.
 
 This is free software; see the source for copying conditions.  There is NO
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -265,6 +265,7 @@ case $basic_machine in
        | hexagon \
        | i370 | i860 | i960 | ia64 \
        | ip2k | iq2000 \
+       | k1om \
        | le32 | le64 \
        | lm32 \
        | m32c | m32r | m32rle | m68000 | m68k | m88k \
@@ -282,8 +283,10 @@ case $basic_machine in
        | mips64vr5900 | mips64vr5900el \
        | mipsisa32 | mipsisa32el \
        | mipsisa32r2 | mipsisa32r2el \
+       | mipsisa32r6 | mipsisa32r6el \
        | mipsisa64 | mipsisa64el \
        | mipsisa64r2 | mipsisa64r2el \
+       | mipsisa64r6 | mipsisa64r6el \
        | mipsisa64sb1 | mipsisa64sb1el \
        | mipsisa64sr71k | mipsisa64sr71kel \
        | mipsr5900 | mipsr5900el \
@@ -295,11 +298,11 @@ case $basic_machine in
        | nds32 | nds32le | nds32be \
        | nios | nios2 | nios2eb | nios2el \
        | ns16k | ns32k \
-       | open8 \
-       | or1k | or32 \
+       | open8 | or1k | or1knd | or32 \
        | pdp10 | pdp11 | pj | pjl \
        | powerpc | powerpc64 | powerpc64le | powerpcle \
        | pyramid \
+       | riscv32 | riscv64 \
        | rl78 | rx \
        | score \
        | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | 
shbe | shle | sh[1234]le | sh3ele \
@@ -324,7 +327,7 @@ case $basic_machine in
        c6x)
                basic_machine=tic6x-unknown
                ;;
-       m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | picochip)
+       m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip)
                basic_machine=$basic_machine-unknown
                os=-none
                ;;
@@ -381,6 +384,7 @@ case $basic_machine in
        | hexagon-* \
        | i*86-* | i860-* | i960-* | ia64-* \
        | ip2k-* | iq2000-* \
+       | k1om-* \
        | le32-* | le64-* \
        | lm32-* \
        | m32c-* | m32r-* | m32rle-* \
@@ -400,8 +404,10 @@ case $basic_machine in
        | mips64vr5900-* | mips64vr5900el-* \
        | mipsisa32-* | mipsisa32el-* \
        | mipsisa32r2-* | mipsisa32r2el-* \
+       | mipsisa32r6-* | mipsisa32r6el-* \
        | mipsisa64-* | mipsisa64el-* \
        | mipsisa64r2-* | mipsisa64r2el-* \
+       | mipsisa64r6-* | mipsisa64r6el-* \
        | mipsisa64sb1-* | mipsisa64sb1el-* \
        | mipsisa64sr71k-* | mipsisa64sr71kel-* \
        | mipsr5900-* | mipsr5900el-* \
@@ -413,6 +419,7 @@ case $basic_machine in
        | nios-* | nios2-* | nios2eb-* | nios2el-* \
        | none-* | np1-* | ns16k-* | ns32k-* \
        | open8-* \
+       | or1k*-* \
        | orion-* \
        | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
        | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
@@ -822,6 +829,10 @@ case $basic_machine in
                basic_machine=powerpc-unknown
                os=-morphos
                ;;
+       moxiebox)
+               basic_machine=moxie-unknown
+               os=-moxiebox
+               ;;
        msdos)
                basic_machine=i386-pc
                os=-msdos
@@ -1367,14 +1378,14 @@ case $os in
              | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* 
\
              | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
              | -linux-newlib* | -linux-musl* | -linux-uclibc* \
-             | -uxpv* | -beos* | -mpeix* | -udk* \
+             | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \
              | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
              | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
              | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
              | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
              | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
              | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
-             | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*)
+             | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* | 
-tirtos*)
        # Remember, each alternative MUST END IN *, to match a version number.
                ;;
        -qnx*)
@@ -1592,9 +1603,6 @@ case $basic_machine in
        mips*-*)
                os=-elf
                ;;
-       or1k-*)
-               os=-elf
-               ;;
        or32-*)
                os=-coff
                ;;
diff --git a/build-aux/missing b/build-aux/missing
index cdea514..db98974 100755
--- a/build-aux/missing
+++ b/build-aux/missing
@@ -1,7 +1,7 @@
 #! /bin/sh
 # Common wrapper for a few potentially missing GNU programs.
 
-scriptversion=2012-06-26.16; # UTC
+scriptversion=2013-10-28.13; # UTC
 
 # Copyright (C) 1996-2013 Free Software Foundation, Inc.
 # Originally written by Fran,cois Pinard <address@hidden>, 1996.
@@ -160,7 +160,7 @@ give_advice ()
       ;;
    autom4te*)
       echo "You might have modified some maintainer files that require"
-      echo "the 'automa4te' program to be rebuilt."
+      echo "the 'autom4te' program to be rebuilt."
       program_details 'autom4te'
       ;;
     bison*|yacc*)
diff --git a/build-aux/test-driver b/build-aux/test-driver
index 32bf39e..d306056 100755
--- a/build-aux/test-driver
+++ b/build-aux/test-driver
@@ -1,7 +1,7 @@
 #! /bin/sh
 # test-driver - basic testsuite driver script.
 
-scriptversion=2012-06-27.10; # UTC
+scriptversion=2013-07-13.22; # UTC
 
 # Copyright (C) 2011-2013 Free Software Foundation, Inc.
 #
@@ -44,13 +44,12 @@ print_usage ()
 Usage:
   test-driver --test-name=NAME --log-file=PATH --trs-file=PATH
               [--expect-failure={yes|no}] [--color-tests={yes|no}]
-              [--enable-hard-errors={yes|no}] [--] TEST-SCRIPT
+              [--enable-hard-errors={yes|no}] [--]
+              TEST-SCRIPT [TEST-SCRIPT-ARGUMENTS]
 The '--test-name', '--log-file' and '--trs-file' options are mandatory.
 END
 }
 
-# TODO: better error handling in option parsing (in particular, ensure
-# TODO: $log_file, $trs_file and $test_name are defined).
 test_name= # Used for reporting.
 log_file=  # Where to save the output of the test script.
 trs_file=  # Where to save the metadata of the test run.
@@ -69,10 +68,23 @@ while test $# -gt 0; do
   --enable-hard-errors) enable_hard_errors=$2; shift;;
   --) shift; break;;
   -*) usage_error "invalid option: '$1'";;
+   *) break;;
   esac
   shift
 done
 
+missing_opts=
+test x"$test_name" = x && missing_opts="$missing_opts --test-name"
+test x"$log_file"  = x && missing_opts="$missing_opts --log-file"
+test x"$trs_file"  = x && missing_opts="$missing_opts --trs-file"
+if test x"$missing_opts" != x; then
+  usage_error "the following mandatory options are missing:$missing_opts"
+fi
+
+if test $# -eq 0; then
+  usage_error "missing argument"
+fi
+
 if test $color_tests = yes; then
   # Keep this in sync with 'lib/am/check.am:$(am__tty_colors)'.
   red='' # Red.
diff --git a/configure b/configure
index c1562af..01a7e98 100755
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for GNU Mach 1.4+git20141109.
+# Generated by GNU Autoconf 2.69 for GNU Mach 1.4+git20141211.
 #
 # Report bugs to <address@hidden>.
 #
@@ -579,8 +579,8 @@ MAKEFLAGS=
 # Identity of this package.
 PACKAGE_NAME='GNU Mach'
 PACKAGE_TARNAME='gnumach'
-PACKAGE_VERSION='1.4+git20141109'
-PACKAGE_STRING='GNU Mach 1.4+git20141109'
+PACKAGE_VERSION='1.4+git20141211'
+PACKAGE_STRING='GNU Mach 1.4+git20141211'
 PACKAGE_BUGREPORT='address@hidden'
 PACKAGE_URL=''
 
@@ -1584,7 +1584,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures GNU Mach 1.4+git20141109 to adapt to many kinds of 
systems.
+\`configure' configures GNU Mach 1.4+git20141211 to adapt to many kinds of 
systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1654,7 +1654,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of GNU Mach 1.4+git20141109:";;
+     short | recursive ) echo "Configuration of GNU Mach 1.4+git20141211:";;
    esac
   cat <<\_ACEOF
 
@@ -2002,7 +2002,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-GNU Mach configure 1.4+git20141109
+GNU Mach configure 1.4+git20141211
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2094,7 +2094,7 @@ cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by GNU Mach $as_me 1.4+git20141109, which was
+It was created by GNU Mach $as_me 1.4+git20141211, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -2960,7 +2960,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='gnumach'
- VERSION='1.4+git20141109'
+ VERSION='1.4+git20141211'
 
 
 # Some tools Automake needs.
@@ -12110,7 +12110,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by GNU Mach $as_me 1.4+git20141109, which was
+This file was extended by GNU Mach $as_me 1.4+git20141211, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -12181,7 +12181,7 @@ _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; 
s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-GNU Mach config.status 1.4+git20141109
+GNU Mach config.status 1.4+git20141211
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
diff --git a/doc/mach.info b/doc/mach.info
index 74ffab5..9376a69 100644
--- a/doc/mach.info
+++ b/doc/mach.info
@@ -2,8 +2,8 @@ This is mach.info, produced by makeinfo version 5.2 from 
mach.texi.
 
 This file documents the GNU Mach microkernel.
 
-   This is edition 0.4, last updated on 8 November 2014, of 'The GNU
-Mach Reference Manual', for version 1.4+git20141109.
+   This is edition 0.4, last updated on 10 November 2014, of 'The GNU
+Mach Reference Manual', for version 1.4+git20141211.
 
    Copyright (C) 2001, 2002, 2006, 2007, 2008 Free Software Foundation,
 Inc.
@@ -39,126 +39,126 @@ END-INFO-DIR-ENTRY
 
 
 Indirect:
-mach.info-1: 1641
-mach.info-2: 302527
+mach.info-1: 1642
+mach.info-2: 302547
 
 Tag Table:
 (Indirect)
-Node: Top1641
-Node: Introduction11280
-Node: Audience12111
-Node: Features13146
-Node: Overview14973
-Node: History16166
-Node: Installing16311
-Node: Binary Distributions17536
-Node: Compilation18344
-Node: Configuration19577
-Node: Cross-Compilation35988
-Node: Bootstrap36769
-Ref: Bootstrap-Footnote-137212
-Node: Bootloader37449
-Ref: Bootloader-Footnote-138729
-Node: Modules38815
-Node: Inter Process Communication39642
-Node: Major Concepts40265
-Node: Messaging Interface44070
-Node: Mach Message Call44800
-Node: Message Format48115
-Node: Exchanging Port Rights59307
-Ref: Exchanging Port Rights-Footnote-164869
-Node: Memory65041
-Ref: Memory-Footnote-168135
-Node: Message Send68477
-Ref: Message Send-Footnote-175499
-Node: Message Receive75782
-Ref: Message Receive-Footnote-185434
-Node: Atomicity85715
-Node: Port Manipulation Interface88489
-Node: Port Creation90044
-Node: Port Destruction94833
-Node: Port Names97976
-Node: Port Rights102223
-Node: Ports and other Tasks106012
-Node: Receive Rights110105
-Node: Port Sets117036
-Node: Request Notifications119439
-Node: Inherited Ports124243
-Node: Virtual Memory Interface127927
-Node: Memory Allocation129180
-Node: Memory Deallocation131705
-Node: Data Transfer133169
-Node: Memory Attributes136695
-Node: Mapping Memory Objects146114
-Node: Memory Statistics149406
-Node: External Memory Management150980
-Node: Memory Object Server151685
-Node: Memory Object Creation154394
-Node: Memory Object Termination158400
-Node: Memory Objects and Data161339
-Node: Memory Object Locking178485
-Node: Memory Object Attributes184380
-Node: Default Memory Manager190217
-Node: Threads and Tasks195939
-Node: Thread Interface196276
-Node: Thread Creation197272
-Node: Thread Termination198389
-Node: Thread Information198860
-Node: Thread Settings204959
-Node: Thread Execution206193
-Node: Scheduling213486
-Node: Thread Priority213841
-Node: Hand-Off Scheduling216475
-Node: Scheduling Policy221600
-Node: Thread Special Ports222932
-Node: Exceptions225378
-Node: Task Interface226248
-Node: Task Creation227260
-Node: Task Termination228595
-Node: Task Information229197
-Node: Task Execution236099
-Node: Task Special Ports240512
-Node: Syscall Emulation244366
-Node: Profiling245597
-Node: Host Interface249360
-Node: Host Ports250345
-Node: Host Information252418
-Node: Host Time257801
-Node: Host Reboot260468
-Node: Processors and Processor Sets261020
-Node: Processor Set Interface261998
-Node: Processor Set Ports262765
-Node: Processor Set Access263595
-Node: Processor Set Creation265855
-Node: Processor Set Destruction266882
-Node: Tasks and Threads on Sets267803
-Node: Processor Set Priority272970
-Node: Processor Set Policy274260
-Node: Processor Set Info275874
-Node: Processor Interface279687
-Node: Hosted Processors280412
-Node: Processor Control281403
-Node: Processors and Sets282869
-Node: Processor Info284747
-Node: Device Interface287489
-Node: Device Reply Server289104
-Node: Device Open290396
-Node: Device Close292519
-Node: Device Read293098
-Node: Device Write296017
-Node: Device Map298822
-Node: Device Status299713
-Node: Device Filter302527
-Node: Kernel Debugger308274
-Node: Operation309001
-Node: Commands311978
-Node: Variables325763
-Node: Expressions327151
-Node: Copying328500
-Node: Documentation License347729
-Node: GNU Free Documentation License348318
-Node: CMU License370717
-Node: Concept Index371952
-Node: Function and Data Index375798
+Node: Top1642
+Node: Introduction11282
+Node: Audience12113
+Node: Features13148
+Node: Overview14975
+Node: History16168
+Node: Installing16313
+Node: Binary Distributions17538
+Node: Compilation18346
+Node: Configuration19579
+Node: Cross-Compilation35990
+Node: Bootstrap36771
+Ref: Bootstrap-Footnote-137214
+Node: Bootloader37451
+Ref: Bootloader-Footnote-138731
+Node: Modules38817
+Node: Inter Process Communication39644
+Node: Major Concepts40267
+Node: Messaging Interface44072
+Node: Mach Message Call44802
+Node: Message Format48117
+Node: Exchanging Port Rights59309
+Ref: Exchanging Port Rights-Footnote-164871
+Node: Memory65043
+Ref: Memory-Footnote-168137
+Node: Message Send68479
+Ref: Message Send-Footnote-175501
+Node: Message Receive75784
+Ref: Message Receive-Footnote-185436
+Node: Atomicity85717
+Node: Port Manipulation Interface88491
+Node: Port Creation90046
+Node: Port Destruction94835
+Node: Port Names97978
+Node: Port Rights102225
+Node: Ports and other Tasks106014
+Node: Receive Rights110107
+Node: Port Sets117038
+Node: Request Notifications119441
+Node: Inherited Ports124245
+Node: Virtual Memory Interface127929
+Node: Memory Allocation129182
+Node: Memory Deallocation131707
+Node: Data Transfer133171
+Node: Memory Attributes136697
+Node: Mapping Memory Objects146116
+Node: Memory Statistics149425
+Node: External Memory Management150999
+Node: Memory Object Server151704
+Node: Memory Object Creation154413
+Node: Memory Object Termination158419
+Node: Memory Objects and Data161358
+Node: Memory Object Locking178504
+Node: Memory Object Attributes184399
+Node: Default Memory Manager190236
+Node: Threads and Tasks195958
+Node: Thread Interface196295
+Node: Thread Creation197291
+Node: Thread Termination198408
+Node: Thread Information198879
+Node: Thread Settings204978
+Node: Thread Execution206212
+Node: Scheduling213505
+Node: Thread Priority213860
+Node: Hand-Off Scheduling216494
+Node: Scheduling Policy221619
+Node: Thread Special Ports222951
+Node: Exceptions225397
+Node: Task Interface226267
+Node: Task Creation227279
+Node: Task Termination228614
+Node: Task Information229216
+Node: Task Execution236118
+Node: Task Special Ports240531
+Node: Syscall Emulation244385
+Node: Profiling245616
+Node: Host Interface249379
+Node: Host Ports250364
+Node: Host Information252437
+Node: Host Time257820
+Node: Host Reboot260487
+Node: Processors and Processor Sets261039
+Node: Processor Set Interface262017
+Node: Processor Set Ports262784
+Node: Processor Set Access263614
+Node: Processor Set Creation265874
+Node: Processor Set Destruction266901
+Node: Tasks and Threads on Sets267822
+Node: Processor Set Priority272989
+Node: Processor Set Policy274279
+Node: Processor Set Info275893
+Node: Processor Interface279706
+Node: Hosted Processors280431
+Node: Processor Control281422
+Node: Processors and Sets282888
+Node: Processor Info284766
+Node: Device Interface287508
+Node: Device Reply Server289123
+Node: Device Open290415
+Node: Device Close292538
+Node: Device Read293117
+Node: Device Write296036
+Node: Device Map298841
+Node: Device Status299732
+Node: Device Filter302547
+Node: Kernel Debugger308294
+Node: Operation309021
+Node: Commands311998
+Node: Variables325783
+Node: Expressions327171
+Node: Copying328520
+Node: Documentation License347749
+Node: GNU Free Documentation License348338
+Node: CMU License370737
+Node: Concept Index371972
+Node: Function and Data Index375818
 
 End Tag Table
diff --git a/doc/mach.info-1 b/doc/mach.info-1
index f1132ef..1d4eaec 100644
--- a/doc/mach.info-1
+++ b/doc/mach.info-1
@@ -2,8 +2,8 @@ This is mach.info, produced by makeinfo version 5.2 from 
mach.texi.
 
 This file documents the GNU Mach microkernel.
 
-   This is edition 0.4, last updated on 8 November 2014, of 'The GNU
-Mach Reference Manual', for version 1.4+git20141109.
+   This is edition 0.4, last updated on 10 November 2014, of 'The GNU
+Mach Reference Manual', for version 1.4+git20141211.
 
    Copyright (C) 2001, 2002, 2006, 2007, 2008 Free Software Foundation,
 Inc.
@@ -45,8 +45,8 @@ Main Menu
 
 This file documents the GNU Mach microkernel.
 
-   This is edition 0.4, last updated on 8 November 2014, of 'The GNU
-Mach Reference Manual', for version 1.4+git20141109.
+   This is edition 0.4, last updated on 10 November 2014, of 'The GNU
+Mach Reference Manual', for version 1.4+git20141211.
 
    Copyright (C) 2001, 2002, 2006, 2007, 2008 Free Software Foundation,
 Inc.
@@ -3347,14 +3347,14 @@ File: mach.info,  Node: Mapping Memory Objects,  Next: 
Memory Statistics,  Prev:
      memory exception.
 
      TARGET_TASK is the task to be affected.  The starting address is
-     ADDRESS.  If the ANYWHERE option is used, this address is ignored.
-     The address actually allocated will be returned in ADDRESS.  SIZE
-     is the number of bytes to allocate (rounded by the system in a
-     machine dependent way).  The alignment restriction is specified by
-     MASK.  Bits asserted in this mask must not be asserted in the
-     address returned.  If ANYWHERE is set, the kernel should find and
-     allocate any region of the specified size, and return the address
-     of the resulting region in ADDRESS.
+     ADDRESS.  If the ANYWHERE option is used, this address is used as a
+     starting hint.  The address actually allocated will be returned in
+     ADDRESS.  SIZE is the number of bytes to allocate (rounded by the
+     system in a machine dependent way).  The alignment restriction is
+     specified by MASK.  Bits asserted in this mask must not be asserted
+     in the address returned.  If ANYWHERE is set, the kernel should
+     find and allocate any region of the specified size, and return the
+     address of the resulting region in ADDRESS.
 
      MEMORY_OBJECT is the port that represents the memory object: used
      by user tasks in 'vm_map'; used by the make requests for data or
diff --git a/doc/mach.info-2 b/doc/mach.info-2
index 0a1f50e..44eefb1 100644
--- a/doc/mach.info-2
+++ b/doc/mach.info-2
@@ -2,8 +2,8 @@ This is mach.info, produced by makeinfo version 5.2 from 
mach.texi.
 
 This file documents the GNU Mach microkernel.
 
-   This is edition 0.4, last updated on 8 November 2014, of 'The GNU
-Mach Reference Manual', for version 1.4+git20141109.
+   This is edition 0.4, last updated on 10 November 2014, of 'The GNU
+Mach Reference Manual', for version 1.4+git20141211.
 
    Copyright (C) 2001, 2002, 2006, 2007, 2008 Free Software Foundation,
 Inc.
diff --git a/doc/mach.texi b/doc/mach.texi
index 4cde9fe..59872c9 100644
--- a/doc/mach.texi
+++ b/doc/mach.texi
@@ -3366,7 +3366,7 @@ exception.
 
 @var{target_task} is the task to be affected.  The starting address is
 @var{address}.  If the @var{anywhere} option is used, this address is
-ignored.  The address actually allocated will be returned in
+used as a starting hint.  The address actually allocated will be returned in
 @var{address}. @var{size} is the number of bytes to allocate (rounded by
 the system in a machine dependent way).  The alignment restriction is
 specified by @var{mask}.  Bits asserted in this mask must not be
diff --git a/doc/stamp-vti b/doc/stamp-vti
index b08fcac..939aba4 100644
--- a/doc/stamp-vti
+++ b/doc/stamp-vti
@@ -1,4 +1,4 @@
address@hidden UPDATED 8 November 2014
address@hidden UPDATED 10 November 2014
 @set UPDATED-MONTH November 2014
address@hidden EDITION 1.4+git20141109
address@hidden VERSION 1.4+git20141109
address@hidden EDITION 1.4+git20141211
address@hidden VERSION 1.4+git20141211
diff --git a/doc/version.texi b/doc/version.texi
index b08fcac..939aba4 100644
--- a/doc/version.texi
+++ b/doc/version.texi
@@ -1,4 +1,4 @@
address@hidden UPDATED 8 November 2014
address@hidden UPDATED 10 November 2014
 @set UPDATED-MONTH November 2014
address@hidden EDITION 1.4+git20141109
address@hidden VERSION 1.4+git20141109
address@hidden EDITION 1.4+git20141211
address@hidden VERSION 1.4+git20141211
diff --git a/i386/i386/db_interface.c b/i386/i386/db_interface.c
index b442b86..b3fac0b 100644
--- a/i386/i386/db_interface.c
+++ b/i386/i386/db_interface.c
@@ -63,6 +63,8 @@
 /* Whether the kernel uses any debugging register.  */
 static boolean_t kernel_dr;
 #endif
+/* Whether the current debug registers are zero.  */
+static boolean_t zero_dr;
 
 void db_load_context(pcb_t pcb)
 {
@@ -74,13 +76,20 @@ void db_load_context(pcb_t pcb)
                return;
        }
 #endif
+       /* Else set user debug registers, if any */
+       unsigned int *dr = pcb->ims.ids.dr;
+       boolean_t will_zero_dr = !dr[0] && !dr[1] && !dr[2] && !dr[3] && !dr[7];
+
+       if (!(zero_dr && will_zero_dr))
+       {
+               set_dr0(dr[0]);
+               set_dr1(dr[1]);
+               set_dr2(dr[2]);
+               set_dr3(dr[3]);
+               set_dr7(dr[7]);
+               zero_dr = will_zero_dr;
+       }
 
-       /* Else set user debug registers */
-       set_dr0(pcb->ims.ids.dr[0]);
-       set_dr1(pcb->ims.ids.dr[1]);
-       set_dr2(pcb->ims.ids.dr[2]);
-       set_dr3(pcb->ims.ids.dr[3]);
-       set_dr7(pcb->ims.ids.dr[7]);
 #if MACH_KDB
        splx(s);
 #endif
@@ -163,7 +172,9 @@ void db_dr (
        if (kernel_dr) {
            if (!ids.dr[0] && !ids.dr[1] && !ids.dr[2] && !ids.dr[3]) {
                /* Not used any more, switch back to user debugging registers */
+               set_dr7 (0);
                kernel_dr = FALSE;
+               zero_dr = TRUE;
                db_load_context(current_thread()->pcb);
            }
        }
diff --git a/include/device/device.defs b/include/device/device.defs
index 5fdf1bd..409146f 100644
--- a/include/device/device.defs
+++ b/include/device/device.defs
@@ -45,7 +45,13 @@ subsystem
 serverprefix   ds_;
 
 type reply_port_t = MACH_MSG_TYPE_MAKE_SEND_ONCE | polymorphic
-       ctype: mach_port_t;
+       ctype: mach_port_t
+#ifndef        KERNEL_SERVER
+#ifdef MACH_PAYLOAD_TO_PORT
+               intranpayload: mach_port_t MACH_PAYLOAD_TO_PORT
+#endif /* MACH_PAYLOAD_TO_PORT */
+#endif /* KERNEL_SERVER */
+;
 
 routine device_open(
                master_port     : mach_port_t;
diff --git a/include/device/device_reply.defs b/include/device/device_reply.defs
index 3415677..5a32507 100644
--- a/include/device/device_reply.defs
+++ b/include/device/device_reply.defs
@@ -54,7 +54,13 @@ serverdemux seqnos_device_reply_server;
 #endif /* SEQNOS */
 
 type reply_port_t = polymorphic|MACH_MSG_TYPE_PORT_SEND_ONCE
-       ctype: mach_port_t;
+       ctype: mach_port_t
+#ifndef        KERNEL_SERVER
+#ifdef MACH_PAYLOAD_TO_PORT
+       intranpayload: mach_port_t MACH_PAYLOAD_TO_PORT
+#endif /* MACH_PAYLOAD_TO_PORT */
+#endif /* KERNEL_SERVER */
+;
 
 simpleroutine  device_open_reply(
            reply_port          : reply_port_t;
diff --git a/include/device/device_request.defs 
b/include/device/device_request.defs
index e8aab2a..7ea8637 100644
--- a/include/device/device_request.defs
+++ b/include/device/device_request.defs
@@ -37,7 +37,13 @@ subsystem device_request 2800;       /* to match device.defs 
*/
 serverprefix   ds_;
 
 type reply_port_t = MACH_MSG_TYPE_MAKE_SEND_ONCE
-       ctype: mach_port_t;
+       ctype: mach_port_t
+#ifndef        KERNEL_SERVER
+#ifdef MACH_PAYLOAD_TO_PORT
+       intranpayload: mach_port_t MACH_PAYLOAD_TO_PORT
+#endif /* MACH_PAYLOAD_TO_PORT */
+#endif /* KERNEL_SERVER */
+;
 
 simpleroutine device_open_request(
            device_server_port  : mach_port_t;
diff --git a/include/mach/gnumach.defs b/include/mach/gnumach.defs
index 6cfbb0d..dd4da87 100644
--- a/include/mach/gnumach.defs
+++ b/include/mach/gnumach.defs
@@ -29,6 +29,10 @@ subsystem
 #include <mach/mach_types.defs>
 #include <mach_debug/mach_debug_types.defs>
 
+#ifdef GNUMACH_IMPORTS
+GNUMACH_IMPORTS
+#endif
+
 type vm_cache_statistics_data_t = struct[11] of integer_t;
 
 /*
@@ -72,3 +76,11 @@ simpleroutine thread_terminate_release(
 simpleroutine task_set_name(
                task    : task_t;
                name    : kernel_debug_name_t);
+
+/*
+ * Register a port to which a notification about newly created tasks
+ * are sent.
+ */
+routine register_new_task_notification(
+               host_priv       : host_priv_t;
+               notification    : mach_port_send_t);
diff --git a/include/mach/mach.defs b/include/mach/mach.defs
index 5851080..3786f65 100644
--- a/include/mach/mach.defs
+++ b/include/mach/mach.defs
@@ -46,6 +46,10 @@ userprefix r_;
 #include <mach/std_types.defs>
 #include <mach/mach_types.defs>
 
+#ifdef MACH_IMPORTS
+MACH_IMPORTS
+#endif
+
 skip;  /* old port_allocate */
 skip;  /* old port_deallocate */
 skip;  /* old port_enable */
diff --git a/include/mach/mach_host.defs b/include/mach/mach_host.defs
index 2644146..6699a50 100644
--- a/include/mach/mach_host.defs
+++ b/include/mach/mach_host.defs
@@ -47,6 +47,10 @@ subsystem
 #include <mach/std_types.defs>
 #include <mach/mach_types.defs>
 
+#ifdef MACH_HOST_IMPORTS
+MACH_HOST_IMPORTS
+#endif
+
 /*
  *     Get list of processors on this host.
  */
diff --git a/include/mach/mach_port.defs b/include/mach/mach_port.defs
index c7e8526..c21c34b 100644
--- a/include/mach/mach_port.defs
+++ b/include/mach/mach_port.defs
@@ -176,14 +176,7 @@ routine mach_port_mod_refs(
                right           : mach_port_right_t;
                delta           : mach_port_delta_t);
 
-/*
- *     Temporary compatibility call.
- */
-
-routine old_mach_port_get_receive_status(
-               task            : ipc_space_t;
-               name            : mach_port_name_t;
-       out     status          : old_mach_port_status_t);
+skip;  /* old old_mach_port_get_receive_status */
 
 /*
  *     Only valid for receive rights.
diff --git a/include/mach/mach_types.defs b/include/mach/mach_types.defs
index 85ad653..8e68d38 100644
--- a/include/mach/mach_types.defs
+++ b/include/mach/mach_types.defs
@@ -60,8 +60,6 @@ serverprefix SERVERPREFIX;
 
 type mach_port_status_t = struct[9] of integer_t;
 
-type old_mach_port_status_t = struct[8] of integer_t;  /* compatibility */
-
 type task_t = mach_port_t
                ctype: mach_port_t
 #if    KERNEL_SERVER
diff --git a/include/mach/port.h b/include/mach/port.h
index 53f6071..3036a92 100644
--- a/include/mach/port.h
+++ b/include/mach/port.h
@@ -137,6 +137,8 @@ typedef struct mach_port_status {
 /*
  *  Compatibility definitions, for code written
  *  before there was an mps_seqno field.
+ *
+ *  XXX: Remove this before releasing Gnumach 1.6.
  */
 
 typedef struct old_mach_port_status {
diff --git a/include/mach/std_types.defs b/include/mach/std_types.defs
index 00d1a69..a1f156d 100644
--- a/include/mach/std_types.defs
+++ b/include/mach/std_types.defs
@@ -49,7 +49,13 @@ type pointer_t = ^array[] of MACH_MSG_TYPE_BYTE
        ctype: vm_offset_t;
 
 
-type mach_port_t = MACH_MSG_TYPE_COPY_SEND;
+type mach_port_t = MACH_MSG_TYPE_COPY_SEND
+#ifndef        KERNEL_SERVER
+#ifdef MACH_PAYLOAD_TO_PORT
+               intranpayload: mach_port_t MACH_PAYLOAD_TO_PORT
+#endif /* MACH_PAYLOAD_TO_PORT */
+#endif /* KERNEL_SERVER */
+;
 type mach_port_array_t = array[] of mach_port_t;
 
 type mach_port_name_t = MACH_MSG_TYPE_PORT_NAME
diff --git a/include/mach/task_notify.defs b/include/mach/task_notify.defs
new file mode 100644
index 0000000..5485d4e
--- /dev/null
+++ b/include/mach/task_notify.defs
@@ -0,0 +1,36 @@
+/*
+ * Copyright (C) 2014 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 published by
+ * the Free Software Foundation; either version 2 of the License, 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, see <http://www.gnu.org/licenses/>.
+ */
+
+subsystem
+#if    KERNEL_SERVER
+         KernelServer
+#endif /* KERNEL_SERVER */
+#if    KERNEL_USER
+         KernelUser
+#endif /* KERNEL_USER */
+                      task_notify 4400;
+
+#include <mach/std_types.defs>
+#include <mach/mach_types.defs>
+
+/* These notifications are sent to the port registered via
+   `register_new_task_notification' and provide a robust parental
+   relation between tasks.  */
+simpleroutine mach_notify_new_task(
+               notify  : mach_port_t;
+               task    : task_t;
+               parent  : task_t);
diff --git a/ipc/mach_port.c b/ipc/mach_port.c
index 4ff39f2..c7d9b81 100644
--- a/ipc/mach_port.c
+++ b/ipc/mach_port.c
@@ -744,46 +744,6 @@ mach_port_mod_refs(
 }
 
 /*
- *     Routine:        old_mach_port_get_receive_status [kernel call]
- *     Purpose:
- *             Compatibility for code written before sequence numbers.
- *             Retrieves mucho info about a receive right.
- *     Conditions:
- *             Nothing locked.
- *     Returns:
- *             KERN_SUCCESS            Retrieved status.
- *             KERN_INVALID_TASK       The space is null.
- *             KERN_INVALID_TASK       The space is dead.
- *             KERN_INVALID_NAME       The name doesn't denote a right.
- *             KERN_INVALID_RIGHT      Name doesn't denote receive rights.
- */
-
-kern_return_t
-old_mach_port_get_receive_status(
-       ipc_space_t             space,
-       mach_port_t             name,
-       old_mach_port_status_t  *statusp)
-{
-       mach_port_status_t status;
-       kern_return_t kr;
-
-       kr = mach_port_get_receive_status(space, name, &status);
-       if (kr != KERN_SUCCESS)
-               return kr;
-
-       statusp->mps_pset = status.mps_pset;
-       statusp->mps_mscount = status.mps_mscount;
-       statusp->mps_qlimit = status.mps_qlimit;
-       statusp->mps_msgcount = status.mps_msgcount;
-       statusp->mps_sorights = status.mps_sorights;
-       statusp->mps_srights = status.mps_srights;
-       statusp->mps_pdrequest = status.mps_pdrequest;
-       statusp->mps_nsrequest = status.mps_nsrequest;
-
-       return KERN_SUCCESS;
-}
-
-/*
  *     Routine:        mach_port_set_qlimit [kernel call]
  *     Purpose:
  *             Changes a receive right's queue limit.
diff --git a/kern/counters.c b/kern/counters.c
index a9d450e..74fd42d 100644
--- a/kern/counters.c
+++ b/kern/counters.c
@@ -32,13 +32,12 @@
  *     This makes them easier to examine with ddb.
  */
 
+#if    MACH_COUNTERS
 mach_counter_t c_thread_invoke_hits = 0;
 mach_counter_t c_thread_invoke_misses = 0;
 mach_counter_t c_thread_invoke_csw = 0;
 mach_counter_t c_thread_handoff_hits = 0;
 mach_counter_t c_thread_handoff_misses = 0;
-
-#if    MACH_COUNTERS
 mach_counter_t c_threads_current = 0;
 mach_counter_t c_threads_max = 0;
 mach_counter_t c_threads_min = 0;
diff --git a/kern/counters.h b/kern/counters.h
index 474c6a2..bfa9b44 100644
--- a/kern/counters.h
+++ b/kern/counters.h
@@ -55,13 +55,12 @@
 
 typedef unsigned int mach_counter_t;
 
+#if    MACH_COUNTERS
 extern mach_counter_t c_thread_invoke_hits;
 extern mach_counter_t c_thread_invoke_misses;
 extern mach_counter_t c_thread_invoke_csw;
 extern mach_counter_t c_thread_handoff_hits;
 extern mach_counter_t c_thread_handoff_misses;
-
-#if    MACH_COUNTERS
 extern mach_counter_t c_threads_current;
 extern mach_counter_t c_threads_max;
 extern mach_counter_t c_threads_min;
diff --git a/kern/ipc_sched.c b/kern/ipc_sched.c
index d5b9263..cc1672d 100644
--- a/kern/ipc_sched.c
+++ b/kern/ipc_sched.c
@@ -214,7 +214,7 @@ thread_handoff(
                thread_unlock(new);
                (void) splx(s);
 
-               counter_always(c_thread_handoff_misses++);
+               counter(c_thread_handoff_misses++);
                return FALSE;
        }
 
@@ -278,6 +278,6 @@ thread_handoff(
     after_old_thread:
        (void) splx(s);
 
-       counter_always(c_thread_handoff_hits++);
+       counter(c_thread_handoff_hits++);
        return TRUE;
 }
diff --git a/kern/sched_prim.c b/kern/sched_prim.c
index 66eb9c9..89fb1dc 100644
--- a/kern/sched_prim.c
+++ b/kern/sched_prim.c
@@ -726,7 +726,7 @@ boolean_t thread_invoke(
                     *  running out of stack.
                     */
 
-                   counter_always(c_thread_invoke_hits++);
+                   counter(c_thread_invoke_hits++);
                    (void) spl0();
                    call_continuation(new_thread->swap_func);
                    /*NOTREACHED*/
@@ -738,7 +738,7 @@ boolean_t thread_invoke(
                     */
                    thread_swapin(new_thread);
                    thread_unlock(new_thread);
-                   counter_always(c_thread_invoke_misses++);
+                   counter(c_thread_invoke_misses++);
                    return FALSE;
 
                case 0:
@@ -759,7 +759,7 @@ boolean_t thread_invoke(
                {
                    thread_swapin(new_thread);
                    thread_unlock(new_thread);
-                   counter_always(c_thread_invoke_misses++);
+                   counter(c_thread_invoke_misses++);
                    return FALSE;
                }
            }
@@ -788,7 +788,7 @@ boolean_t thread_invoke(
         *      changing address spaces.  It updates active_threads.
         *      It returns only if a continuation is not supplied.
         */
-       counter_always(c_thread_invoke_csw++);
+       counter(c_thread_invoke_csw++);
        old_thread = switch_context(old_thread, continuation, new_thread);
 
        /*
diff --git a/kern/task.c b/kern/task.c
index 20acc6a..a11fb8e 100644
--- a/kern/task.c
+++ b/kern/task.c
@@ -50,12 +50,16 @@
 #include <kern/sched_prim.h>   /* for thread_wakeup */
 #include <kern/ipc_tt.h>
 #include <kern/syscall_emulation.h>
+#include <kern/task_notify.user.h>
 #include <vm/vm_kern.h>                /* for kernel_map, ipc_kernel_map */
 #include <machine/machspl.h>   /* for splsched */
 
 task_t kernel_task = TASK_NULL;
 struct kmem_cache task_cache;
 
+/* Where to send notifications about newly created tasks.  */
+ipc_port_t new_task_notification = NULL;
+
 void task_init(void)
 {
        kmem_cache_init(&task_cache, "task", sizeof(struct task), 0,
@@ -169,6 +173,14 @@ kern_return_t task_create(
 
        snprintf (new_task->name, sizeof new_task->name, "%p", new_task);
 
+       if (new_task_notification != NULL) {
+               task_reference (new_task);
+               task_reference (parent_task);
+               mach_notify_new_task (new_task_notification,
+                                     convert_task_to_port (new_task),
+                                     convert_task_to_port (parent_task));
+       }
+
        ipc_task_enable(new_task);
 
        *child_task = new_task;
@@ -272,6 +284,7 @@ kern_return_t task_terminate(
                        thread_terminate(cur_thread);
                        return KERN_FAILURE;
                }
+               task_hold_locked(task);
                task->active = FALSE;
                queue_remove(list, cur_thread, thread_t, thread_list);
                thread_unlock(cur_thread);
@@ -325,6 +338,7 @@ kern_return_t task_terminate(
                        task_unlock(task);
                        return KERN_FAILURE;
                }
+               task_hold_locked(task);
                task->active = FALSE;
                task_unlock(task);
        }
@@ -335,9 +349,8 @@ kern_return_t task_terminate(
         *      If this is the current task, the current thread will
         *      be left running.
         */
-       ipc_task_disable(task);
-       (void) task_hold(task);
        (void) task_dowait(task,TRUE);                  /* may block */
+       ipc_task_disable(task);
 
        /*
         *      Terminate each thread in the task.
@@ -402,20 +415,18 @@ kern_return_t task_terminate(
  *     Suspend execution of the specified task.
  *     This is a recursive-style suspension of the task, a count of
  *     suspends is maintained.
+ *
+ *     CONDITIONS: the task is locked and active.
  */
-kern_return_t task_hold(
+void task_hold_locked(
        task_t  task)
 {
        queue_head_t    *list;
        thread_t        thread, cur_thread;
 
-       cur_thread = current_thread();
+       assert(task->active);
 
-       task_lock(task);
-       if (!task->active) {
-               task_unlock(task);
-               return KERN_FAILURE;
-       }
+       cur_thread = current_thread();
 
        task->suspend_count++;
 
@@ -429,6 +440,26 @@ kern_return_t task_hold(
                if (thread != cur_thread)
                        thread_hold(thread);
        }
+}
+
+/*
+ *     task_hold:
+ *
+ *     Suspend execution of the specified task.
+ *     This is a recursive-style suspension of the task, a count of
+ *     suspends is maintained.
+ */
+kern_return_t task_hold(
+       task_t  task)
+{
+       task_lock(task);
+       if (!task->active) {
+               task_unlock(task);
+               return KERN_FAILURE;
+       }
+
+       task_hold_locked(task);
+
        task_unlock(task);
        return KERN_SUCCESS;
 }
@@ -1230,3 +1261,24 @@ task_ras_control(
 #endif /* FAST_TAS */
     return ret;
 }
+
+/*
+ *     register_new_task_notification
+ *
+ *     Register a port to which a notification about newly created
+ *     tasks are sent.
+ */
+kern_return_t
+register_new_task_notification(
+       const host_t host,
+       ipc_port_t notification)
+{
+       if (host == HOST_NULL)
+               return KERN_INVALID_HOST;
+
+       if (new_task_notification != NULL)
+               return KERN_NO_ACCESS;
+
+       new_task_notification = notification;
+       return KERN_SUCCESS;
+}
diff --git a/kern/task.h b/kern/task.h
index 3c10dc0..2a4c28f 100644
--- a/kern/task.h
+++ b/kern/task.h
@@ -182,6 +182,7 @@ extern void consider_task_collect(void);
 extern void            task_init(void);
 extern void            task_reference(task_t);
 extern void            task_deallocate(task_t);
+extern void            task_hold_locked(task_t);
 extern kern_return_t   task_hold(task_t);
 extern kern_return_t   task_dowait(task_t, boolean_t);
 extern kern_return_t   task_release(task_t);
diff --git a/kern/task_notify.cli b/kern/task_notify.cli
new file mode 100644
index 0000000..c6c85d9
--- /dev/null
+++ b/kern/task_notify.cli
@@ -0,0 +1,7 @@
+/* XXX */
+
+/* This is a client presentation file.  */
+
+#define KERNEL_USER 1
+
+#include <mach/task_notify.defs>
diff --git a/linux/dev/arch/i386/kernel/irq.c b/linux/dev/arch/i386/kernel/irq.c
index 68bf0c4..7753814 100644
--- a/linux/dev/arch/i386/kernel/irq.c
+++ b/linux/dev/arch/i386/kernel/irq.c
@@ -695,7 +695,7 @@ init_IRQ (void)
    * Program counter 0 of 8253 to interrupt hz times per second.
    */
   outb_p (PIT_C0 | PIT_SQUAREMODE | PIT_READMODE, PITCTL_PORT);
-  outb_p (latch && 0xff, PITCTR0_PORT);
+  outb_p (latch & 0xff, PITCTR0_PORT);
   outb (latch >> 8, PITCTR0_PORT);
   
   /*
diff --git a/linux/dev/drivers/block/genhd.c b/linux/dev/drivers/block/genhd.c
index 95b499b..3a86138 100644
--- a/linux/dev/drivers/block/genhd.c
+++ b/linux/dev/drivers/block/genhd.c
@@ -27,6 +27,8 @@
 #ifdef CONFIG_BLK_DEV_INITRD
 #include <linux/blk.h>
 #endif
+#include <linux/hdreg.h>
+#include <alloca.h>
 
 #include <asm/system.h>
 
@@ -768,12 +770,36 @@ static void setup_dev(struct gendisk *dev)
 void device_setup(void)
 {
        extern void console_map_init(void);
+       extern char *kernel_cmdline;
+       char *c, *param, *white;
        struct gendisk *p;
        int nr=0;
 #ifdef MACH
        linux_intr_pri = SPL6;
 #endif
 
+       for (c = kernel_cmdline; c; )
+       {
+               param = strstr(c, " ide");
+               if (!param)
+                       param = strstr(c, " hd");
+               if (!param)
+                       break;
+               if (param) {
+                       param++;
+                       white = strchr(param, ' ');
+                       if (!white) {
+                               ide_setup(param);
+                               c = NULL;
+                       } else {
+                               char *word = alloca(white - param + 1);
+                               strncpy(word, param, white - param);
+                               word[white-param] = '\0';
+                               ide_setup(word);
+                               c = white + 1;
+                       }
+               }
+       }
 #ifndef MACH
        chr_dev_init();
 #endif
diff --git a/linux/pcmcia-cs/clients/axnet_cs.c 
b/linux/pcmcia-cs/clients/axnet_cs.c
index bcd79b0..2e7d9ed 100644
--- a/linux/pcmcia-cs/clients/axnet_cs.c
+++ b/linux/pcmcia-cs/clients/axnet_cs.c
@@ -1814,7 +1814,7 @@ static void set_multicast_list(struct net_device *dev)
 static int axdev_init(struct net_device *dev)
 {
        if (ei_debug > 1)
-               printk(version_8390);
+               printk("%s", version_8390);
     
        if (dev->priv == NULL) 
        {
diff --git a/linux/src/drivers/block/ide.c b/linux/src/drivers/block/ide.c
index 9b9ecc2..41a2601 100644
--- a/linux/src/drivers/block/ide.c
+++ b/linux/src/drivers/block/ide.c
@@ -2526,7 +2526,7 @@ static inline void do_identify (ide_drive_t *drive, byte 
cmd)
                                        drive->media = ide_tape;
                                        drive->present = 1;
                                        drive->removable = 1;
-                                       if (drive->autotune != 2 && 
HWIF(drive)->dmaproc != NULL) {
+                                       if (drive->autotune != 2 && 
HWIF(drive)->dmaproc != NULL && !drive->nodma) {
                                                if 
(!HWIF(drive)->dmaproc(ide_dma_check, drive))
                                                        printk(", DMA");
                                        }
@@ -2653,7 +2653,7 @@ static inline void do_identify (ide_drive_t *drive, byte 
cmd)
                if (drive->mult_req || ((id->multsect_valid & 1) && 
id->multsect))
                        drive->special.b.set_multmode = 1;
        }
-       if (drive->autotune != 2 && HWIF(drive)->dmaproc != NULL) {
+       if (drive->autotune != 2 && HWIF(drive)->dmaproc != NULL && 
!drive->nodma) {
                if (!(HWIF(drive)->dmaproc(ide_dma_check, drive))) {
                        if ((id->field_valid & 4) && (id->dma_ultra & 
(id->dma_ultra >> 8) & 7))
                                printk(", UDMA");
@@ -3108,6 +3108,7 @@ static int match_parm (char *s, const char *keywords[], 
int vals[], int max_vals
  *                             Not fully supported by all chipset types,
  *                             and quite likely to cause trouble with
  *                             older/odd IDE drives.
+ * "hdx=nodma"         : disallow DMA for the drive
  *
  * "idebus=xx"         : inform IDE driver of VESA/PCI bus speed in Mhz,
  *                             where "xx" is between 20 and 66 inclusive,
@@ -3152,7 +3153,11 @@ void ide_setup (char *s)
        ide_hwif_t *hwif;
        ide_drive_t *drive;
        unsigned int hw, unit;
+#ifdef MACH
+       const char max_drive = '0' + ((MAX_HWIFS * MAX_DRIVES) - 1);
+#else
        const char max_drive = 'a' + ((MAX_HWIFS * MAX_DRIVES) - 1);
+#endif
        const char max_hwif  = '0' + (MAX_HWIFS - 1);
 
        printk("ide_setup: %s", s);
@@ -3161,11 +3166,19 @@ void ide_setup (char *s)
        /*
         * Look for drive options:  "hdx="
         */
+#ifdef MACH
+       if (s[0] == 'h' && s[1] == 'd' && s[2] >= '0' && s[2] <= max_drive) {
+#else
        if (s[0] == 'h' && s[1] == 'd' && s[2] >= 'a' && s[2] <= max_drive) {
+#endif
                const char *hd_words[] = {"none", "noprobe", "nowerr", "cdrom",
                                "serialize", "autotune", "noautotune",
-                               "slow", "ide-scsi", NULL};
+                               "slow", "ide-scsi", "nodma", NULL};
+#ifdef MACH
+               unit = s[2] - '0';
+#else
                unit = s[2] - 'a';
+#endif
                hw   = unit / MAX_DRIVES;
                unit = unit % MAX_DRIVES;
                hwif = &ide_hwifs[hw];
@@ -3200,6 +3213,9 @@ void ide_setup (char *s)
                        case -9: /* "ide-scsi" */
                                drive->ide_scsi = 1;
                                goto done;
+                       case -10: /* "nodma" */
+                               drive->nodma = 1;
+                               goto done;
                        case 3: /* cyl,head,sect */
                                drive->media    = ide_disk;
                                drive->cyl      = drive->bios_cyl  = vals[0];
diff --git a/linux/src/drivers/block/ide.h b/linux/src/drivers/block/ide.h
index edeedc9..28e371b 100644
--- a/linux/src/drivers/block/ide.h
+++ b/linux/src/drivers/block/ide.h
@@ -344,6 +344,7 @@ typedef struct ide_drive_s {
        unsigned nobios         : 1;    /* flag: do not probe bios for drive */
        unsigned slow           : 1;    /* flag: slow data port */
        unsigned autotune       : 2;    /* 1=autotune, 2=noautotune, 0=default 
*/
+       unsigned nodma          : 1;    /* disk should not use dma for 
read/write */
 #if FAKE_FDISK_FOR_EZDRIVE
        unsigned remap_0_to_1   : 1;    /* flag: partitioned with ezdrive */
 #endif /* FAKE_FDISK_FOR_EZDRIVE */
diff --git a/linux/src/drivers/net/3c507.c b/linux/src/drivers/net/3c507.c
index 63f85a4..58ba2d7 100644
--- a/linux/src/drivers/net/3c507.c
+++ b/linux/src/drivers/net/3c507.c
@@ -354,7 +354,7 @@ int el16_probe1(struct device *dev, int ioaddr)
                dev = init_etherdev(0, sizeof(struct net_local));
 
        if (net_debug  &&  version_printed++ == 0)
-               printk(version);
+               printk("%s", version);
 
        printk("%s: 3c507 at %#x,", dev->name, ioaddr);
 
@@ -410,7 +410,7 @@ int el16_probe1(struct device *dev, int ioaddr)
                   dev->if_port ? "ex" : "in", dev->mem_start, dev->mem_end-1);
 
        if (net_debug)
-               printk(version);
+               printk("%s", version);
 
        /* Initialize the device structure. */
        dev->priv = kmalloc(sizeof(struct net_local), GFP_KERNEL);
diff --git a/linux/src/drivers/net/3c509.c b/linux/src/drivers/net/3c509.c
index f884288..727595c 100644
--- a/linux/src/drivers/net/3c509.c
+++ b/linux/src/drivers/net/3c509.c
@@ -314,7 +314,7 @@ int el3_probe(struct device *dev)
        el3_root_dev = dev;
 
        if (el3_debug > 0)
-               printk(version);
+               printk("%s", version);
 
        /* The EL3-specific entries in the device structure. */
        dev->open = &el3_open;
diff --git a/linux/src/drivers/net/3c515.c b/linux/src/drivers/net/3c515.c
index fd6ec50..52f4703 100644
--- a/linux/src/drivers/net/3c515.c
+++ b/linux/src/drivers/net/3c515.c
@@ -404,7 +404,7 @@ init_module(void)
        if (debug >= 0)
                vortex_debug = debug;
        if (vortex_debug)
-               printk(version);
+               printk("%s", version);
 
        root_vortex_dev = NULL;
        cards_found = vortex_scan(0);
@@ -419,7 +419,7 @@ int tc515_probe(struct device *dev)
        cards_found = vortex_scan(dev);
 
        if (vortex_debug > 0  &&  cards_found)
-               printk(version);
+               printk("%s", version);
 
        return cards_found ? 0 : -ENODEV;
 }
diff --git a/linux/src/drivers/net/ac3200.c b/linux/src/drivers/net/ac3200.c
index 0337bab..600949f 100644
--- a/linux/src/drivers/net/ac3200.c
+++ b/linux/src/drivers/net/ac3200.c
@@ -208,7 +208,7 @@ static int ac_probe1(int ioaddr, struct device *dev)
                   dev->mem_start, dev->mem_end-1);
 
        if (ei_debug > 0)
-               printk(version);
+               printk("%s", version);
 
        ei_status.reset_8390 = &ac_reset_8390;
        ei_status.block_input = &ac_block_input;
diff --git a/linux/src/drivers/net/apricot.c b/linux/src/drivers/net/apricot.c
index d106e50..57fccaf 100644
--- a/linux/src/drivers/net/apricot.c
+++ b/linux/src/drivers/net/apricot.c
@@ -720,7 +720,7 @@ int apricot_probe(struct device *dev)
     dev->irq = 10;
     printk(" IRQ %d.\n", dev->irq);
 
-    if (i596_debug > 0) printk(version);
+    if (i596_debug > 0) printk("%s", version);
 
     /* The APRICOT-specific entries in the device structure. */
     dev->open = &i596_open;
diff --git a/linux/src/drivers/net/at1700.c b/linux/src/drivers/net/at1700.c
index 9e42ab4..f4025f4 100644
--- a/linux/src/drivers/net/at1700.c
+++ b/linux/src/drivers/net/at1700.c
@@ -258,7 +258,7 @@ int at1700_probe1(struct device *dev, int ioaddr)
        outb(0x00, ioaddr + CONFIG_1);
 
        if (net_debug)
-               printk(version);
+               printk("%s", version);
 
        /* Initialize the device structure. */
        dev->priv = kmalloc(sizeof(struct net_local), GFP_KERNEL);
diff --git a/linux/src/drivers/net/de4x5.c b/linux/src/drivers/net/de4x5.c
index a66f056..c85bcdb 100644
--- a/linux/src/drivers/net/de4x5.c
+++ b/linux/src/drivers/net/de4x5.c
@@ -1308,7 +1308,7 @@ de4x5_hw_init(struct device *dev, u_long iobase))
     }
     
     if (de4x5_debug & DEBUG_VERSION) {
-       printk(version);
+       printk("%s", version);
     }
     
     /* The DE4X5-specific entries in the device structure. */
diff --git a/linux/src/drivers/net/de600.c b/linux/src/drivers/net/de600.c
index 2488cd7..ce96942 100644
--- a/linux/src/drivers/net/de600.c
+++ b/linux/src/drivers/net/de600.c
@@ -644,7 +644,7 @@ de600_probe(struct device *dev)
        printk("%s: D-Link DE-600 pocket adapter", dev->name);
        /* Alpha testers must have the version number to report bugs. */
        if (de600_debug > 1)
-               printk(version);
+               printk("%s", version);
 
        /* probe for adapter */
        rx_page = 0;
diff --git a/linux/src/drivers/net/de620.c b/linux/src/drivers/net/de620.c
index ec63910..0e0c552 100644
--- a/linux/src/drivers/net/de620.c
+++ b/linux/src/drivers/net/de620.c
@@ -843,7 +843,7 @@ de620_probe(struct device *dev)
        dev->irq       = irq;
 
        if (de620_debug)
-               printk(version);
+               printk("%s", version);
 
        printk("D-Link DE-620 pocket adapter");
 
diff --git a/linux/src/drivers/net/depca.c b/linux/src/drivers/net/depca.c
index e1b0342..2048812 100644
--- a/linux/src/drivers/net/depca.c
+++ b/linux/src/drivers/net/depca.c
@@ -649,7 +649,7 @@ depca_hw_init(struct device *dev, u_long ioaddr)
     }
     if (!status) {
       if (depca_debug > 1) {
-       printk(version);
+       printk("%s", version);
       }
 
       /* The DEPCA-specific entries in the device structure. */
diff --git a/linux/src/drivers/net/e2100.c b/linux/src/drivers/net/e2100.c
index 7ba12d3..537295a 100644
--- a/linux/src/drivers/net/e2100.c
+++ b/linux/src/drivers/net/e2100.c
@@ -162,7 +162,7 @@ int e21_probe1(struct device *dev, int ioaddr)
        outb(0, ioaddr + E21_ASIC);     /* and disable the secondary interface. 
*/
 
        if (ei_debug  &&  version_printed++ == 0)
-               printk(version);
+               printk("%s", version);
 
        /* We should have a "dev" from Space.c or the static module table. */
        if (dev == NULL) {
diff --git a/linux/src/drivers/net/eepro.c b/linux/src/drivers/net/eepro.c
index 2c3a6b2..3d4fc57 100644
--- a/linux/src/drivers/net/eepro.c
+++ b/linux/src/drivers/net/eepro.c
@@ -498,7 +498,7 @@ eepro_probe1(struct device *dev, short ioaddr)
                        }
 
                        if (net_debug) 
-                               printk(version);
+                               printk("%s", version);
 
                        /* Grab the region so we can find another board if 
autoIRQ fails. */
                        request_region(ioaddr, EEPRO_IO_EXTENT, "eepro");
diff --git a/linux/src/drivers/net/eepro100.c b/linux/src/drivers/net/eepro100.c
index 6909cdc..d03462c 100644
--- a/linux/src/drivers/net/eepro100.c
+++ b/linux/src/drivers/net/eepro100.c
@@ -726,7 +726,7 @@ static void *speedo_found1(struct pci_dev *pdev, void 
*init_dev,
                           eeprom[8], eeprom[9]>>8, eeprom[9] & 0xff);
                for (i = 0; i < 4; i++)
                        if (eeprom[5] & (1<<i))
-                               printk(connectors[i]);
+                               printk("%s", connectors[i]);
                printk("\n"KERN_INFO"  Primary interface chip %s PHY #%d.\n",
                           phys[(eeprom[6]>>8)&15], eeprom[6] & 0x1f);
                if (eeprom[7] & 0x0700)
diff --git a/linux/src/drivers/net/eexpress.c b/linux/src/drivers/net/eexpress.c
index d706550..9c816ee 100644
--- a/linux/src/drivers/net/eexpress.c
+++ b/linux/src/drivers/net/eexpress.c
@@ -794,7 +794,7 @@ static int eexp_hw_probe(struct device *dev, unsigned short 
ioaddr)
        }
   
        if (net_debug) 
-               printk(version);
+               printk("%s", version);
        dev->open = eexp_open;
        dev->stop = eexp_close;
        dev->hard_start_xmit = eexp_xmit;
diff --git a/linux/src/drivers/net/ewrk3.c b/linux/src/drivers/net/ewrk3.c
index f91315f..07b0f13 100644
--- a/linux/src/drivers/net/ewrk3.c
+++ b/linux/src/drivers/net/ewrk3.c
@@ -589,7 +589,7 @@ ewrk3_hw_init(struct device *dev, u_long iobase)
 
     if (!status) {
       if (ewrk3_debug > 1) {
-       printk(version);
+       printk("%s", version);
       }
       
       /* The EWRK3-specific entries in the device structure. */
diff --git a/linux/src/drivers/net/fmv18x.c b/linux/src/drivers/net/fmv18x.c
index 121dd0b..b29ddf0 100644
--- a/linux/src/drivers/net/fmv18x.c
+++ b/linux/src/drivers/net/fmv18x.c
@@ -249,7 +249,7 @@ int fmv18x_probe1(struct device *dev, short ioaddr)
        outb(dev->if_port, ioaddr + MODE13);
 
        if (net_debug)
-               printk(version);
+               printk("%s", version);
 
        /* Initialize the device structure. */
        dev->priv = kmalloc(sizeof(struct net_local), GFP_KERNEL);
diff --git a/linux/src/drivers/net/hp-plus.c b/linux/src/drivers/net/hp-plus.c
index c8e3611..c2b7116 100644
--- a/linux/src/drivers/net/hp-plus.c
+++ b/linux/src/drivers/net/hp-plus.c
@@ -164,7 +164,7 @@ int hpp_probe1(struct device *dev, int ioaddr)
        }
 
        if (ei_debug  &&  version_printed++ == 0)
-               printk(version);
+               printk("%s", version);
 
        printk("%s: %s at %#3x,", dev->name, name, ioaddr);
 
diff --git a/linux/src/drivers/net/hp.c b/linux/src/drivers/net/hp.c
index 741924f..6ddbfd2 100644
--- a/linux/src/drivers/net/hp.c
+++ b/linux/src/drivers/net/hp.c
@@ -136,7 +136,7 @@ int hp_probe1(struct device *dev, int ioaddr)
        }
 
        if (ei_debug  &&  version_printed++ == 0)
-               printk(version);
+               printk("%s", version);
  
        printk("%s: %s (ID %02x) at %#3x,", dev->name, name, board_id, ioaddr);
 
diff --git a/linux/src/drivers/net/lance.c b/linux/src/drivers/net/lance.c
index f64f0fe..fe3cf68 100644
--- a/linux/src/drivers/net/lance.c
+++ b/linux/src/drivers/net/lance.c
@@ -674,7 +674,7 @@ int lance_probe1(struct device *dev, int ioaddr, int irq, 
int options)
        }
 
        if (lance_debug > 0  &&  did_version++ == 0)
-               printk(version);
+               printk("%s", version);
 
        /* The LANCE-specific entries in the device structure. */
        dev->open = lance_open;
diff --git a/linux/src/drivers/net/ne.c b/linux/src/drivers/net/ne.c
index 825b768..ea2f929 100644
--- a/linux/src/drivers/net/ne.c
+++ b/linux/src/drivers/net/ne.c
@@ -291,7 +291,7 @@ static int ne_probe1(struct device *dev, int ioaddr)
     }
 
     if (ei_debug  &&  version_printed++ == 0)
-       printk(version);
+       printk("%s", version);
 
     printk("NE*000 ethercard probe at %#3x:", ioaddr);
 
diff --git a/linux/src/drivers/net/pcnet32.c b/linux/src/drivers/net/pcnet32.c
index 02e7098..da0e870 100644
--- a/linux/src/drivers/net/pcnet32.c
+++ b/linux/src/drivers/net/pcnet32.c
@@ -344,7 +344,7 @@ static int pcnet32_probe1(struct device *dev, unsigned int 
ioaddr, unsigned char
     dev->irq = irq_line;
 
     if (pcnet32_debug > 0)
-      printk(version);
+      printk("%s", version);
 
     /* The PCNET32-specific entries in the device structure. */
     dev->open = &pcnet32_open;
diff --git a/linux/src/drivers/net/seeq8005.c b/linux/src/drivers/net/seeq8005.c
index c4d4852..4adebde 100644
--- a/linux/src/drivers/net/seeq8005.c
+++ b/linux/src/drivers/net/seeq8005.c
@@ -274,7 +274,7 @@ static int seeq8005_probe1(struct device *dev, int ioaddr)
                dev = init_etherdev(0, sizeof(struct net_local));
 
        if (net_debug  &&  version_printed++ == 0)
-               printk(version);
+               printk("%s", version);
 
        printk("%s: %s found at %#3x, ", dev->name, "seeq8005", ioaddr);
 
diff --git a/linux/src/drivers/net/smc-ultra.c 
b/linux/src/drivers/net/smc-ultra.c
index 074a235..f593aeb 100644
--- a/linux/src/drivers/net/smc-ultra.c
+++ b/linux/src/drivers/net/smc-ultra.c
@@ -156,7 +156,7 @@ int ultra_probe1(struct device *dev, int ioaddr)
                dev = init_etherdev(0, 0);
 
        if (ei_debug  &&  version_printed++ == 0)
-               printk(version);
+               printk("%s", version);
 
        model_name = (idreg & 0xF0) == 0x20 ? "SMC Ultra" : "SMC EtherEZ";
 
diff --git a/linux/src/drivers/net/smc-ultra32.c 
b/linux/src/drivers/net/smc-ultra32.c
index f616e25..6cde4c2 100644
--- a/linux/src/drivers/net/smc-ultra32.c
+++ b/linux/src/drivers/net/smc-ultra32.c
@@ -153,7 +153,7 @@ int ultra32_probe1(struct device *dev, int ioaddr)
        }
 
        if (ei_debug  &&  version_printed++ == 0)
-               printk(version);
+               printk("%s", version);
 
        model_name = "SMC Ultra32";
 
diff --git a/linux/src/drivers/net/wd.c b/linux/src/drivers/net/wd.c
index a737a01..dd87902 100644
--- a/linux/src/drivers/net/wd.c
+++ b/linux/src/drivers/net/wd.c
@@ -137,7 +137,7 @@ int wd_probe1(struct device *dev, int ioaddr)
        }
 
        if (ei_debug  &&  version_printed++ == 0)
-               printk(version);
+               printk("%s", version);
 
        printk("%s: WD80x3 at %#3x, ", dev->name, ioaddr);
        for (i = 0; i < 6; i++)
diff --git a/version.m4 b/version.m4
index 0eea40c..56a7174 100644
--- a/version.m4
+++ b/version.m4
@@ -1,4 +1,4 @@
 m4_define([AC_PACKAGE_NAME],[GNU Mach])
-m4_define([AC_PACKAGE_VERSION],[1.4+git20141109])
+m4_define([AC_PACKAGE_VERSION],[1.4+git20141211])
 m4_define([AC_PACKAGE_BUGREPORT],address@hidden)
 m4_define([AC_PACKAGE_TARNAME],[gnumach])
diff --git a/vm/vm_user.c b/vm/vm_user.c
index 1d8f37b..f7c87cc 100644
--- a/vm/vm_user.c
+++ b/vm/vm_user.c
@@ -336,10 +336,7 @@ kern_return_t vm_map(
        if (size == 0)
                return KERN_INVALID_ARGUMENT;
 
-       if (anywhere)
-               *address = vm_map_min(target_map);
-       else
-               *address = trunc_page(*address);
+       *address = trunc_page(*address);
        size = round_page(size);
 
        if (!IP_VALID(memory_object)) {

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



reply via email to

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