linux 3.4-rc1
This commit is contained in:
parent
5e9e2f5b16
commit
d8c9baa910
@ -1,58 +0,0 @@
|
||||
commit 64b3db22c04586997ab4be46dd5a5b99f8a2d390 (2.6.39),
|
||||
"Remove use of unreliable FADT revision field" causes regression
|
||||
for old P4 systems because now cst_control and other fields are
|
||||
not reset to 0.
|
||||
|
||||
The effect is that acpi_processor_power_init will notice
|
||||
cst_control != 0 and a write to CST_CNT register is performed
|
||||
that should not happen. As result, the system oopses after the
|
||||
"No _CST, giving up" message, sometimes in acpi_ns_internalize_name,
|
||||
sometimes in acpi_ns_get_type, usually at random places. May be
|
||||
during migration to CPU 1 in acpi_processor_get_throttling.
|
||||
|
||||
Every one of these settings help to avoid this problem:
|
||||
- acpi=off
|
||||
- processor.nocst=1
|
||||
- maxcpus=1
|
||||
|
||||
The fix is to update acpi_gbl_FADT.header.length after
|
||||
the original value is used to check for old revisions.
|
||||
|
||||
Signed-off-by: Julian Anastasov <ja@ssi.bg>
|
||||
---
|
||||
drivers/acpi/acpica/tbfadt.c | 8 ++++----
|
||||
1 files changed, 4 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/drivers/acpi/acpica/tbfadt.c b/drivers/acpi/acpica/tbfadt.c
|
||||
index c5d8704..4c9c760 100644
|
||||
--- a/drivers/acpi/acpica/tbfadt.c
|
||||
+++ b/drivers/acpi/acpica/tbfadt.c
|
||||
@@ -363,10 +363,6 @@ static void acpi_tb_convert_fadt(void)
|
||||
u32 address32;
|
||||
u32 i;
|
||||
|
||||
- /* Update the local FADT table header length */
|
||||
-
|
||||
- acpi_gbl_FADT.header.length = sizeof(struct acpi_table_fadt);
|
||||
-
|
||||
/*
|
||||
* Expand the 32-bit FACS and DSDT addresses to 64-bit as necessary.
|
||||
* Later code will always use the X 64-bit field. Also, check for an
|
||||
@@ -408,6 +404,10 @@ static void acpi_tb_convert_fadt(void)
|
||||
acpi_gbl_FADT.boot_flags = 0;
|
||||
}
|
||||
|
||||
+ /* Update the local FADT table header length */
|
||||
+
|
||||
+ acpi_gbl_FADT.header.length = sizeof(struct acpi_table_fadt);
|
||||
+
|
||||
/*
|
||||
* Expand the ACPI 1.0 32-bit addresses to the ACPI 2.0 64-bit "X"
|
||||
* generic address structures as necessary. Later code will always use
|
||||
--
|
||||
1.7.3.4
|
||||
|
||||
--
|
||||
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
|
||||
the body of a message to majordomo@vger.kernel.org
|
||||
More majordomo info at http://vger.kernel.org/majordomo-info.html
|
@ -1,146 +0,0 @@
|
||||
From 9a056a5843ff83db987d6e18625f4a2ee64b5450 Mon Sep 17 00:00:00 2001
|
||||
From: Matthew Garrett <mjg@redhat.com>
|
||||
Date: Tue, 30 Aug 2011 10:07:24 -0400
|
||||
Subject: [PATCH] ACPI: Ensure thermal limits match CPU frequencies
|
||||
|
||||
The ACPI thermal management code supports slowing down a CPU when it's
|
||||
overheating. Right now that's done by choosing to run it at 100%, 75%, 50%
|
||||
or 25% of full speed. However, most CPUs do not allow an arbitrary
|
||||
frequency to be set and so will run at the first frequency below that value.
|
||||
This doesn't match the intent of the specification, which is to drop the
|
||||
frequency state by state until the temperature stabalises. Fix this up
|
||||
so it uses actual frequencies rather than percentages.
|
||||
|
||||
Reported by: Gene Snider <snider6982@comcast.net>
|
||||
Signed-off-by: Matthew Garrett <mjg@redhat.com>
|
||||
---
|
||||
drivers/acpi/Kconfig | 1 +
|
||||
drivers/acpi/processor_thermal.c | 45 +++++++++++++++++++++----------------
|
||||
2 files changed, 26 insertions(+), 20 deletions(-)
|
||||
|
||||
diff --git a/drivers/acpi/Kconfig b/drivers/acpi/Kconfig
|
||||
index de0e3df..7d1bdb5 100644
|
||||
--- a/drivers/acpi/Kconfig
|
||||
+++ b/drivers/acpi/Kconfig
|
||||
@@ -185,6 +185,7 @@ config ACPI_PROCESSOR
|
||||
tristate "Processor"
|
||||
select THERMAL
|
||||
select CPU_IDLE
|
||||
+ select CPU_FREQ_TABLE
|
||||
default y
|
||||
help
|
||||
This driver installs ACPI as the idle handler for Linux and uses
|
||||
diff --git a/drivers/acpi/processor_thermal.c b/drivers/acpi/processor_thermal.c
|
||||
index 870550d..1c4eb60 100644
|
||||
--- a/drivers/acpi/processor_thermal.c
|
||||
+++ b/drivers/acpi/processor_thermal.c
|
||||
@@ -52,10 +52,8 @@ ACPI_MODULE_NAME("processor_thermal");
|
||||
* _any_ cpufreq driver and not only the acpi-cpufreq driver.
|
||||
*/
|
||||
|
||||
-#define CPUFREQ_THERMAL_MIN_STEP 0
|
||||
-#define CPUFREQ_THERMAL_MAX_STEP 3
|
||||
|
||||
-static DEFINE_PER_CPU(unsigned int, cpufreq_thermal_reduction_pctg);
|
||||
+static DEFINE_PER_CPU(unsigned int, cpufreq_thermal_limit_state);
|
||||
static unsigned int acpi_thermal_cpufreq_is_init = 0;
|
||||
|
||||
static int cpu_has_cpufreq(unsigned int cpu)
|
||||
@@ -70,19 +68,19 @@ static int acpi_thermal_cpufreq_notifier(struct notifier_block *nb,
|
||||
unsigned long event, void *data)
|
||||
{
|
||||
struct cpufreq_policy *policy = data;
|
||||
- unsigned long max_freq = 0;
|
||||
+ int state = per_cpu(cpufreq_thermal_limit_state, policy->cpu);
|
||||
+ struct cpufreq_frequency_table *table;
|
||||
|
||||
if (event != CPUFREQ_ADJUST)
|
||||
- goto out;
|
||||
+ return 0;
|
||||
+
|
||||
+ table = cpufreq_frequency_get_table(policy->cpu);
|
||||
|
||||
- max_freq = (
|
||||
- policy->cpuinfo.max_freq *
|
||||
- (100 - per_cpu(cpufreq_thermal_reduction_pctg, policy->cpu) * 20)
|
||||
- ) / 100;
|
||||
+ if (!table)
|
||||
+ return 0;
|
||||
|
||||
- cpufreq_verify_within_limits(policy, 0, max_freq);
|
||||
+ cpufreq_verify_within_limits(policy, 0, table[state].frequency);
|
||||
|
||||
- out:
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -92,10 +90,21 @@ static struct notifier_block acpi_thermal_cpufreq_notifier_block = {
|
||||
|
||||
static int cpufreq_get_max_state(unsigned int cpu)
|
||||
{
|
||||
+ int count = 0;
|
||||
+ struct cpufreq_frequency_table *table;
|
||||
+
|
||||
if (!cpu_has_cpufreq(cpu))
|
||||
return 0;
|
||||
|
||||
- return CPUFREQ_THERMAL_MAX_STEP;
|
||||
+ table = cpufreq_frequency_get_table(cpu);
|
||||
+
|
||||
+ if (!table)
|
||||
+ return 0;
|
||||
+
|
||||
+ while (table[count].frequency != CPUFREQ_TABLE_END)
|
||||
+ count++;
|
||||
+
|
||||
+ return count;
|
||||
}
|
||||
|
||||
static int cpufreq_get_cur_state(unsigned int cpu)
|
||||
@@ -103,7 +112,7 @@ static int cpufreq_get_cur_state(unsigned int cpu)
|
||||
if (!cpu_has_cpufreq(cpu))
|
||||
return 0;
|
||||
|
||||
- return per_cpu(cpufreq_thermal_reduction_pctg, cpu);
|
||||
+ return per_cpu(cpufreq_thermal_limit_state, cpu);
|
||||
}
|
||||
|
||||
static int cpufreq_set_cur_state(unsigned int cpu, int state)
|
||||
@@ -111,7 +120,7 @@ static int cpufreq_set_cur_state(unsigned int cpu, int state)
|
||||
if (!cpu_has_cpufreq(cpu))
|
||||
return 0;
|
||||
|
||||
- per_cpu(cpufreq_thermal_reduction_pctg, cpu) = state;
|
||||
+ per_cpu(cpufreq_thermal_limit_state, cpu) = state;
|
||||
cpufreq_update_policy(cpu);
|
||||
return 0;
|
||||
}
|
||||
@@ -122,7 +131,7 @@ void acpi_thermal_cpufreq_init(void)
|
||||
|
||||
for (i = 0; i < nr_cpu_ids; i++)
|
||||
if (cpu_present(i))
|
||||
- per_cpu(cpufreq_thermal_reduction_pctg, i) = 0;
|
||||
+ per_cpu(cpufreq_thermal_limit_state, i) = 0;
|
||||
|
||||
i = cpufreq_register_notifier(&acpi_thermal_cpufreq_notifier_block,
|
||||
CPUFREQ_POLICY_NOTIFIER);
|
||||
@@ -170,15 +179,11 @@ int acpi_processor_get_limit_info(struct acpi_processor *pr)
|
||||
return 0;
|
||||
}
|
||||
|
||||
-/* thermal coolign device callbacks */
|
||||
+/* thermal cooling device callbacks */
|
||||
static int acpi_processor_max_state(struct acpi_processor *pr)
|
||||
{
|
||||
int max_state = 0;
|
||||
|
||||
- /*
|
||||
- * There exists four states according to
|
||||
- * cpufreq_thermal_reduction_ptg. 0, 1, 2, 3
|
||||
- */
|
||||
max_state += cpufreq_get_max_state(pr->id);
|
||||
if (pr->flags.throttling)
|
||||
max_state += (pr->throttling.state_count -1);
|
||||
--
|
||||
1.7.6
|
||||
|
@ -39,7 +39,7 @@ CONFIG_TASK_DELAY_ACCT=y
|
||||
CONFIG_TASK_XACCT=y
|
||||
CONFIG_TASK_IO_ACCOUNTING=y
|
||||
CONFIG_SYSCTL=y
|
||||
CONFIG_LOG_BUF_SHIFT=17
|
||||
CONFIG_LOG_BUF_SHIFT=18
|
||||
# CONFIG_IKCONFIG is not set
|
||||
# CONFIG_EMBEDDED is not set
|
||||
# CONFIG_EXPERT is not set
|
||||
|
20
kernel.spec
20
kernel.spec
@ -62,7 +62,7 @@ Summary: The Linux kernel
|
||||
# For non-released -rc kernels, this will be appended after the rcX and
|
||||
# gitX tags, so a 3 here would become part of release "0.rcX.gitX.3"
|
||||
#
|
||||
%global baserelease 2
|
||||
%global baserelease 1
|
||||
%global fedora_build %{baserelease}
|
||||
|
||||
# base_sublevel is the kernel version we're starting with and patching
|
||||
@ -93,9 +93,9 @@ Summary: The Linux kernel
|
||||
# The next upstream release sublevel (base_sublevel+1)
|
||||
%define upstream_sublevel %(echo $((%{base_sublevel} + 1)))
|
||||
# The rc snapshot level
|
||||
%define rcrev 0
|
||||
%define rcrev 1
|
||||
# The git snapshot level
|
||||
%define gitrev 4
|
||||
%define gitrev 0
|
||||
# Set rpm version accordingly
|
||||
%define rpmversion 3.%{upstream_sublevel}.0
|
||||
%endif
|
||||
@ -657,7 +657,6 @@ Patch162: nx-emu-remove-cpuinitdata-for-disable_nx-on-x86_32.patch
|
||||
Patch390: linux-2.6-defaults-acpi-video.patch
|
||||
Patch391: linux-2.6-acpi-video-dos.patch
|
||||
Patch394: linux-2.6-acpi-debug-infinite-loop.patch
|
||||
Patch395: acpi-ensure-thermal-limits-match-cpu-freq.patch
|
||||
Patch396: acpi-sony-nonvs-blacklist.patch
|
||||
|
||||
Patch450: linux-2.6-input-kill-stupid-messages.patch
|
||||
@ -733,9 +732,6 @@ Patch21235: scsi-sd_revalidate_disk-prevent-NULL-ptr-deref.patch
|
||||
|
||||
Patch21260: x86-Avoid-invoking-RCU-when-CPU-is-idle.patch
|
||||
|
||||
#rhbz 727865 730007
|
||||
Patch21300: ACPICA-Fix-regression-in-FADT-revision-checks.patch
|
||||
|
||||
#rhbz 804007
|
||||
Patch21305: mac80211-fix-possible-tid_rx-reorder_timer-use-after-free.patch
|
||||
|
||||
@ -1331,7 +1327,6 @@ ApplyPatch arm-tegra-nvec-kconfig.patch
|
||||
ApplyPatch linux-2.6-defaults-acpi-video.patch
|
||||
ApplyPatch linux-2.6-acpi-video-dos.patch
|
||||
ApplyPatch linux-2.6-acpi-debug-infinite-loop.patch
|
||||
ApplyPatch acpi-ensure-thermal-limits-match-cpu-freq.patch
|
||||
ApplyPatch acpi-sony-nonvs-blacklist.patch
|
||||
|
||||
#
|
||||
@ -1422,9 +1417,6 @@ ApplyPatch power-x86-destdir.patch
|
||||
#rhbz 754518
|
||||
ApplyPatch scsi-sd_revalidate_disk-prevent-NULL-ptr-deref.patch
|
||||
|
||||
#rhbz 727865 730007
|
||||
ApplyPatch ACPICA-Fix-regression-in-FADT-revision-checks.patch
|
||||
|
||||
#rhbz 804007
|
||||
ApplyPatch mac80211-fix-possible-tid_rx-reorder_timer-use-after-free.patch
|
||||
|
||||
@ -2291,6 +2283,12 @@ fi
|
||||
# ||----w |
|
||||
# || ||
|
||||
%changelog
|
||||
* Mon Apr 02 2012 Justin M. Forbes <jforbes@redhat.com> - 3.4.0-0.rc1
|
||||
- Linux v3.4-rc1
|
||||
|
||||
* Fri Mar 30 2012 Justin M. Forbes <jforbes@redhat.com> - 3.4.0-0.rc0.git5.1
|
||||
- Linux v3.3-9295-gf52b69f
|
||||
|
||||
* Thu Mar 29 2012 Justin M. Forbes <jforbes@redhat.com> - 3.4.0-0.rc0.git4.1
|
||||
- Linux v3.3-8839-gb5174fa
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
--- linux-2.6.34.noarch/drivers/acpi/acpica/acconfig.h~ 2010-07-01 14:49:03.000000000 -0400
|
||||
+++ linux-2.6.34.noarch/drivers/acpi/acpica/acconfig.h 2010-07-01 14:49:17.000000000 -0400
|
||||
--- linux-2.6.34.noarch/include/acpi/acconfig.h~ 2010-07-01 14:49:03.000000000 -0400
|
||||
+++ linux-2.6.34.noarch/include/acpi/acconfig.h 2010-07-01 14:49:17.000000000 -0400
|
||||
@@ -117,7 +117,7 @@
|
||||
|
||||
/* Maximum number of While() loop iterations before forced abort */
|
||||
|
@ -4,42 +4,3 @@
|
||||
# Please add the errors from gcc before the diffs to save others having
|
||||
# to do a compile to figure out what your diff is fixing. Thanks.
|
||||
#
|
||||
# ../../lib/rbtree.c:24:26: fatal error: linux/export.h: No such file or directory
|
||||
diff --git a/tools/perf/Makefile b/tools/perf/Makefile
|
||||
index b492e3a..2f42886 100644
|
||||
--- a/tools/perf/Makefile
|
||||
+++ b/tools/perf/Makefile
|
||||
@@ -251,7 +251,7 @@ LIB_H += util/include/linux/const.h
|
||||
LIB_H += util/include/linux/ctype.h
|
||||
LIB_H += util/include/linux/kernel.h
|
||||
LIB_H += util/include/linux/list.h
|
||||
-LIB_H += util/include/linux/module.h
|
||||
+LIB_H += util/include/linux/export.h
|
||||
LIB_H += util/include/linux/poison.h
|
||||
LIB_H += util/include/linux/prefetch.h
|
||||
LIB_H += util/include/linux/rbtree.h
|
||||
diff --git a/tools/perf/util/include/linux/export.h b/tools/perf/util/include/linux/export.h
|
||||
new file mode 100644
|
||||
index 0000000..b43e2dc
|
||||
--- /dev/null
|
||||
+++ b/tools/perf/util/include/linux/export.h
|
||||
@@ -0,0 +1,6 @@
|
||||
+#ifndef PERF_LINUX_MODULE_H
|
||||
+#define PERF_LINUX_MODULE_H
|
||||
+
|
||||
+#define EXPORT_SYMBOL(name)
|
||||
+
|
||||
+#endif
|
||||
diff --git a/tools/perf/util/include/linux/module.h b/tools/perf/util/include/linux/module.h
|
||||
deleted file mode 100644
|
||||
index b43e2dc..0000000
|
||||
--- a/tools/perf/util/include/linux/module.h
|
||||
+++ /dev/null
|
||||
@@ -1,6 +0,0 @@
|
||||
-#ifndef PERF_LINUX_MODULE_H
|
||||
-#define PERF_LINUX_MODULE_H
|
||||
-
|
||||
-#define EXPORT_SYMBOL(name)
|
||||
-
|
||||
-#endif
|
||||
--
|
||||
|
@ -333,9 +333,9 @@ index 4d42300..4cb14a1 100644
|
||||
+#endif /*CONFIG_X86_32*/
|
||||
+
|
||||
tsk->thread.error_code = error_code;
|
||||
tsk->thread.trap_no = 13;
|
||||
tsk->thread.trap_nr = X86_TRAP_GP;
|
||||
|
||||
@@ -650,19 +745,37 @@ do_device_not_available(struct pt_regs *regs, long error_code)
|
||||
@@ -650,20 +745,37 @@ do_device_not_available(struct pt_regs *regs, long error_code)
|
||||
}
|
||||
|
||||
#ifdef CONFIG_X86_32
|
||||
@ -362,10 +362,11 @@ index 4d42300..4cb14a1 100644
|
||||
- info.si_errno = 0;
|
||||
- info.si_code = ILL_BADSTK;
|
||||
- info.si_addr = NULL;
|
||||
- if (notify_die(DIE_TRAP, "iret exception",
|
||||
- regs, error_code, 32, SIGILL) == NOTIFY_STOP)
|
||||
- if (notify_die(DIE_TRAP, "iret exception", regs, error_code,
|
||||
- X86_TRAP_IRET, SIGILL) == NOTIFY_STOP)
|
||||
- return;
|
||||
- do_trap(32, SIGILL, "iret exception", regs, error_code, &info);
|
||||
- do_trap(X86_TRAP_IRET, SIGILL, "iret exception", regs, error_code,
|
||||
- &info);
|
||||
+ cpu = get_cpu();
|
||||
+ ok = check_lazy_exec_limit(cpu, regs, error_code);
|
||||
+ put_cpu();
|
||||
|
Loading…
Reference in New Issue
Block a user