linux 3.4-rc1

This commit is contained in:
Justin M. Forbes 2012-04-02 15:44:23 -05:00
parent 5e9e2f5b16
commit d8c9baa910
8 changed files with 19 additions and 263 deletions

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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 */

View File

@ -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
--

View File

@ -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();

View File

@ -1,2 +1,2 @@
7133f5a2086a7d7ef97abac610c094f5 linux-3.3.tar.xz
60c207c091e934060815826dc6ea08da patch-3.3-git4.xz
ffba5507a7cc555cdbdac58842481d36 patch-3.4-rc1.xz