rpms/kernel/F-8 linux-2.6-acpi-sleep-fix-GPE-suspend-cleanup.patch, NONE, 1.1 linux-2.6-acpi-suspend-wrong-order-of-GPE-restore.patch, NONE, 1.1 linux-2.6-alsa-hda-stac-dmic.patch, NONE, 1.1 linux-2.6-alsa-revert-hda-stac-volume.patch, NONE, 1.1 linux-2.6-alsa.git-000-771af442.patch, NONE, 1.1 linux-2.6-alsa.git-004-ba76a374.patch, NONE, 1.1 linux-2.6-cifs-fix-bad-handling-of-EAGAIN.patch, NONE, 1.1 linux-2.6-cifs-fix-incomplete-rcv.patch, NONE, 1.1 linux-2.6-cifs-typo-in-cifs_reconnect-fix.patch, NONE, 1.1 linux-2.6-dio-fix-cache-invalidation-after-sync-writes.patch, NONE, 1.1 linux-2.6-irq-synchronization.patch, NONE, 1.1 linux-2.6-md-raid5-fix-clearing-of-biofill-operations.patch, NONE, 1.1 linux-2.6-mm-fix-ptrace-access-beyond-vma.patch, NONE, 1.1 linux-2.6-modules-modalias-platform.patch, NONE, 1.1 linux-2.6-netdev-spidernet-fix-interrupt-handling.patch, NONE, 1.1 linux-2.6-params-sysfs-skip-missing-period.patch, NONE, 1.1 linux-2.6-sched-keep-stime-monotonic.patch, NONE, 1.1 linux-2.6-sched-keep-utime-monotonic.patch, NONE, 1.1 linux-2.6-serial_pnp-add-new-wacom-ids.patch, NONE, 1.1 linux-2.6-x86-tsc-calibration-1.patch, NONE, 1.1 linux-2.6-x86-tsc-calibration-2.patch, NONE, 1.1 linux-2.6-x86_64-fix-global_flush_tlb-bug.patch, NONE, 1.1 config-x86_64-generic, 1.13, 1.14 kernel.spec, 1.254, 1.255 linux-2.6-cputime-fix-accounting.patch, 1.1, NONE

Chuck Ebbert (cebbert) fedora-extras-commits at redhat.com
Tue Nov 6 23:43:39 UTC 2007


Author: cebbert

Update of /cvs/pkgs/rpms/kernel/F-8
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv26825

Modified Files:
	config-x86_64-generic kernel.spec 
Added Files:
	linux-2.6-acpi-sleep-fix-GPE-suspend-cleanup.patch 
	linux-2.6-acpi-suspend-wrong-order-of-GPE-restore.patch 
	linux-2.6-alsa-hda-stac-dmic.patch 
	linux-2.6-alsa-revert-hda-stac-volume.patch 
	linux-2.6-alsa.git-000-771af442.patch 
	linux-2.6-alsa.git-004-ba76a374.patch 
	linux-2.6-cifs-fix-bad-handling-of-EAGAIN.patch 
	linux-2.6-cifs-fix-incomplete-rcv.patch 
	linux-2.6-cifs-typo-in-cifs_reconnect-fix.patch 
	linux-2.6-dio-fix-cache-invalidation-after-sync-writes.patch 
	linux-2.6-irq-synchronization.patch 
	linux-2.6-md-raid5-fix-clearing-of-biofill-operations.patch 
	linux-2.6-mm-fix-ptrace-access-beyond-vma.patch 
	linux-2.6-modules-modalias-platform.patch 
	linux-2.6-netdev-spidernet-fix-interrupt-handling.patch 
	linux-2.6-params-sysfs-skip-missing-period.patch 
	linux-2.6-sched-keep-stime-monotonic.patch 
	linux-2.6-sched-keep-utime-monotonic.patch 
	linux-2.6-serial_pnp-add-new-wacom-ids.patch 
	linux-2.6-x86-tsc-calibration-1.patch 
	linux-2.6-x86-tsc-calibration-2.patch 
	linux-2.6-x86_64-fix-global_flush_tlb-bug.patch 
Removed Files:
	linux-2.6-cputime-fix-accounting.patch 
Log Message:
* Tue Nov  6 2007 Chuck Ebbert <cebbert at redhat.com>
- ALSA updates:
   hda: revert STAC92XX volume control changes (#354981)
   hda: add STAC92XX DMIC support
   hda: disable shared stream on AD1986A
   cmipci: fix wrong definitions
- CIFS: fix corruption when server returns EAGAIN (#357001)
- ACPI: suspend/resume fixes
- drivers: restore platform driver modaliases
- x86: fix tsc clocksource calibration
- x86_64: fix global tlb flushing bug
- hidinput: add powerbook driver to x86_64 config (#358721)
- spider_net: fix hang
- mm: fix invalid ptrace access causing kernel hang
- direct-io: fix return of stale data after DIO write
- md/raid5: fix data corruption in some failure cases
- serial: add IDs for some new Wacom tablets (#352811)


linux-2.6-acpi-sleep-fix-GPE-suspend-cleanup.patch:

--- NEW FILE linux-2.6-acpi-sleep-fix-GPE-suspend-cleanup.patch ---
Gitweb:     http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=9c1c6a1ba786d58bd03e27ee49f89a5685e8e07b
Commit:     9c1c6a1ba786d58bd03e27ee49f89a5685e8e07b
Parent:     c9927c2bf4f45bb85e8b502ab3fb79ad6483c244
Author:     Alexey Starikovskiy <astarikovskiy at suse.de>
AuthorDate: Mon Oct 22 14:18:06 2007 +0400
Committer:  Len Brown <len.brown at intel.com>
CommitDate: Thu Oct 25 16:31:30 2007 -0400

    ACPI: sleep: Fix GPE suspend cleanup
    
    Commit 9b039330808b83acac3597535da26f47ad1862ce removed
    acpi_gpe_sleep_prepare(), the only function used at S5 transition
    Add call to generic acpi_enable_wake_device().
    
    Reference: https://bugzilla.novell.com/show_bug.cgi?id=299882
    
    Signed-off-by: Alexey Starikovskiy <astarikovskiy at suse.de>
    Acked-by: Rafael J. Wysocki <rjw at sisk.pl>
    Signed-off-by: Len Brown <len.brown at intel.com>
---
 drivers/acpi/sleep/main.c |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

diff --git a/drivers/acpi/sleep/main.c b/drivers/acpi/sleep/main.c
index f3d3867..2f9d3c1 100644
--- a/drivers/acpi/sleep/main.c
+++ b/drivers/acpi/sleep/main.c
@@ -410,6 +410,7 @@ static void acpi_power_off(void)
 	/* acpi_sleep_prepare(ACPI_STATE_S5) should have already been called */
 	printk("%s called\n", __FUNCTION__);
 	local_irq_disable();
+	acpi_enable_wakeup_device(ACPI_STATE_S5);
 	acpi_enter_sleep_state(ACPI_STATE_S5);
 }
 

linux-2.6-acpi-suspend-wrong-order-of-GPE-restore.patch:

--- NEW FILE linux-2.6-acpi-suspend-wrong-order-of-GPE-restore.patch ---
Gitweb:     http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=1dbc1fda5d8ca907f320b806005d4a447977d26a
Commit:     1dbc1fda5d8ca907f320b806005d4a447977d26a
Parent:     9c1c6a1ba786d58bd03e27ee49f89a5685e8e07b
Author:     Alexey Starikovskiy <astarikovskiy at suse.de>
AuthorDate: Mon Oct 22 14:18:12 2007 +0400
Committer:  Len Brown <len.brown at intel.com>
CommitDate: Thu Oct 25 16:31:30 2007 -0400

    ACPI: suspend: Wrong order of GPE restore.
    
    acpi_leave_sleep_state() should have correct list of wake and
    runtime GPEs, which is available only after disable_wakeup_device()
    is called.
    
    Signed-off-by: Alexey Starikovskiy <astarikovskiy at suse.de>
    Acked-by: Rafael J. Wysocki <rjw at sisk.pl>
    Signed-off-by: Len Brown <len.brown at intel.com>
---
 drivers/acpi/sleep/main.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/acpi/sleep/main.c b/drivers/acpi/sleep/main.c
index 2f9d3c1..2c0b663 100644
--- a/drivers/acpi/sleep/main.c
+++ b/drivers/acpi/sleep/main.c
@@ -167,8 +167,8 @@ static void acpi_pm_finish(void)
 {
 	u32 acpi_state = acpi_target_sleep_state;
 
-	acpi_leave_sleep_state(acpi_state);
 	acpi_disable_wakeup_device(acpi_state);
+	acpi_leave_sleep_state(acpi_state);
 
 	/* reset firmware waking vector */
 	acpi_set_firmware_waking_vector((acpi_physical_address) 0);
@@ -272,8 +272,8 @@ static void acpi_hibernation_finish(void)
 
 static void acpi_hibernation_finish(void)
 {
-	acpi_leave_sleep_state(ACPI_STATE_S4);
 	acpi_disable_wakeup_device(ACPI_STATE_S4);
+	acpi_leave_sleep_state(ACPI_STATE_S4);
 
 	/* reset firmware waking vector */
 	acpi_set_firmware_waking_vector((acpi_physical_address) 0);

linux-2.6-alsa-hda-stac-dmic.patch:

--- NEW FILE linux-2.6-alsa-hda-stac-dmic.patch ---
rollup:

[ALSA] hda-codec - Add STAC9228 DMIC support
[ALSA] hda: Add dmux to STAC 9228
[ALSA] hda: STAC9228 updated DMUX nid
hda: STAC9228 DMIC
     add support for several notebooks with 9228

---
 sound/pci/hda/patch_sigmatel.c |   50 ++++++++++++++++++++++++++++++-----------
 1 file changed, 37 insertions(+), 13 deletions(-)

--- linux-2.6.23.noarch.orig/sound/pci/hda/patch_sigmatel.c
+++ linux-2.6.23.noarch/sound/pci/hda/patch_sigmatel.c
@@ -205,6 +205,11 @@ static hda_nid_t stac927x_mux_nids[3] = 
         0x15, 0x16, 0x17
 };
 
+#define STAC927X_NUM_DMICS 2
+static hda_nid_t stac927x_dmic_nids[STAC927X_NUM_DMICS + 1] = {
+	0x13, 0x14, 0
+};
+
 static hda_nid_t stac9205_adc_nids[2] = {
         0x12, 0x13
 };
@@ -425,6 +430,16 @@ static struct hda_verb stac9205_core_ini
 	{}
 };
 
+#define STAC_DIGITAL_INPUT_SOURCE(cnt) \
+	{ \
+		.iface = SNDRV_CTL_ELEM_IFACE_MIXER, \
+		.name = "Digital Input Source", \
+		.count = cnt, \
+		.info = stac92xx_dmux_enum_info, \
+		.get = stac92xx_dmux_enum_get, \
+		.put = stac92xx_dmux_enum_put,\
+	}
+
 #define STAC_INPUT_SOURCE(cnt) \
 	{ \
 		.iface = SNDRV_CTL_ELEM_IFACE_MIXER, \
@@ -477,14 +492,7 @@ static struct snd_kcontrol_new stac925x_
 };
 
 static struct snd_kcontrol_new stac9205_mixer[] = {
-	{
-		.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
-		.name = "Digital Input Source",
-		.count = 1,
-		.info = stac92xx_dmux_enum_info,
-		.get = stac92xx_dmux_enum_get,
-		.put = stac92xx_dmux_enum_put,
-	},
+	STAC_DIGITAL_INPUT_SOURCE(1),
 	STAC_INPUT_SOURCE(2),
 	STAC_ANALOG_LOOPBACK(0xFE0, 0x7E0),
 	STAC_VOLKNOB(0x24),
@@ -516,6 +524,7 @@ static struct snd_kcontrol_new stac922x_
 
 
 static struct snd_kcontrol_new stac927x_mixer[] = {
+	STAC_DIGITAL_INPUT_SOURCE(1),
 	STAC_INPUT_SOURCE(3),
 	STAC_ANALOG_LOOPBACK(0xFEB, 0x7EB),
 	STAC_VOLKNOB(0x24),
@@ -2743,9 +2752,8 @@ static int patch_stac927x(struct hda_cod
 		spec->adc_nids = stac927x_adc_nids;
 		spec->mux_nids = stac927x_mux_nids;
 		spec->num_muxes = ARRAY_SIZE(stac927x_mux_nids);
 		spec->num_adcs = ARRAY_SIZE(stac927x_adc_nids);
-		spec->num_dmics = 0;
 		spec->init = d965_core_init;
 		spec->mixer = stac927x_mixer;
 		break;
 	case STAC_D965_5ST:
@@ -2752,7 +2760,6 @@ static int patch_stac927x(struct hda_cod
 		spec->mux_nids = stac927x_mux_nids;
 		spec->num_muxes = ARRAY_SIZE(stac927x_mux_nids);
 		spec->num_adcs = ARRAY_SIZE(stac927x_adc_nids);
-		spec->num_dmics = 0;
 		spec->init = d965_core_init;
 		spec->mixer = stac927x_mixer;
 		break;
@@ -2761,14 +2768,31 @@ static int patch_stac927x(struct hda_cod
 		spec->mux_nids = stac927x_mux_nids;
 		spec->num_muxes = ARRAY_SIZE(stac927x_mux_nids);
 		spec->num_adcs = ARRAY_SIZE(stac927x_adc_nids);
-		spec->num_dmics = 0;
 		spec->init = stac927x_core_init;
 		spec->mixer = stac927x_mixer;
 	}
 
+	switch (codec->subsystem_id) {
+	case 0x1028020A: /* STAC 9228 */
+	case 0x10280209: /* STAC 9228 */
+		spec->dmic_nids = stac927x_dmic_nids;
+		spec->num_dmics = STAC927X_NUM_DMICS;
+		spec->dmux_nid = 0x1b;
+
+		/* Enable DMIC0 */
+		stac92xx_set_config_reg(codec, 0x13, 0x90a60040);
+
+		/* GPIO2 High = Enable EAPD */
+		spec->gpio_mask = spec->gpio_data = 0x00000004;
+		break;
+	default:
+		spec->num_dmics = 0;
+
+		/* GPIO0 High = Enable EAPD */
+		spec->gpio_mask = spec->gpio_data = 0x00000001;
+	}
+
 	spec->multiout.dac_nids = spec->dac_nids;
-	/* GPIO0 High = Enable EAPD */
-	spec->gpio_mask = spec->gpio_data = 0x00000001;
 	stac92xx_enable_gpio_mask(codec); 
 	
 	err = stac92xx_parse_auto_config(codec, 0x1e, 0x20);

linux-2.6-alsa-revert-hda-stac-volume.patch:

--- NEW FILE linux-2.6-alsa-revert-hda-stac-volume.patch ---
revert:

[ALSA] hda-codec - make volume knob, the master volume for sigmatel codecs
[ALSA] hda-codec - Fix STAC922x volume knob control
[ALSA] hda-codec - Fix conflict of Master volume in STAC92xx codec

---
 sound/pci/hda/patch_sigmatel.c |   55 -----------------------------------------
 1 file changed, 1 insertion(+), 54 deletions(-)

--- linux-2.6.23.noarch.orig/sound/pci/hda/patch_sigmatel.c
+++ linux-2.6.23.noarch/sound/pci/hda/patch_sigmatel.c
@@ -111,7 +111,6 @@ struct sigmatel_spec {
 	unsigned int alt_switch: 1;
 	unsigned int hp_detect: 1;
 	unsigned int gpio_mute: 1;
-	unsigned int no_vol_knob :1;
 
 	unsigned int gpio_mask, gpio_data;
 
@@ -342,41 +341,6 @@ static int stac92xx_aloopback_put(struct
 	return 1;
 }
 
-static int stac92xx_volknob_info(struct snd_kcontrol *kcontrol,
-	struct snd_ctl_elem_info *uinfo)
-{
-	uinfo->type = SNDRV_CTL_ELEM_TYPE_INTEGER;
-	uinfo->count = 1;
-	uinfo->value.integer.min = 0;
-	uinfo->value.integer.max = 127;
-	return 0;
-}
-
-static int stac92xx_volknob_get(struct snd_kcontrol *kcontrol,
-	struct snd_ctl_elem_value *ucontrol)
-{
-	ucontrol->value.integer.value[0] = kcontrol->private_value & 0xff;
-	return 0;
-}
-
-static int stac92xx_volknob_put(struct snd_kcontrol *kcontrol,
-		struct snd_ctl_elem_value *ucontrol)
-{
-	struct hda_codec *codec = snd_kcontrol_chip(kcontrol);
-	unsigned int val = kcontrol->private_value & 0xff;
-
-	if (val == ucontrol->value.integer.value[0])
-		return 0;
-
-	val = ucontrol->value.integer.value[0];
-	kcontrol->private_value &= ~0xff;
-	kcontrol->private_value |= val;
-
-	snd_hda_codec_write_cache(codec, kcontrol->private_value >> 16, 0,
-		AC_VERB_SET_VOLUME_KNOB_CONTROL, val | 0x80);
-	return 1;
-}
-
 
 static struct hda_verb stac9200_core_init[] = {
 	/* set dac0mux for dac converter */
@@ -446,17 +410,6 @@ static struct hda_verb stac9205_core_ini
 		.private_value = verb_read | (verb_write << 16), \
 	}
 
-#define STAC_VOLKNOB(knob_nid)	\
-	{ \
-		.iface = SNDRV_CTL_ELEM_IFACE_MIXER, \
-		.name  = "Master Playback Volume", \
-		.count = 1, \
-		.info  = stac92xx_volknob_info, \
-		.get   = stac92xx_volknob_get, \
-		.put   = stac92xx_volknob_put, \
-			.private_value = 127 | (knob_nid << 16), \
-	}
-
 
 static struct snd_kcontrol_new stac9200_mixer[] = {
 	HDA_CODEC_VOLUME("Master Playback Volume", 0xb, 0, HDA_OUTPUT),
@@ -487,7 +440,6 @@ static struct snd_kcontrol_new stac9205_
 	},
 	STAC_INPUT_SOURCE(2),
 	STAC_ANALOG_LOOPBACK(0xFE0, 0x7E0),
-	STAC_VOLKNOB(0x24),
 
 	HDA_CODEC_VOLUME_IDX("Capture Volume", 0x0, 0x1b, 0x0, HDA_INPUT),
 	HDA_CODEC_MUTE_IDX("Capture Switch", 0x0, 0x1d, 0x0, HDA_OUTPUT),
@@ -503,7 +455,6 @@ static struct snd_kcontrol_new stac9205_
 /* This needs to be generated dynamically based on sequence */
 static struct snd_kcontrol_new stac922x_mixer[] = {
 	STAC_INPUT_SOURCE(2),
-	STAC_VOLKNOB(0x16),
 	HDA_CODEC_VOLUME_IDX("Capture Volume", 0x0, 0x17, 0x0, HDA_INPUT),
 	HDA_CODEC_MUTE_IDX("Capture Switch", 0x0, 0x17, 0x0, HDA_INPUT),
 	HDA_CODEC_VOLUME_IDX("Mux Capture Volume", 0x0, 0x12, 0x0, HDA_OUTPUT),
@@ -517,7 +468,6 @@ static struct snd_kcontrol_new stac922x_
 
 static struct snd_kcontrol_new stac927x_mixer[] = {
 	STAC_INPUT_SOURCE(3),
-	STAC_VOLKNOB(0x24),
 	STAC_ANALOG_LOOPBACK(0xFEB, 0x7EB),
 
 	HDA_CODEC_VOLUME_IDX("Capture Volume", 0x0, 0x18, 0x0, HDA_INPUT),
@@ -1931,8 +1881,7 @@ static int stac92xx_auto_create_hp_ctls(
 	}
 	if (spec->multiout.hp_nid) {
 		const char *pfx;
-		if (old_num_dacs == spec->multiout.num_dacs &&
-		    spec->no_vol_knob)
+		if (old_num_dacs == spec->multiout.num_dacs)
 			pfx = "Master";
 		else
 			pfx = "Headphone";
@@ -2489,7 +2438,6 @@ static int patch_stac9200(struct hda_cod
 	codec->spec = spec;
 	spec->num_pins = ARRAY_SIZE(stac9200_pin_nids);
 	spec->pin_nids = stac9200_pin_nids;
-	spec->no_vol_knob = 1;
 	spec->board_config = snd_hda_check_board_config(codec, STAC_9200_MODELS,
 							stac9200_models,
 							stac9200_cfg_tbl);
@@ -2544,7 +2492,6 @@ static int patch_stac925x(struct hda_cod
 	codec->spec = spec;
 	spec->num_pins = ARRAY_SIZE(stac925x_pin_nids);
 	spec->pin_nids = stac925x_pin_nids;
-	spec->no_vol_knob = 1;
 	spec->board_config = snd_hda_check_board_config(codec, STAC_925x_MODELS,
 							stac925x_models,
 							stac925x_cfg_tbl);

linux-2.6-alsa.git-000-771af442.patch:

--- NEW FILE linux-2.6-alsa.git-000-771af442.patch ---
From: Takashi Iwai <tiwai at suse.de>
Date: Fri, 26 Oct 2007 10:35:56 +0000 (+0200)
Subject: [ALSA] hda-codec - Disable shared stream on AD1986A
X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Fperex%2Falsa.git;a=commitdiff_plain;h=771af44244ae8a2c1c818bb2669429604c655a89

[ALSA] hda-codec - Disable shared stream on AD1986A

AD1986A has a hardware problem that it cannot share a stream with
multiple pins properly.  The problem occurs e.g. when a volume is changed
during playback.
So far, hda-intel driver unconditionally assigns the stream to multiple
output pins in copy-front mode, and this should be avoided for AD1986A
codec.
The original fix patch was by zhejiang <zhe.jiang at intel.com>.

Signed-off-by: Takashi Iwai <tiwai at suse.de>
Signed-off-by: Jaroslav Kysela <perex at perex.cz>
---

diff --git a/sound/pci/hda/hda_codec.c b/sound/pci/hda/hda_codec.c
index ad4cb38..b52f56f 100644
--- a/sound/pci/hda/hda_codec.c
+++ b/sound/pci/hda/hda_codec.c
@@ -2485,13 +2485,14 @@ int snd_hda_multi_out_analog_prepare(struct hda_codec *codec,
 	/* front */
 	snd_hda_codec_setup_stream(codec, nids[HDA_FRONT], stream_tag,
 				   0, format);
-	if (mout->hp_nid && mout->hp_nid != nids[HDA_FRONT])
+	if (!mout->no_share_stream &&
+	    mout->hp_nid && mout->hp_nid != nids[HDA_FRONT])
 		/* headphone out will just decode front left/right (stereo) */
 		snd_hda_codec_setup_stream(codec, mout->hp_nid, stream_tag,
 					   0, format);
 	/* extra outputs copied from front */
 	for (i = 0; i < ARRAY_SIZE(mout->extra_out_nid); i++)
-		if (mout->extra_out_nid[i])
+		if (!mout->no_share_stream && mout->extra_out_nid[i])
 			snd_hda_codec_setup_stream(codec,
 						   mout->extra_out_nid[i],
 						   stream_tag, 0, format);
@@ -2501,7 +2502,7 @@ int snd_hda_multi_out_analog_prepare(struct hda_codec *codec,
 		if (chs >= (i + 1) * 2) /* independent out */
 			snd_hda_codec_setup_stream(codec, nids[i], stream_tag,
 						   i * 2, format);
-		else /* copy front */
+		else if (!mout->no_share_stream) /* copy front */
 			snd_hda_codec_setup_stream(codec, nids[i], stream_tag,
 						   0, format);
 	}
diff --git a/sound/pci/hda/hda_local.h b/sound/pci/hda/hda_local.h
index 20c5e62..8c56c9c 100644
--- a/sound/pci/hda/hda_local.h
+++ b/sound/pci/hda/hda_local.h
@@ -220,6 +220,7 @@ struct hda_multi_out {
 	hda_nid_t dig_out_nid;	/* digital out audio widget */
 	int max_channels;	/* currently supported analog channels */
 	int dig_out_used;	/* current usage of digital out (HDA_DIG_XXX) */
+	int no_share_stream;	/* don't share a stream with multiple pins */
 };
 
 int snd_hda_multi_out_dig_open(struct hda_codec *codec,
diff --git a/sound/pci/hda/patch_analog.c b/sound/pci/hda/patch_analog.c
index 0ee8ae4..196ad3c 100644
--- a/sound/pci/hda/patch_analog.c
+++ b/sound/pci/hda/patch_analog.c
@@ -957,6 +957,14 @@ static int patch_ad1986a(struct hda_codec *codec)
 		break;
 	}
 
+	/* AD1986A has a hardware problem that it can't share a stream
+	 * with multiple output pins.  The copy of front to surrounds
+	 * causes noisy or silent outputs at a certain timing, e.g.
+	 * changing the volume.
+	 * So, let's disable the shared stream.
+	 */
+	spec->multiout.no_share_stream = 1;
+
 	return 0;
 }
 

linux-2.6-alsa.git-004-ba76a374.patch:

--- NEW FILE linux-2.6-alsa.git-004-ba76a374.patch ---
From: Clemens Ladisch <clemens at ladisch.de>
Date: Tue, 30 Oct 2007 07:59:14 +0000 (+0100)
Subject: [ALSA] cmipci: fix FLINKON/OFF bits
X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Fperex%2Falsa.git;a=commitdiff_plain;h=ba76a374061bc47660f4e93c12049272c76e30f7

[ALSA] cmipci: fix FLINKON/OFF bits

Fix the definitions of the CM_FLINKON/CM_FLINKOFF register bits that
were garbled in the last 'update register definitions' patch.

Signed-off-by: Clemens Ladisch <clemens at ladisch.de>
Signed-off-by: Jaroslav Kysela <perex at perex.cz>
---

diff --git a/sound/pci/cmipci.c b/sound/pci/cmipci.c
index 6832649..1fa5f00 100644
--- a/sound/pci/cmipci.c
+++ b/sound/pci/cmipci.c
@@ -246,10 +246,9 @@ MODULE_PARM_DESC(joystick_port, "Joystick port address.");
 #define CM_MMODE_MASK		0x00000E00	/* model DAA interface mode */
 #define CM_SPDIF_SELECT2	0x00000100	/* for model > 039 ? */
 #define CM_ENCENTER		0x00000080
-#define CM_FLINKON		0x00000080	/* force modem link detection on, model 037 */
+#define CM_FLINKON		0x00000040	/* force modem link detection on, model 037 */
 #define CM_MUTECH1		0x00000040	/* mute PCI ch1 to DAC */
-#define CM_FLINKOFF		0x00000040	/* force modem link detection off, model 037 */
-#define CM_UNKNOWN_18_5		0x00000020	/* ? */
+#define CM_FLINKOFF		0x00000020	/* force modem link detection off, model 037 */
 #define CM_MIDSMP		0x00000010	/* 1/2 interpolation at front end DAC */
 #define CM_UPDDMA_MASK		0x0000000C	/* TDMA position update notification */
 #define CM_UPDDMA_2048		0x00000000

linux-2.6-cifs-fix-bad-handling-of-EAGAIN.patch:

--- NEW FILE linux-2.6-cifs-fix-bad-handling-of-EAGAIN.patch ---
Gitweb:     http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=c18c732ec6bf372aa959ca6534cbfc32e464defd
Commit:     c18c732ec6bf372aa959ca6534cbfc32e464defd
Parent:     adddd49ddf4ce5a5997f0695b194587290ea72e9
Author:     Steve French <sfrench at us.ibm.com>
AuthorDate: Wed Oct 17 18:01:11 2007 +0000
Committer:  Steve French <sfrench at us.ibm.com>
CommitDate: Wed Oct 17 18:01:11 2007 +0000

    [CIFS] fix bad handling of EAGAIN error on kernel_recvmsg in cifs_demultiplex_thread
    
    When kernel_recvmsg returns -EAGAIN or -ERESTARTSYS, then
    cifs_demultiplex_thread sleeps for a bit and then tries the read again.
    When it does this, it's not zeroing out the length and that throws off
    the value of total_read. Fix it to zero out the length.
    
    Can cause memory corruption:
    If kernel_recvmsg returns an error and total_read is a large enough
    value, then we'll end up going through the loop again. total_read will
    be a bogus value, as will (pdu_length-total_read). When this happens we
    end up calling kernel_recvmsg with a bogus value (possibly larger than
    the current iov_len).
    
    At that point, memcpy_toiovec can overrun iov. It will start walking
    up the stack, casting other things that are there to struct iovecs
    (since it assumes that it's been passed an array of them). Any pointer
    on the stack at an address above the kvec is a candidate for corruption
    here.
    
    Many thanks to Ulrich Obergfell for pointing this out.
    
    Signed-off-by: Jeff Layton <jlayton at redhat.com>
    Signed-off-by: Steve French <sfrench at us.ibm.com>
    [cebbert at redhat.com: removed CHANGES patch]
---
 fs/cifs/CHANGES   |    3 ++-
 fs/cifs/connect.c |    6 +++++-
 2 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/fs/cifs/connect.c b/fs/cifs/connect.c
index 494455e..676bbf2 100644
--- a/fs/cifs/connect.c
+++ b/fs/cifs/connect.c
@@ -415,7 +415,10 @@ incomplete_rcv:
 			msleep(1); /* minimum sleep to prevent looping
 				allowing socket to clear and app threads to set
 				tcpStatus CifsNeedReconnect if server hung */
-			continue;
+			if (pdu_length < 4)
+				goto incomplete_rcv;
+			else
+				continue;
 		} else if (length <= 0) {
 			if (server->tcpStatus == CifsNew) {
 				cFYI(1, ("tcp session abend after SMBnegprot"));
@@ -543,6 +546,7 @@ incomplete_rcv:
 					      allowing socket to clear and app
 					      threads to set tcpStatus
 					      CifsNeedReconnect if server hung*/
+				length = 0;
 				continue;
 			} else if (length <= 0) {
 				cERROR(1, ("Received no data, expecting %d",

linux-2.6-cifs-fix-incomplete-rcv.patch:

--- NEW FILE linux-2.6-cifs-fix-incomplete-rcv.patch ---
Gitweb:     http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=f01d5e14e764b14b6bf5512678523d009254b209
Commit:     f01d5e14e764b14b6bf5512678523d009254b209
Parent:     8594c15ad226227aaf178b7cf57f2e7291684dd4
Author:     Steve French <sfrench at us.ibm.com>
AuthorDate: Thu Aug 30 21:13:31 2007 +0000
Committer:  Steve French <sfrench at us.ibm.com>
CommitDate: Thu Aug 30 21:13:31 2007 +0000

    [CIFS] fix for incorrect session reconnects
    
    cifs reconnect could end up happening incorrectly due to
    the small initial tcp recvmsg response. When the socket
    was within three bytes of being full and the recvmsg
    returned only 1 to 3 bytes of the initial 4 byte
    read of the RFC1001 length field. Fortunately this
    seems to be less common on more current kernels, but
    this fixes it so cifs tries to retrieve all 4 bytes
    of the initial tcp read.
    
    Signed-off-by: Shirish Pargoankar <shirishp at us.ibm.com>
    Signed-off-by: Steve French <sfrench at us.ibm.com>
---
 fs/cifs/connect.c |   13 +++++++------
 1 files changed, 7 insertions(+), 6 deletions(-)

diff --git a/fs/cifs/connect.c b/fs/cifs/connect.c
index 4af3588..8af993f 100644
--- a/fs/cifs/connect.c
+++ b/fs/cifs/connect.c
@@ -400,9 +400,11 @@ cifs_demultiplex_thread(struct TCP_Server_Info *server)
 		iov.iov_len = 4;
 		smb_msg.msg_control = NULL;
 		smb_msg.msg_controllen = 0;
+		pdu_length = 4; /* enough to get RFC1001 header */
+incomplete_rcv:
 		length =
 		    kernel_recvmsg(csocket, &smb_msg,
-				 &iov, 1, 4, 0 /* BB see socket.h flags */);
+				&iov, 1, pdu_length, 0 /* BB other flags? */);
 
 		if ( kthread_should_stop() ) {
 			break;
@@ -437,13 +439,12 @@ cifs_demultiplex_thread(struct TCP_Server_Info *server)
 			wake_up(&server->response_q);
 			continue;
 		} else if (length < 4) {
-			cFYI(1,
-			    ("Frame under four bytes received (%d bytes long)",
+			cFYI(1, ("less than four bytes received (%d bytes)",
 			      length));
+			pdu_length -= length;
 			cifs_reconnect(server);
-			csocket = server->ssocket;
-			wake_up(&server->response_q);
-			continue;
+			msleep(1);
+			goto incomplete_rcv;
 		}
 
 		/* The right amount was read from socket - 4 bytes */

linux-2.6-cifs-typo-in-cifs_reconnect-fix.patch:

--- NEW FILE linux-2.6-cifs-typo-in-cifs_reconnect-fix.patch ---
Gitweb:     http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=638b250766272fcaaa0f7ed2776f58f4ac701914
Commit:     638b250766272fcaaa0f7ed2776f58f4ac701914
Parent:     a8cd925f74c3b1b6d1192f9e75f9d12cc2ab148a
Author:     Steve French <sfrench at us.ibm.com>
AuthorDate: Sat Sep 15 02:35:51 2007 +0000
Committer:  Steve French <sfrench at us.ibm.com>
CommitDate: Sat Sep 15 02:35:51 2007 +0000

    [CIFS] typo in earlier cifs_reconnect fix
    
    Signed-off-by: Steve French <sfrench at us.ibm.com>
---
 fs/cifs/connect.c |    1 -
 1 files changed, 0 insertions(+), 1 deletions(-)

diff --git a/fs/cifs/connect.c b/fs/cifs/connect.c
index f58fef5..a83684d 100644
--- a/fs/cifs/connect.c
+++ b/fs/cifs/connect.c
@@ -439,7 +439,6 @@ incomplete_rcv:
 			cFYI(1, ("less than four bytes received (%d bytes)",
 			      length));
 			pdu_length -= length;
-			cifs_reconnect(server);
 			msleep(1);
 			goto incomplete_rcv;
 		}

linux-2.6-dio-fix-cache-invalidation-after-sync-writes.patch:

--- NEW FILE linux-2.6-dio-fix-cache-invalidation-after-sync-writes.patch ---
Gitweb:     http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=bdb76ef5a4bc8676a81034a443f1eda450b4babb
Commit:     bdb76ef5a4bc8676a81034a443f1eda450b4babb
Parent:     e58b7dab272ecee09cd7bafb89d6b224cd17bbe3
Author:     Zach Brown <zach.brown at oracle.com>
AuthorDate: Tue Oct 30 11:45:46 2007 -0700
Committer:  Linus Torvalds <torvalds at woody.linux-foundation.org>
CommitDate: Tue Oct 30 12:14:06 2007 -0700

    dio: fix cache invalidation after sync writes
    
    Commit commit 65b8291c4000e5f38fc94fb2ca0cb7e8683c8a1b ("dio: invalidate
    clean pages before dio write") introduced a bug which stopped dio from
    ever invalidating the page cache after writes.  It still invalidated it
    before writes so most users were fine.
    
    Karl Schendel reported ( http://lkml.org/lkml/2007/10/26/481 ) hitting
    this bug when he had a buffered reader immediately reading file data
    after an O_DIRECT wirter had written the data.  The kernel issued
    read-ahead beyond the position of the reader which overlapped with the
    O_DIRECT writer.  The failure to invalidate after writes caused the
    reader to see stale data from the read-ahead.
    
    The following patch is originally from Karl.  The following commentary
    is his:
    
    	The below 3rd try takes on your suggestion of just invalidating
    	no matter what the retval from the direct_IO call.  I ran it
    	thru the test-case several times and it has worked every time.
    	The post-invalidate is probably still too early for async-directio,
    	but I don't have a testcase for that;  just sync.  And, this
    	won't be any worse in the async case.
    
    I added a test to the aio-dio-regress repository which mimics Karl's IO
    pattern.  It verifed the bad behaviour and that the patch fixed it.  I
    agree with Karl, this still doesn't help the case where a buffered
    reader follows an AIO O_DIRECT writer.  That will require a bit more
    work.
    
    This gives up on the idea of returning EIO to indicate to userspace that
    stale data remains if the invalidation failed.
    
    Signed-off-by: Zach Brown <zach.brown at oracle.com>
    Cc: Karl Schendel <kschendel at datallegro.com>
    Cc: Benjamin LaHaise <bcrl at kvack.org>
    Cc: Andrew Morton <akpm at linux-foundation.org>
    Cc: Nick Piggin <nickpiggin at yahoo.com.au>
    Cc: Leonid Ananiev <leonid.i.ananiev at linux.intel.com>
    Cc: Chris Mason <chris.mason at oracle.com>
    Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
---
 mm/filemap.c |   16 ++++++----------
 1 files changed, 6 insertions(+), 10 deletions(-)

diff --git a/mm/filemap.c b/mm/filemap.c
index 7c86436..9940895 100644
--- a/mm/filemap.c
+++ b/mm/filemap.c
@@ -2511,21 +2511,17 @@ generic_file_direct_IO(int rw, struct kiocb *iocb, const struct iovec *iov,
 	}
 
 	retval = mapping->a_ops->direct_IO(rw, iocb, iov, offset, nr_segs);
-	if (retval)
-		goto out;
 
 	/*
 	 * Finally, try again to invalidate clean pages which might have been
-	 * faulted in by get_user_pages() if the source of the write was an
-	 * mmap()ed region of the file we're writing.  That's a pretty crazy
-	 * thing to do, so we don't support it 100%.  If this invalidation
-	 * fails and we have -EIOCBQUEUED we ignore the failure.
+	 * cached by non-direct readahead, or faulted in by get_user_pages()
+	 * if the source of the write was an mmap'ed region of the file
+	 * we're writing.  Either one is a pretty crazy thing to do,
+	 * so we don't support it 100%.  If this invalidation
+	 * fails, tough, the write still worked...
 	 */
 	if (rw == WRITE && mapping->nrpages) {
-		int err = invalidate_inode_pages2_range(mapping,
-					      offset >> PAGE_CACHE_SHIFT, end);
-		if (err && retval >= 0)
-			retval = err;
+		invalidate_inode_pages2_range(mapping, offset >> PAGE_CACHE_SHIFT, end);
 	}
 out:
 	return retval;

linux-2.6-irq-synchronization.patch:

--- NEW FILE linux-2.6-irq-synchronization.patch ---
Gitweb:     http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=a98ce5c6feead6bfedefabd46cb3d7f5be148d9a
Commit:     a98ce5c6feead6bfedefabd46cb3d7f5be148d9a
Parent:     48d2268473a66fe3aa78fb13b09ee59d6ee95073
Author:     Herbert Xu <herbert at gondor.apana.org.au>
AuthorDate: Tue Oct 23 11:26:25 2007 +0800
Committer:  Linus Torvalds <torvalds at woody.linux-foundation.org>
CommitDate: Tue Oct 23 09:01:31 2007 -0700

    Fix synchronize_irq races with IRQ handler
    
    As it is some callers of synchronize_irq rely on memory barriers
    to provide synchronisation against the IRQ handlers.  For example,
    the tg3 driver does
    
    	tp->irq_sync = 1;
    	smp_mb();
    	synchronize_irq();
    
    and then in the IRQ handler:
    
    	if (!tp->irq_sync)
    		netif_rx_schedule(dev, &tp->napi);
    
    Unfortunately memory barriers only work well when they come in
    pairs.  Because we don't actually have memory barriers on the
    IRQ path, the memory barrier before the synchronize_irq() doesn't
    actually protect us.
    
    In particular, synchronize_irq() may return followed by the
    result of netif_rx_schedule being made visible.
    
    This patch (mostly written by Linus) fixes this by using spin
    locks instead of memory barries on the synchronize_irq() path.
    
    Signed-off-by: Herbert Xu <herbert at gondor.apana.org.au>
    Acked-by: Benjamin Herrenschmidt <benh at kernel.crashing.org>
    Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
---
 kernel/irq/manage.c |   20 ++++++++++++++++++--
 1 files changed, 18 insertions(+), 2 deletions(-)

diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c
index 80eab7a..1f31422 100644
--- a/kernel/irq/manage.c
+++ b/kernel/irq/manage.c
@@ -29,12 +29,28 @@
 void synchronize_irq(unsigned int irq)
 {
 	struct irq_desc *desc = irq_desc + irq;
+	unsigned int status;
 
 	if (irq >= NR_IRQS)
 		return;
 
-	while (desc->status & IRQ_INPROGRESS)
-		cpu_relax();
+	do {
+		unsigned long flags;
+
+		/*
+		 * Wait until we're out of the critical section.  This might
+		 * give the wrong answer due to the lack of memory barriers.
+		 */
+		while (desc->status & IRQ_INPROGRESS)
+			cpu_relax();
+
+		/* Ok, that indicated we're done: double-check carefully. */
+		spin_lock_irqsave(&desc->lock, flags);
+		status = desc->status;
+		spin_unlock_irqrestore(&desc->lock, flags);
+
+		/* Oops, that failed? */
+	} while (status & IRQ_INPROGRESS);
 }
 EXPORT_SYMBOL(synchronize_irq);
 
-

linux-2.6-md-raid5-fix-clearing-of-biofill-operations.patch:

--- NEW FILE linux-2.6-md-raid5-fix-clearing-of-biofill-operations.patch ---
Gitweb:     http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=4ae3f847e49e3787eca91bced31f8fd328d50496
Commit:     4ae3f847e49e3787eca91bced31f8fd328d50496
Parent:     85bfb4da8cad483a4e550ec89060d05a4daf895b
Author:     Dan Williams <dan.j.williams at intel.com>
AuthorDate: Mon Oct 22 20:45:11 2007 -0700
Committer:  Linus Torvalds <torvalds at woody.linux-foundation.org>
CommitDate: Tue Oct 23 08:32:06 2007 -0700

    md: raid5: fix clearing of biofill operations
    
    ops_complete_biofill() runs outside of spin_lock(&sh->lock) and clears the
    'pending' and 'ack' bits.  Since the test_and_ack_op() macro only checks
    against 'complete' it can get an inconsistent snapshot of pending work.
    
    Move the clearing of these bits to handle_stripe5(), under the lock.
    
    Signed-off-by: Dan Williams <dan.j.williams at intel.com>
    Tested-by: Joel Bertrand <joel.bertrand at systella.fr>
    Signed-off-by: Neil Brown <neilb at suse.de>
    Cc: Stable <stable at kernel.org>
    Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
---
 drivers/md/raid5.c |   17 ++++++++++++++---
 1 files changed, 14 insertions(+), 3 deletions(-)

diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c
index 8ee181a..80a67d7 100644
--- a/drivers/md/raid5.c
+++ b/drivers/md/raid5.c
@@ -376,7 +376,12 @@ static unsigned long get_stripe_work(struct stripe_head *sh)
 		ack++;
 
 	sh->ops.count -= ack;
-	BUG_ON(sh->ops.count < 0);
+	if (unlikely(sh->ops.count < 0)) {
+		printk(KERN_ERR "pending: %#lx ops.pending: %#lx ops.ack: %#lx "
+			"ops.complete: %#lx\n", pending, sh->ops.pending,
+			sh->ops.ack, sh->ops.complete);
+		BUG();
+	}
 
 	return pending;
 }
@@ -550,8 +555,7 @@ static void ops_complete_biofill(void *stripe_head_ref)
 			}
 		}
 	}
-	clear_bit(STRIPE_OP_BIOFILL, &sh->ops.ack);
-	clear_bit(STRIPE_OP_BIOFILL, &sh->ops.pending);
+	set_bit(STRIPE_OP_BIOFILL, &sh->ops.complete);
 
 	return_io(return_bi);
 
@@ -2893,6 +2897,13 @@ static void handle_stripe6(struct stripe_head *sh, struct page *tmp_page)
 	s.expanded = test_bit(STRIPE_EXPAND_READY, &sh->state);
 	/* Now to look around and see what can be done */
 
+	/* clean-up completed biofill operations */
+	if (test_bit(STRIPE_OP_BIOFILL, &sh->ops.complete)) {
+		clear_bit(STRIPE_OP_BIOFILL, &sh->ops.pending);
+		clear_bit(STRIPE_OP_BIOFILL, &sh->ops.ack);
+		clear_bit(STRIPE_OP_BIOFILL, &sh->ops.complete);
+	}
+
 	rcu_read_lock();
 	for (i=disks; i--; ) {
 		mdk_rdev_t *rdev;
-

linux-2.6-mm-fix-ptrace-access-beyond-vma.patch:

--- NEW FILE linux-2.6-mm-fix-ptrace-access-beyond-vma.patch ---
Duane Griffin noticed a 2.6.23 regression that will cause gdb to hang when
it tries to access the memory of another process beyond i_size.

This is because the solution to the fault vs invalidate race requires that
we recheck i_size after the page lock is taken. However in that case, I
had not accounted for the fact that ptracers are granted an exception to this
rule.

Cc: Duane Griffin <duaneg at dghda.com>
Cc: stable at kernel.org
Signed-off-by: Nick Piggin <npiggin at suse.de
---
Index: linux-2.6/mm/filemap.c
===================================================================
--- linux-2.6.orig/mm/filemap.c
+++ linux-2.6/mm/filemap.c
@@ -1374,7 +1374,7 @@ retry_find:
 
 	/* Must recheck i_size under page lock */
 	size = (i_size_read(inode) + PAGE_CACHE_SIZE - 1) >> PAGE_CACHE_SHIFT;
-	if (unlikely(vmf->pgoff >= size)) {
+	if (unlikely(vmf->pgoff >= size) && vma->vm_mm == current->mm) {
 		unlock_page(page);
 		page_cache_release(page);
 		goto outside_data_content;

linux-2.6-modules-modalias-platform.patch:

--- NEW FILE linux-2.6-modules-modalias-platform.patch ---
From: Kay Sievers <kay.sievers at vrfy.org>
Date: Sat, 18 Aug 2007 02:40:39 +0000 (+0200)
Subject: platform: prefix MODALIAS with "platform:"
X-Git-Tag: v2.6.24-rc1~1394^2~74
X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Ftorvalds%2Flinux-2.6.git;a=commitdiff_plain;h=43cc71eed1250755986da4c0f9898f9a635cb3bf

platform: prefix MODALIAS with "platform:"

Prefix platform modalias strings with "platform:", which
modprobe config to blacklist alias resolving if userspace
configures it.

Send uevents for all platform devices.

Add MODULE_ALIAS's to: pxa2xx_pcmcia, ds1742 and pcspkr to trigger
module autoloading by userspace.

  $ modinfo pcspkr
  alias:          platform:pcspkr
  license:        GPL
  description:    PC Speaker beeper driver
  ...

  $ modprobe -n -v platform:pcspkr
  insmod /lib/modules/2.6.23-rc3-g28e8351a-dirty/kernel/drivers/input/misc/pcspkr.ko

Signed-off-by: Kay Sievers <kay.sievers at vrfy.org>
Cc: David Brownell <david-b at pacbell.net>
Cc: Atsushi Nemoto <anemo at mba.ocn.ne.jp>
Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
---

diff --git a/drivers/base/platform.c b/drivers/base/platform.c
index 869ff8c..9bfc434 100644
--- a/drivers/base/platform.c
+++ b/drivers/base/platform.c
@@ -160,11 +160,6 @@ static void platform_device_release(struct device *dev)
  *
  *	Create a platform device object which can have other objects attached
  *	to it, and which will have attached objects freed when it is released.
- *
- *	This device will be marked as not supporting hotpluggable drivers; no
- *	device add/remove uevents will be generated.  In the unusual case that
- *	the device isn't being dynamically allocated as a legacy "probe the
- *	hardware" driver, infrastructure code should reverse this marking.
  */
 struct platform_device *platform_device_alloc(const char *name, unsigned int id)
 {
@@ -177,12 +172,6 @@ struct platform_device *platform_device_alloc(const char *name, unsigned int id)
 		pa->pdev.id = id;
 		device_initialize(&pa->pdev.dev);
 		pa->pdev.dev.release = platform_device_release;
-
-		/* prevent hotplug "modprobe $(MODALIAS)" from causing trouble in
-		 * legacy probe-the-hardware drivers, which don't properly split
-		 * out device enumeration logic from drivers.
-		 */
-		pa->pdev.dev.uevent_suppress = 1;
 	}
 
 	return pa ? &pa->pdev : NULL;
@@ -530,7 +519,7 @@ static ssize_t
 modalias_show(struct device *dev, struct device_attribute *a, char *buf)
 {
 	struct platform_device	*pdev = to_platform_device(dev);
-	int len = snprintf(buf, PAGE_SIZE, "%s\n", pdev->name);
+	int len = snprintf(buf, PAGE_SIZE, "platform:%s\n", pdev->name);
 
 	return (len >= PAGE_SIZE) ? (PAGE_SIZE - 1) : len;
 }
@@ -546,7 +535,7 @@ static int platform_uevent(struct device *dev, char **envp, int num_envp,
 	struct platform_device	*pdev = to_platform_device(dev);
 
 	envp[0] = buffer;
-	snprintf(buffer, buffer_size, "MODALIAS=%s", pdev->name);
+	snprintf(buffer, buffer_size, "MODALIAS=platform:%s", pdev->name);
 	return 0;
 }
 
diff --git a/drivers/input/misc/pcspkr.c b/drivers/input/misc/pcspkr.c
index 906bf5e..e1a4402 100644
--- a/drivers/input/misc/pcspkr.c
+++ b/drivers/input/misc/pcspkr.c
@@ -23,6 +23,7 @@
 MODULE_AUTHOR("Vojtech Pavlik <vojtech at ucw.cz>");
 MODULE_DESCRIPTION("PC Speaker beeper driver");
 MODULE_LICENSE("GPL");
+MODULE_ALIAS("platform:pcspkr");
 
 #ifdef CONFIG_X86
 /* Use the global PIT lock ! */
diff --git a/drivers/pcmcia/pxa2xx_mainstone.c b/drivers/pcmcia/pxa2xx_mainstone.c
index 383107b..f6722ba 100644
--- a/drivers/pcmcia/pxa2xx_mainstone.c
+++ b/drivers/pcmcia/pxa2xx_mainstone.c
@@ -175,7 +175,6 @@ static int __init mst_pcmcia_init(void)
 	if (!mst_pcmcia_device)
 		return -ENOMEM;
 
-	mst_pcmcia_device->dev.uevent_suppress = 0;
 	mst_pcmcia_device->dev.platform_data = &mst_pcmcia_ops;
 
 	ret = platform_device_add(mst_pcmcia_device);
@@ -195,3 +194,4 @@ fs_initcall(mst_pcmcia_init);
 module_exit(mst_pcmcia_exit);
 
 MODULE_LICENSE("GPL");
+MODULE_ALIAS("platform:pxa2xx-pcmcia");
diff --git a/drivers/pcmcia/pxa2xx_sharpsl.c b/drivers/pcmcia/pxa2xx_sharpsl.c
index a2daa3f..d5c33bd 100644
--- a/drivers/pcmcia/pxa2xx_sharpsl.c
+++ b/drivers/pcmcia/pxa2xx_sharpsl.c
@@ -261,7 +261,6 @@ static int __init sharpsl_pcmcia_init(void)
 	if (!sharpsl_pcmcia_device)
 		return -ENOMEM;
 
-	sharpsl_pcmcia_device->dev.uevent_suppress = 0;
 	sharpsl_pcmcia_device->dev.platform_data = &sharpsl_pcmcia_ops;
 	sharpsl_pcmcia_device->dev.parent = platform_scoop_config->devs[0].dev;
 
@@ -284,3 +283,4 @@ module_exit(sharpsl_pcmcia_exit);
 
 MODULE_DESCRIPTION("Sharp SL Series PCMCIA Support");
 MODULE_LICENSE("GPL");
+MODULE_ALIAS("platform:pxa2xx-pcmcia");

linux-2.6-netdev-spidernet-fix-interrupt-handling.patch:

--- NEW FILE linux-2.6-netdev-spidernet-fix-interrupt-handling.patch ---
>From kou.ishizaki at toshiba.co.jp Wed Aug 22 10:27:57 2007
From: Ishizaki Kou <kou.ishizaki at toshiba.co.jp>
Subject: spidernet: enable poll() before registering interrupts
Date: Wed, 22 Aug 2007 10:27:57 +1000
X-Patchwork-ID: 13049

We must not call netif_poll_enable after enabling interrupts,
because an interrupt might come in and set the __LINK_STATE_RX_SCHED
bit before we get to clear that bit again. If that happens,
the next call to the ->poll() function will oops.

Signed-off-by: Arnd Bergmann <arnd.bergmann at de.ibm.com>
Signed-off-by: Kou Ishizaki <kou.ishizaki at toshiba.co.jp>
---

I refreshed Arnd-san's patch.


---
Index: linux-powerpc-git/drivers/net/spider_net.c
===================================================================
--- linux-powerpc-git.orig/drivers/net/spider_net.c	2007-08-21 16:58:44.000000000 +0900
+++ linux-powerpc-git/drivers/net/spider_net.c	2007-08-21 17:11:07.000000000 +0900
@@ -2030,6 +2030,7 @@ spider_net_open(struct net_device *netde
 	/* further enhancement: setup hw vlan, if needed */
 
 	result = -EBUSY;
+	netif_poll_enable(netdev);
 	if (request_irq(netdev->irq, spider_net_interrupt,
 			     IRQF_SHARED, netdev->name, netdev))
 		goto register_int_failed;
@@ -2038,13 +2039,13 @@ spider_net_open(struct net_device *netde
 
 	netif_start_queue(netdev);
 	netif_carrier_on(netdev);
-	netif_poll_enable(netdev);
 
 	spider_net_enable_interrupts(card);
 
 	return 0;
 
 register_int_failed:
+	netif_poll_disable(netdev);
 	spider_net_free_rx_chain_contents(card);
 alloc_skbs_failed:
 	spider_net_free_chain(card, &card->rx_chain);


linux-2.6-params-sysfs-skip-missing-period.patch:

--- NEW FILE linux-2.6-params-sysfs-skip-missing-period.patch ---
From: Dave Young <hidave.darkstar at gmail.com>
Date: Thu, 18 Oct 2007 10:05:07 +0000 (-0700)
Subject: param_sysfs_builtin memchr argument fix
X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Ftorvalds%2Flinux-2.6.git;a=commitdiff_plain;h=faf8c714f4508207a9c81cc94dafc76ed6680b44

param_sysfs_builtin memchr argument fix

If memchr argument is longer than strlen(kp->name), there will be some
weird result.

It will casuse duplicate filenames in sysfs for the "nousb".  kernel
warning messages are as bellow:

sysfs: duplicate filename 'usbcore' can not be created
WARNING: at fs/sysfs/dir.c:416 sysfs_add_one()
 [<c01c4750>] sysfs_add_one+0xa0/0xe0
 [<c01c4ab8>] create_dir+0x48/0xb0
 [<c01c4b69>] sysfs_create_dir+0x29/0x50
 [<c024e0fb>] create_dir+0x1b/0x50
 [<c024e3b6>] kobject_add+0x46/0x150
 [<c024e2da>] kobject_init+0x3a/0x80
 [<c053b880>] kernel_param_sysfs_setup+0x50/0xb0
 [<c053b9ce>] param_sysfs_builtin+0xee/0x130
 [<c053ba33>] param_sysfs_init+0x23/0x60
 [<c024d062>] __next_cpu+0x12/0x20
 [<c052aa30>] kernel_init+0x0/0xb0
 [<c052aa30>] kernel_init+0x0/0xb0
 [<c052a856>] do_initcalls+0x46/0x1e0
 [<c01bdb12>] create_proc_entry+0x52/0x90
 [<c0158d4c>] register_irq_proc+0x9c/0xc0
 [<c01bda94>] proc_mkdir_mode+0x34/0x50
 [<c052aa30>] kernel_init+0x0/0xb0
 [<c052aa92>] kernel_init+0x62/0xb0
 [<c0104f83>] kernel_thread_helper+0x7/0x14
 =======================
kobject_add failed for usbcore with -EEXIST, don't try to register things with the same name in the same directory.
 [<c024e466>] kobject_add+0xf6/0x150
 [<c053b880>] kernel_param_sysfs_setup+0x50/0xb0
 [<c053b9ce>] param_sysfs_builtin+0xee/0x130
 [<c053ba33>] param_sysfs_init+0x23/0x60
 [<c024d062>] __next_cpu+0x12/0x20
 [<c052aa30>] kernel_init+0x0/0xb0
 [<c052aa30>] kernel_init+0x0/0xb0
 [<c052a856>] do_initcalls+0x46/0x1e0
 [<c01bdb12>] create_proc_entry+0x52/0x90
 [<c0158d4c>] register_irq_proc+0x9c/0xc0
 [<c01bda94>] proc_mkdir_mode+0x34/0x50
 [<c052aa30>] kernel_init+0x0/0xb0
 [<c052aa92>] kernel_init+0x62/0xb0
 [<c0104f83>] kernel_thread_helper+0x7/0x14
 =======================
Module 'usbcore' failed to be added to sysfs, error number -17
The system will be unstable now.

Signed-off-by: Dave Young <hidave.darkstar at gmail.com>
Cc: Greg KH <greg at kroah.com>
Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
---

bz 242715

diff --git a/kernel/params.c b/kernel/params.c
index 1d6aca2..16f269e 100644
--- a/kernel/params.c
+++ b/kernel/params.c
@@ -592,11 +592,17 @@ static void __init param_sysfs_builtin(void)
 
 	for (i=0; i < __stop___param - __start___param; i++) {
 		char *dot;
+		size_t kplen;
 
 		kp = &__start___param[i];
+		kplen = strlen(kp->name);
 
 		/* We do not handle args without periods. */
-		dot = memchr(kp->name, '.', MAX_KBUILD_MODNAME);
+		if (kplen > MAX_KBUILD_MODNAME) {
+			DEBUGP("kernel parameter name is too long: %s\n", kp->name);
+			continue;
+		}
+		dot = memchr(kp->name, '.', kplen);
 		if (!dot) {
 			DEBUGP("couldn't find period in %s\n", kp->name);
 			continue;

linux-2.6-sched-keep-stime-monotonic.patch:

--- NEW FILE linux-2.6-sched-keep-stime-monotonic.patch ---
Gitweb:     http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=9301899be75b464ef097f0b5af7af6d9bd8f68a7
Commit:     9301899be75b464ef097f0b5af7af6d9bd8f68a7
Parent:     82798a17ad40df827d465329a20ace80497f9b32
Author:     Balbir Singh <balbir at linux.vnet.ibm.com>
AuthorDate: Tue Oct 30 00:26:32 2007 +0100
Committer:  Ingo Molnar <mingo at elte.hu>
CommitDate: Tue Oct 30 00:26:32 2007 +0100

    sched: fix /proc/<PID>/stat stime/utime monotonicity, part 2
    
    Extend Peter's patch to fix accounting issues, by keeping stime
    monotonic too.
    
    Signed-off-by: Balbir Singh <balbir at linux.vnet.ibm.com>
    Signed-off-by: Ingo Molnar <mingo at elte.hu>
    Tested-by: Frans Pop <elendil at planet.nl>
---
 fs/proc/array.c       |    3 ++-
 include/linux/sched.h |    2 +-
 kernel/fork.c         |    1 +
 3 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/fs/proc/array.c b/fs/proc/array.c
index d80baaa..eba339e 100644
--- a/fs/proc/array.c
+++ b/fs/proc/array.c
@@ -374,7 +374,8 @@ static cputime_t task_stime(struct task_struct *p)
 	stime = nsec_to_clock_t(p->se.sum_exec_runtime) -
 			cputime_to_clock_t(task_utime(p));
 
-	return clock_t_to_cputime(stime);
+	p->prev_stime = max(p->prev_stime, clock_t_to_cputime(stime));
+	return p->prev_stime;
 }
 #endif
 
diff --git a/include/linux/sched.h b/include/linux/sched.h
index b0b1fe6..155d743 100644
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
@@ -1009,7 +1009,7 @@ struct task_struct {
 
 	unsigned int rt_priority;
 	cputime_t utime, stime;
-	cputime_t prev_utime;
+	cputime_t prev_utime, prev_stime;
 	unsigned long nvcsw, nivcsw; /* context switch counts */
 	struct timespec start_time; 		/* monotonic time */
 	struct timespec real_start_time;	/* boot based time */
diff --git a/kernel/fork.c b/kernel/fork.c
index a65bfc4..28a7401 100644
--- a/kernel/fork.c
+++ b/kernel/fork.c
@@ -1057,6 +1057,7 @@ static struct task_struct *copy_process(unsigned long clone_flags,
 	p->utime = cputime_zero;
 	p->stime = cputime_zero;
 	p->prev_utime = cputime_zero;
+	p->prev_stime = cputime_zero;
 
 #ifdef CONFIG_TASK_XACCT
 	p->rchar = 0;		/* I/O counter: bytes read */

linux-2.6-sched-keep-utime-monotonic.patch:

--- NEW FILE linux-2.6-sched-keep-utime-monotonic.patch ---
Gitweb:     http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=73a2bcb0edb9ffb0b007b3546b430e2c6e415eee
Commit:     73a2bcb0edb9ffb0b007b3546b430e2c6e415eee
Parent:     f7402e0361d4472535e07cfca648f2fa81d85cd2
Author:     Peter Zijlstra <a.p.zijlstra at chello.nl>
AuthorDate: Mon Oct 29 21:18:11 2007 +0100
Committer:  Ingo Molnar <mingo at elte.hu>
CommitDate: Mon Oct 29 21:18:11 2007 +0100

    sched: keep utime/stime monotonic
    
    keep utime/stime monotonic.
    
    cpustats use utime/stime as a ratio against sum_exec_runtime, as a
    consequence it can happen - when the ratio changes faster than time
    accumulates - that either can be appear to go backwards.
    
    Signed-off-by: Peter Zijlstra <a.p.zijlstra at chello.nl>
    Signed-off-by: Ingo Molnar <mingo at elte.hu>
---
 fs/proc/array.c       |    3 ++-
 include/linux/sched.h |    1 +
 kernel/fork.c         |    1 +
 3 files changed, 4 insertions(+), 1 deletions(-)

diff --git a/fs/proc/array.c b/fs/proc/array.c
index 63c95af..d80baaa 100644
--- a/fs/proc/array.c
+++ b/fs/proc/array.c
@@ -358,7 +358,8 @@ static cputime_t task_utime(struct task_struct *p)
 	}
 	utime = (clock_t)temp;
 
-	return clock_t_to_cputime(utime);
+	p->prev_utime = max(p->prev_utime, clock_t_to_cputime(utime));
+	return p->prev_utime;
 }
 
 static cputime_t task_stime(struct task_struct *p)
diff --git a/include/linux/sched.h b/include/linux/sched.h
index 3c07d59..b0b1fe6 100644
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
@@ -1009,6 +1009,7 @@ struct task_struct {
 
 	unsigned int rt_priority;
 	cputime_t utime, stime;
+	cputime_t prev_utime;
 	unsigned long nvcsw, nivcsw; /* context switch counts */
 	struct timespec start_time; 		/* monotonic time */
 	struct timespec real_start_time;	/* boot based time */
diff --git a/kernel/fork.c b/kernel/fork.c
index ddafdfa..a65bfc4 100644
--- a/kernel/fork.c
+++ b/kernel/fork.c
@@ -1056,6 +1056,7 @@ static struct task_struct *copy_process(unsigned long clone_flags,
 
 	p->utime = cputime_zero;
 	p->stime = cputime_zero;
+	p->prev_utime = cputime_zero;
 
 #ifdef CONFIG_TASK_XACCT
 	p->rchar = 0;		/* I/O counter: bytes read */

linux-2.6-serial_pnp-add-new-wacom-ids.patch:

--- NEW FILE linux-2.6-serial_pnp-add-new-wacom-ids.patch ---

# HG changeset patch
# User Maik Broemme <mbroemme at plusserver.de>
# Date 1192552970 25200
# Node ID 4bf08ed71375ff2b6d0c287680af52783f3f1d56
# Parent 456cc6637cbe404fdfe63e3ef16523bfdb1438b0
Add support for Wacom WACF007 and WACF008 to serial pnp driver

Notebook manufacturer seems to built a newer Wacom pen enabled tablet to
recent tablet pcs which are not recognized by the serial pnp driver.

Attached is a patch which makes the newer Wacom WACF007 and WACF008 tablets
useable with the serial driver.  The device is fully compatible with it.

Signed-off-by: Maik Broemme <mbroemme at plusserver.de>
Cc: Andrey Panin <pazke at orbita1.ru>
Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>

committer: Linus Torvalds <torvalds at woody.linux-foundation.org>

--- a/drivers/serial/8250_pnp.c	Tue Oct 16 09:42:50 2007 -0700
+++ b/drivers/serial/8250_pnp.c	Tue Oct 16 09:42:50 2007 -0700
@@ -327,6 +327,8 @@ static const struct pnp_device_id pnp_de
 	{	"WACF004",		0	},
 	{	"WACF005",		0	},
 	{       "WACF006",              0       },
+	{       "WACF007",              0       },
+	{       "WACF008",              0       },
 	/* Compaq touchscreen */
 	{       "FPI2002",              0 },
 	/* Fujitsu Stylistic touchscreens */


linux-2.6-x86-tsc-calibration-1.patch:

--- NEW FILE linux-2.6-x86-tsc-calibration-1.patch ---
Gitweb:     http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=edaf420fdc122e7a42326fe39274c8b8c9b19d41
Commit:     edaf420fdc122e7a42326fe39274c8b8c9b19d41
Parent:     418ccbe37f70f5021c4cd1cdcb0ce7f98d05f2dd
Author:     Dave Johnson <djohnson at sw.starentnetworks.com>
AuthorDate: Tue Oct 23 22:37:22 2007 +0200
Committer:  Thomas Gleixner <tglx at linutronix.de>
CommitDate: Tue Oct 23 22:37:22 2007 +0200

    x86: fix TSC clock source calibration error
    
    I ran into this problem on a system that was unable to obtain NTP sync
    because the clock was running very slow (over 10000ppm slow). ntpd had
    declared all of its peers 'reject' with 'peer_dist' reason.
    
    On investigation, the tsc_khz variable was significantly incorrect
    causing xtime to run slow.  After a reboot tsc_khz was correct so I
    did a reboot test to see how often the problem occurred:
    
    Test was done on a 2000 Mhz Xeon system.  Of 689 reboots, 8 of them
    had unacceptable tsc_khz values (>500ppm):
    
     range of tsc_khz  # of boots  % of boots
     ----------------  ----------  ----------
            < 1999750           0      0.000%
    1999750 - 1999800          21      3.048%
    1999800 - 1999850         166     24.128%
    1999850 - 1999900         241     35.029%
    1999900 - 1999950         211     30.669%
    1999950 - 2000000          42      6.105%
    2000000 - 2000000           0      0.000%
    2000050 - 2000100           0      0.000%
                       [...]
    2000100 - 2015000           1      0.145%  << BAD
    2015000 - 2030000           6      0.872%  << BAD
    2030000 - 2045000           1      0.145%  << BAD
    2045000 <                   0      0.000%
    
    The worst boot was 2032.577 Mhz, over 1.5% off!
    
    It appears that on rare occasions, mach_countup() is taking longer to
    complete than necessary.
    
    I suspect that this is caused by the CPU taking a periodic SMI
    interrupt right at the end of the 30ms calibration loop.  This would
    cause the loop to delay while the SMI BIOS hander runs. The resulting
    TSC value is beyond what it actually should be resulting in a higher
    tsc_khz.
    
    The below patch makes native_calculate_cpu_khz() take the best
    (shortest duration, lowest khz) run of it's 3 calibration loops.  If a
    SMI goes off causing a bad result (long duration, higher khz) it will
    be discarded.
    
    With the patch applied, 300 boots of the same system produce good
    results:
    
     range of tsc_khz  # of boots  % of boots
     ----------------  ----------  ----------
            < 1999750           0      0.000%
    1999750 - 1999800          30     10.000%
    1999800 - 1999850         166     55.333%
    1999850 - 1999900          89     29.667%
    1999900 - 1999950          15      5.000%
    1999950 <                   0      0.000%
    
    Problem was found and tested against 2.6.18.  Patch is against 2.6.22.
    
    Signed-off-by: Dave Johnson <djohnson at sw.starentnetworks.com>
    Signed-off-by: Ingo Molnar <mingo at elte.hu>
    Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
---
 arch/x86/kernel/tsc_32.c |    5 ++---
 1 files changed, 2 insertions(+), 3 deletions(-)

diff --git a/arch/x86/kernel/tsc_32.c b/arch/x86/kernel/tsc_32.c
index d78444c..f04d08a 100644
--- a/arch/i386/kernel/tsc.c
+++ b/arch/i386/kernel/tsc.c
@@ -131,7 +131,7 @@ unsigned long native_calculate_cpu_khz(void)
 {
 	unsigned long long start, end;
 	unsigned long count;
-	u64 delta64;
+	u64 delta64 = (u64)ULLONG_MAX;
 	int i;
 	unsigned long flags;
 
@@ -143,6 +143,7 @@ unsigned long native_calculate_cpu_khz(void)
 		rdtscll(start);
 		mach_countup(&count);
 		rdtscll(end);
+		delta64 = min(delta64, (end - start));
 	}
 	/*
 	 * Error: ECTCNEVERSET
@@ -153,8 +154,6 @@ unsigned long native_calculate_cpu_khz(void)
 	if (count <= 1)
 		goto err;
 
-	delta64 = end - start;
-
 	/* cpu freq too fast: */
 	if (delta64 > (1ULL<<32))
 		goto err;
-

linux-2.6-x86-tsc-calibration-2.patch:

--- NEW FILE linux-2.6-x86-tsc-calibration-2.patch ---
Gitweb:     http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=8c660065383976f09fbdae86c33448c8da643d4e
Commit:     8c660065383976f09fbdae86c33448c8da643d4e
Parent:     edaf420fdc122e7a42326fe39274c8b8c9b19d41
Author:     Dave Johnson <djohnson at sw.starentnetworks.com>
AuthorDate: Tue Oct 23 22:37:22 2007 +0200
Committer:  Thomas Gleixner <tglx at linutronix.de>
CommitDate: Tue Oct 23 22:37:22 2007 +0200

    x86: fix more TSC clock source calibration errors
    
    The previous patch wasn't correctly handling the 'count' variable.  If
    a CPU gave bad results on the 1st or 2nd run but good results on the
    3rd, it wouldn't do the correct thing.  No idea if any such CPU
    exists, but the patch below handles that case by discarding the bad
    runs.
    
    If a bad result (too quick, or too slow) occurs on any of the 3 runs
    it will be discarded.
    
    Also updated some comments to explain what's going on.
    
    Signed-off-by: Dave Johnson <djohnson at sw.starentnetworks.com>
    Signed-off-by: Ingo Molnar <mingo at elte.hu>
    Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
---
 arch/x86/kernel/tsc_32.c |   34 ++++++++++++++++++++--------------
 1 files changed, 20 insertions(+), 14 deletions(-)

diff --git a/arch/x86/kernel/tsc_32.c b/arch/x86/kernel/tsc_32.c
index f04d08a..9ebc0da 100644
--- a/arch/i386/kernel/tsc.c
+++ b/arch/i386/kernel/tsc.c
@@ -137,31 +137,37 @@ unsigned long native_calculate_cpu_khz(void)
 
 	local_irq_save(flags);
 
-	/* run 3 times to ensure the cache is warm */
+	/* run 3 times to ensure the cache is warm and to get an accurate reading */
 	for (i = 0; i < 3; i++) {
 		mach_prepare_counter();
 		rdtscll(start);
 		mach_countup(&count);
 		rdtscll(end);
+
+		/*
+		 * Error: ECTCNEVERSET
+		 * The CTC wasn't reliable: we got a hit on the very first read,
+		 * or the CPU was so fast/slow that the quotient wouldn't fit in
+		 * 32 bits..
+		 */
+		if (count <= 1)
+			continue;
+
+		/* cpu freq too slow: */
+		if ((end - start) <= CALIBRATE_TIME_MSEC)
+			continue;
+
+		/*
+		 * We want the minimum time of all runs in case one of them
+		 * is inaccurate due to SMI or other delay
+		 */
 		delta64 = min(delta64, (end - start));
 	}
-	/*
-	 * Error: ECTCNEVERSET
-	 * The CTC wasn't reliable: we got a hit on the very first read,
-	 * or the CPU was so fast/slow that the quotient wouldn't fit in
-	 * 32 bits..
-	 */
-	if (count <= 1)
-		goto err;
 
-	/* cpu freq too fast: */
+	/* cpu freq too fast (or every run was bad): */
 	if (delta64 > (1ULL<<32))
 		goto err;
 
-	/* cpu freq too slow: */
-	if (delta64 <= CALIBRATE_TIME_MSEC)
-		goto err;
-
 	delta64 += CALIBRATE_TIME_MSEC/2; /* round for do_div */
 	do_div(delta64,CALIBRATE_TIME_MSEC);
 
-

linux-2.6-x86_64-fix-global_flush_tlb-bug.patch:

--- NEW FILE linux-2.6-x86_64-fix-global_flush_tlb-bug.patch ---
Gitweb:     http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=9a24d04a3c26c223f22493492c5c9085b8773d4a
Commit:     9a24d04a3c26c223f22493492c5c9085b8773d4a
Parent:     4fa4d23fa20de67df919030c1216295664866ad7
Author:     Ingo Molnar <mingo at elte.hu>
AuthorDate: Fri Oct 19 12:19:26 2007 +0200
Committer:  Thomas Gleixner <tglx at linutronix.de>
CommitDate: Fri Oct 19 12:19:26 2007 +0200

    x86: fix global_flush_tlb() bug
    
    While we were reviewing pageattr_32/64.c for unification,
    Thomas Gleixner noticed the following serious SMP bug in
    global_flush_tlb():
    
    	down_read(&init_mm.mmap_sem);
    	list_replace_init(&deferred_pages, &l);
    	up_read(&init_mm.mmap_sem);
    
    this is SMP-unsafe because list_replace_init() done on two CPUs in
    parallel can corrupt the list.
    
    This bug has been introduced about a year ago in the 64-bit tree:
    
           commit ea7322decb974a4a3e804f96a0201e893ff88ce3
           Author: Andi Kleen <ak at suse.de>
           Date:   Thu Dec 7 02:14:05 2006 +0100
    
           [PATCH] x86-64: Speed and clean up cache flushing in change_page_attr
    
                    down_read(&init_mm.mmap_sem);
            -       dpage = xchg(&deferred_pages, NULL);
            +       list_replace_init(&deferred_pages, &l);
                    up_read(&init_mm.mmap_sem);
    
    the xchg() based version was SMP-safe, but list_replace_init() is not.
    So this "cleanup" introduced a nasty bug.
    
    why this bug never become prominent is a mystery - it can probably be
    explained with the (still) relative obscurity of the x86_64 architecture.
    
    the safe fix for now is to write-lock init_mm.mmap_sem.
    
    Signed-off-by: Ingo Molnar <mingo at elte.hu>
    Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
---
 arch/x86/mm/pageattr_64.c |    9 +++++++--
 1 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/arch/x86/mm/pageattr_64.c b/arch/x86/mm/pageattr_64.c
index 8a4f65b..c7b7dfe 100644
--- a/arch/x86_64/mm/pageattr.c
+++ b/arch/x86_64/mm/pageattr.c
@@ -230,9 +230,14 @@ void global_flush_tlb(void)
 	struct page *pg, *next;
 	struct list_head l;
 
-	down_read(&init_mm.mmap_sem);
+	/*
+	 * Write-protect the semaphore, to exclude two contexts
+	 * doing a list_replace_init() call in parallel and to
+	 * exclude new additions to the deferred_pages list:
+	 */
+	down_write(&init_mm.mmap_sem);
 	list_replace_init(&deferred_pages, &l);
-	up_read(&init_mm.mmap_sem);
+	up_write(&init_mm.mmap_sem);
 
 	flush_map(&l);
 



Index: config-x86_64-generic
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/F-8/config-x86_64-generic,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -r1.13 -r1.14
--- config-x86_64-generic	30 Oct 2007 16:48:32 -0000	1.13
+++ config-x86_64-generic	6 Nov 2007 23:43:06 -0000	1.14
@@ -174,6 +174,8 @@
 CONFIG_HW_RANDOM_AMD=m
 CONFIG_HW_RANDOM_VIA=m
 
+CONFIG_USB_HIDINPUT_POWERBOOK=y
+
 # CONFIG_HW_RANDOM_GEODE is not set
 
 CONFIG_DEBUG_STACKOVERFLOW=y


Index: kernel.spec
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/F-8/kernel.spec,v
retrieving revision 1.254
retrieving revision 1.255
diff -u -r1.254 -r1.255
--- kernel.spec	6 Nov 2007 00:45:06 -0000	1.254
+++ kernel.spec	6 Nov 2007 23:43:06 -0000	1.255
@@ -582,12 +582,19 @@
 Patch50: linux-2.6-ia64-build-id-linker-script-fix.patch
 Patch60: linux-2.6-x86-tune-generic.patch
 Patch70: linux-2.6-x86_64-silence-up-apic-errors.patch
+Patch71: linux-2.6-x86-tsc-calibration-1.patch
+Patch72: linux-2.6-x86-tsc-calibration-2.patch
 Patch75: linux-2.6-x86-debug-boot.patch
 Patch76: linux-2.6-x86-clean-up-oops-bug-reports.patch
 Patch77: linux-2.6-x86_64-revert-sparsemem-4g.patch
+Patch78: linux-2.6-x86_64-fix-global_flush_tlb-bug.patch
 
 Patch80: linux-2.6-alsa-1.0.15-merge-1.patch
 Patch81: linux-2.6-alsa-1.0.15-merge-2.patch
+Patch82: linux-2.6-alsa.git-000-771af442.patch
+Patch83: linux-2.6-alsa.git-004-ba76a374.patch
+Patch84: linux-2.6-alsa-hda-stac-dmic.patch
+Patch85: linux-2.6-alsa-revert-hda-stac-volume.patch
 
 Patch100: linux-2.6-g5-therm-shutdown.patch
 Patch120: linux-2.6-ppc32-ucmpdi2.patch
@@ -609,6 +616,7 @@
 Patch210: linux-2.6-modsign-ksign.patch
 Patch220: linux-2.6-modsign-core.patch
 Patch230: linux-2.6-modsign-script.patch
+Patch240: linux-2.6-modules-modalias-platform.patch
 Patch250: linux-2.6-debug-sizeof-structs.patch
 Patch260: linux-2.6-debug-nmi-timeout.patch
 Patch270: linux-2.6-debug-taint-vm.patch
@@ -618,20 +626,32 @@
 Patch345: linux-2.6-debug-acpi-os-write-port.patch
 Patch350: linux-2.6-devmem.patch
 Patch370: linux-2.6-crash-driver.patch
+
+Patch380: linux-2.6-irq-synchronization.patch
+
 Patch400: linux-2.6-scsi-cpqarray-set-master.patch
 Patch401: linux-2.6-scsi-async-double-add.patch
 Patch402: linux-2.6-scsi-mpt-vmware-fix.patch
+
 Patch420: linux-2.6-squashfs.patch
 Patch423: linux-2.6-gfs-locking-exports.patch
+Patch424: linux-2.6-cifs-fix-incomplete-rcv.patch
+Patch426: linux-2.6-cifs-typo-in-cifs_reconnect-fix.patch
+Patch428: linux-2.6-cifs-fix-bad-handling-of-EAGAIN.patch
+
 Patch430: linux-2.6-net-silence-noisy-printks.patch
 Patch440: linux-2.6-sha_alignment.patch
 Patch450: linux-2.6-input-kill-stupid-messages.patch
 Patch460: linux-2.6-serial-460800.patch
+Patch461: linux-2.6-serial_pnp-add-new-wacom-ids.patch
 Patch480: linux-2.6-proc-self-maps-fix.patch
 Patch510: linux-2.6-silence-noise.patch
 Patch570: linux-2.6-selinux-mprotect-checks.patch
 Patch590: linux-2.6-unexport-symbols.patch
 Patch600: linux-2.6-vm-silence-atomic-alloc-failures.patch
+Patch602: linux-2.6-mm-fix-ptrace-access-beyond-vma.patch
+Patch603: linux-2.6-dio-fix-cache-invalidation-after-sync-writes.patch
+
 Patch610: linux-2.6-defaults-fat-utf8.patch
 Patch620: linux-2.6-defaults-unicode-vt.patch
 Patch630: linux-2.6-defaults-nonmi.patch
@@ -662,12 +682,14 @@
 Patch718: linux-2.6-netdev-e1000e-09.patch
 Patch719: linux-2.6-netdev-e1000e-10.patch
 Patch720: linux-2.6-e1000-bad-csum-allow.patch
+Patch730: linux-2.6-netdev-spidernet-fix-interrupt-handling.patch
 #Patch780: linux-2.6-clockevents-fix-resume-logic.patch
 Patch750: linux-2.6-acpi-git-ec-init-fixes.patch
 Patch770: linux-2.6-pmtrace-time-fix.patch
 Patch800: linux-2.6-wakeups-hdaps.patch
 Patch801: linux-2.6-wakeups.patch
 Patch820: linux-2.6-compile-fixes.patch
+Patch900: linux-2.6-md-raid5-fix-clearing-of-biofill-operations.patch
 Patch1100: linux-2.6-add-mmf_dump_elf_headers.patch
 Patch1101: linux-2.6-default-mmf_dump_elf_headers.patch
 Patch1102: linux-2.6-add-sys-module-name-notes.patch
@@ -681,6 +703,10 @@
 Patch1210: linux-2.6-ps3-storage-alias.patch
 Patch1220: linux-2.6-ps3-legacy-bootloader-hack.patch
 Patch1230: linux-2.6-powerpc-spu-vicinity.patch
+
+Patch1240: linux-2.6-acpi-sleep-fix-GPE-suspend-cleanup.patch
+Patch1241: linux-2.6-acpi-suspend-wrong-order-of-GPE-restore.patch
+
 Patch1300: linux-2.6-usb-suspend-classes.patch
 Patch1305: linux-2.6-usb-storage-initialize-huawei-e220-properly.patch
 Patch1400: linux-2.6-smarter-relatime.patch
@@ -691,6 +717,8 @@
 Patch1512: linux-2.6-firewire-multi-lun.patch
 Patch1515: linux-2.6-lirc.patch
 
+Patch1600: linux-2.6-params-sysfs-skip-missing-period.patch
+
 #nouveau + drm fixes
 Patch1800: drm-mm-git.patch
 Patch1801: nouveau-drm.patch
@@ -710,8 +738,9 @@
 Patch2201: linux-2.6-selinux-ebitmap-for-avc-miss.patch
 Patch2202: linux-2.6-selinux-ebitmap-for-avc-miss-cleanup.patch
 Patch2203: linux-2.6-selinux-sigchld-wait.patch
-# cputime accounting is broken, revert to 2.6.22 version
-Patch2220: linux-2.6-cputime-fix-accounting.patch
+# cputime accounting is broken, fix is in 2.6.24
+Patch2220: linux-2.6-sched-keep-stime-monotonic.patch
+Patch2221: linux-2.6-sched-keep-utime-monotonic.patch
 
 %endif
 
@@ -1036,6 +1065,13 @@
 # ALSA 1.0.15
 ApplyPatch linux-2.6-alsa-1.0.15-merge-1.patch
 ApplyPatch linux-2.6-alsa-1.0.15-merge-2.patch
+# ALSA updates headed upstream for 2.6.24
+ApplyPatch linux-2.6-alsa.git-000-771af442.patch
+ApplyPatch linux-2.6-alsa.git-004-ba76a374.patch
+# undo the STAC volume control update
+ApplyPatch linux-2.6-alsa-revert-hda-stac-volume.patch
+# ALSA enhancments for 2.6.25
+ApplyPatch linux-2.6-alsa-hda-stac-dmic.patch
 
 # Nouveau DRM + drm fixes
 ApplyPatch drm-mm-git.patch
@@ -1055,12 +1091,17 @@
 ApplyPatch linux-2.6-x86-tune-generic.patch
 # Suppress APIC errors on UP x86-64.
 #ApplyPatch linux-2.6-x86_64-silence-up-apic-errors.patch
+# fix x86 tsc clock calibration
+ApplyPatch linux-2.6-x86-tsc-calibration-1.patch
+ApplyPatch linux-2.6-x86-tsc-calibration-2.patch
 # debug early boot
 #ApplyPatch linux-2.6-x86-debug-boot.patch
 # shorter i386 oops reports (scheduled for 2.6.24)
 ApplyPatch linux-2.6-x86-clean-up-oops-bug-reports.patch
 # revert: x86_64: allocate sparsemem memmap above 4G
 ApplyPatch linux-2.6-x86_64-revert-sparsemem-4g.patch
+# fix global tlb flush bug
+ApplyPatch linux-2.6-x86_64-fix-global_flush_tlb-bug.patch
 
 #
 # PowerPC
@@ -1105,7 +1146,8 @@
 #
 # bugfixes to drivers and filesystems
 #
-
+# pc speaker autoload
+ApplyPatch linux-2.6-modules-modalias-platform.patch
 
 # Various low-impact patches to aid debugging.
 ApplyPatch linux-2.6-debug-sizeof-structs.patch
@@ -1130,6 +1172,14 @@
 ApplyPatch linux-2.6-crash-driver.patch
 
 #
+# driver core
+#
+# synchronize irqs poperly
+ApplyPatch linux-2.6-irq-synchronization.patch
+# don't create bogus sysfs files
+ApplyPatch linux-2.6-params-sysfs-skip-missing-period.patch
+
+#
 # SCSI Bits.
 #
 # fix cpqarray pci enable
@@ -1144,6 +1194,10 @@
 ApplyPatch linux-2.6-squashfs.patch
 # export symbols for gfs2 locking modules
 ApplyPatch linux-2.6-gfs-locking-exports.patch
+# cifs kernel memory corruption fixes
+ApplyPatch linux-2.6-cifs-fix-incomplete-rcv.patch
+ApplyPatch linux-2.6-cifs-typo-in-cifs_reconnect-fix.patch
+ApplyPatch linux-2.6-cifs-fix-bad-handling-of-EAGAIN.patch
 
 # Networking
 # Disable easy to trigger printk's.
@@ -1156,6 +1210,9 @@
 ApplyPatch linux-2.6-input-kill-stupid-messages.patch
 # Allow to use 480600 baud on 16C950 UARTs
 ApplyPatch linux-2.6-serial-460800.patch
+# add ids for new wacom tablets
+ApplyPatch linux-2.6-serial_pnp-add-new-wacom-ids.patch
+
 # Silence some useless messages that still get printed with 'quiet'
 ApplyPatch linux-2.6-silence-noise.patch
 
@@ -1170,6 +1227,10 @@
 #
 # Silence GFP_ATOMIC failures.
 ApplyPatch linux-2.6-vm-silence-atomic-alloc-failures.patch
+# fix ptrace hang trying to access invalid memory location
+ApplyPatch linux-2.6-mm-fix-ptrace-access-beyond-vma.patch
+# fix read after direct IO write returning stale data
+ApplyPatch linux-2.6-dio-fix-cache-invalidation-after-sync-writes.patch
 
 # Changes to upstream defaults.
 # Use UTF-8 by default on VFAT.
@@ -1225,6 +1286,8 @@
 
 # Workaround for flaky e1000 EEPROMs
 ApplyPatch linux-2.6-e1000-bad-csum-allow.patch
+# spidernet: fix interrupt handling
+ApplyPatch linux-2.6-netdev-spidernet-fix-interrupt-handling.patch
 
 # ACPI/PM patches
 # fix EC init
@@ -1237,6 +1300,15 @@
 ApplyPatch linux-2.6-wakeups-hdaps.patch
 ApplyPatch linux-2.6-wakeups.patch
 
+# dm / md
+# raid5 data corruption fix
+ApplyPatch linux-2.6-md-raid5-fix-clearing-of-biofill-operations.patch
+
+# ACPI
+# suspend/resume fixes from 2.6.24
+ApplyPatch linux-2.6-acpi-sleep-fix-GPE-suspend-cleanup.patch
+ApplyPatch linux-2.6-acpi-suspend-wrong-order-of-GPE-restore.patch
+
 # USB
 # Do USB suspend only on certain classes of device.
 ApplyPatch linux-2.6-usb-suspend-classes.patch
@@ -1294,7 +1366,8 @@
 ApplyPatch linux-2.6-selinux-sigchld-wait.patch
 
 # cputime accounting fix, fixes "task using 9999% of CPU"
-ApplyPatch linux-2.6-cputime-fix-accounting.patch
+ApplyPatch linux-2.6-sched-keep-utime-monotonic.patch
+ApplyPatch linux-2.6-sched-keep-stime-monotonic.patch
 
 # END OF PATCH APPLICATIONS
 
@@ -1892,6 +1965,24 @@
 
 
 %changelog
+* Tue Nov  6 2007 Chuck Ebbert <cebbert at redhat.com>
+- ALSA updates:
+   hda: revert STAC92XX volume control changes (#354981)
+   hda: add STAC92XX DMIC support
+   hda: disable shared stream on AD1986A
+   cmipci: fix wrong definitions
+- CIFS: fix corruption when server returns EAGAIN (#357001)
+- ACPI: suspend/resume fixes
+- drivers: restore platform driver modaliases
+- x86: fix tsc clocksource calibration
+- x86_64: fix global tlb flushing bug
+- hidinput: add powerbook driver to x86_64 config (#358721)
+- spider_net: fix hang
+- mm: fix invalid ptrace access causing kernel hang
+- direct-io: fix return of stale data after DIO write
+- md/raid5: fix data corruption in some failure cases
+- serial: add IDs for some new Wacom tablets (#352811)
+
 * Tue Nov  6 2007 David Airlie <airlied at redhat.com>
 - Fix bug 228414 - X hangs at startup with Radeon X800 GTO PCIe with DRI
 


--- linux-2.6-cputime-fix-accounting.patch DELETED ---




More information about the fedora-extras-commits mailing list