summaryrefslogtreecommitdiff
path: root/recipes/linux-uml/linux-uml-2.4.26
diff options
context:
space:
mode:
Diffstat (limited to 'recipes/linux-uml/linux-uml-2.4.26')
-rw-r--r--recipes/linux-uml/linux-uml-2.4.26/01-CONFIG_X86_CMPXCHG.patch-215
-rw-r--r--recipes/linux-uml/linux-uml-2.4.26/02-config_cleanup.patch127
-rw-r--r--recipes/linux-uml/linux-uml-2.4.26/07-mconsole_dir_cleanup.patch11
-rw-r--r--recipes/linux-uml/linux-uml-2.4.26/10-flock.patch33
-rw-r--r--recipes/linux-uml/linux-uml-2.4.26/11-usr1_process_tkill.patch21
-rw-r--r--recipes/linux-uml/linux-uml-2.4.26/12-hostfs.patch109
-rw-r--r--recipes/linux-uml/linux-uml-2.4.26/13-hostfs_access.patch11
-rw-r--r--recipes/linux-uml/linux-uml-2.4.26/aio_abi.h92
-rw-r--r--recipes/linux-uml/linux-uml-2.4.26/defconfig430
-rw-r--r--recipes/linux-uml/linux-uml-2.4.26/disable-aio-check.patch20
-rw-r--r--recipes/linux-uml/linux-uml-2.4.26/fix-includes.patch26
-rw-r--r--recipes/linux-uml/linux-uml-2.4.26/unbreak-hostfs.patch110
12 files changed, 1005 insertions, 0 deletions
diff --git a/recipes/linux-uml/linux-uml-2.4.26/01-CONFIG_X86_CMPXCHG.patch-2 b/recipes/linux-uml/linux-uml-2.4.26/01-CONFIG_X86_CMPXCHG.patch-2
new file mode 100644
index 0000000000..94003d0aa0
--- /dev/null
+++ b/recipes/linux-uml/linux-uml-2.4.26/01-CONFIG_X86_CMPXCHG.patch-2
@@ -0,0 +1,15 @@
+Index: linux-2.4.24-2/arch/um/config.in
+--- linux-2.4.24-2/arch/um/config.in 7 Apr 2004 20:44:02 -0000 1.56
++++ linux-2.4.24-2/arch/um/config.in 17 May 2004 18:35:49 -0000
+@@ -8,6 +8,11 @@
+
+ define_bool CONFIG_UID16 y
+
++# define_bool CONFIG_X86_CMPXCHG y
++# define_bool CONFIG_X86_XADD y
++# define_bool CONFIG_X86_BSWAP y
++# define_bool CONFIG_X86_POPAD_OK y
++
+ define_bool CONFIG_RWSEM_XCHGADD_ALGORITHM y
+
+ mainmenu_option next_comment
diff --git a/recipes/linux-uml/linux-uml-2.4.26/02-config_cleanup.patch b/recipes/linux-uml/linux-uml-2.4.26/02-config_cleanup.patch
new file mode 100644
index 0000000000..87b4476790
--- /dev/null
+++ b/recipes/linux-uml/linux-uml-2.4.26/02-config_cleanup.patch
@@ -0,0 +1,127 @@
+Index: linux-2.4.24-2/arch/um/config.in
+--- linux-2.4.24-2/arch/um/config.in 7 Apr 2004 20:44:02 -0000 1.56
++++ linux-2.4.24-2/arch/um/config.in 17 May 2004 18:35:49 -0000
+@@ -16,6 +21,16 @@
+ endmenu
+
+ mainmenu_option next_comment
++comment 'Loadable module support'
++bool 'Enable loadable module support' CONFIG_MODULES
++if [ "$CONFIG_MODULES" = "y" ]; then
++# MODVERSIONS does not yet work in this architecture
++# bool ' Set version information on all module symbols' CONFIG_MODVERSIONS
++ bool ' Kernel module loader' CONFIG_KMOD
++fi
++endmenu
++
++mainmenu_option next_comment
+ comment 'General Setup'
+
+ bool 'Separate kernel address space support' CONFIG_MODE_SKAS
+@@ -59,28 +74,17 @@
+ bool 'Real-time Clock' CONFIG_UML_REAL_TIME_CLOCK
+ endmenu
+
+-mainmenu_option next_comment
+-comment 'Loadable module support'
+-bool 'Enable loadable module support' CONFIG_MODULES
+-if [ "$CONFIG_MODULES" = "y" ]; then
+-# MODVERSIONS does not yet work in this architecture
+-# bool ' Set version information on all module symbols' CONFIG_MODVERSIONS
+- bool ' Kernel module loader' CONFIG_KMOD
++if [ "$CONFIG_NET" = "y" ]; then
++ source net/Config.in
+ fi
+-endmenu
+
+ source arch/um/config_char.in
+
+ source arch/um/config_block.in
+
+-define_bool CONFIG_NETDEVICES $CONFIG_NET
+-
+-if [ "$CONFIG_NET" = "y" ]; then
+- source arch/um/config_net.in
+- source net/Config.in
+-fi
++source drivers/mtd/Config.in
+
+-source fs/Config.in
++source drivers/md/Config.in
+
+ mainmenu_option next_comment
+ comment 'SCSI support'
+@@ -92,11 +96,19 @@
+ fi
+ endmenu
+
+-source drivers/md/Config.in
++if [ "$CONFIG_NET" = "y" ]; then
++ mainmenu_option next_comment
++ comment 'Network Devices'
+
+-source drivers/mtd/Config.in
++ bool 'Network device support' CONFIG_NETDEVICES
++ if [ "$CONFIG_NETDEVICES" = "y" ]; then
++ source arch/um/config_net.in
++ fi
++ endmenu
++fi
++
++source fs/Config.in
+
+-source lib/Config.in
+
+ mainmenu_option next_comment
+ comment 'Kernel hacking'
+@@ -110,3 +122,6 @@
+ dep_bool 'Enable gprof support' CONFIG_GPROF $CONFIG_DEBUGSYM
+ dep_bool 'Enable gcov support' CONFIG_GCOV $CONFIG_DEBUGSYM
+ endmenu
++
++source crypto/Config.in
++source lib/Config.in
+Index: linux-2.4.24-2/arch/um/config_net.in
+--- linux-2.4.24-2/arch/um/config_net.in 7 Apr 2004 20:42:33 -0000 1.4
++++ linux-2.4.24-2/arch/um/config_net.in 17 May 2004 18:35:49 -0000
+@@ -1,6 +1,3 @@
+-mainmenu_option next_comment
+-comment 'Network Devices'
+-
+ # UML virtual driver
+ bool 'Virtual network device' CONFIG_UML_NET
+
+@@ -44,5 +45,3 @@
+ dep_bool ' CSLIP compressed headers' CONFIG_SLIP_COMPRESSED $CONFIG_SLIP
+ dep_bool ' Keepalive and linefill' CONFIG_SLIP_SMART $CONFIG_SLIP
+ dep_bool ' Six bit SLIP encapsulation' CONFIG_SLIP_MODE_SLIP6 $CONFIG_SLIP
+-
+-endmenu
+Index: linux-2.4.24-2/arch/um/drivers/Makefile
+--- linux-2.4.24-2/arch/um/drivers/Makefile 16 Feb 2004 00:09:07 -0000 1.50
++++ linux-2.4.24-2/arch/um/drivers/Makefile 17 May 2004 18:35:49 -0000
+@@ -27,6 +27,7 @@
+
+ obj-y =
+ obj-$(CONFIG_SSL) += ssl.o
++obj-$(CONFIG_STDIO_CONSOLE) += stdio_console.o
+ obj-$(CONFIG_UML_NET_SLIP) += slip.o
+ obj-$(CONFIG_UML_NET_SLIRP) += slirp.o
+ obj-$(CONFIG_UML_NET_DAEMON) += daemon.o
+@@ -49,7 +54,7 @@
+
+ CFLAGS_pcap_user.o = -I/usr/include/pcap
+
+-obj-y += stdio_console.o $(CHAN_OBJS)
++obj-y += $(CHAN_OBJS)
+
+ USER_SINGLE_OBJS = $(foreach f,$(patsubst %.o,%,$(obj-y) $(obj-m)),$($(f)-objs))
+
+@@ -62,6 +71,7 @@
+ $(CC) $(CFLAGS_$@) $(USER_CFLAGS) -c -o $@ $<
+
+ clean:
++ rm -f $(OBJS) $(export-objs)
+
+ modules:
+
diff --git a/recipes/linux-uml/linux-uml-2.4.26/07-mconsole_dir_cleanup.patch b/recipes/linux-uml/linux-uml-2.4.26/07-mconsole_dir_cleanup.patch
new file mode 100644
index 0000000000..280f0941c4
--- /dev/null
+++ b/recipes/linux-uml/linux-uml-2.4.26/07-mconsole_dir_cleanup.patch
@@ -0,0 +1,11 @@
+Index: linux-2.4.24-2/arch/um/kernel/umid.c
+--- linux-2.4.24-2/arch/um/kernel/umid.c 16 Feb 2004 00:10:11 -0000 1.21
++++ linux-2.4.24-2/arch/um/kernel/umid.c 17 May 2004 18:35:49 -0000
+@@ -151,6 +151,7 @@
+
+ sprintf(dir, "%s%s", uml_dir, umid);
+ actually_do_remove(dir);
++ rmdir(uml_dir);
+ }
+
+ char *get_umid(int only_if_set)
diff --git a/recipes/linux-uml/linux-uml-2.4.26/10-flock.patch b/recipes/linux-uml/linux-uml-2.4.26/10-flock.patch
new file mode 100644
index 0000000000..c64b34d8be
--- /dev/null
+++ b/recipes/linux-uml/linux-uml-2.4.26/10-flock.patch
@@ -0,0 +1,33 @@
+Index: linux-2.4.24-2/arch/um/os-Linux/file.c
+--- linux-2.4.24-2/arch/um/os-Linux/file.c 7 Apr 2004 20:44:49 -0000 1.29
++++ linux-2.4.24-2/arch/um/os-Linux/file.c 17 May 2004 18:35:49 -0000
+@@ -688,6 +688,7 @@
+
+ int os_lock_file(int fd, int excl)
+ {
++#if USE_FCNTL_LOCK
+ int type = excl ? F_WRLCK : F_RDLCK;
+ struct flock lock = ((struct flock) { .l_type = type,
+ .l_whence = SEEK_SET,
+@@ -710,6 +711,21 @@
+ err = save;
+ out:
+ return(err);
++#else
++ int type = excl ? LOCK_EX : LOCK_SH;
++ int err, save;
++
++ err = flock(fd, type | LOCK_NB);
++ if(!err)
++ goto out;
++
++ save = -errno;
++
++ printk("file already locked\n");
++ err = save;
++ out:
++ return(err);
++#endif
+ }
+
+ int os_ftruncate(int fd, __u64 size)
diff --git a/recipes/linux-uml/linux-uml-2.4.26/11-usr1_process_tkill.patch b/recipes/linux-uml/linux-uml-2.4.26/11-usr1_process_tkill.patch
new file mode 100644
index 0000000000..d339746c6a
--- /dev/null
+++ b/recipes/linux-uml/linux-uml-2.4.26/11-usr1_process_tkill.patch
@@ -0,0 +1,21 @@
+Index: linux-2.4.24-2/arch/um/os-Linux/process.c
+--- linux-2.4.24-2/arch/um/os-Linux/process.c 19 Jan 2004 21:02:20 -0000 1.8
++++ linux-2.4.24-2/arch/um/os-Linux/process.c 17 May 2004 18:35:49 -0000
+@@ -7,6 +7,7 @@
+ #include <stdio.h>
+ #include <errno.h>
+ #include <signal.h>
++#include <linux/unistd.h>
+ #include <sys/mman.h>
+ #include <sys/wait.h>
+ #include "os.h"
+@@ -92,7 +93,8 @@
+
+ void os_usr1_process(int pid)
+ {
+- kill(pid, SIGUSR1);
++ if (syscall(__NR_tkill, pid, SIGUSR1) < 0)
++ kill(pid, SIGUSR1);
+ }
+
+ int os_getpid(void)
diff --git a/recipes/linux-uml/linux-uml-2.4.26/12-hostfs.patch b/recipes/linux-uml/linux-uml-2.4.26/12-hostfs.patch
new file mode 100644
index 0000000000..124f975650
--- /dev/null
+++ b/recipes/linux-uml/linux-uml-2.4.26/12-hostfs.patch
@@ -0,0 +1,109 @@
+diff -ru linux-2.4.26-1.orig/arch/um/fs/hostfs/externfs.c linux-2.4.26-1.hno/arch/um/fs/hostfs/externfs.c
+--- linux-2.4.26-1.orig/arch/um/fs/hostfs/externfs.c Mon May 17 23:36:17 2004
++++ linux-2.4.26-1.hno/arch/um/fs/hostfs/externfs.c Tue May 18 00:10:42 2004
+@@ -1133,7 +1133,7 @@
+ if((mount_arg != NULL) && (*mount_arg != '\0'))
+ root = mount_arg;
+
+- return(uml_strdup(mount_arg));
++ return(uml_strdup(root));
+ }
+
+ struct super_block *hostfs_read_super(struct super_block *sb, void *data,
+diff -ru linux-2.4.26-1.orig/arch/um/fs/hostfs/host_file.c linux-2.4.26-1.hno/arch/um/fs/hostfs/host_file.c
+--- linux-2.4.26-1.orig/arch/um/fs/hostfs/host_file.c Mon May 17 23:36:17 2004
++++ linux-2.4.26-1.hno/arch/um/fs/hostfs/host_file.c Tue May 18 11:40:47 2004
+@@ -72,28 +72,21 @@
+ {
+ char tmp[HOSTFS_BUFSIZE], *file;
+ int mode = 0, err;
++ struct openflags flags = OPENFLAGS();
+
+- if(r && !w)
+- mode = O_RDONLY;
+- else if(!r && w)
+- mode = O_WRONLY;
+- else if(r && w)
+- mode = O_RDWR;
+- else {
+- printk("Impossible mode in host_open_file - r = %d, w = %d",
+- r, w);
+- return(-EINVAL);
+- }
+-
++ if (r)
++ flags = of_read(flags);
++ if (w)
++ flags = of_write(flags);
+ if(append)
+- mode |= O_APPEND;
++ flags = of_append(flags);
+
+ err = -ENOMEM;
+ file = get_path(path, tmp, sizeof(tmp));
+ if(file == NULL)
+ goto out;
+
+- err = open_filehandle(file, of_create(of_rdwr(OPENFLAGS())), mode, fh);
++ err = open_filehandle(file, flags, 0, fh);
+ out:
+ free_path(file, tmp);
+ return(err);
+diff -ru linux-2.4.26-1.orig/arch/um/fs/hostfs/host_fs.c linux-2.4.26-1.hno/arch/um/fs/hostfs/host_fs.c
+--- linux-2.4.26-1.orig/arch/um/fs/hostfs/host_fs.c Mon May 17 23:36:17 2004
++++ linux-2.4.26-1.hno/arch/um/fs/hostfs/host_fs.c Tue May 18 11:38:51 2004
+@@ -111,10 +111,14 @@
+ {
+ const char *path[] = { jail_dir, mount, file, NULL };
+ int uid;
++ int gid;
++ int rc;
+
++ /* These should be mount flags from an internal "superblock" */
+ *uid_out = 0;
++ *gid_out = 0;
+ return(host_stat_file(path, dev_out, inode_out, mode_out, nlink_out,
+- &uid, gid_out, size_out, atime_out, mtime_out,
++ &uid, &gid, size_out, atime_out, mtime_out,
+ ctime_out, blksize_out, blocks_out));
+ }
+
+@@ -138,6 +142,12 @@
+ goto out;
+
+ err = host_open_file(path, 1, 1, fh);
++ if (err == -EISDIR) {
++ kfree(fh);
++ return NULL;
++ }
++ if (err == -EPERM)
++ err = host_open_file(path, 1, 0, fh);
+ if(err)
+ goto out_free;
+
+@@ -175,10 +185,9 @@
+ len - ignore_end);
+
+ out:
+- if(err < 0)
+- (*completion)(buf, err, arg);
+- else err = 0;
+-
++ (*completion)(buf, err, arg);
++ if (err > 0)
++ err = 0;
+ return(err);
+ }
+
+@@ -191,8 +200,9 @@
+
+ err = write_file(fh, offset + start, buf + start, len);
+
+- if(err < 0)
+- (*completion)((char *) buf, err, arg);
++ (*completion)((char *) buf, err, arg);
++ if (err > 0)
++ err = 0;
+ return(err);
+ }
+
diff --git a/recipes/linux-uml/linux-uml-2.4.26/13-hostfs_access.patch b/recipes/linux-uml/linux-uml-2.4.26/13-hostfs_access.patch
new file mode 100644
index 0000000000..914c5468f0
--- /dev/null
+++ b/recipes/linux-uml/linux-uml-2.4.26/13-hostfs_access.patch
@@ -0,0 +1,11 @@
+--- linux-2.4.26-umlhipac/arch/um/fs/hostfs/externfs.c.orig Tue May 18 00:10:42 2004
++++ linux-2.4.26-umlhipac/arch/um/fs/hostfs/externfs.c Thu May 20 21:12:54 2004
+@@ -961,7 +961,7 @@
+ if(name == NULL)
+ return(-ENOMEM);
+
+- err = (*ops->access_file)(name, r, w, x, current->fsuid, current->fsgid,
++ err = (*ops->access_file)(name, current->fsuid, current->fsgid, r, w, x,
+ mount);
+ kfree(name);
+
diff --git a/recipes/linux-uml/linux-uml-2.4.26/aio_abi.h b/recipes/linux-uml/linux-uml-2.4.26/aio_abi.h
new file mode 100644
index 0000000000..e7fc6b234e
--- /dev/null
+++ b/recipes/linux-uml/linux-uml-2.4.26/aio_abi.h
@@ -0,0 +1,92 @@
+/* linux/aio_abi.h
+ *
+ * Copyright 2000,2001,2002 Red Hat.
+ *
+ * Written by Benjamin LaHaise <bcrl@redhat.com>
+ *
+ * Distribute under the terms of the GPLv2 (see ../../COPYING) or under
+ * the following terms.
+ *
+ * Permission to use, copy, modify, and distribute this software and its
+ * documentation is hereby granted, provided that the above copyright
+ * notice appears in all copies. This software is provided without any
+ * warranty, express or implied. Red Hat makes no representations about
+ * the suitability of this software for any purpose.
+ *
+ * IN NO EVENT SHALL RED HAT BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT,
+ * SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF
+ * THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF RED HAT HAS BEEN ADVISED
+ * OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * RED HAT DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND
+ * RED HAT HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES,
+ * ENHANCEMENTS, OR MODIFICATIONS.
+ */
+#ifndef __LINUX__AIO_ABI_H
+#define __LINUX__AIO_ABI_H
+
+#include <asm/byteorder.h>
+
+typedef unsigned long aio_context_t;
+
+enum {
+ IOCB_CMD_PREAD = 0,
+ IOCB_CMD_PWRITE = 1,
+ IOCB_CMD_FSYNC = 2,
+ IOCB_CMD_FDSYNC = 3,
+ /* These two are experimental.
+ * IOCB_CMD_PREADX = 4,
+ * IOCB_CMD_POLL = 5,
+ */
+ IOCB_CMD_NOOP = 6,
+};
+
+/* read() from /dev/aio returns these structures. */
+struct io_event {
+ __u64 data; /* the data field from the iocb */
+ __u64 obj; /* what iocb this event came from */
+ __s64 res; /* result code for this event */
+ __s64 res2; /* secondary result */
+};
+
+#if defined(__LITTLE_ENDIAN)
+#define PADDED(x,y) x, y
+#elif defined(__BIG_ENDIAN)
+#define PADDED(x,y) y, x
+#else
+#error edit for your odd byteorder.
+#endif
+
+/*
+ * we always use a 64bit off_t when communicating
+ * with userland. its up to libraries to do the
+ * proper padding and aio_error abstraction
+ */
+
+struct iocb {
+ /* these are internal to the kernel/libc. */
+ __u64 aio_data; /* data to be returned in event's data */
+ __u32 PADDED(aio_key, aio_reserved1);
+ /* the kernel sets aio_key to the req # */
+
+ /* common fields */
+ __u16 aio_lio_opcode; /* see IOCB_CMD_ above */
+ __s16 aio_reqprio;
+ __u32 aio_fildes;
+
+ __u64 aio_buf;
+ __u64 aio_nbytes;
+ __s64 aio_offset;
+
+ /* extra parameters */
+ __u64 aio_reserved2; /* TODO: use this for a (struct sigevent *) */
+ __u64 aio_reserved3;
+}; /* 64 bytes */
+
+#undef IFBIG
+#undef IFLITTLE
+
+#endif /* __LINUX__AIO_ABI_H */
+
diff --git a/recipes/linux-uml/linux-uml-2.4.26/defconfig b/recipes/linux-uml/linux-uml-2.4.26/defconfig
new file mode 100644
index 0000000000..b4030b532c
--- /dev/null
+++ b/recipes/linux-uml/linux-uml-2.4.26/defconfig
@@ -0,0 +1,430 @@
+#
+# Automatically generated make config: don't edit
+#
+CONFIG_USERMODE=y
+# CONFIG_ISA is not set
+# CONFIG_SBUS is not set
+# CONFIG_PCI is not set
+CONFIG_UID16=y
+CONFIG_RWSEM_XCHGADD_ALGORITHM=y
+
+#
+# Code maturity level options
+#
+CONFIG_EXPERIMENTAL=y
+
+#
+# General Setup
+#
+CONFIG_MODE_SKAS=y
+CONFIG_MODE_TT=y
+CONFIG_NET=y
+CONFIG_SYSVIPC=y
+CONFIG_BSD_PROCESS_ACCT=y
+CONFIG_SYSCTL=y
+CONFIG_BINFMT_AOUT=y
+CONFIG_BINFMT_ELF=y
+CONFIG_BINFMT_MISC=y
+CONFIG_HOSTFS=y
+CONFIG_HUMFS=y
+CONFIG_EXTERNFS=y
+CONFIG_HPPFS=y
+CONFIG_MCONSOLE=y
+CONFIG_MAGIC_SYSRQ=y
+# CONFIG_HOST_2G_2G is not set
+# CONFIG_UML_SMP is not set
+# CONFIG_SMP is not set
+CONFIG_NEST_LEVEL=0
+CONFIG_KERNEL_HALF_GIGS=1
+# CONFIG_HIGHMEM is not set
+CONFIG_PROC_MM=y
+CONFIG_KERNEL_STACK_ORDER=2
+CONFIG_UML_REAL_TIME_CLOCK=y
+
+#
+# Loadable module support
+#
+CONFIG_MODULES=y
+# CONFIG_KMOD is not set
+
+#
+# Character Devices
+#
+CONFIG_STDIO_CONSOLE=y
+CONFIG_SSL=y
+CONFIG_FD_CHAN=y
+CONFIG_NULL_CHAN=y
+CONFIG_PORT_CHAN=y
+CONFIG_PTY_CHAN=y
+CONFIG_TTY_CHAN=y
+CONFIG_XTERM_CHAN=y
+CONFIG_CON_ZERO_CHAN="fd:0,fd:1"
+CONFIG_CON_CHAN="xterm"
+CONFIG_SSL_CHAN="pty"
+CONFIG_UNIX98_PTYS=y
+CONFIG_UNIX98_PTY_COUNT=256
+# CONFIG_WATCHDOG is not set
+# CONFIG_WATCHDOG_NOWAYOUT is not set
+# CONFIG_SOFT_WATCHDOG is not set
+# CONFIG_UML_WATCHDOG is not set
+CONFIG_UML_SOUND=y
+CONFIG_SOUND=y
+CONFIG_HOSTAUDIO=y
+# CONFIG_TTY_LOG is not set
+
+#
+# Block Devices
+#
+CONFIG_BLK_DEV_UBD=y
+# CONFIG_BLK_DEV_UBD_SYNC is not set
+# CONFIG_COW is not set
+CONFIG_COW_COMMON=y
+CONFIG_BLK_DEV_LOOP=y
+CONFIG_BLK_DEV_NBD=y
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_SIZE=4096
+CONFIG_BLK_DEV_INITRD=y
+# CONFIG_MMAPPER is not set
+CONFIG_NETDEVICES=y
+
+#
+# Network Devices
+#
+CONFIG_UML_NET=y
+CONFIG_UML_NET_ETHERTAP=y
+CONFIG_UML_NET_TUNTAP=y
+CONFIG_UML_NET_SLIP=y
+CONFIG_UML_NET_SLIRP=y
+CONFIG_UML_NET_DAEMON=y
+CONFIG_UML_NET_MCAST=y
+# CONFIG_UML_NET_PCAP is not set
+CONFIG_DUMMY=y
+# CONFIG_BONDING is not set
+# CONFIG_EQUALIZER is not set
+CONFIG_TUN=y
+CONFIG_PPP=y
+# CONFIG_PPP_MULTILINK is not set
+# CONFIG_PPP_FILTER is not set
+# CONFIG_PPP_ASYNC is not set
+# CONFIG_PPP_SYNC_TTY is not set
+# CONFIG_PPP_DEFLATE is not set
+# CONFIG_PPP_BSDCOMP is not set
+# CONFIG_PPPOE is not set
+# CONFIG_PPP_MPPE is not set
+CONFIG_SLIP=y
+# CONFIG_SLIP_COMPRESSED is not set
+# CONFIG_SLIP_SMART is not set
+# CONFIG_SLIP_MODE_SLIP6 is not set
+
+#
+# Networking options
+#
+CONFIG_PACKET=y
+CONFIG_PACKET_MMAP=y
+# CONFIG_NETLINK_DEV is not set
+# CONFIG_NETFILTER is not set
+# CONFIG_FILTER is not set
+CONFIG_UNIX=y
+CONFIG_INET=y
+# CONFIG_IP_MULTICAST is not set
+# CONFIG_IP_ADVANCED_ROUTER is not set
+# CONFIG_IP_PNP is not set
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE is not set
+# CONFIG_ARPD is not set
+# CONFIG_INET_ECN is not set
+# CONFIG_SYN_COOKIES is not set
+# CONFIG_IPV6 is not set
+# CONFIG_KHTTPD is not set
+
+#
+# SCTP Configuration (EXPERIMENTAL)
+#
+CONFIG_IPV6_SCTP__=y
+# CONFIG_IP_SCTP is not set
+# CONFIG_ATM is not set
+# CONFIG_VLAN_8021Q is not set
+
+#
+#
+#
+# CONFIG_IPX is not set
+# CONFIG_ATALK is not set
+
+#
+# Appletalk devices
+#
+# CONFIG_DEV_APPLETALK is not set
+# CONFIG_DECNET is not set
+# CONFIG_BRIDGE is not set
+# CONFIG_X25 is not set
+# CONFIG_LAPB is not set
+# CONFIG_LLC is not set
+# CONFIG_NET_DIVERT is not set
+# CONFIG_ECONET is not set
+# CONFIG_WAN_ROUTER is not set
+# CONFIG_NET_FASTROUTE is not set
+# CONFIG_NET_HW_FLOWCONTROL is not set
+
+#
+# QoS and/or fair queueing
+#
+# CONFIG_NET_SCHED is not set
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+
+#
+# File systems
+#
+CONFIG_QUOTA=y
+# CONFIG_QFMT_V2 is not set
+CONFIG_AUTOFS_FS=y
+CONFIG_AUTOFS4_FS=y
+CONFIG_REISERFS_FS=y
+# CONFIG_REISERFS_CHECK is not set
+# CONFIG_REISERFS_PROC_INFO is not set
+# CONFIG_ADFS_FS is not set
+# CONFIG_ADFS_FS_RW is not set
+# CONFIG_AFFS_FS is not set
+# CONFIG_HFS_FS is not set
+# CONFIG_HFSPLUS_FS is not set
+# CONFIG_BEFS_FS is not set
+# CONFIG_BEFS_DEBUG is not set
+# CONFIG_BFS_FS is not set
+# CONFIG_EXT3_FS is not set
+# CONFIG_JBD is not set
+# CONFIG_JBD_DEBUG is not set
+CONFIG_FAT_FS=y
+CONFIG_MSDOS_FS=y
+CONFIG_UMSDOS_FS=y
+CONFIG_VFAT_FS=y
+# CONFIG_EFS_FS is not set
+CONFIG_JFFS_FS=y
+CONFIG_JFFS_FS_VERBOSE=0
+CONFIG_JFFS_PROC_FS=y
+CONFIG_JFFS2_FS=y
+CONFIG_JFFS2_FS_DEBUG=0
+# CONFIG_CRAMFS is not set
+# CONFIG_TMPFS is not set
+CONFIG_RAMFS=y
+CONFIG_ISO9660_FS=y
+# CONFIG_JOLIET is not set
+# CONFIG_ZISOFS is not set
+# CONFIG_JFS_FS is not set
+# CONFIG_JFS_DEBUG is not set
+# CONFIG_JFS_STATISTICS is not set
+CONFIG_MINIX_FS=y
+# CONFIG_VXFS_FS is not set
+# CONFIG_NTFS_FS is not set
+# CONFIG_NTFS_RW is not set
+# CONFIG_HPFS_FS is not set
+CONFIG_PROC_FS=y
+CONFIG_DEVFS_FS=y
+CONFIG_DEVFS_MOUNT=y
+# CONFIG_DEVFS_DEBUG is not set
+CONFIG_DEVPTS_FS=y
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_QNX4FS_RW is not set
+# CONFIG_ROMFS_FS is not set
+CONFIG_EXT2_FS=y
+# CONFIG_SYSV_FS is not set
+# CONFIG_UDF_FS is not set
+# CONFIG_UDF_RW is not set
+# CONFIG_UFS_FS is not set
+# CONFIG_UFS_FS_WRITE is not set
+# CONFIG_XFS_FS is not set
+# CONFIG_XFS_QUOTA is not set
+# CONFIG_XFS_RT is not set
+# CONFIG_XFS_TRACE is not set
+# CONFIG_XFS_DEBUG is not set
+
+#
+# Network File Systems
+#
+# CONFIG_CODA_FS is not set
+# CONFIG_INTERMEZZO_FS is not set
+# CONFIG_NFS_FS is not set
+# CONFIG_NFS_V3 is not set
+# CONFIG_NFS_DIRECTIO is not set
+# CONFIG_ROOT_NFS is not set
+# CONFIG_NFSD is not set
+# CONFIG_NFSD_V3 is not set
+# CONFIG_NFSD_TCP is not set
+# CONFIG_SUNRPC is not set
+# CONFIG_LOCKD is not set
+# CONFIG_SMB_FS is not set
+# CONFIG_NCP_FS is not set
+# CONFIG_NCPFS_PACKET_SIGNING is not set
+# CONFIG_NCPFS_IOCTL_LOCKING is not set
+# CONFIG_NCPFS_STRONG is not set
+# CONFIG_NCPFS_NFS_NS is not set
+# CONFIG_NCPFS_OS2_NS is not set
+# CONFIG_NCPFS_SMALLDOS is not set
+# CONFIG_NCPFS_NLS is not set
+# CONFIG_NCPFS_EXTRAS is not set
+# CONFIG_ZISOFS_FS is not set
+
+#
+# Partition Types
+#
+# CONFIG_PARTITION_ADVANCED is not set
+CONFIG_MSDOS_PARTITION=y
+# CONFIG_SMB_NLS is not set
+CONFIG_NLS=y
+
+#
+# Native Language Support
+#
+CONFIG_NLS_DEFAULT="iso8859-1"
+# CONFIG_NLS_CODEPAGE_437 is not set
+# CONFIG_NLS_CODEPAGE_737 is not set
+# CONFIG_NLS_CODEPAGE_775 is not set
+# CONFIG_NLS_CODEPAGE_850 is not set
+# CONFIG_NLS_CODEPAGE_852 is not set
+# CONFIG_NLS_CODEPAGE_855 is not set
+# CONFIG_NLS_CODEPAGE_857 is not set
+# CONFIG_NLS_CODEPAGE_860 is not set
+# CONFIG_NLS_CODEPAGE_861 is not set
+# CONFIG_NLS_CODEPAGE_862 is not set
+# CONFIG_NLS_CODEPAGE_863 is not set
+# CONFIG_NLS_CODEPAGE_864 is not set
+# CONFIG_NLS_CODEPAGE_865 is not set
+# CONFIG_NLS_CODEPAGE_866 is not set
+# CONFIG_NLS_CODEPAGE_869 is not set
+# CONFIG_NLS_CODEPAGE_936 is not set
+# CONFIG_NLS_CODEPAGE_950 is not set
+# CONFIG_NLS_CODEPAGE_932 is not set
+# CONFIG_NLS_CODEPAGE_949 is not set
+# CONFIG_NLS_CODEPAGE_874 is not set
+# CONFIG_NLS_ISO8859_8 is not set
+# CONFIG_NLS_CODEPAGE_1250 is not set
+# CONFIG_NLS_CODEPAGE_1251 is not set
+# CONFIG_NLS_ISO8859_1 is not set
+# CONFIG_NLS_ISO8859_2 is not set
+# CONFIG_NLS_ISO8859_3 is not set
+# CONFIG_NLS_ISO8859_4 is not set
+# CONFIG_NLS_ISO8859_5 is not set
+# CONFIG_NLS_ISO8859_6 is not set
+# CONFIG_NLS_ISO8859_7 is not set
+# CONFIG_NLS_ISO8859_9 is not set
+# CONFIG_NLS_ISO8859_13 is not set
+# CONFIG_NLS_ISO8859_14 is not set
+# CONFIG_NLS_ISO8859_15 is not set
+# CONFIG_NLS_KOI8_R is not set
+# CONFIG_NLS_KOI8_U is not set
+# CONFIG_NLS_UTF8 is not set
+
+#
+# SCSI support
+#
+CONFIG_SCSI=y
+
+#
+# SCSI support type (disk, tape, CD-ROM)
+#
+# CONFIG_BLK_DEV_SD is not set
+# CONFIG_CHR_DEV_ST is not set
+# CONFIG_BLK_DEV_SR is not set
+# CONFIG_CHR_DEV_SG is not set
+
+#
+# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
+#
+# CONFIG_SCSI_DEBUG_QUEUES is not set
+# CONFIG_SCSI_MULTI_LUN is not set
+# CONFIG_SCSI_CONSTANTS is not set
+# CONFIG_SCSI_LOGGING is not set
+CONFIG_SCSI_DEBUG=y
+
+#
+# Multi-device support (RAID and LVM)
+#
+# CONFIG_MD is not set
+# CONFIG_BLK_DEV_MD is not set
+# CONFIG_MD_LINEAR is not set
+# CONFIG_MD_RAID0 is not set
+# CONFIG_MD_RAID1 is not set
+# CONFIG_MD_RAID5 is not set
+# CONFIG_MD_MULTIPATH is not set
+# CONFIG_BLK_DEV_LVM is not set
+
+#
+# Memory Technology Devices (MTD)
+#
+CONFIG_MTD=y
+# CONFIG_MTD_DEBUG is not set
+# CONFIG_MTD_PARTITIONS is not set
+# CONFIG_MTD_CONCAT is not set
+# CONFIG_MTD_REDBOOT_PARTS is not set
+# CONFIG_MTD_CMDLINE_PARTS is not set
+
+#
+# User Modules And Translation Layers
+#
+CONFIG_MTD_CHAR=y
+CONFIG_MTD_BLOCK=y
+# CONFIG_FTL is not set
+# CONFIG_NFTL is not set
+
+#
+# RAM/ROM/Flash chip drivers
+#
+# CONFIG_MTD_CFI is not set
+# CONFIG_MTD_JEDECPROBE is not set
+# CONFIG_MTD_GEN_PROBE is not set
+# CONFIG_MTD_CFI_INTELEXT is not set
+# CONFIG_MTD_CFI_AMDSTD is not set
+# CONFIG_MTD_CFI_STAA is not set
+# CONFIG_MTD_RAM is not set
+# CONFIG_MTD_ROM is not set
+# CONFIG_MTD_ABSENT is not set
+# CONFIG_MTD_OBSOLETE_CHIPS is not set
+# CONFIG_MTD_AMDSTD is not set
+# CONFIG_MTD_SHARP is not set
+# CONFIG_MTD_JEDEC is not set
+
+#
+# Mapping drivers for chip access
+#
+# CONFIG_MTD_PHYSMAP is not set
+# CONFIG_MTD_PCI is not set
+# CONFIG_MTD_PCMCIA is not set
+
+#
+# Self-contained MTD device drivers
+#
+# CONFIG_MTD_PMC551 is not set
+# CONFIG_MTD_SLRAM is not set
+# CONFIG_MTD_MTDRAM is not set
+CONFIG_MTD_BLKMTD=y
+
+#
+# Disk-On-Chip Device Drivers
+#
+# CONFIG_MTD_DOC1000 is not set
+# CONFIG_MTD_DOC2000 is not set
+# CONFIG_MTD_DOC2001 is not set
+# CONFIG_MTD_DOCPROBE is not set
+
+#
+# NAND Flash Device Drivers
+#
+# CONFIG_MTD_NAND is not set
+
+#
+# Library routines
+#
+# CONFIG_CRC32 is not set
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+
+#
+# Kernel hacking
+#
+# CONFIG_DEBUG_SLAB is not set
+CONFIG_DEBUGSYM=y
+CONFIG_PT_PROXY=y
+# CONFIG_GCOV is not set
diff --git a/recipes/linux-uml/linux-uml-2.4.26/disable-aio-check.patch b/recipes/linux-uml/linux-uml-2.4.26/disable-aio-check.patch
new file mode 100644
index 0000000000..c71fba1316
--- /dev/null
+++ b/recipes/linux-uml/linux-uml-2.4.26/disable-aio-check.patch
@@ -0,0 +1,20 @@
+
+#
+# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
+#
+
+--- linux-2.4.26/arch/um/os-Linux/Makefile~disable-aio-check 2004-05-21 10:47:13.000000000 +0200
++++ linux-2.4.26/arch/um/os-Linux/Makefile 2004-05-21 10:52:28.000000000 +0200
+@@ -7,10 +7,8 @@
+
+ obj-y = aio.o file.o process.o time.o tty.o
+
+-HAVE_AIO_ABI = $(shell [ -e /usr/include/linux/aio_abi.h ] && \
+- echo -DHAVE_AIO_ABI)
+-HAVE_AIO_LIBC = $(shell objdump -T /lib/libc-*.so | grep io_submit && \
+- echo -DHAVE_AIO_LIBC)
++HAVE_AIO_ABI = $(shell echo -UHAVE_AIO_ABI)
++HAVE_AIO_LIBC = $(shell echo -UHAVE_AIO_LIBC)
+ CFLAGS_aio.o = $(HAVE_AIO_ABI) $(HAVE_AIO_LIBC)
+
+ include $(TOPDIR)/Rules.make
diff --git a/recipes/linux-uml/linux-uml-2.4.26/fix-includes.patch b/recipes/linux-uml/linux-uml-2.4.26/fix-includes.patch
new file mode 100644
index 0000000000..a6a0260320
--- /dev/null
+++ b/recipes/linux-uml/linux-uml-2.4.26/fix-includes.patch
@@ -0,0 +1,26 @@
+
+#
+# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
+#
+
+--- linux-2.4.21/arch/um/Makefile~remove-bogus-includes 2004-02-01 15:44:08.000000000 +0100
++++ linux-2.4.21/arch/um/Makefile 2004-02-01 15:51:52.000000000 +0100
+@@ -107,7 +107,7 @@
+ linux: setup $(ARCH_DIR)/main.o vmlinux $(LD_SCRIPT-y)
+ mv vmlinux vmlinux.o
+ $(CC) -Wl,-T,$(LD_SCRIPT-y) $(LINK-y) $(LINK_WRAPS) \
+- -o linux $(ARCH_DIR)/main.o vmlinux.o -L/usr/lib -lutil
++ -o linux $(ARCH_DIR)/main.o vmlinux.o -L$(STAGING_LIBDIR) -lutil
+
+ USER_CFLAGS := $(patsubst -I%,,$(CFLAGS))
+ USER_CFLAGS := $(patsubst -Derrno=kernel_errno,,$(USER_CFLAGS))
+--- linux-2.4.21/arch/um/kernel/tt/Makefile~remove-bogus-includes 2004-02-01 15:44:08.000000000 +0100
++++ linux-2.4.21/arch/um/kernel/tt/Makefile 2004-02-01 15:51:39.000000000 +0100
+@@ -34,6 +34,6 @@
+ $(CC) $(UNMAP_CFLAGS) -c -o $@ $<
+
+ unmap_fin.o : unmap.o
+- ld -r -o $@ $< -lc -L/usr/lib
++ ld -r -o $@ $< -lc -L$(STAGING_LIBDIR)
+
+ clean :
diff --git a/recipes/linux-uml/linux-uml-2.4.26/unbreak-hostfs.patch b/recipes/linux-uml/linux-uml-2.4.26/unbreak-hostfs.patch
new file mode 100644
index 0000000000..3c77dae728
--- /dev/null
+++ b/recipes/linux-uml/linux-uml-2.4.26/unbreak-hostfs.patch
@@ -0,0 +1,110 @@
+
+#
+# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
+#
+
+--- linux-2.4.26/arch/um/fs/hostfs/externfs.c~unbreak-hostfs 2004-05-18 22:01:16.000000000 +0200
++++ linux-2.4.26/arch/um/fs/hostfs/externfs.c 2004-05-18 22:43:11.000000000 +0200
+@@ -1133,7 +1133,7 @@
+ if((mount_arg != NULL) && (*mount_arg != '\0'))
+ root = mount_arg;
+
+- return(uml_strdup(mount_arg));
++ return(uml_strdup(root));
+ }
+
+ struct super_block *hostfs_read_super(struct super_block *sb, void *data,
+--- linux-2.4.26/arch/um/fs/hostfs/host_file.c~unbreak-hostfs 2004-05-18 22:01:16.000000000 +0200
++++ linux-2.4.26/arch/um/fs/hostfs/host_file.c 2004-05-18 22:45:17.000000000 +0200
+@@ -72,28 +72,21 @@
+ {
+ char tmp[HOSTFS_BUFSIZE], *file;
+ int mode = 0, err;
++ struct openflags flags = OPENFLAGS();
+
+- if(r && !w)
+- mode = O_RDONLY;
+- else if(!r && w)
+- mode = O_WRONLY;
+- else if(r && w)
+- mode = O_RDWR;
+- else {
+- printk("Impossible mode in host_open_file - r = %d, w = %d",
+- r, w);
+- return(-EINVAL);
+- }
+-
++ if (r)
++ flags = of_read(flags);
++ if (w)
++ flags = of_write(flags);
+ if(append)
+- mode |= O_APPEND;
++ flags = of_append(flags);
+
+ err = -ENOMEM;
+ file = get_path(path, tmp, sizeof(tmp));
+ if(file == NULL)
+ goto out;
+
+- err = open_filehandle(file, of_create(of_rdwr(OPENFLAGS())), mode, fh);
++ err = open_filehandle(file, flags, 0, fh);
+ out:
+ free_path(file, tmp);
+ return(err);
+--- linux-2.4.26/arch/um/fs/hostfs/host_fs.c~unbreak-hostfs 2004-05-18 22:01:16.000000000 +0200
++++ linux-2.4.26/arch/um/fs/hostfs/host_fs.c 2004-05-18 22:50:11.000000000 +0200
+@@ -111,10 +111,13 @@
+ {
+ const char *path[] = { jail_dir, mount, file, NULL };
+ int uid;
++ int gid;
++ int rc;
+
+ *uid_out = 0;
++ *gid_out = 0;
+ return(host_stat_file(path, dev_out, inode_out, mode_out, nlink_out,
+- &uid, gid_out, size_out, atime_out, mtime_out,
++ &uid, &gid, size_out, atime_out, mtime_out,
+ ctime_out, blksize_out, blocks_out));
+ }
+
+@@ -138,6 +141,12 @@
+ goto out;
+
+ err = host_open_file(path, 1, 1, fh);
++ if (err == -EISDIR) {
++ kfree(fh);
++ return NULL;
++ }
++ if (err == -EPERM)
++ err = host_open_file(path, 1, 0, fh);
+ if(err)
+ goto out_free;
+
+@@ -175,10 +184,9 @@
+ len - ignore_end);
+
+ out:
+- if(err < 0)
+- (*completion)(buf, err, arg);
+- else err = 0;
+-
++ (*completion)(buf, err, arg);
++ if (err > 0)
++ err = 0;
+ return(err);
+ }
+
+@@ -191,8 +199,9 @@
+
+ err = write_file(fh, offset + start, buf + start, len);
+
+- if(err < 0)
+- (*completion)((char *) buf, err, arg);
++ (*completion)((char *) buf, err, arg);
++ if (err > 0)
++ err = 0;
+ return(err);
+ }
+