mirror of
https://git.yoctoproject.org/poky
synced 2026-04-07 05:02:22 +02:00
linux-moblin: Add 2.6.28+2.6.29-rc2 version
This commit is contained in:
@@ -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
24
meta-moblin/packages/linux/linux-moblin_2.6.28+2.6.29-rc2.bb
Normal file
24
meta-moblin/packages/linux/linux-moblin_2.6.28+2.6.29-rc2.bb
Normal file
@@ -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"
|
||||
Reference in New Issue
Block a user