linux-moblin: Add 2.6.28+2.6.29-rc2 version
This commit is contained in:
parent
10f46e0117
commit
1e4f72fcbf
|
@ -0,0 +1,61 @@
|
|||
From 0384d086e31092628596af98b1e33fad586cef0a Mon Sep 17 00:00:00 2001
|
||||
From: Arjan van de Ven <arjan@linux.intel.com>
|
||||
Date: Sun, 20 Jul 2008 13:01:28 -0700
|
||||
Subject: [PATCH] fastboot: retry mounting the root fs if we can't find init
|
||||
|
||||
currently we wait until all device init is done before trying to mount
|
||||
the root fs, and to consequently execute init.
|
||||
|
||||
In preparation for relaxing the first delay, this patch adds a retry
|
||||
attempt in case /sbin/init is not found. Before retrying, the code
|
||||
will wait for all device init to complete.
|
||||
|
||||
While this patch by itself doesn't gain boot time yet (it needs follow on
|
||||
patches), the alternative already is to panic()...
|
||||
|
||||
Signed-off-by: Arjan van de Ven <arjan@linux.intel.com>
|
||||
---
|
||||
--- a/init/main.c 2009-01-07 18:29:11.000000000 -0800
|
||||
+++ b/init/main.c 2009-01-07 18:32:08.000000000 -0800
|
||||
@@ -837,6 +837,7 @@ static void run_init_process(char *init_
|
||||
*/
|
||||
static noinline int init_post(void)
|
||||
{
|
||||
+ int retry_count = 1;
|
||||
/* need to finish all async __init code before freeing the memory */
|
||||
async_synchronize_full();
|
||||
free_initmem();
|
||||
@@ -859,6 +860,8 @@ static noinline int init_post(void)
|
||||
ramdisk_execute_command);
|
||||
}
|
||||
|
||||
+retry:
|
||||
+
|
||||
/*
|
||||
* We try each of these until one succeeds.
|
||||
*
|
||||
@@ -871,6 +874,23 @@ static noinline int init_post(void)
|
||||
"defaults...\n", execute_command);
|
||||
}
|
||||
run_init_process("/sbin/init");
|
||||
+
|
||||
+ if (retry_count > 0) {
|
||||
+ retry_count--;
|
||||
+ /*
|
||||
+ * We haven't found init yet... potentially because the device
|
||||
+ * is still being probed. We need to
|
||||
+ * - flush keventd and friends
|
||||
+ * - wait for the known devices to complete their probing
|
||||
+ * - try to mount the root fs again
|
||||
+ */
|
||||
+ flush_scheduled_work();
|
||||
+ while (driver_probe_done() != 0)
|
||||
+ msleep(100);
|
||||
+ prepare_namespace();
|
||||
+ goto retry;
|
||||
+ }
|
||||
+
|
||||
run_init_process("/etc/init");
|
||||
run_init_process("/bin/init");
|
||||
run_init_process("/bin/sh");
|
||||
|
|
@ -0,0 +1,38 @@
|
|||
From dce8113d033975f56630cf6d2a6a908cfb66059d Mon Sep 17 00:00:00 2001
|
||||
From: Arjan van de Ven <arjan@linux.intel.com>
|
||||
Date: Sun, 20 Jul 2008 13:12:16 -0700
|
||||
Subject: [PATCH] fastboot: remove "wait for all devices before mounting root" delay
|
||||
|
||||
In the non-initrd case, we wait for all devices to finish their
|
||||
probing before we try to mount the rootfs.
|
||||
In practice, this means that we end up waiting 2 extra seconds for
|
||||
the PS/2 mouse probing even though the root holding device has been
|
||||
ready since a long time.
|
||||
|
||||
The previous two patches in this series made the RAID autodetect code
|
||||
do it's own "wait for probing to be done" code, and added
|
||||
"wait and retry" functionality in case the root device isn't actually
|
||||
available.
|
||||
|
||||
These two changes should make it safe to remove the delay itself,
|
||||
and this patch does this. On my test laptop, this reduces the boot time
|
||||
by 2 seconds (kernel time goes from 3.9 to 1.9 seconds).
|
||||
|
||||
Signed-off-by: Arjan van de Ven <arjan@linux.intel.com>
|
||||
---
|
||||
--- a/init/do_mounts.c 2009-01-07 18:42:10.000000000 -0800
|
||||
+++ b/init/do_mounts.c 2009-01-07 18:43:02.000000000 -0800
|
||||
@@ -370,10 +370,12 @@ void __init prepare_namespace(void)
|
||||
ssleep(root_delay);
|
||||
}
|
||||
|
||||
+#if 0
|
||||
/* wait for the known devices to complete their probing */
|
||||
while (driver_probe_done() != 0)
|
||||
msleep(100);
|
||||
+#endif
|
||||
async_synchronize_full();
|
||||
|
||||
md_run_setup();
|
||||
|
||||
|
|
@ -0,0 +1,161 @@
|
|||
From 24559ecf972ff482222f6fc152f15468d2380e2d Mon Sep 17 00:00:00 2001
|
||||
From: Li, Shaohua <shaohua.li@intel.com>
|
||||
Date: Wed, 13 Aug 2008 17:26:01 +0800
|
||||
Subject: [PATCH] fastboot: remove duplicate unpack_to_rootfs()
|
||||
|
||||
we check if initrd is initramfs first and then do real unpack. The
|
||||
check isn't required, we can directly do unpack. If initrd isn't
|
||||
initramfs, we can remove garbage. In my laptop, this saves 0.1s boot
|
||||
time. This penalizes non-initramfs case, but now initramfs is mostly
|
||||
widely used.
|
||||
|
||||
Signed-off-by: Shaohua Li <shaohua.li@intel.com>
|
||||
Acked-by: Arjan van de Ven <arjan@infradead.org>
|
||||
Signed-off-by: Ingo Molnar <mingo@elte.hu>
|
||||
---
|
||||
init/initramfs.c | 71 ++++++++++++++++++++++++++++++++++++++++++-----------
|
||||
1 files changed, 56 insertions(+), 15 deletions(-)
|
||||
|
||||
diff --git a/init/initramfs.c b/init/initramfs.c
|
||||
index 4f5ba75..6b5c1dc 100644
|
||||
--- a/init/initramfs.c
|
||||
+++ b/init/initramfs.c
|
||||
@@ -5,6 +5,7 @@
|
||||
#include <linux/fcntl.h>
|
||||
#include <linux/delay.h>
|
||||
#include <linux/string.h>
|
||||
+#include <linux/dirent.h>
|
||||
#include <linux/syscalls.h>
|
||||
#include <linux/utime.h>
|
||||
|
||||
@@ -166,8 +167,6 @@ static __initdata char *victim;
|
||||
static __initdata unsigned count;
|
||||
static __initdata loff_t this_header, next_header;
|
||||
|
||||
-static __initdata int dry_run;
|
||||
-
|
||||
static inline void __init eat(unsigned n)
|
||||
{
|
||||
victim += n;
|
||||
@@ -229,10 +228,6 @@ static int __init do_header(void)
|
||||
parse_header(collected);
|
||||
next_header = this_header + N_ALIGN(name_len) + body_len;
|
||||
next_header = (next_header + 3) & ~3;
|
||||
- if (dry_run) {
|
||||
- read_into(name_buf, N_ALIGN(name_len), GotName);
|
||||
- return 0;
|
||||
- }
|
||||
state = SkipIt;
|
||||
if (name_len <= 0 || name_len > PATH_MAX)
|
||||
return 0;
|
||||
@@ -303,8 +298,6 @@ static int __init do_name(void)
|
||||
free_hash();
|
||||
return 0;
|
||||
}
|
||||
- if (dry_run)
|
||||
- return 0;
|
||||
clean_path(collected, mode);
|
||||
if (S_ISREG(mode)) {
|
||||
int ml = maybe_link();
|
||||
@@ -475,10 +468,9 @@ static void __init flush_window(void)
|
||||
outcnt = 0;
|
||||
}
|
||||
|
||||
-static char * __init unpack_to_rootfs(char *buf, unsigned len, int check_only)
|
||||
+static char * __init unpack_to_rootfs(char *buf, unsigned len)
|
||||
{
|
||||
int written;
|
||||
- dry_run = check_only;
|
||||
header_buf = kmalloc(110, GFP_KERNEL);
|
||||
symlink_buf = kmalloc(PATH_MAX + N_ALIGN(PATH_MAX) + 1, GFP_KERNEL);
|
||||
name_buf = kmalloc(N_ALIGN(PATH_MAX), GFP_KERNEL);
|
||||
@@ -573,10 +565,57 @@ skip:
|
||||
initrd_end = 0;
|
||||
}
|
||||
|
||||
+#define BUF_SIZE 1024
|
||||
+static void __init clean_rootfs(void)
|
||||
+{
|
||||
+ int fd;
|
||||
+ void *buf;
|
||||
+ struct linux_dirent64 *dirp;
|
||||
+ int count;
|
||||
+
|
||||
+ fd = sys_open("/", O_RDONLY, 0);
|
||||
+ WARN_ON(fd < 0);
|
||||
+ if (fd < 0)
|
||||
+ return;
|
||||
+ buf = kzalloc(BUF_SIZE, GFP_KERNEL);
|
||||
+ WARN_ON(!buf);
|
||||
+ if (!buf) {
|
||||
+ sys_close(fd);
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ dirp = buf;
|
||||
+ count = sys_getdents64(fd, dirp, BUF_SIZE);
|
||||
+ while (count > 0) {
|
||||
+ while (count > 0) {
|
||||
+ struct stat st;
|
||||
+ int ret;
|
||||
+
|
||||
+ ret = sys_newlstat(dirp->d_name, &st);
|
||||
+ WARN_ON_ONCE(ret);
|
||||
+ if (!ret) {
|
||||
+ if (S_ISDIR(st.st_mode))
|
||||
+ sys_rmdir(dirp->d_name);
|
||||
+ else
|
||||
+ sys_unlink(dirp->d_name);
|
||||
+ }
|
||||
+
|
||||
+ count -= dirp->d_reclen;
|
||||
+ dirp = (void *)dirp + dirp->d_reclen;
|
||||
+ }
|
||||
+ dirp = buf;
|
||||
+ memset(buf, 0, BUF_SIZE);
|
||||
+ count = sys_getdents64(fd, dirp, BUF_SIZE);
|
||||
+ }
|
||||
+
|
||||
+ sys_close(fd);
|
||||
+ kfree(buf);
|
||||
+}
|
||||
+
|
||||
static int __init populate_rootfs(void)
|
||||
{
|
||||
char *err = unpack_to_rootfs(__initramfs_start,
|
||||
- __initramfs_end - __initramfs_start, 0);
|
||||
+ __initramfs_end - __initramfs_start);
|
||||
if (err)
|
||||
panic(err);
|
||||
if (initrd_start) {
|
||||
@@ -584,13 +623,15 @@ static int __init populate_rootfs(void)
|
||||
int fd;
|
||||
printk(KERN_INFO "checking if image is initramfs...");
|
||||
err = unpack_to_rootfs((char *)initrd_start,
|
||||
- initrd_end - initrd_start, 1);
|
||||
+ initrd_end - initrd_start);
|
||||
if (!err) {
|
||||
printk(" it is\n");
|
||||
- unpack_to_rootfs((char *)initrd_start,
|
||||
- initrd_end - initrd_start, 0);
|
||||
free_initrd();
|
||||
return 0;
|
||||
+ } else {
|
||||
+ clean_rootfs();
|
||||
+ unpack_to_rootfs(__initramfs_start,
|
||||
+ __initramfs_end - __initramfs_start);
|
||||
}
|
||||
printk("it isn't (%s); looks like an initrd\n", err);
|
||||
fd = sys_open("/initrd.image", O_WRONLY|O_CREAT, 0700);
|
||||
@@ -603,7 +644,7 @@ static int __init populate_rootfs(void)
|
||||
#else
|
||||
printk(KERN_INFO "Unpacking initramfs...");
|
||||
err = unpack_to_rootfs((char *)initrd_start,
|
||||
- initrd_end - initrd_start, 0);
|
||||
+ initrd_end - initrd_start);
|
||||
if (err)
|
||||
panic(err);
|
||||
printk(" done\n");
|
||||
--
|
||||
1.5.5.1
|
||||
|
|
@ -0,0 +1,66 @@
|
|||
From be9df3282d24a7326bba2eea986c79d822f0e998 Mon Sep 17 00:00:00 2001
|
||||
From: Arjan van de Ven <arjan@linux.intel.com>
|
||||
Date: Sun, 21 Sep 2008 11:58:27 -0700
|
||||
Subject: [PATCH] superreadahead patch
|
||||
|
||||
---
|
||||
fs/ext3/ioctl.c | 3 +++
|
||||
fs/ext3/super.c | 1 +
|
||||
include/linux/ext3_fs.h | 1 +
|
||||
include/linux/fs.h | 2 ++
|
||||
4 files changed, 7 insertions(+), 0 deletions(-)
|
||||
|
||||
diff --git a/fs/ext3/ioctl.c b/fs/ext3/ioctl.c
|
||||
index b7394d0..c2e7f23 100644
|
||||
--- a/fs/ext3/ioctl.c
|
||||
+++ b/fs/ext3/ioctl.c
|
||||
@@ -290,6 +290,9 @@ group_add_out:
|
||||
mnt_drop_write(filp->f_path.mnt);
|
||||
return err;
|
||||
}
|
||||
+ case EXT3_IOC_INODE_JIFFIES: {
|
||||
+ return inode->created_when;
|
||||
+ }
|
||||
|
||||
|
||||
default:
|
||||
diff --git a/fs/ext3/super.c b/fs/ext3/super.c
|
||||
index f6c94f2..268dd1d 100644
|
||||
--- a/fs/ext3/super.c
|
||||
+++ b/fs/ext3/super.c
|
||||
@@ -461,6 +461,7 @@ static struct inode *ext3_alloc_inode(struct super_block *sb)
|
||||
#endif
|
||||
ei->i_block_alloc_info = NULL;
|
||||
ei->vfs_inode.i_version = 1;
|
||||
+ ei->vfs_inode.created_when = jiffies;
|
||||
return &ei->vfs_inode;
|
||||
}
|
||||
|
||||
diff --git a/include/linux/ext3_fs.h b/include/linux/ext3_fs.h
|
||||
index d14f029..fff5510 100644
|
||||
--- a/include/linux/ext3_fs.h
|
||||
+++ b/include/linux/ext3_fs.h
|
||||
@@ -225,6 +225,7 @@ struct ext3_new_group_data {
|
||||
#endif
|
||||
#define EXT3_IOC_GETRSVSZ _IOR('f', 5, long)
|
||||
#define EXT3_IOC_SETRSVSZ _IOW('f', 6, long)
|
||||
+#define EXT3_IOC_INODE_JIFFIES _IOR('f', 19, long)
|
||||
|
||||
/*
|
||||
* ioctl commands in 32 bit emulation
|
||||
diff --git a/include/linux/fs.h b/include/linux/fs.h
|
||||
index 4a853ef..c346136 100644
|
||||
--- a/include/linux/fs.h
|
||||
+++ b/include/linux/fs.h
|
||||
@@ -685,6 +685,8 @@ struct inode {
|
||||
void *i_security;
|
||||
#endif
|
||||
void *i_private; /* fs or device private pointer */
|
||||
+
|
||||
+ unsigned long created_when; /* jiffies of creation time */
|
||||
};
|
||||
|
||||
/*
|
||||
--
|
||||
1.5.5.1
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
--- a/kernel/async.c 2009-01-19 18:30:29.000000000 -0800
|
||||
+++ b/kernel/async.c 2009-01-19 18:31:12.000000000 -0800
|
||||
@@ -65,7 +65,7 @@ static LIST_HEAD(async_pending);
|
||||
static LIST_HEAD(async_running);
|
||||
static DEFINE_SPINLOCK(async_lock);
|
||||
|
||||
-static int async_enabled = 0;
|
||||
+static int async_enabled = 1;
|
||||
|
||||
struct async_entry {
|
||||
struct list_head list;
|
||||
|
|
@ -0,0 +1,55 @@
|
|||
From ee977685870767221dc763338bb6ed5fd83f65be Mon Sep 17 00:00:00 2001
|
||||
From: Yong Wang <yong.y.wang@intel.com>
|
||||
Date: Tue, 6 Jan 2009 15:13:41 +0800
|
||||
Subject: [PATCH] Revert "drm/i915: GEM on PAE has problems - disable it for now."
|
||||
|
||||
This reverts commit ac5c4e76180a74c7f922f6fa71ace0cef45fa433.
|
||||
---
|
||||
drivers/gpu/drm/i915/i915_dma.c | 10 +---------
|
||||
drivers/gpu/drm/i915/i915_drv.h | 2 --
|
||||
2 files changed, 1 insertions(+), 11 deletions(-)
|
||||
|
||||
diff --git a/drivers/gpu/drm/i915/i915_dma.c b/drivers/gpu/drm/i915/i915_dma.c
|
||||
index afa8a12..553dd4b 100644
|
||||
--- a/drivers/gpu/drm/i915/i915_dma.c
|
||||
+++ b/drivers/gpu/drm/i915/i915_dma.c
|
||||
@@ -717,7 +717,7 @@ static int i915_getparam(struct drm_device *dev, void *data,
|
||||
value = dev->pci_device;
|
||||
break;
|
||||
case I915_PARAM_HAS_GEM:
|
||||
- value = dev_priv->has_gem;
|
||||
+ value = 1;
|
||||
break;
|
||||
default:
|
||||
DRM_ERROR("Unknown parameter %d\n", param->param);
|
||||
@@ -830,14 +830,6 @@ int i915_driver_load(struct drm_device *dev, unsigned long flags)
|
||||
|
||||
dev_priv->regs = ioremap(base, size);
|
||||
|
||||
-#ifdef CONFIG_HIGHMEM64G
|
||||
- /* don't enable GEM on PAE - needs agp + set_memory_* interface fixes */
|
||||
- dev_priv->has_gem = 0;
|
||||
-#else
|
||||
- /* enable GEM by default */
|
||||
- dev_priv->has_gem = 1;
|
||||
-#endif
|
||||
-
|
||||
i915_gem_load(dev);
|
||||
|
||||
/* Init HWS */
|
||||
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
|
||||
index b3cc473..adc972c 100644
|
||||
--- a/drivers/gpu/drm/i915/i915_drv.h
|
||||
+++ b/drivers/gpu/drm/i915/i915_drv.h
|
||||
@@ -106,8 +106,6 @@ struct intel_opregion {
|
||||
typedef struct drm_i915_private {
|
||||
struct drm_device *dev;
|
||||
|
||||
- int has_gem;
|
||||
-
|
||||
void __iomem *regs;
|
||||
drm_local_map_t *sarea;
|
||||
|
||||
--
|
||||
1.5.5.1
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
From: Arjan van de Ven <arjan@linux.intel.com>
|
||||
Date: Fri, 23 Jan 2009
|
||||
|
||||
Small fix changing error msg to info msg in acer wmi driver
|
||||
---
|
||||
diff -durp a/drivers/platform/x86/acer-wmi.c b/drivers/platform/x86/acer-wmi.c
|
||||
--- a/drivers/platform/x86/acer-wmi.c 2009-01-23 13:58:36.000000000 -0800
|
||||
+++ b/drivers/platform/x86/acer-wmi.c 2009-01-23 14:00:12.000000000 -0800
|
||||
@@ -1290,7 +1290,7 @@ static int __init acer_wmi_init(void)
|
||||
AMW0_find_mailled();
|
||||
|
||||
if (!interface) {
|
||||
- printk(ACER_ERR "No or unsupported WMI interface, unable to "
|
||||
+ printk(ACER_INFO "No or unsupported WMI interface, unable to "
|
||||
"load\n");
|
||||
return -ENODEV;
|
||||
}
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,24 @@
|
|||
require linux-moblin.inc
|
||||
|
||||
PR = "r2"
|
||||
PE = "1"
|
||||
|
||||
DEFAULT_PREFERENCE = "-1"
|
||||
DEFAULT_PREFERENCE_netbook = "1"
|
||||
DEFAULT_PREFERENCE_menlow = "1"
|
||||
|
||||
SRC_URI = "${KERNELORG_MIRROR}pub/linux/kernel/v2.6/linux-2.6.28.tar.bz2 \
|
||||
${KERNELORG_MIRROR}pub/linux/kernel/v2.6/testing/patch-2.6.29-rc2.bz2;patch=1 \
|
||||
file://0001-fastboot-retry-mounting-the-root-fs-if-we-can-t-fin.patch;patch=1 \
|
||||
file://0002-fastboot-remove-wait-for-all-devices-before-mounti.patch;patch=1 \
|
||||
file://0003-fastboot-remove-duplicate-unpack_to_rootfs.patch;patch=1 \
|
||||
file://0004-superreadahead-patch.patch;patch=1 \
|
||||
file://0005-fastboot-async-enable-default.patch;patch=1 \
|
||||
file://0006-Revert-drm-i915-GEM-on-PAE-has-problems-disable.patch;patch=1 \
|
||||
file://0007-acer-error-msg.patch;patch=1 \
|
||||
file://defconfig-menlow \
|
||||
file://defconfig-netbook"
|
||||
|
||||
SRC_URI_append_menlow = " file://psb-driver.patch;patch=1"
|
||||
|
||||
S = "${WORKDIR}/linux-2.6.28"
|
Loading…
Reference in New Issue