rpms/kernel/devel patch-2.6.28-rc4.bz2.sign, NONE, 1.1 .cvsignore, 1.952, 1.953 git-cpufreq.patch, 1.3, 1.4 kernel.spec, 1.1124, 1.1125 linux-2.6-compile-fixes.patch, 1.178, 1.179 linux-2.6-firewire-git-pending.patch, 1.31, 1.32 linux-2.6-upstream-reverts.patch, 1.4, 1.5 sources, 1.914, 1.915 upstream, 1.826, 1.827 patch-2.6.27.4.bz2.sign, 1.1, NONE

Kyle McMartin kyle at fedoraproject.org
Wed Nov 12 16:28:53 UTC 2008


Author: kyle

Update of /cvs/pkgs/rpms/kernel/devel
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv27122

Modified Files:
	.cvsignore git-cpufreq.patch kernel.spec 
	linux-2.6-compile-fixes.patch 
	linux-2.6-firewire-git-pending.patch 
	linux-2.6-upstream-reverts.patch sources upstream 
Added Files:
	patch-2.6.28-rc4.bz2.sign 
Removed Files:
	patch-2.6.27.4.bz2.sign 
Log Message:
* Wed Nov 12 2008 Kyle McMartin <kyle at redhat.com>
- Linux 2.6.28-rc4



--- NEW FILE patch-2.6.28-rc4.bz2.sign ---
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (GNU/Linux)
Comment: See http://www.kernel.org/signature.html for info

iD8DBQBJF4iFyGugalF9Dw4RAlBpAKCCfRgWkRx0tGEi+UPPkSwujljiRwCffv/a
7BXxjw5Vh1mjpgJOEckdb94=
=Bmlg
-----END PGP SIGNATURE-----


Index: .cvsignore
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/.cvsignore,v
retrieving revision 1.952
retrieving revision 1.953
diff -u -r1.952 -r1.953
--- .cvsignore	26 Oct 2008 11:45:01 -0000	1.952
+++ .cvsignore	12 Nov 2008 16:28:22 -0000	1.953
@@ -5,3 +5,4 @@
 kernel-2.6.27
 linux-2.6.27.tar.bz2
 patch-2.6.27.4.bz2
+patch-2.6.28-rc4.bz2

git-cpufreq.patch:

Index: git-cpufreq.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/git-cpufreq.patch,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- git-cpufreq.patch	6 Oct 2008 19:55:32 -0000	1.3
+++ git-cpufreq.patch	12 Nov 2008 16:28:22 -0000	1.4
@@ -1,830 +0,0 @@
-diff --git a/arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c b/arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c
-index dd097b8..c24c4a4 100644
---- a/arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c
-+++ b/arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c
-@@ -256,7 +256,8 @@ static u32 get_cur_val(const cpumask_t *mask)
-  * Only IA32_APERF/IA32_MPERF ratio is architecturally defined and
-  * no meaning should be associated with absolute values of these MSRs.
-  */
--static unsigned int get_measured_perf(unsigned int cpu)
-+static unsigned int get_measured_perf(struct cpufreq_policy *policy,
-+				      unsigned int cpu)
- {
- 	union {
- 		struct {
-@@ -326,7 +327,7 @@ static unsigned int get_measured_perf(unsigned int cpu)
- 
- #endif
- 
--	retval = per_cpu(drv_data, cpu)->max_freq * perf_percent / 100;
-+	retval = per_cpu(drv_data, policy->cpu)->max_freq * perf_percent / 100;
- 
- 	put_cpu();
- 	set_cpus_allowed_ptr(current, &saved_mask);
-@@ -785,7 +786,11 @@ static int __init acpi_cpufreq_init(void)
- 	if (ret)
- 		return ret;
- 
--	return cpufreq_register_driver(&acpi_cpufreq_driver);
-+	ret = cpufreq_register_driver(&acpi_cpufreq_driver);
-+	if (ret)
-+		free_percpu(acpi_perf_data);
-+
-+	return ret;
- }
- 
- static void __exit acpi_cpufreq_exit(void)
-@@ -795,8 +800,6 @@ static void __exit acpi_cpufreq_exit(void)
- 	cpufreq_unregister_driver(&acpi_cpufreq_driver);
- 
- 	free_percpu(acpi_perf_data);
--
--	return;
- }
- 
- module_param(acpi_pstate_strict, uint, 0644);
-diff --git a/arch/x86/kernel/cpu/cpufreq/elanfreq.c b/arch/x86/kernel/cpu/cpufreq/elanfreq.c
-index e4a4bf8..fe613c9 100644
---- a/arch/x86/kernel/cpu/cpufreq/elanfreq.c
-+++ b/arch/x86/kernel/cpu/cpufreq/elanfreq.c
-@@ -25,8 +25,8 @@
- #include <linux/cpufreq.h>
- 
- #include <asm/msr.h>
--#include <asm/timex.h>
--#include <asm/io.h>
-+#include <linux/timex.h>
-+#include <linux/io.h>
- 
- #define REG_CSCIR 0x22		/* Chip Setup and Control Index Register    */
- #define REG_CSCDR 0x23		/* Chip Setup and Control Data  Register    */
-@@ -82,7 +82,7 @@ static unsigned int elanfreq_get_cpu_frequency(unsigned int cpu)
- 	u8 clockspeed_reg;    /* Clock Speed Register */
- 
- 	local_irq_disable();
--	outb_p(0x80,REG_CSCIR);
-+	outb_p(0x80, REG_CSCIR);
- 	clockspeed_reg = inb_p(REG_CSCDR);
- 	local_irq_enable();
- 
-@@ -98,10 +98,10 @@ static unsigned int elanfreq_get_cpu_frequency(unsigned int cpu)
- 	}
- 
- 	/* 33 MHz is not 32 MHz... */
--	if ((clockspeed_reg & 0xE0)==0xA0)
-+	if ((clockspeed_reg & 0xE0) == 0xA0)
- 		return 33000;
- 
--	return ((1<<((clockspeed_reg & 0xE0) >> 5)) * 1000);
-+	return (1<<((clockspeed_reg & 0xE0) >> 5)) * 1000;
- }
- 
- 
-@@ -117,7 +117,7 @@ static unsigned int elanfreq_get_cpu_frequency(unsigned int cpu)
-  *	There is no return value.
-  */
- 
--static void elanfreq_set_cpu_state (unsigned int state)
-+static void elanfreq_set_cpu_state(unsigned int state)
- {
- 	struct cpufreq_freqs    freqs;
- 
-@@ -144,20 +144,20 @@ static void elanfreq_set_cpu_state (unsigned int state)
- 	 */
- 
- 	local_irq_disable();
--	outb_p(0x40,REG_CSCIR);		/* Disable hyperspeed mode */
--	outb_p(0x00,REG_CSCDR);
-+	outb_p(0x40, REG_CSCIR);		/* Disable hyperspeed mode */
-+	outb_p(0x00, REG_CSCDR);
- 	local_irq_enable();		/* wait till internal pipelines and */
- 	udelay(1000);			/* buffers have cleaned up          */
- 
- 	local_irq_disable();
- 
- 	/* now, set the CPU clock speed register (0x80) */
--	outb_p(0x80,REG_CSCIR);
--	outb_p(elan_multiplier[state].val80h,REG_CSCDR);
-+	outb_p(0x80, REG_CSCIR);
-+	outb_p(elan_multiplier[state].val80h, REG_CSCDR);
- 
- 	/* now, the hyperspeed bit in PMU Force Mode Register (0x40) */
--	outb_p(0x40,REG_CSCIR);
--	outb_p(elan_multiplier[state].val40h,REG_CSCDR);
-+	outb_p(0x40, REG_CSCIR);
-+	outb_p(elan_multiplier[state].val40h, REG_CSCDR);
- 	udelay(10000);
- 	local_irq_enable();
- 
-@@ -173,12 +173,12 @@ static void elanfreq_set_cpu_state (unsigned int state)
-  *	for the hardware supported by the driver.
-  */
- 
--static int elanfreq_verify (struct cpufreq_policy *policy)
-+static int elanfreq_verify(struct cpufreq_policy *policy)
- {
- 	return cpufreq_frequency_table_verify(policy, &elanfreq_table[0]);
- }
- 
--static int elanfreq_target (struct cpufreq_policy *policy,
-+static int elanfreq_target(struct cpufreq_policy *policy,
- 			    unsigned int target_freq,
- 			    unsigned int relation)
- {
-@@ -205,7 +205,7 @@ static int elanfreq_cpu_init(struct cpufreq_policy *policy)
- 
- 	/* capability check */
- 	if ((c->x86_vendor != X86_VENDOR_AMD) ||
--	    (c->x86 != 4) || (c->x86_model!=10))
-+	    (c->x86 != 4) || (c->x86_model != 10))
- 		return -ENODEV;
- 
- 	/* max freq */
-@@ -213,7 +213,7 @@ static int elanfreq_cpu_init(struct cpufreq_policy *policy)
- 		max_freq = elanfreq_get_cpu_frequency(0);
- 
- 	/* table init */
--	for (i=0; (elanfreq_table[i].frequency != CPUFREQ_TABLE_END); i++) {
-+	for (i = 0; (elanfreq_table[i].frequency != CPUFREQ_TABLE_END); i++) {
- 		if (elanfreq_table[i].frequency > max_freq)
- 			elanfreq_table[i].frequency = CPUFREQ_ENTRY_INVALID;
- 	}
-@@ -224,7 +224,7 @@ static int elanfreq_cpu_init(struct cpufreq_policy *policy)
- 
- 	result = cpufreq_frequency_table_cpuinfo(policy, elanfreq_table);
- 	if (result)
--		return (result);
-+		return result;
- 
- 	cpufreq_frequency_table_get_attr(elanfreq_table, policy->cpu);
- 	return 0;
-@@ -260,7 +260,7 @@ __setup("elanfreq=", elanfreq_setup);
- #endif
- 
- 
--static struct freq_attr* elanfreq_attr[] = {
-+static struct freq_attr *elanfreq_attr[] = {
- 	&cpufreq_freq_attr_scaling_available_freqs,
- 	NULL,
- };
-@@ -284,9 +284,9 @@ static int __init elanfreq_init(void)
- 
- 	/* Test if we have the right hardware */
- 	if ((c->x86_vendor != X86_VENDOR_AMD) ||
--		(c->x86 != 4) || (c->x86_model!=10)) {
-+		(c->x86 != 4) || (c->x86_model != 10)) {
- 		printk(KERN_INFO "elanfreq: error: no Elan processor found!\n");
--                return -ENODEV;
-+		return -ENODEV;
- 	}
- 	return cpufreq_register_driver(&elanfreq_driver);
- }
-@@ -298,7 +298,7 @@ static void __exit elanfreq_exit(void)
- }
- 
- 
--module_param (max_freq, int, 0444);
-+module_param(max_freq, int, 0444);
- 
- MODULE_LICENSE("GPL");
- MODULE_AUTHOR("Robert Schwebel <r.schwebel at pengutronix.de>, Sven Geggus <sven at geggus.net>");
-diff --git a/arch/x86/kernel/cpu/cpufreq/powernow-k6.c b/arch/x86/kernel/cpu/cpufreq/powernow-k6.c
-index eb9b62b..b5ced80 100644
---- a/arch/x86/kernel/cpu/cpufreq/powernow-k6.c
-+++ b/arch/x86/kernel/cpu/cpufreq/powernow-k6.c
-@@ -15,12 +15,11 @@
- #include <linux/slab.h>
- 
- #include <asm/msr.h>
--#include <asm/timex.h>
--#include <asm/io.h>
-+#include <linux/timex.h>
-+#include <linux/io.h>
- 
--
--#define POWERNOW_IOPORT 0xfff0         /* it doesn't matter where, as long
--					  as it is unused */
-+#define POWERNOW_IOPORT 0xfff0          /* it doesn't matter where, as long
-+					   as it is unused */
- 
- static unsigned int                     busfreq;   /* FSB, in 10 kHz */
- static unsigned int                     max_multiplier;
-@@ -53,7 +52,7 @@ static int powernow_k6_get_cpu_multiplier(void)
- 
- 	msrval = POWERNOW_IOPORT + 0x1;
- 	wrmsr(MSR_K6_EPMR, msrval, 0); /* enable the PowerNow port */
--	invalue=inl(POWERNOW_IOPORT + 0x8);
-+	invalue = inl(POWERNOW_IOPORT + 0x8);
- 	msrval = POWERNOW_IOPORT + 0x0;
- 	wrmsr(MSR_K6_EPMR, msrval, 0); /* disable it again */
- 
-@@ -67,9 +66,9 @@ static int powernow_k6_get_cpu_multiplier(void)
-  *
-  *   Tries to change the PowerNow! multiplier
-  */
--static void powernow_k6_set_state (unsigned int best_i)
-+static void powernow_k6_set_state(unsigned int best_i)
- {
--	unsigned long           outvalue=0, invalue=0;
-+	unsigned long           outvalue = 0, invalue = 0;
- 	unsigned long           msrval;
- 	struct cpufreq_freqs    freqs;
- 
-@@ -90,10 +89,10 @@ static void powernow_k6_set_state (unsigned int best_i)
- 
- 	msrval = POWERNOW_IOPORT + 0x1;
- 	wrmsr(MSR_K6_EPMR, msrval, 0); /* enable the PowerNow port */
--	invalue=inl(POWERNOW_IOPORT + 0x8);
-+	invalue = inl(POWERNOW_IOPORT + 0x8);
- 	invalue = invalue & 0xf;
- 	outvalue = outvalue | invalue;
--	outl(outvalue ,(POWERNOW_IOPORT + 0x8));
-+	outl(outvalue , (POWERNOW_IOPORT + 0x8));
- 	msrval = POWERNOW_IOPORT + 0x0;
- 	wrmsr(MSR_K6_EPMR, msrval, 0); /* disable it again */
- 
-@@ -124,7 +123,7 @@ static int powernow_k6_verify(struct cpufreq_policy *policy)
-  *
-  * sets a new CPUFreq policy
-  */
--static int powernow_k6_target (struct cpufreq_policy *policy,
-+static int powernow_k6_target(struct cpufreq_policy *policy,
- 			       unsigned int target_freq,
- 			       unsigned int relation)
- {
-@@ -152,7 +151,7 @@ static int powernow_k6_cpu_init(struct cpufreq_policy *policy)
- 	busfreq = cpu_khz / max_multiplier;
- 
- 	/* table init */
--	for (i=0; (clock_ratio[i].frequency != CPUFREQ_TABLE_END); i++) {
-+	for (i = 0; (clock_ratio[i].frequency != CPUFREQ_TABLE_END); i++) {
- 		if (clock_ratio[i].index > max_multiplier)
- 			clock_ratio[i].frequency = CPUFREQ_ENTRY_INVALID;
- 		else
-@@ -165,7 +164,7 @@ static int powernow_k6_cpu_init(struct cpufreq_policy *policy)
- 
- 	result = cpufreq_frequency_table_cpuinfo(policy, clock_ratio);
- 	if (result)
--		return (result);
-+		return result;
- 
- 	cpufreq_frequency_table_get_attr(clock_ratio, policy->cpu);
- 
-@@ -176,8 +175,8 @@ static int powernow_k6_cpu_init(struct cpufreq_policy *policy)
- static int powernow_k6_cpu_exit(struct cpufreq_policy *policy)
- {
- 	unsigned int i;
--	for (i=0; i<8; i++) {
--		if (i==max_multiplier)
-+	for (i = 0; i < 8; i++) {
-+		if (i == max_multiplier)
- 			powernow_k6_set_state(i);
- 	}
- 	cpufreq_frequency_table_put_attr(policy->cpu);
-@@ -189,7 +188,7 @@ static unsigned int powernow_k6_get(unsigned int cpu)
- 	return busfreq * powernow_k6_get_cpu_multiplier();
- }
- 
--static struct freq_attr* powernow_k6_attr[] = {
-+static struct freq_attr *powernow_k6_attr[] = {
- 	&cpufreq_freq_attr_scaling_available_freqs,
- 	NULL,
- };
-@@ -227,7 +226,7 @@ static int __init powernow_k6_init(void)
- 	}
- 
- 	if (cpufreq_register_driver(&powernow_k6_driver)) {
--		release_region (POWERNOW_IOPORT, 16);
-+		release_region(POWERNOW_IOPORT, 16);
- 		return -EINVAL;
- 	}
- 
-@@ -243,13 +242,13 @@ static int __init powernow_k6_init(void)
- static void __exit powernow_k6_exit(void)
- {
- 	cpufreq_unregister_driver(&powernow_k6_driver);
--	release_region (POWERNOW_IOPORT, 16);
-+	release_region(POWERNOW_IOPORT, 16);
- }
- 
- 
--MODULE_AUTHOR ("Arjan van de Ven <arjanv at redhat.com>, Dave Jones <davej at codemonkey.org.uk>, Dominik Brodowski <linux at brodo.de>");
--MODULE_DESCRIPTION ("PowerNow! driver for AMD K6-2+ / K6-3+ processors.");
--MODULE_LICENSE ("GPL");
-+MODULE_AUTHOR("Arjan van de Ven <arjanv at redhat.com>, Dave Jones <davej at codemonkey.org.uk>, Dominik Brodowski <linux at brodo.de>");
-+MODULE_DESCRIPTION("PowerNow! driver for AMD K6-2+ / K6-3+ processors.");
-+MODULE_LICENSE("GPL");
- 
- module_init(powernow_k6_init);
- module_exit(powernow_k6_exit);
-diff --git a/drivers/cpufreq/cpufreq.c b/drivers/cpufreq/cpufreq.c
-index 8a67f16..31d6f53 100644
---- a/drivers/cpufreq/cpufreq.c
-+++ b/drivers/cpufreq/cpufreq.c
-@@ -1467,25 +1467,27 @@ int cpufreq_driver_target(struct cpufreq_policy *policy,
- 			  unsigned int target_freq,
- 			  unsigned int relation)
- {
--	int ret;
-+	int ret = -EINVAL;
- 
- 	policy = cpufreq_cpu_get(policy->cpu);
- 	if (!policy)
--		return -EINVAL;
-+		goto no_policy;
- 
- 	if (unlikely(lock_policy_rwsem_write(policy->cpu)))
--		return -EINVAL;
-+		goto fail;
- 
- 	ret = __cpufreq_driver_target(policy, target_freq, relation);
- 
- 	unlock_policy_rwsem_write(policy->cpu);
- 
-+fail:
- 	cpufreq_cpu_put(policy);
-+no_policy:
- 	return ret;
- }
- EXPORT_SYMBOL_GPL(cpufreq_driver_target);
- 
--int __cpufreq_driver_getavg(struct cpufreq_policy *policy)
-+int __cpufreq_driver_getavg(struct cpufreq_policy *policy, unsigned int cpu)
- {
- 	int ret = 0;
- 
-@@ -1493,8 +1495,8 @@ int __cpufreq_driver_getavg(struct cpufreq_policy *policy)
- 	if (!policy)
- 		return -EINVAL;
- 
--	if (cpu_online(policy->cpu) && cpufreq_driver->getavg)
--		ret = cpufreq_driver->getavg(policy->cpu);
-+	if (cpu_online(cpu) && cpufreq_driver->getavg)
-+		ret = cpufreq_driver->getavg(policy, cpu);
- 
- 	cpufreq_cpu_put(policy);
- 	return ret;
-@@ -1717,13 +1719,17 @@ int cpufreq_update_policy(unsigned int cpu)
- {
- 	struct cpufreq_policy *data = cpufreq_cpu_get(cpu);
- 	struct cpufreq_policy policy;
--	int ret = 0;
-+	int ret;
- 
--	if (!data)
--		return -ENODEV;
-+	if (!data) {
-+		ret = -ENODEV;
-+		goto no_policy;
-+	}
- 
--	if (unlikely(lock_policy_rwsem_write(cpu)))
--		return -EINVAL;
-+	if (unlikely(lock_policy_rwsem_write(cpu))) {
-+		ret = -EINVAL;
-+		goto fail;
-+	}
- 
- 	dprintk("updating policy for CPU %u\n", cpu);
- 	memcpy(&policy, data, sizeof(struct cpufreq_policy));
-@@ -1750,7 +1756,9 @@ int cpufreq_update_policy(unsigned int cpu)
- 
- 	unlock_policy_rwsem_write(cpu);
- 
-+fail:
- 	cpufreq_cpu_put(data);
-+no_policy:
- 	return ret;
- }
- EXPORT_SYMBOL(cpufreq_update_policy);
-diff --git a/drivers/cpufreq/cpufreq_conservative.c b/drivers/cpufreq/cpufreq_conservative.c
-index ac0bbf2..e265783 100644
---- a/drivers/cpufreq/cpufreq_conservative.c
-+++ b/drivers/cpufreq/cpufreq_conservative.c
-@@ -460,6 +460,7 @@ static void do_dbs_timer(struct work_struct *work)
- 
- static inline void dbs_timer_init(void)
- {
-+	init_timer_deferrable(&dbs_work.timer);
- 	schedule_delayed_work(&dbs_work,
- 			usecs_to_jiffies(dbs_tuners_ins.sampling_rate));
- 	return;
-@@ -575,13 +576,15 @@ static int cpufreq_governor_dbs(struct cpufreq_policy *policy,
- 	return 0;
- }
- 
-+#ifndef CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE
-+static
-+#endif
- struct cpufreq_governor cpufreq_gov_conservative = {
- 	.name			= "conservative",
- 	.governor		= cpufreq_governor_dbs,
- 	.max_transition_latency	= TRANSITION_LATENCY_LIMIT,
- 	.owner			= THIS_MODULE,
- };
--EXPORT_SYMBOL(cpufreq_gov_conservative);
- 
- static int __init cpufreq_gov_dbs_init(void)
- {
-diff --git a/drivers/cpufreq/cpufreq_ondemand.c b/drivers/cpufreq/cpufreq_ondemand.c
-index 33855cb..2ab3c12 100644
---- a/drivers/cpufreq/cpufreq_ondemand.c
-+++ b/drivers/cpufreq/cpufreq_ondemand.c
-@@ -18,13 +18,19 @@
- #include <linux/jiffies.h>
- #include <linux/kernel_stat.h>
- #include <linux/mutex.h>
-+#include <linux/hrtimer.h>
-+#include <linux/tick.h>
-+#include <linux/ktime.h>
- 
- /*
-  * dbs is used in this file as a shortform for demandbased switching
-  * It helps to keep variable names smaller, simpler
-  */
- 
-+#define DEF_FREQUENCY_DOWN_DIFFERENTIAL		(10)
- #define DEF_FREQUENCY_UP_THRESHOLD		(80)
-+#define MICRO_FREQUENCY_DOWN_DIFFERENTIAL	(3)
-+#define MICRO_FREQUENCY_UP_THRESHOLD		(95)
- #define MIN_FREQUENCY_UP_THRESHOLD		(11)
- #define MAX_FREQUENCY_UP_THRESHOLD		(100)
- 
-@@ -57,6 +63,7 @@ enum {DBS_NORMAL_SAMPLE, DBS_SUB_SAMPLE};
- struct cpu_dbs_info_s {
- 	cputime64_t prev_cpu_idle;
- 	cputime64_t prev_cpu_wall;
-+	cputime64_t prev_cpu_nice;
- 	struct cpufreq_policy *cur_policy;
-  	struct delayed_work work;
- 	struct cpufreq_frequency_table *freq_table;
-@@ -86,21 +93,24 @@ static struct workqueue_struct	*kondemand_wq;
- static struct dbs_tuners {
- 	unsigned int sampling_rate;
- 	unsigned int up_threshold;
-+	unsigned int down_differential;
- 	unsigned int ignore_nice;
- 	unsigned int powersave_bias;
- } dbs_tuners_ins = {
- 	.up_threshold = DEF_FREQUENCY_UP_THRESHOLD,
-+	.down_differential = DEF_FREQUENCY_DOWN_DIFFERENTIAL,
- 	.ignore_nice = 0,
- 	.powersave_bias = 0,
- };
- 
--static inline cputime64_t get_cpu_idle_time(unsigned int cpu)
-+static inline cputime64_t get_cpu_idle_time_jiffy(unsigned int cpu,
-+							cputime64_t *wall)
- {
- 	cputime64_t idle_time;
--	cputime64_t cur_jiffies;
-+	cputime64_t cur_wall_time;
- 	cputime64_t busy_time;
- 
--	cur_jiffies = jiffies64_to_cputime64(get_jiffies_64());
-+	cur_wall_time = jiffies64_to_cputime64(get_jiffies_64());
- 	busy_time = cputime64_add(kstat_cpu(cpu).cpustat.user,
- 			kstat_cpu(cpu).cpustat.system);
- 
-@@ -113,7 +123,37 @@ static inline cputime64_t get_cpu_idle_time(unsigned int cpu)
- 				kstat_cpu(cpu).cpustat.nice);
- 	}
- 
--	idle_time = cputime64_sub(cur_jiffies, busy_time);
-+	idle_time = cputime64_sub(cur_wall_time, busy_time);
-+	if (wall)
-+		*wall = cur_wall_time;
-+
-+	return idle_time;
-+}
-+
-+static inline cputime64_t get_cpu_idle_time(unsigned int cpu, cputime64_t *wall)
-+{
-+	u64 idle_time = get_cpu_idle_time_us(cpu, wall);
-+
-+	if (idle_time == -1ULL)
-+		return get_cpu_idle_time_jiffy(cpu, wall);
-+
-+	if (dbs_tuners_ins.ignore_nice) {
-+		cputime64_t cur_nice;
-+		unsigned long cur_nice_jiffies;
-+		struct cpu_dbs_info_s *dbs_info;
-+
-+		dbs_info = &per_cpu(cpu_dbs_info, cpu);
-+		cur_nice = cputime64_sub(kstat_cpu(cpu).cpustat.nice,
-+					 dbs_info->prev_cpu_nice);
-+		/*
-+		 * Assumption: nice time between sampling periods will be
-+		 * less than 2^32 jiffies for 32 bit sys
-+		 */
-+		cur_nice_jiffies = (unsigned long)
-+					cputime64_to_jiffies64(cur_nice);
-+		dbs_info->prev_cpu_nice = kstat_cpu(cpu).cpustat.nice;
-+		return idle_time + jiffies_to_usecs(cur_nice_jiffies);
-+	}
- 	return idle_time;
- }
- 
-@@ -277,8 +317,8 @@ static ssize_t store_ignore_nice_load(struct cpufreq_policy *policy,
- 	for_each_online_cpu(j) {
- 		struct cpu_dbs_info_s *dbs_info;
- 		dbs_info = &per_cpu(cpu_dbs_info, j);
--		dbs_info->prev_cpu_idle = get_cpu_idle_time(j);
--		dbs_info->prev_cpu_wall = get_jiffies_64();
-+		dbs_info->prev_cpu_idle = get_cpu_idle_time(j,
-+						&dbs_info->prev_cpu_wall);
- 	}
- 	mutex_unlock(&dbs_mutex);
- 
-@@ -334,9 +374,7 @@ static struct attribute_group dbs_attr_group = {
- 
- static void dbs_check_cpu(struct cpu_dbs_info_s *this_dbs_info)
- {
--	unsigned int idle_ticks, total_ticks;
--	unsigned int load = 0;
--	cputime64_t cur_jiffies;
-+	unsigned int max_load_freq;
- 
- 	struct cpufreq_policy *policy;
- 	unsigned int j;
-@@ -346,13 +384,7 @@ static void dbs_check_cpu(struct cpu_dbs_info_s *this_dbs_info)
- 
- 	this_dbs_info->freq_lo = 0;
- 	policy = this_dbs_info->cur_policy;
--	cur_jiffies = jiffies64_to_cputime64(get_jiffies_64());
--	total_ticks = (unsigned int) cputime64_sub(cur_jiffies,
--			this_dbs_info->prev_cpu_wall);
--	this_dbs_info->prev_cpu_wall = get_jiffies_64();
- 
--	if (!total_ticks)
--		return;
- 	/*
- 	 * Every sampling_rate, we check, if current idle time is less
- 	 * than 20% (default), then we try to increase frequency
-@@ -365,27 +397,44 @@ static void dbs_check_cpu(struct cpu_dbs_info_s *this_dbs_info)
- 	 * 5% (default) of current frequency
- 	 */
- 
--	/* Get Idle Time */
--	idle_ticks = UINT_MAX;
-+	/* Get Absolute Load - in terms of freq */
-+	max_load_freq = 0;
-+
- 	for_each_cpu_mask_nr(j, policy->cpus) {
--		cputime64_t total_idle_ticks;
--		unsigned int tmp_idle_ticks;
- 		struct cpu_dbs_info_s *j_dbs_info;
-+		cputime64_t cur_wall_time, cur_idle_time;
-+		unsigned int idle_time, wall_time;
-+		unsigned int load, load_freq;
-+		int freq_avg;
- 
- 		j_dbs_info = &per_cpu(cpu_dbs_info, j);
--		total_idle_ticks = get_cpu_idle_time(j);
--		tmp_idle_ticks = (unsigned int) cputime64_sub(total_idle_ticks,
-+
-+		cur_idle_time = get_cpu_idle_time(j, &cur_wall_time);
-+
-+		wall_time = (unsigned int) cputime64_sub(cur_wall_time,
-+				j_dbs_info->prev_cpu_wall);
-+		j_dbs_info->prev_cpu_wall = cur_wall_time;
-+
-+		idle_time = (unsigned int) cputime64_sub(cur_idle_time,
- 				j_dbs_info->prev_cpu_idle);
--		j_dbs_info->prev_cpu_idle = total_idle_ticks;
-+		j_dbs_info->prev_cpu_idle = cur_idle_time;
-+
-+		if (unlikely(!wall_time || wall_time < idle_time))
-+			continue;
-+
-+		load = 100 * (wall_time - idle_time) / wall_time;
-+
-+		freq_avg = __cpufreq_driver_getavg(policy, j);
-+		if (freq_avg <= 0)
-+			freq_avg = policy->cur;
- 
--		if (tmp_idle_ticks < idle_ticks)
--			idle_ticks = tmp_idle_ticks;
-+		load_freq = load * freq_avg;
-+		if (load_freq > max_load_freq)
-+			max_load_freq = load_freq;
- 	}
--	if (likely(total_ticks > idle_ticks))
--		load = (100 * (total_ticks - idle_ticks)) / total_ticks;
- 
- 	/* Check for frequency increase */
--	if (load > dbs_tuners_ins.up_threshold) {
-+	if (max_load_freq > dbs_tuners_ins.up_threshold * policy->cur) {
- 		/* if we are already at full speed then break out early */
- 		if (!dbs_tuners_ins.powersave_bias) {
- 			if (policy->cur == policy->max)
-@@ -412,15 +461,13 @@ static void dbs_check_cpu(struct cpu_dbs_info_s *this_dbs_info)
- 	 * can support the current CPU usage without triggering the up
- 	 * policy. To be safe, we focus 10 points under the threshold.
- 	 */
--	if (load < (dbs_tuners_ins.up_threshold - 10)) {
--		unsigned int freq_next, freq_cur;
--
--		freq_cur = __cpufreq_driver_getavg(policy);
--		if (!freq_cur)
--			freq_cur = policy->cur;
--
--		freq_next = (freq_cur * load) /
--			(dbs_tuners_ins.up_threshold - 10);
-+	if (max_load_freq <
-+	    (dbs_tuners_ins.up_threshold - dbs_tuners_ins.down_differential) *
-+	     policy->cur) {
-+		unsigned int freq_next;
-+		freq_next = max_load_freq /
-+				(dbs_tuners_ins.up_threshold -
-+				 dbs_tuners_ins.down_differential);
- 
- 		if (!dbs_tuners_ins.powersave_bias) {
- 			__cpufreq_driver_target(policy, freq_next,
-@@ -526,8 +573,8 @@ static int cpufreq_governor_dbs(struct cpufreq_policy *policy,
- 			j_dbs_info = &per_cpu(cpu_dbs_info, j);
- 			j_dbs_info->cur_policy = policy;
- 
--			j_dbs_info->prev_cpu_idle = get_cpu_idle_time(j);
--			j_dbs_info->prev_cpu_wall = get_jiffies_64();
-+			j_dbs_info->prev_cpu_idle = get_cpu_idle_time(j,
-+						&j_dbs_info->prev_cpu_wall);
- 		}
- 		this_dbs_info->cpu = cpu;
- 		/*
-@@ -579,22 +626,42 @@ static int cpufreq_governor_dbs(struct cpufreq_policy *policy,
- 	return 0;
- }
- 
-+#ifndef CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND
-+static
-+#endif
- struct cpufreq_governor cpufreq_gov_ondemand = {
- 	.name			= "ondemand",
- 	.governor		= cpufreq_governor_dbs,
- 	.max_transition_latency = TRANSITION_LATENCY_LIMIT,
- 	.owner			= THIS_MODULE,
- };
--EXPORT_SYMBOL(cpufreq_gov_ondemand);
- 
- static int __init cpufreq_gov_dbs_init(void)
- {
-+	int err;
-+	cputime64_t wall;
-+	u64 idle_time;
-+	int cpu = get_cpu();
-+
-+	idle_time = get_cpu_idle_time_us(cpu, &wall);
-+	put_cpu();
-+	if (idle_time != -1ULL) {
-+		/* Idle micro accounting is supported. Use finer thresholds */
-+		dbs_tuners_ins.up_threshold = MICRO_FREQUENCY_UP_THRESHOLD;
-+		dbs_tuners_ins.down_differential =
-+					MICRO_FREQUENCY_DOWN_DIFFERENTIAL;
-+	}
-+
- 	kondemand_wq = create_workqueue("kondemand");
- 	if (!kondemand_wq) {
- 		printk(KERN_ERR "Creation of kondemand failed\n");
- 		return -EFAULT;
- 	}
--	return cpufreq_register_governor(&cpufreq_gov_ondemand);
-+	err = cpufreq_register_governor(&cpufreq_gov_ondemand);
-+	if (err)
-+		destroy_workqueue(kondemand_wq);
-+
-+	return err;
- }
- 
- static void __exit cpufreq_gov_dbs_exit(void)
-diff --git a/drivers/cpufreq/cpufreq_performance.c b/drivers/cpufreq/cpufreq_performance.c
-index e8e1451..7e2e515 100644
---- a/drivers/cpufreq/cpufreq_performance.c
-+++ b/drivers/cpufreq/cpufreq_performance.c
-@@ -36,12 +36,14 @@ static int cpufreq_governor_performance(struct cpufreq_policy *policy,
- 	return 0;
- }
- 
-+#ifdef CONFIG_CPU_FREQ_GOV_PERFORMANCE_MODULE
-+static
-+#endif
- struct cpufreq_governor cpufreq_gov_performance = {
- 	.name		= "performance",
- 	.governor	= cpufreq_governor_performance,
- 	.owner		= THIS_MODULE,
- };
--EXPORT_SYMBOL(cpufreq_gov_performance);
- 
- 
- static int __init cpufreq_gov_performance_init(void)
-diff --git a/drivers/cpufreq/cpufreq_powersave.c b/drivers/cpufreq/cpufreq_powersave.c
-index 88d2f44..e6db5fa 100644
---- a/drivers/cpufreq/cpufreq_powersave.c
-+++ b/drivers/cpufreq/cpufreq_powersave.c
-@@ -35,12 +35,14 @@ static int cpufreq_governor_powersave(struct cpufreq_policy *policy,
- 	return 0;
- }
- 
-+#ifndef CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE
-+static
-+#endif
- struct cpufreq_governor cpufreq_gov_powersave = {
- 	.name		= "powersave",
- 	.governor	= cpufreq_governor_powersave,
- 	.owner		= THIS_MODULE,
- };
--EXPORT_SYMBOL(cpufreq_gov_powersave);
- 
- static int __init cpufreq_gov_powersave_init(void)
- {
-diff --git a/drivers/cpufreq/cpufreq_userspace.c b/drivers/cpufreq/cpufreq_userspace.c
-index 32244aa..1442bba 100644
---- a/drivers/cpufreq/cpufreq_userspace.c
-+++ b/drivers/cpufreq/cpufreq_userspace.c
-@@ -187,6 +187,9 @@ static int cpufreq_governor_userspace(struct cpufreq_policy *policy,
- }
- 
- 
-+#ifndef CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE
-+static
-+#endif
- struct cpufreq_governor cpufreq_gov_userspace = {
- 	.name		= "userspace",
- 	.governor	= cpufreq_governor_userspace,
-@@ -194,7 +197,6 @@ struct cpufreq_governor cpufreq_gov_userspace = {
- 	.show_setspeed	= show_speed,
- 	.owner		= THIS_MODULE,
- };
--EXPORT_SYMBOL(cpufreq_gov_userspace);
- 
- static int __init cpufreq_gov_userspace_init(void)
- {
-diff --git a/include/linux/cpufreq.h b/include/linux/cpufreq.h
-index 6fd5668..1ee608f 100644
---- a/include/linux/cpufreq.h
-+++ b/include/linux/cpufreq.h
-@@ -187,7 +187,8 @@ extern int __cpufreq_driver_target(struct cpufreq_policy *policy,
- 				   unsigned int relation);
- 
- 
--extern int __cpufreq_driver_getavg(struct cpufreq_policy *policy);
-+extern int __cpufreq_driver_getavg(struct cpufreq_policy *policy,
-+				   unsigned int cpu);
- 
- int cpufreq_register_governor(struct cpufreq_governor *governor);
- void cpufreq_unregister_governor(struct cpufreq_governor *governor);
-@@ -226,7 +227,9 @@ struct cpufreq_driver {
- 	unsigned int	(*get)	(unsigned int cpu);
- 
- 	/* optional */
--	unsigned int (*getavg)	(unsigned int cpu);
-+	unsigned int (*getavg)	(struct cpufreq_policy *policy,
-+				 unsigned int cpu);
-+
- 	int	(*exit)		(struct cpufreq_policy *policy);
- 	int	(*suspend)	(struct cpufreq_policy *policy, pm_message_t pmsg);
- 	int	(*resume)	(struct cpufreq_policy *policy);
-diff --git a/include/linux/tick.h b/include/linux/tick.h
-index 8cf8cfe..98921a3 100644
---- a/include/linux/tick.h
-+++ b/include/linux/tick.h
-@@ -126,7 +126,7 @@ static inline ktime_t tick_nohz_get_sleep_length(void)
- 	return len;
- }
- static inline void tick_nohz_stop_idle(int cpu) { }
--static inline u64 get_cpu_idle_time_us(int cpu, u64 *unused) { return 0; }
-+static inline u64 get_cpu_idle_time_us(int cpu, u64 *unused) { return -1; }
- # endif /* !NO_HZ */
- 
- #endif
-diff --git a/kernel/time/tick-sched.c b/kernel/time/tick-sched.c
-index cb02324..a4d2193 100644
---- a/kernel/time/tick-sched.c
-+++ b/kernel/time/tick-sched.c
-@@ -20,6 +20,7 @@
- #include <linux/profile.h>
- #include <linux/sched.h>
- #include <linux/tick.h>
-+#include <linux/module.h>
- 
- #include <asm/irq_regs.h>
- 
-@@ -190,9 +191,17 @@ u64 get_cpu_idle_time_us(int cpu, u64 *last_update_time)
- {
- 	struct tick_sched *ts = &per_cpu(tick_cpu_sched, cpu);
- 
--	*last_update_time = ktime_to_us(ts->idle_lastupdate);
-+	if (!tick_nohz_enabled)
-+		return -1;
-+
-+	if (ts->idle_active)
-+		*last_update_time = ktime_to_us(ts->idle_lastupdate);
-+	else
-+		*last_update_time = ktime_to_us(ktime_get());
-+
- 	return ktime_to_us(ts->idle_sleeptime);
- }
-+EXPORT_SYMBOL_GPL(get_cpu_idle_time_us);
- 
- /**
-  * tick_nohz_stop_sched_tick - stop the idle tick from the idle task


Index: kernel.spec
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/kernel.spec,v
retrieving revision 1.1124
retrieving revision 1.1125
diff -u -r1.1124 -r1.1125
--- kernel.spec	9 Nov 2008 20:02:51 -0000	1.1124
+++ kernel.spec	12 Nov 2008 16:28:22 -0000	1.1125
@@ -3,7 +3,7 @@
 # For a stable, released kernel, released_kernel should be 1. For rawhide
 # and/or a kernel built from an rc or git snapshot, released_kernel should
 # be 0.
-%define released_kernel 1
+%define released_kernel 0
 
 # Versions of various parts
 
@@ -36,7 +36,7 @@
 %if 0%{?released_kernel}
 
 # Do we have a -stable update to apply?
-%define stable_update 4
+%define stable_update 0
 # Is it a -stable RC?
 %define stable_rc 0
 # Set rpm version accordingly
@@ -55,7 +55,7 @@
 # The next upstream release sublevel (base_sublevel+1)
 %define upstream_sublevel %(expr %{base_sublevel} + 1)
 # The rc snapshot level
-%define rcrev 0
+%define rcrev 4
 # The git snapshot level
 %define gitrev 0
 # Set rpm version accordingly
@@ -1095,14 +1095,14 @@
 ApplyPatch linux-2.6-upstream-reverts.patch -R
 fi
 
-ApplyPatch git-cpufreq.patch
+#ApplyPatch git-cpufreq.patch
 
 ApplyPatch linux-2.6-hotfixes.patch
 
 # Roland's utrace ptrace replacement.
-ApplyPatch linux-2.6-utrace.patch
-ApplyPatch linux-2.6-x86-tracehook.patch
-ApplyPatch linux-2.6.27-x86-tracehook-syscall-arg-order.patch
+#ApplyPatch linux-2.6-utrace.patch
+#ApplyPatch linux-2.6-x86-tracehook.patch
+#ApplyPatch linux-2.6.27-x86-tracehook-syscall-arg-order.patch
 
 ApplyPatch linux-2.6-x86-mtrr-kill-bogus-warning.patch
 
@@ -1110,13 +1110,13 @@
 ApplyPatch linux-2.6-sysrq-c.patch
 
 # scheduler
-ApplyPatch linux-2.6-sched-features-disable-hrtick.patch
-ApplyPatch linux-2.6-sched_clock-prevent-scd-clock-from-moving-backwards
+#ApplyPatch linux-2.6-sched-features-disable-hrtick.patch
+#ApplyPatch linux-2.6-sched_clock-prevent-scd-clock-from-moving-backwards
 
 # Architecture patches
 # x86(-64)
 # don't oops in get_wchan()
-ApplyPatch linux-2.6-x86-avoid-dereferencing-beyond-stack-THREAD_SIZE.patch
+#ApplyPatch linux-2.6-x86-avoid-dereferencing-beyond-stack-THREAD_SIZE.patch
 
 #
 # PowerPC
@@ -1146,65 +1146,64 @@
 #
 # Exec shield
 #
-ApplyPatch linux-2.6-execshield.patch
-ApplyPatch linux-2.6-xen-execshield-add-xen-specific-load_user_cs_desc.patch
-
-ApplyPatch linux-2.6-xen-execshield-only-define-load_user_cs_desc-on-32-bit.patch
+#ApplyPatch linux-2.6-execshield.patch
+#ApplyPatch linux-2.6-xen-execshield-add-xen-specific-load_user_cs_desc.patch
+#ApplyPatch linux-2.6-xen-execshield-only-define-load_user_cs_desc-on-32-bit.patch
 
 #
 # bugfixes to drivers and filesystems
 #
 
 # ext4/jbd changes up to 2.6.28-rc3-git6
-ApplyPatch linux-2.6.27-ext4-2.6.28-rc3-git6.patch
+#ApplyPatch linux-2.6.27-ext4-2.6.28-rc3-git6.patch
 # Fixups for the upstream ext4 code to build cleanly in 2.6.27.
-ApplyPatch linux-2.6.27-ext4-2.6.28-backport-fixups.patch
+#ApplyPatch linux-2.6.27-ext4-2.6.28-backport-fixups.patch
 # CVE-2008-3528, ext-fs dir corruption
-ApplyPatch linux-2.6.27-ext-dir-corruption-fix.patch
+#ApplyPatch linux-2.6.27-ext-dir-corruption-fix.patch
 
 # xfs
 
 # USB
-ApplyPatch linux-2.6-usb-ehci-hcd-respect-nousb.patch
+#ApplyPatch linux-2.6-usb-ehci-hcd-respect-nousb.patch
 # fix I/O errors on jmicron usb-ata bridge
-ApplyPatch linux-2.6-usb-storage-unusual-devs-jmicron-ata-bridge.patch
+#ApplyPatch linux-2.6-usb-storage-unusual-devs-jmicron-ata-bridge.patch
 
 # Add the ability to turn FIPS-compliant mode on or off at boot
-ApplyPatch linux-2.6-crypto-fips_enable.patch
+#ApplyPatch linux-2.6-crypto-fips_enable.patch
 
 # ACPI
 
 ApplyPatch linux-2.6-defaults-acpi-video.patch
 ApplyPatch linux-2.6-acpi-video-dos.patch
-ApplyPatch linux-2.6-acpi-clear-wake-status.patch
-ApplyPatch linux-2.6-acpi-ignore-reset_reg_sup.patch
-ApplyPatch linux-2.6-acpi-handle-ec-init-failure.patch
+#ApplyPatch linux-2.6-acpi-clear-wake-status.patch
+#ApplyPatch linux-2.6-acpi-ignore-reset_reg_sup.patch
+#ApplyPatch linux-2.6-acpi-handle-ec-init-failure.patch
 
 # Various low-impact patches to aid debugging.
 ApplyPatch linux-2.6-debug-sizeof-structs.patch
 ApplyPatch linux-2.6-debug-nmi-timeout.patch
-ApplyPatch linux-2.6-debug-taint-vm.patch
+#ApplyPatch linux-2.6-debug-taint-vm.patch
 ApplyPatch linux-2.6-debug-spinlock-taint.patch
 ApplyPatch linux-2.6-debug-vm-would-have-oomkilled.patch
-ApplyPatch linux-2.6-mm-pagefault-enable-ints.patch
+#ApplyPatch linux-2.6-mm-pagefault-enable-ints.patch
 ApplyPatch linux-2.6-debug-always-inline-kzalloc.patch
 
 #
 # /dev/crash driver for the crashdump analysis tool
 #
-ApplyPatch linux-2.6-crash-driver.patch
+#ApplyPatch linux-2.6-crash-driver.patch
 
 #
 # PCI
 #
 # disable message signaled interrupts
-ApplyPatch linux-2.6-defaults-pci_no_msi.patch
+#ApplyPatch linux-2.6-defaults-pci_no_msi.patch
 
 # update the pciehp driver
-ApplyPatch linux-2.6-pciehp-update.patch
+#ApplyPatch linux-2.6-pciehp-update.patch
 
 # default to enabling passively listening for hotplug events
-ApplyPatch linux-2.6-defaults-pciehp.patch
+#ApplyPatch linux-2.6-defaults-pciehp.patch
 
 #
 # SCSI Bits.
@@ -1222,15 +1221,15 @@
 # Disable easy to trigger printk's.
 ApplyPatch linux-2.6-net-silence-noisy-printks.patch
 # Fix tcp option ordering.
-ApplyPatch linux-2.6-net-tcp-option-ordering.patch
+#ApplyPatch linux-2.6-net-tcp-option-ordering.patch
 
 # Misc fixes
 # The input layer spews crap no-one cares about.
 ApplyPatch linux-2.6-input-kill-stupid-messages.patch
 # Dell can't make keyboards
-ApplyPatch linux-2.6-input-dell-keyboard-keyup.patch
+#ApplyPatch linux-2.6-input-dell-keyboard-keyup.patch
 # kill annoying applesmc debug messages
-ApplyPatch linux-2.6.27-hwmon-applesmc-2.6.28.patch
+#ApplyPatch linux-2.6.27-hwmon-applesmc-2.6.28.patch
 
 # Allow to use 480600 baud on 16C950 UARTs
 ApplyPatch linux-2.6-serial-460800.patch
@@ -1250,16 +1249,16 @@
 # ia64 ata quirk
 ApplyPatch linux-2.6-ata-quirk.patch
 # fix it821x raid volumes
-ApplyPatch linux-2.6-libata-pata_it821x-fix-lba48-on-raid-volumes.patch
+#ApplyPatch linux-2.6-libata-pata_it821x-fix-lba48-on-raid-volumes.patch
 # fix overlow with large disk
-ApplyPatch linux-2.6-libata-avoid-overflow-with-large-disks.patch
+#ApplyPatch linux-2.6-libata-avoid-overflow-with-large-disks.patch
 
 # fix spot's iwlwifi, hopefully...
 #ApplyPatch linux-2.6-iwlwifi-use-dma_alloc_coherent.patch
 # make jarod's iwl4965 not panic near N APs, hopefully
-ApplyPatch linux-2.6-iwlagn-downgrade-BUG_ON-in-interrupt.patch
+#ApplyPatch linux-2.6-iwlagn-downgrade-BUG_ON-in-interrupt.patch
 # iwl3945 fix for stable ad-hoc mode connections (#459401)
-ApplyPatch linux-2.6-iwl3945-ibss-tsf-fix.patch
+#ApplyPatch linux-2.6-iwl3945-ibss-tsf-fix.patch
 # hostap hack to still work w/ quetionable skb->cb usage
 ApplyPatch linux-2.6-hostap-skb-cb-hack.patch
 
@@ -1267,89 +1266,89 @@
 ApplyPatch linux-2.6-at76.patch
 
 # NFS Client mounts hang when exported directory do not exist
-ApplyPatch linux-2.6-nfs-client-mounts-hang.patch
+#ApplyPatch linux-2.6-nfs-client-mounts-hang.patch
 
 # implement whitelist for ac97
-ApplyPatch linux-2.6-alsa-ac97-whitelist.patch
-ApplyPatch linux-2.6-alsa-ac97-whitelist-AD1981B.patch
+#ApplyPatch linux-2.6-alsa-ac97-whitelist.patch
+#ApplyPatch linux-2.6-alsa-ac97-whitelist-AD1981B.patch
 
 # build id related enhancements
-ApplyPatch linux-2.6-default-mmf_dump_elf_headers.patch
+#ApplyPatch linux-2.6-default-mmf_dump_elf_headers.patch
 
 # http://www.lirc.org/
-ApplyPatch linux-2.6.27-lirc.patch
+#ApplyPatch linux-2.6.27-lirc.patch
 # http://hg.jannau.net/hdpvr/
-ApplyPatch linux-2.6-hdpvr.patch
+#ApplyPatch linux-2.6-hdpvr.patch
 
 # Fix the return code CD accesses when the CDROM drive door is closed
 # but the drive isn't yet ready.
 ApplyPatch linux-2.6-cdrom-door-status.patch
 
 # fix sysfs links for the cciss driver
-ApplyPatch linux-2.6-blk-cciss-fix-regression-sysfs-symlink-missing.patch
+#ApplyPatch linux-2.6-blk-cciss-fix-regression-sysfs-symlink-missing.patch
 
 # fix RTC on systems with broken PnP
-ApplyPatch linux-2.6-rtc-cmos-look-for-pnp-rtc-first.patch
-ApplyPatch linux-2.6-x86-register-platform-rtc-if-pnp-doesnt-describe-it.patch
+#ApplyPatch linux-2.6-rtc-cmos-look-for-pnp-rtc-first.patch
+#ApplyPatch linux-2.6-x86-register-platform-rtc-if-pnp-doesnt-describe-it.patch
 
 ApplyPatch linux-2.6-e1000-ich9.patch
 
-ApplyPatch linux-2.6-e1000e-add-support-for-the-82567LM-4-device.patch
-ApplyPatch linux-2.6-e1000e-add-support-for-82567LM-3-and-82567LF-3-ICH10D-parts.patch
-ApplyPatch linux-2.6-e1000e-add-support-for-new-82574L-part.patch
+#ApplyPatch linux-2.6-e1000e-add-support-for-the-82567LM-4-device.patch
+#ApplyPatch linux-2.6-e1000e-add-support-for-82567LM-3-and-82567LF-3-ICH10D-parts.patch
+#ApplyPatch linux-2.6-e1000e-add-support-for-new-82574L-part.patch
 
-ApplyPatch linux-2.6-netdev-r8169-2.6.28.patch
+#ApplyPatch linux-2.6-netdev-r8169-2.6.28.patch
 
-ApplyPatch linux-2.6-eeepc-laptop-update.patch
-ApplyPatch linux-2.6-toshiba-acpi-update.patch
+#ApplyPatch linux-2.6-eeepc-laptop-update.patch
+#ApplyPatch linux-2.6-toshiba-acpi-update.patch
 
 # atl2 network driver
-ApplyPatch linux-2.6-netdev-atl2.patch
+#ApplyPatch linux-2.6-netdev-atl2.patch
 
 ApplyPatch linux-2.6-net-tulip-interrupt.patch
 
 ApplyPatch linux-2.6-olpc-speaker-out.patch
-ApplyPatch linux-2.6-olpc-touchpad.patch
+#ApplyPatch linux-2.6-olpc-touchpad.patch
 
 # Nouveau DRM + drm fixes
-ApplyPatch nvidia-agp.patch
-ApplyPatch linux-2.6-agp-intel-cantiga-fix.patch
-ApplyPatch drm-next.patch
-ApplyPatch drm-intel-gem-x86-64-faster.patch
-ApplyPatch drm-modesetting-radeon.patch
+#ApplyPatch nvidia-agp.patch
+#ApplyPatch linux-2.6-agp-intel-cantiga-fix.patch
+#ApplyPatch drm-next.patch
+#ApplyPatch drm-intel-gem-x86-64-faster.patch
+#ApplyPatch drm-modesetting-radeon.patch
 #ApplyPatch drm-modesetting-i915.patch
 ApplyPatch drm-nouveau.patch
 
 # linux1394 git patches
-ApplyPatch linux-2.6-firewire-git-update.patch
+#ApplyPatch linux-2.6-firewire-git-update.patch
 C=$(wc -l $RPM_SOURCE_DIR/linux-2.6-firewire-git-pending.patch | awk '{print $1}')
 if [ "$C" -gt 10 ]; then
 ApplyPatch linux-2.6-firewire-git-pending.patch
 fi
 
 # get rid of imacfb and make efifb work everywhere it was used
-ApplyPatch linux-2.6-merge-efifb-imacfb.patch
+#ApplyPatch linux-2.6-merge-efifb-imacfb.patch
 
 # Sony Vaio suspend fix
-ApplyPatch linux-2.6.27-sony-laptop-suspend-fix.patch
+#ApplyPatch linux-2.6.27-sony-laptop-suspend-fix.patch
 
-ApplyPatch linux-2.6-dmi-autoload.patch
+#ApplyPatch linux-2.6-dmi-autoload.patch
 
 # silence piix3 in quiet boot (ie, qemu)
 ApplyPatch linux-2.6-piix3-silence-quirk.patch
 # Hush IOMMU warnings, you typically can't fix them anyway
-ApplyPatch linux-2.6-quiet-iommu.patch
+#ApplyPatch linux-2.6-quiet-iommu.patch
 # silence the ACPI blacklist code
 ApplyPatch linux-2.6-silence-acpi-blacklist.patch
 # it's... it's ALIVE!
-ApplyPatch linux-2.6-amd64-yes-i-know-you-live.patch
+#ApplyPatch linux-2.6-amd64-yes-i-know-you-live.patch
 # hush pci bar allocation failures
-ApplyPatch linux-2.6.27-pci-hush-allocation-failures.patch
+#ApplyPatch linux-2.6.27-pci-hush-allocation-failures.patch
 # EC storms aren't anything you can fix, shut up already
-ApplyPatch linux-2.6.27-acpi-ec-drizzle.patch
+#ApplyPatch linux-2.6.27-acpi-ec-drizzle.patch
 
 # SELinux on ppc64 without plymouth can't boot
-ApplyPatch linux-2.6-selinux-empty-tty-files.patch
+#ApplyPatch linux-2.6-selinux-empty-tty-files.patch
 
 ApplyPatch disable-p4-cpufreq-ui.patch
 
@@ -1937,6 +1936,9 @@
 # You probably want to be commiting to F-10/ rather than devel/
 
 %changelog
+* Wed Nov 12 2008 Kyle McMartin <kyle at redhat.com>
+- Linux 2.6.28-rc4
+
 * Sun Nov 09 2008 Eric Sandeen <sandeen at redhat.com>
 - Pull back ext4 updates from 2.6.28-rc3-git6
 

linux-2.6-compile-fixes.patch:

Index: linux-2.6-compile-fixes.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/linux-2.6-compile-fixes.patch,v
retrieving revision 1.178
retrieving revision 1.179
diff -u -r1.178 -r1.179
--- linux-2.6-compile-fixes.patch	8 Oct 2008 22:32:46 -0000	1.178
+++ linux-2.6-compile-fixes.patch	12 Nov 2008 16:28:22 -0000	1.179
@@ -11,14 +11,15 @@
 Signed-off-by: Dave Jones <davej at redhat.com>
 
 diff --git a/arch/powerpc/sysdev/fsl_lbc.c b/arch/powerpc/sysdev/fsl_lbc.c
-index 422c8fa..1c6c522 100644
+index 0494ee5..43a9e56 100644
 --- a/arch/powerpc/sysdev/fsl_lbc.c
 +++ b/arch/powerpc/sysdev/fsl_lbc.c
-@@ -16,6 +16,7 @@
+@@ -23,6 +23,8 @@
  #include <asm/fsl_lbc.h>
  
- spinlock_t fsl_lbc_lock = __SPIN_LOCK_UNLOCKED(fsl_lbc_lock);
+ static spinlock_t fsl_lbc_lock = __SPIN_LOCK_UNLOCKED(fsl_lbc_lock);
 +EXPORT_SYMBOL(fsl_lbc_lock);
++
+ static struct fsl_lbc_regs __iomem *fsl_lbc_regs;
  
- struct fsl_lbc_regs __iomem *fsl_lbc_regs;
- EXPORT_SYMBOL(fsl_lbc_regs);
+ static char __initdata *compat_lbc[] = {

linux-2.6-firewire-git-pending.patch:

Index: linux-2.6-firewire-git-pending.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/linux-2.6-firewire-git-pending.patch,v
retrieving revision 1.31
retrieving revision 1.32
diff -u -r1.31 -r1.32
--- linux-2.6-firewire-git-pending.patch	29 Oct 2008 15:32:05 -0000	1.31
+++ linux-2.6-firewire-git-pending.patch	12 Nov 2008 16:28:22 -0000	1.32
@@ -3,128 +3,3 @@
 # tree (and/or in by the time your read this), which we want...
 #
 
-Date: Fri, 26 Sep 2008 16:35:45 -0400
-From: Jay Fenlason <fenlason at redhat.com>
-Subject: [Patch] fix two resource allocation bugs in fw-cdev.c
-
-Bug #1: the resource_handle used to number resources will eventually
-wrap, potentially resulting in two resources having the same handle.
-This will lead to a system crash when the wrong resource is freed.
-
-A better fix for this bug would be to use the idr functions rather
-than keeping a linked list of resources.  I will include that in a
-future patch.
-
-Bug #2: the release_client_resource() function does not check the type
-of the resource it is being asked to free.  Because the handle numbers
-can come directly from userspace, a malicious or buggy program may
-free resources that it shouldn't, possibly causing a program crash.
-
-Signed-off-by: Jay Fenlason <fenlason at redhat.com>
-
---
-
- fw-cdev.c |   32 +++++++++++++++++++++++++-------
- 1 file changed, 25 insertions(+), 7 deletions(-)
-
-diff -rup linux-2.6/drivers/firewire/fw-cdev.c linux-2.6.firewire/drivers/firewire/fw-cdev.c
---- linux-2.6/drivers/firewire/fw-cdev.c	2008-09-22 14:56:02.000000000 -0400
-+++ linux-2.6.firewire/drivers/firewire/fw-cdev.c	2008-09-25 16:13:00.000000000 -0400
-@@ -77,7 +77,6 @@ struct client {
- 	u32 version;
- 	struct fw_device *device;
- 	spinlock_t lock;
--	u32 resource_handle;
- 	struct list_head resource_list;
- 	struct list_head event_list;
- 	wait_queue_head_t wait;
-@@ -321,13 +320,32 @@ add_client_resource(struct client *clien
- 	unsigned long flags;
- 
- 	spin_lock_irqsave(&client->lock, flags);
--	list_add_tail(&resource->link, &client->resource_list);
--	resource->handle = client->resource_handle++;
-+	if (list_empty(&client->resource_list)
-+	    || list_first_entry(&client->resource_list,
-+				struct client_resource,
-+				link)->handle > 0) {
-+		resource->handle = 0;
-+		list_add(&resource->link, &client->resource_list);
-+	} else {
-+		struct client_resource *c_tmp, *c_tmp2;
-+
-+		c_tmp2 = NULL;
-+		list_for_each_entry(c_tmp, &client->resource_list,
-+				    link) {
-+			if (c_tmp2 && c_tmp->handle != c_tmp2->handle+1)
-+				break;
-+			c_tmp2 = c_tmp;
-+		}
-+		BUG_ON(c_tmp2 == NULL);
-+		resource->handle = c_tmp2->handle+1;
-+		list_add(&resource->link, &c_tmp2->link);
-+	}
- 	spin_unlock_irqrestore(&client->lock, flags);
- }
- 
- static int
- release_client_resource(struct client *client, u32 handle,
-+			void (*func)(struct client *client, struct client_resource *r),
- 			struct client_resource **resource)
- {
- 	struct client_resource *r;
-@@ -335,7 +353,7 @@ release_client_resource(struct client *c
- 
- 	spin_lock_irqsave(&client->lock, flags);
- 	list_for_each_entry(r, &client->resource_list, link) {
--		if (r->handle == handle) {
-+		if (r->handle == handle && r->release == func) {
- 			list_del(&r->link);
- 			break;
- 		}
-@@ -555,7 +573,7 @@ static int ioctl_deallocate(struct clien
- {
- 	struct fw_cdev_deallocate *request = buffer;
- 
--	return release_client_resource(client, request->handle, NULL);
-+	return release_client_resource(client, request->handle, release_address_handler, NULL);
- }
- 
- static int ioctl_send_response(struct client *client, void *buffer)
-@@ -564,7 +582,7 @@ static int ioctl_send_response(struct cl
- 	struct client_resource *resource;
- 	struct request *r;
- 
--	if (release_client_resource(client, request->handle, &resource) < 0)
-+	if (release_client_resource(client, request->handle, release_request, &resource) < 0)
- 		return -EINVAL;
- 	r = container_of(resource, struct request, resource);
- 	if (request->length < r->length)
-@@ -646,7 +664,7 @@ static int ioctl_remove_descriptor(struc
- {
- 	struct fw_cdev_remove_descriptor *request = buffer;
- 
--	return release_client_resource(client, request->handle, NULL);
-+	return release_client_resource(client, request->handle, release_descriptor, NULL);
- }
- 
- static void
-
-----------------------
-Date: Wed, 22 Oct 2008 15:59:42 -0400
-From: Jay Fenlason <fenlason at redhat.com>
-Subject: firewire: typo in comment
-
-Signed-off-by: Jay Fenlason <fenlason at redhat.com>
-diff -upr linux-2.6/drivers/firewire/fw-card.c linux-2.6.fw/drivers/firewire/fw-card.c
---- linux-2.6/drivers/firewire/fw-card.c	2008-10-07 11:26:15.000000000 -0400
-+++ linux-2.6.fw/drivers/firewire/fw-card.c	2008-10-22 14:40:14.000000000 -0400
-@@ -76,7 +76,7 @@ generate_config_rom(struct fw_card *card
- 	 * controller, block reads to the config rom accesses the host
- 	 * memory, but quadlet read access the hardware bus info block
- 	 * registers.  That's just crack, but it means we should make
--	 * sure the contents of bus info block in host memory mathces
-+	 * sure the contents of bus info block in host memory matches
- 	 * the version stored in the OHCI registers.
- 	 */
- 

linux-2.6-upstream-reverts.patch:

Index: linux-2.6-upstream-reverts.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/linux-2.6-upstream-reverts.patch,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- linux-2.6-upstream-reverts.patch	24 Oct 2008 23:44:38 -0000	1.4
+++ linux-2.6-upstream-reverts.patch	12 Nov 2008 16:28:22 -0000	1.5
@@ -1,283 +1 @@
-From 4b40893918203ee1a1f6a114316c2a19c072e9bd Mon Sep 17 00:00:00 2001
-From: Matthias Hopf <mhopf at suse.de>
-Date: Sat, 18 Oct 2008 07:18:05 +1000
-Subject: drm/i915: fix ioremap of a user address for non-root (CVE-2008-3831)
-
-From: Matthias Hopf <mhopf at suse.de>
-
-commit 4b40893918203ee1a1f6a114316c2a19c072e9bd upstream
-
-Olaf Kirch noticed that the i915_set_status_page() function of the i915
-kernel driver calls ioremap with an address offset that is supplied by
-userspace via ioctl. The function zeroes the mapped memory via memset
-and tells the hardware about the address. Turns out that access to that
-ioctl is not restricted to root so users could probably exploit that to
-do nasty things. We haven't tried to write actual exploit code though.
-
-It only affects the Intel G33 series and newer.
-
-Signed-off-by: Dave Airlie <airlied at redhat.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
-
----
- drivers/gpu/drm/i915/i915_dma.c |    2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
---- a/drivers/gpu/drm/i915/i915_dma.c
-+++ b/drivers/gpu/drm/i915/i915_dma.c
-@@ -836,7 +836,7 @@ struct drm_ioctl_desc i915_ioctls[] = {
- 	DRM_IOCTL_DEF(DRM_I915_SET_VBLANK_PIPE,  i915_vblank_pipe_set, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY ),
- 	DRM_IOCTL_DEF(DRM_I915_GET_VBLANK_PIPE,  i915_vblank_pipe_get, DRM_AUTH ),
- 	DRM_IOCTL_DEF(DRM_I915_VBLANK_SWAP, i915_vblank_swap, DRM_AUTH),
--	DRM_IOCTL_DEF(DRM_I915_HWS_ADDR, i915_set_status_page, DRM_AUTH),
-+	DRM_IOCTL_DEF(DRM_I915_HWS_ADDR, i915_set_status_page, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
- };
- 
- int i915_max_ioctl = DRM_ARRAY_SIZE(i915_ioctls);
-From sandeen at redhat.com  Thu Oct 23 13:13:44 2008
-From: Eric Sandeen <sandeen at redhat.com>
-Date: Wed, 22 Oct 2008 10:11:52 -0500
-Subject: ext[234]: Avoid printk floods in the face of directory corruption (CVE-2008-3528)
-To: stable at kernel.org
-Cc: ext4 development <linux-ext4 at vger.kernel.org>
-Message-ID: <48FF42B8.3030606 at redhat.com>
-
-From: Eric Sandeen <sandeen at redhat.com>
-
-This is a trivial backport of the following upstream commits:
-
-- bd39597cbd42a784105a04010100e27267481c67 (ext2)
-- cdbf6dba28e8e6268c8420857696309470009fd9 (ext3)
-- 9d9f177572d9e4eba0f2e18523b44f90dd51fe74 (ext4)
-
-This addresses CVE-2008-3528
-
-ext[234]: Avoid printk floods in the face of directory corruption
-
-Note: some people thinks this represents a security bug, since it
-might make the system go away while it is printing a large number of
-console messages, especially if a serial console is involved.  Hence,
-it has been assigned CVE-2008-3528, but it requires that the attacker
-either has physical access to your machine to insert a USB disk with a
-corrupted filesystem image (at which point why not just hit the power
-button), or is otherwise able to convince the system administrator to
-mount an arbitrary filesystem image (at which point why not just
-include a setuid shell or world-writable hard disk device file or some
-such).  Me, I think they're just being silly. --tytso
-
-Signed-off-by: Eric Sandeen <sandeen at redhat.com>
-Signed-off-by: "Theodore Ts'o" <tytso at mit.edu>
-Cc: linux-ext4 at vger.kernel.org
-Cc: Eugene Teo <eugeneteo at kernel.sg>
-Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
-
----
- fs/ext2/dir.c |   60 +++++++++++++++++++++++++++++++++-------------------------
- fs/ext3/dir.c |   10 ++++++---
- fs/ext4/dir.c |   11 +++++++---
- 3 files changed, 50 insertions(+), 31 deletions(-)
-
---- a/fs/ext2/dir.c
-+++ b/fs/ext2/dir.c
-@@ -103,7 +103,7 @@ static int ext2_commit_chunk(struct page
- 	return err;
- }
- 
--static void ext2_check_page(struct page *page)
-+static void ext2_check_page(struct page *page, int quiet)
- {
- 	struct inode *dir = page->mapping->host;
- 	struct super_block *sb = dir->i_sb;
-@@ -146,10 +146,10 @@ out:
- 	/* Too bad, we had an error */
- 
- Ebadsize:
--	ext2_error(sb, "ext2_check_page",
--		"size of directory #%lu is not a multiple of chunk size",
--		dir->i_ino
--	);
-+	if (!quiet)
-+		ext2_error(sb, __func__,
-+			"size of directory #%lu is not a multiple "
-+			"of chunk size", dir->i_ino);
- 	goto fail;
- Eshort:
- 	error = "rec_len is smaller than minimal";
-@@ -166,32 +166,36 @@ Espan:
- Einumber:
- 	error = "inode out of bounds";
- bad_entry:
--	ext2_error (sb, "ext2_check_page", "bad entry in directory #%lu: %s - "
--		"offset=%lu, inode=%lu, rec_len=%d, name_len=%d",
--		dir->i_ino, error, (page->index<<PAGE_CACHE_SHIFT)+offs,
--		(unsigned long) le32_to_cpu(p->inode),
--		rec_len, p->name_len);
-+	if (!quiet)
-+		ext2_error(sb, __func__, "bad entry in directory #%lu: : %s - "
-+			"offset=%lu, inode=%lu, rec_len=%d, name_len=%d",
-+			dir->i_ino, error, (page->index<<PAGE_CACHE_SHIFT)+offs,
-+			(unsigned long) le32_to_cpu(p->inode),
-+			rec_len, p->name_len);
- 	goto fail;
- Eend:
--	p = (ext2_dirent *)(kaddr + offs);
--	ext2_error (sb, "ext2_check_page",
--		"entry in directory #%lu spans the page boundary"
--		"offset=%lu, inode=%lu",
--		dir->i_ino, (page->index<<PAGE_CACHE_SHIFT)+offs,
--		(unsigned long) le32_to_cpu(p->inode));
-+	if (!quiet) {
-+		p = (ext2_dirent *)(kaddr + offs);
-+		ext2_error(sb, "ext2_check_page",
-+			"entry in directory #%lu spans the page boundary"
-+			"offset=%lu, inode=%lu",
-+			dir->i_ino, (page->index<<PAGE_CACHE_SHIFT)+offs,
-+			(unsigned long) le32_to_cpu(p->inode));
-+	}
- fail:
- 	SetPageChecked(page);
- 	SetPageError(page);
- }
- 
--static struct page * ext2_get_page(struct inode *dir, unsigned long n)
-+static struct page * ext2_get_page(struct inode *dir, unsigned long n,
-+				   int quiet)
- {
- 	struct address_space *mapping = dir->i_mapping;
- 	struct page *page = read_mapping_page(mapping, n, NULL);
- 	if (!IS_ERR(page)) {
- 		kmap(page);
- 		if (!PageChecked(page))
--			ext2_check_page(page);
-+			ext2_check_page(page, quiet);
- 		if (PageError(page))
- 			goto fail;
- 	}
-@@ -292,7 +296,7 @@ ext2_readdir (struct file * filp, void *
- 	for ( ; n < npages; n++, offset = 0) {
- 		char *kaddr, *limit;
- 		ext2_dirent *de;
--		struct page *page = ext2_get_page(inode, n);
-+		struct page *page = ext2_get_page(inode, n, 0);
- 
- 		if (IS_ERR(page)) {
- 			ext2_error(sb, __func__,
-@@ -361,6 +365,7 @@ struct ext2_dir_entry_2 * ext2_find_entr
- 	struct page *page = NULL;
- 	struct ext2_inode_info *ei = EXT2_I(dir);
- 	ext2_dirent * de;
-+	int dir_has_error = 0;
- 
- 	if (npages == 0)
- 		goto out;
-@@ -374,7 +379,7 @@ struct ext2_dir_entry_2 * ext2_find_entr
- 	n = start;
- 	do {
- 		char *kaddr;
--		page = ext2_get_page(dir, n);
-+		page = ext2_get_page(dir, n, dir_has_error);
- 		if (!IS_ERR(page)) {
- 			kaddr = page_address(page);
- 			de = (ext2_dirent *) kaddr;
-@@ -391,7 +396,9 @@ struct ext2_dir_entry_2 * ext2_find_entr
- 				de = ext2_next_entry(de);
- 			}
- 			ext2_put_page(page);
--		}
-+		} else
-+			dir_has_error = 1;
-+
- 		if (++n >= npages)
- 			n = 0;
- 		/* next page is past the blocks we've got */
-@@ -414,7 +421,7 @@ found:
- 
- struct ext2_dir_entry_2 * ext2_dotdot (struct inode *dir, struct page **p)
- {
--	struct page *page = ext2_get_page(dir, 0);
-+	struct page *page = ext2_get_page(dir, 0, 0);
- 	ext2_dirent *de = NULL;
- 
- 	if (!IS_ERR(page)) {
-@@ -487,7 +494,7 @@ int ext2_add_link (struct dentry *dentry
- 	for (n = 0; n <= npages; n++) {
- 		char *dir_end;
- 
--		page = ext2_get_page(dir, n);
-+		page = ext2_get_page(dir, n, 0);
- 		err = PTR_ERR(page);
- 		if (IS_ERR(page))
- 			goto out;
-@@ -655,14 +662,17 @@ int ext2_empty_dir (struct inode * inode
- {
- 	struct page *page = NULL;
- 	unsigned long i, npages = dir_pages(inode);
-+	int dir_has_error = 0;
- 
- 	for (i = 0; i < npages; i++) {
- 		char *kaddr;
- 		ext2_dirent * de;
--		page = ext2_get_page(inode, i);
-+		page = ext2_get_page(inode, i, dir_has_error);
- 
--		if (IS_ERR(page))
-+		if (IS_ERR(page)) {
-+			dir_has_error = 1;
- 			continue;
-+		}
- 
- 		kaddr = page_address(page);
- 		de = (ext2_dirent *)kaddr;
---- a/fs/ext3/dir.c
-+++ b/fs/ext3/dir.c
-@@ -102,6 +102,7 @@ static int ext3_readdir(struct file * fi
- 	int err;
- 	struct inode *inode = filp->f_path.dentry->d_inode;
- 	int ret = 0;
-+	int dir_has_error = 0;
- 
- 	sb = inode->i_sb;
- 
-@@ -148,9 +149,12 @@ static int ext3_readdir(struct file * fi
- 		 * of recovering data when there's a bad sector
- 		 */
- 		if (!bh) {
--			ext3_error (sb, "ext3_readdir",
--				"directory #%lu contains a hole at offset %lu",
--				inode->i_ino, (unsigned long)filp->f_pos);
-+			if (!dir_has_error) {
-+				ext3_error(sb, __func__, "directory #%lu "
-+					"contains a hole at offset %lld",
-+					inode->i_ino, filp->f_pos);
-+				dir_has_error = 1;
-+			}
- 			/* corrupt size?  Maybe no more blocks to read */
- 			if (filp->f_pos > inode->i_blocks << 9)
- 				break;
---- a/fs/ext4/dir.c
-+++ b/fs/ext4/dir.c
-@@ -102,6 +102,7 @@ static int ext4_readdir(struct file * fi
- 	int err;
- 	struct inode *inode = filp->f_path.dentry->d_inode;
- 	int ret = 0;
-+	int dir_has_error = 0;
- 
- 	sb = inode->i_sb;
- 
-@@ -148,9 +149,13 @@ static int ext4_readdir(struct file * fi
- 		 * of recovering data when there's a bad sector
- 		 */
- 		if (!bh) {
--			ext4_error (sb, "ext4_readdir",
--				"directory #%lu contains a hole at offset %lu",
--				inode->i_ino, (unsigned long)filp->f_pos);
-+			if (!dir_has_error) {
-+				ext4_error(sb, __func__, "directory #%lu "
-+					   "contains a hole at offset %Lu",
-+					   inode->i_ino,
-+					   (unsigned long long) filp->f_pos);
-+				dir_has_error = 1;
-+			}
- 			/* corrupt size?  Maybe no more blocks to read */
- 			if (filp->f_pos > inode->i_blocks << 9)
- 				break;
+nil


Index: sources
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/sources,v
retrieving revision 1.914
retrieving revision 1.915
diff -u -r1.914 -r1.915
--- sources	26 Oct 2008 11:45:02 -0000	1.914
+++ sources	12 Nov 2008 16:28:22 -0000	1.915
@@ -1,2 +1,2 @@
 b3e78977aa79d3754cb7f8143d7ddabd  linux-2.6.27.tar.bz2
-fa7cb6cf1ee5e796e89905806ffc6f01  patch-2.6.27.4.bz2
+71bf4c787973ea01693af4571c00fa4e  patch-2.6.28-rc4.bz2


Index: upstream
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/upstream,v
retrieving revision 1.826
retrieving revision 1.827
diff -u -r1.826 -r1.827
--- upstream	26 Oct 2008 11:45:02 -0000	1.826
+++ upstream	12 Nov 2008 16:28:22 -0000	1.827
@@ -1,2 +1,2 @@
 linux-2.6.27.tar.bz2
-patch-2.6.27.4.bz2
+patch-2.6.28-rc4.bz2


--- patch-2.6.27.4.bz2.sign DELETED ---




More information about the fedora-extras-commits mailing list