summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGreg Kroah-Hartman <gregkh@suse.de>2010-12-17 15:34:02 -0800
committerGreg Kroah-Hartman <gregkh@suse.de>2010-12-17 15:34:02 -0800
commitc3520c4bef7d293f540b6ac347631e34b4e074d7 (patch)
treed42312159120e09e997efe7e852d3239d3b92714
parent98679ce9f502cd32c26dccd37c5b04643dc904ae (diff)
downloadstable-queue-c3520c4bef7d293f540b6ac347631e34b4e074d7.tar.gz
.36 patches
-rw-r--r--queue-2.6.36/alsa-hda-always-allow-basic-audio-irrespective-of-eld-info.patch65
-rw-r--r--queue-2.6.36/alsa-hda-do-not-wrongly-restrict-min_channels-based-on-eld.patch69
-rw-r--r--queue-2.6.36/alsa-hda-quirk-for-dell-vostro-320-to-make-microphone-work.patch34
-rw-r--r--queue-2.6.36/alsa-hda-use-model-lg-quirk-for-lg-p1-express-to-enable-playback-and-capture.patch38
-rw-r--r--queue-2.6.36/alsa-hda-use-position_fix-1-for-acer-aspire-5538-to-enable-capture-on-internal-mic.patch34
-rw-r--r--queue-2.6.36/drm-kms-remove-spaces-from-connector-names-v2.patch46
-rw-r--r--queue-2.6.36/drm-radeon-kms-don-t-apply-7xx-hdp-flush-workaround-on-agp.patch58
-rw-r--r--queue-2.6.36/drm-radeon-kms-fix-vram-base-calculation-on-rs780-rs880.patch34
-rw-r--r--queue-2.6.36/fuse-fix-ioctl-when-server-is-32bit.patch106
-rw-r--r--queue-2.6.36/fuse-verify-ioctl-retries.patch58
-rw-r--r--queue-2.6.36/series10
11 files changed, 552 insertions, 0 deletions
diff --git a/queue-2.6.36/alsa-hda-always-allow-basic-audio-irrespective-of-eld-info.patch b/queue-2.6.36/alsa-hda-always-allow-basic-audio-irrespective-of-eld-info.patch
new file mode 100644
index 0000000000..56c4aa6d81
--- /dev/null
+++ b/queue-2.6.36/alsa-hda-always-allow-basic-audio-irrespective-of-eld-info.patch
@@ -0,0 +1,65 @@
+From 3dc86429032910bdf762adeb2969112bb303924c Mon Sep 17 00:00:00 2001
+From: Anssi Hannula <anssi.hannula@iki.fi>
+Date: Tue, 7 Dec 2010 20:56:19 +0200
+Subject: ALSA: hda - Always allow basic audio irrespective of ELD info
+
+From: Anssi Hannula <anssi.hannula@iki.fi>
+
+commit 3dc86429032910bdf762adeb2969112bb303924c upstream.
+
+Commit bbbe33900d1f3c added functionality to restrict PCM parameters
+based on ELD info (derived from EDID data) of the audio sink.
+
+However, according to CEA-861-D no SAD is needed for basic audio
+(32/44.1/48kHz stereo 16-bit audio), which is instead indicated with a
+basic audio flag in the CEA EDID Extension.
+
+The flag is not present in ELD. However, as all audio capable sinks are
+required to support basic audio, we can assume it to be always
+available.
+
+Fix allowed audio formats with sinks that have SADs (Short Audio
+Descriptors) which do not completely overlap with the basic audio
+formats (there are no reports of affected devices so far) by always
+assuming that basic audio is supported.
+
+Reported-by: Stephen Warren <swarren@nvidia.com>
+Signed-off-by: Anssi Hannula <anssi.hannula@iki.fi>
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ sound/pci/hda/hda_eld.c | 16 +++++++---------
+ 1 file changed, 7 insertions(+), 9 deletions(-)
+
+--- a/sound/pci/hda/hda_eld.c
++++ b/sound/pci/hda/hda_eld.c
+@@ -604,21 +604,19 @@ void hdmi_eld_update_pcm_info(struct hdm
+ {
+ int i;
+
+- pcm->rates = 0;
+- pcm->formats = 0;
+- pcm->maxbps = 0;
+- pcm->channels_max = 0;
++ /* assume basic audio support (the basic audio flag is not in ELD;
++ * however, all audio capable sinks are required to support basic
++ * audio) */
++ pcm->rates = SNDRV_PCM_RATE_32000 | SNDRV_PCM_RATE_44100 | SNDRV_PCM_RATE_48000;
++ pcm->formats = SNDRV_PCM_FMTBIT_S16_LE;
++ pcm->maxbps = 16;
++ pcm->channels_max = 2;
+ for (i = 0; i < eld->sad_count; i++) {
+ struct cea_sad *a = &eld->sad[i];
+ pcm->rates |= a->rates;
+ if (a->channels > pcm->channels_max)
+ pcm->channels_max = a->channels;
+ if (a->format == AUDIO_CODING_TYPE_LPCM) {
+- if (a->sample_bits & AC_SUPPCM_BITS_16) {
+- pcm->formats |= SNDRV_PCM_FMTBIT_S16_LE;
+- if (pcm->maxbps < 16)
+- pcm->maxbps = 16;
+- }
+ if (a->sample_bits & AC_SUPPCM_BITS_20) {
+ pcm->formats |= SNDRV_PCM_FMTBIT_S32_LE;
+ if (pcm->maxbps < 20)
diff --git a/queue-2.6.36/alsa-hda-do-not-wrongly-restrict-min_channels-based-on-eld.patch b/queue-2.6.36/alsa-hda-do-not-wrongly-restrict-min_channels-based-on-eld.patch
new file mode 100644
index 0000000000..e44623259f
--- /dev/null
+++ b/queue-2.6.36/alsa-hda-do-not-wrongly-restrict-min_channels-based-on-eld.patch
@@ -0,0 +1,69 @@
+From 4b0dbdb17f846a8887e5f7fbeea2deb0703236bd Mon Sep 17 00:00:00 2001
+From: Anssi Hannula <anssi.hannula@iki.fi>
+Date: Tue, 7 Dec 2010 18:41:35 +0200
+Subject: ALSA: hda - Do not wrongly restrict min_channels based on ELD
+
+From: Anssi Hannula <anssi.hannula@iki.fi>
+
+commit 4b0dbdb17f846a8887e5f7fbeea2deb0703236bd upstream.
+
+Commit bbbe33900d1f3c added functionality to restrict PCM parameters
+based on ELD info (derived from EDID data) of the audio sink.
+
+However, it wrongly assumes that the bits 0-2 of the first byte of
+CEA Short Audio Descriptors mean a supported number of channels. In
+reality, they mean the maximum number of channels (as per CEA-861-D
+7.5.2). This means that the channel count can only be used to restrict
+max_channels, not min_channels.
+
+Restricting min_channels causes us to deny opening the device in stereo
+mode if the sink only has SADs that declare larger numbers of channels
+(like Primare SP32 AV Processor does).
+
+Fix that by not restricting min_channels based on ELD information.
+
+Signed-off-by: Anssi Hannula <anssi.hannula@iki.fi>
+Reported-by: Jean-Yves Avenard <jyavenard@gmail.com>
+Tested-by: Jean-Yves Avenard <jyavenard@gmail.com>
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ sound/pci/hda/hda_eld.c | 4 ----
+ sound/pci/hda/patch_hdmi.c | 1 -
+ 2 files changed, 5 deletions(-)
+
+--- a/sound/pci/hda/hda_eld.c
++++ b/sound/pci/hda/hda_eld.c
+@@ -607,13 +607,10 @@ void hdmi_eld_update_pcm_info(struct hdm
+ pcm->rates = 0;
+ pcm->formats = 0;
+ pcm->maxbps = 0;
+- pcm->channels_min = -1;
+ pcm->channels_max = 0;
+ for (i = 0; i < eld->sad_count; i++) {
+ struct cea_sad *a = &eld->sad[i];
+ pcm->rates |= a->rates;
+- if (a->channels < pcm->channels_min)
+- pcm->channels_min = a->channels;
+ if (a->channels > pcm->channels_max)
+ pcm->channels_max = a->channels;
+ if (a->format == AUDIO_CODING_TYPE_LPCM) {
+@@ -641,7 +638,6 @@ void hdmi_eld_update_pcm_info(struct hdm
+ /* restrict the parameters by the values the codec provides */
+ pcm->rates &= codec_pars->rates;
+ pcm->formats &= codec_pars->formats;
+- pcm->channels_min = max(pcm->channels_min, codec_pars->channels_min);
+ pcm->channels_max = min(pcm->channels_max, codec_pars->channels_max);
+ pcm->maxbps = min(pcm->maxbps, codec_pars->maxbps);
+ }
+--- a/sound/pci/hda/patch_hdmi.c
++++ b/sound/pci/hda/patch_hdmi.c
+@@ -779,7 +779,6 @@ static int hdmi_pcm_open(struct hda_pcm_
+ return -ENODEV;
+ } else {
+ /* fallback to the codec default */
+- hinfo->channels_min = codec_pars->channels_min;
+ hinfo->channels_max = codec_pars->channels_max;
+ hinfo->rates = codec_pars->rates;
+ hinfo->formats = codec_pars->formats;
diff --git a/queue-2.6.36/alsa-hda-quirk-for-dell-vostro-320-to-make-microphone-work.patch b/queue-2.6.36/alsa-hda-quirk-for-dell-vostro-320-to-make-microphone-work.patch
new file mode 100644
index 0000000000..56c63e6e10
--- /dev/null
+++ b/queue-2.6.36/alsa-hda-quirk-for-dell-vostro-320-to-make-microphone-work.patch
@@ -0,0 +1,34 @@
+From 8a96b1e02029aa512199b1b6d281dcede9ed81f1 Mon Sep 17 00:00:00 2001
+From: David Henningsson <david.henningsson@canonical.com>
+Date: Thu, 9 Dec 2010 07:17:27 +0100
+Subject: ALSA: HDA: Quirk for Dell Vostro 320 to make microphone work
+
+From: David Henningsson <david.henningsson@canonical.com>
+
+commit 8a96b1e02029aa512199b1b6d281dcede9ed81f1 upstream.
+
+BugLink: http://launchpad.net/497546
+
+Confirmed that the ideapad model works better than the current
+quirk for Dell Vostro 320.
+
+Signed-off-by: David Henningsson <david.henningsson@canonical.com>
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ sound/pci/hda/patch_conexant.c | 3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+--- a/sound/pci/hda/patch_conexant.c
++++ b/sound/pci/hda/patch_conexant.c
+@@ -3085,8 +3085,7 @@ static const char *cxt5066_models[CXT506
+ static struct snd_pci_quirk cxt5066_cfg_tbl[] = {
+ SND_PCI_QUIRK(0x14f1, 0x0101, "Conexant Reference board",
+ CXT5066_LAPTOP),
+- SND_PCI_QUIRK(0x1028, 0x02f5, "Dell",
+- CXT5066_DELL_LAPTOP),
++ SND_PCI_QUIRK(0x1028, 0x02f5, "Dell Vostro 320", CXT5066_IDEAPAD),
+ SND_PCI_QUIRK(0x152d, 0x0833, "OLPC XO-1.5", CXT5066_OLPC_XO_1_5),
+ SND_PCI_QUIRK(0x1028, 0x02d8, "Dell Vostro", CXT5066_DELL_VOSTO),
+ SND_PCI_QUIRK(0x1028, 0x0402, "Dell Vostro", CXT5066_DELL_VOSTO),
diff --git a/queue-2.6.36/alsa-hda-use-model-lg-quirk-for-lg-p1-express-to-enable-playback-and-capture.patch b/queue-2.6.36/alsa-hda-use-model-lg-quirk-for-lg-p1-express-to-enable-playback-and-capture.patch
new file mode 100644
index 0000000000..f649028214
--- /dev/null
+++ b/queue-2.6.36/alsa-hda-use-model-lg-quirk-for-lg-p1-express-to-enable-playback-and-capture.patch
@@ -0,0 +1,38 @@
+From 77c4d5cdb81d25a45fbdfb84dd3348121219a072 Mon Sep 17 00:00:00 2001
+From: Daniel T Chen <crimsun@ubuntu.com>
+Date: Thu, 2 Dec 2010 22:45:45 -0500
+Subject: ALSA: hda: Use model=lg quirk for LG P1 Express to enable playback and capture
+
+From: Daniel T Chen <crimsun@ubuntu.com>
+
+commit 77c4d5cdb81d25a45fbdfb84dd3348121219a072 upstream.
+
+BugLink: https://launchpad.net/bugs/595482
+
+The original reporter states that audible playback from the internal
+speaker is inaudible despite the hardware being properly detected. To
+work around this symptom, he uses the model=lg quirk to properly enable
+both playback, capture, and jack sense. Another user corroborates this
+workaround on separate hardware. Add this PCI SSID to the quirk table
+to enable it for further LG P1 Expresses.
+
+Reported-and-tested-by: Philip Peitsch <philip.peitsch@gmail.com>
+Tested-by: nikhov
+Signed-off-by: Daniel T Chen <crimsun@ubuntu.com>
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ sound/pci/hda/patch_realtek.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/sound/pci/hda/patch_realtek.c
++++ b/sound/pci/hda/patch_realtek.c
+@@ -4389,6 +4389,7 @@ static struct snd_pci_quirk alc880_cfg_t
+ SND_PCI_QUIRK(0x1734, 0x10b0, "Fujitsu", ALC880_FUJITSU),
+ SND_PCI_QUIRK(0x1854, 0x0018, "LG LW20", ALC880_LG_LW),
+ SND_PCI_QUIRK(0x1854, 0x003b, "LG", ALC880_LG),
++ SND_PCI_QUIRK(0x1854, 0x005f, "LG P1 Express", ALC880_LG),
+ SND_PCI_QUIRK(0x1854, 0x0068, "LG w1", ALC880_LG),
+ SND_PCI_QUIRK(0x1854, 0x0077, "LG LW25", ALC880_LG_LW),
+ SND_PCI_QUIRK(0x19db, 0x4188, "TCL S700", ALC880_TCL_S700),
diff --git a/queue-2.6.36/alsa-hda-use-position_fix-1-for-acer-aspire-5538-to-enable-capture-on-internal-mic.patch b/queue-2.6.36/alsa-hda-use-position_fix-1-for-acer-aspire-5538-to-enable-capture-on-internal-mic.patch
new file mode 100644
index 0000000000..b9490f71de
--- /dev/null
+++ b/queue-2.6.36/alsa-hda-use-position_fix-1-for-acer-aspire-5538-to-enable-capture-on-internal-mic.patch
@@ -0,0 +1,34 @@
+From dd5a089edfa51a74692604b4b427953d8e16bc35 Mon Sep 17 00:00:00 2001
+From: Daniel T Chen <crimsun@ubuntu.com>
+Date: Sun, 5 Dec 2010 08:43:14 -0500
+Subject: ALSA: hda: Use position_fix=1 for Acer Aspire 5538 to enable capture on internal mic
+
+From: Daniel T Chen <crimsun@ubuntu.com>
+
+commit dd5a089edfa51a74692604b4b427953d8e16bc35 upstream.
+
+BugLink: https://launchpad.net/bugs/685161
+
+The reporter of the bug states that he must use position_fix=1 to enable
+capture for the internal microphone, so set it for his machine's PCI
+SSID. Verified using 2.6.35 and the 2010-12-04 alsa-driver build.
+
+Reported-and-tested-by: Ralph Wabel <rwabel@gmx.net>
+Signed-off-by: Daniel T Chen <crimsun@ubuntu.com>
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ sound/pci/hda/hda_intel.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/sound/pci/hda/hda_intel.c
++++ b/sound/pci/hda/hda_intel.c
+@@ -2298,6 +2298,7 @@ static int azx_dev_free(struct snd_devic
+ */
+ static struct snd_pci_quirk position_fix_list[] __devinitdata = {
+ SND_PCI_QUIRK(0x1025, 0x009f, "Acer Aspire 5110", POS_FIX_LPIB),
++ SND_PCI_QUIRK(0x1025, 0x026f, "Acer Aspire 5538", POS_FIX_LPIB),
+ SND_PCI_QUIRK(0x1028, 0x01cc, "Dell D820", POS_FIX_LPIB),
+ SND_PCI_QUIRK(0x1028, 0x01de, "Dell Precision 390", POS_FIX_LPIB),
+ SND_PCI_QUIRK(0x1028, 0x01f6, "Dell Latitude 131L", POS_FIX_LPIB),
diff --git a/queue-2.6.36/drm-kms-remove-spaces-from-connector-names-v2.patch b/queue-2.6.36/drm-kms-remove-spaces-from-connector-names-v2.patch
new file mode 100644
index 0000000000..b7279562c7
--- /dev/null
+++ b/queue-2.6.36/drm-kms-remove-spaces-from-connector-names-v2.patch
@@ -0,0 +1,46 @@
+From e76116ca9671e2e5239054a40303b94feab585ad Mon Sep 17 00:00:00 2001
+From: Alex Deucher <alexdeucher@gmail.com>
+Date: Wed, 8 Dec 2010 19:09:42 -0500
+Subject: drm/kms: remove spaces from connector names (v2)
+
+From: Alex Deucher <alexdeucher@gmail.com>
+
+commit e76116ca9671e2e5239054a40303b94feab585ad upstream.
+
+Grub doesn't parse spaces in parameters correctly, so
+this makes it impossible to force video= parameters
+for kms on the grub kernel command line.
+
+v2: shorten the names to make them easier to type.
+
+Reported-by: Sergej Pupykin <ml@sergej.pp.ru>
+
+Cc: Sergej Pupykin <ml@sergej.pp.ru>
+Signed-off-by: Alex Deucher <alexdeucher@gmail.com>
+Signed-off-by: Dave Airlie <airlied@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/gpu/drm/drm_crtc.c | 10 +++++-----
+ 1 file changed, 5 insertions(+), 5 deletions(-)
+
+--- a/drivers/gpu/drm/drm_crtc.c
++++ b/drivers/gpu/drm/drm_crtc.c
+@@ -156,12 +156,12 @@ static struct drm_conn_prop_enum_list dr
+ { DRM_MODE_CONNECTOR_SVIDEO, "SVIDEO", 0 },
+ { DRM_MODE_CONNECTOR_LVDS, "LVDS", 0 },
+ { DRM_MODE_CONNECTOR_Component, "Component", 0 },
+- { DRM_MODE_CONNECTOR_9PinDIN, "9-pin DIN", 0 },
+- { DRM_MODE_CONNECTOR_DisplayPort, "DisplayPort", 0 },
+- { DRM_MODE_CONNECTOR_HDMIA, "HDMI Type A", 0 },
+- { DRM_MODE_CONNECTOR_HDMIB, "HDMI Type B", 0 },
++ { DRM_MODE_CONNECTOR_9PinDIN, "DIN", 0 },
++ { DRM_MODE_CONNECTOR_DisplayPort, "DP", 0 },
++ { DRM_MODE_CONNECTOR_HDMIA, "HDMI-A", 0 },
++ { DRM_MODE_CONNECTOR_HDMIB, "HDMI-B", 0 },
+ { DRM_MODE_CONNECTOR_TV, "TV", 0 },
+- { DRM_MODE_CONNECTOR_eDP, "Embedded DisplayPort", 0 },
++ { DRM_MODE_CONNECTOR_eDP, "eDP", 0 },
+ };
+
+ static struct drm_prop_enum_list drm_encoder_enum_list[] =
diff --git a/queue-2.6.36/drm-radeon-kms-don-t-apply-7xx-hdp-flush-workaround-on-agp.patch b/queue-2.6.36/drm-radeon-kms-don-t-apply-7xx-hdp-flush-workaround-on-agp.patch
new file mode 100644
index 0000000000..0f4f3a3d48
--- /dev/null
+++ b/queue-2.6.36/drm-radeon-kms-don-t-apply-7xx-hdp-flush-workaround-on-agp.patch
@@ -0,0 +1,58 @@
+From f3886f85cfde578f1d0ba6e40ac5f9d70043923b Mon Sep 17 00:00:00 2001
+From: Alex Deucher <alexdeucher@gmail.com>
+Date: Wed, 8 Dec 2010 10:05:34 -0500
+Subject: drm/radeon/kms: don't apply 7xx HDP flush workaround on AGP
+
+From: Alex Deucher <alexdeucher@gmail.com>
+
+commit f3886f85cfde578f1d0ba6e40ac5f9d70043923b upstream.
+
+It should be required for all 7xx asics, but seems to cause
+problems on some AGP 7xx chips.
+
+Fixes:
+https://bugzilla.kernel.org/show_bug.cgi?id=19002
+
+Signed-off-by: Alex Deucher <alexdeucher@gmail.com>
+Reported-and-Tested-by: Duncan <1i5t5.duncan@cox.net>
+Signed-off-by: Dave Airlie <airlied@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/gpu/drm/radeon/r600.c | 11 ++++++++---
+ 1 file changed, 8 insertions(+), 3 deletions(-)
+
+--- a/drivers/gpu/drm/radeon/r600.c
++++ b/drivers/gpu/drm/radeon/r600.c
+@@ -878,12 +878,15 @@ void r600_pcie_gart_tlb_flush(struct rad
+ u32 tmp;
+
+ /* flush hdp cache so updates hit vram */
+- if ((rdev->family >= CHIP_RV770) && (rdev->family <= CHIP_RV740)) {
++ if ((rdev->family >= CHIP_RV770) && (rdev->family <= CHIP_RV740) &&
++ !(rdev->flags & RADEON_IS_AGP)) {
+ void __iomem *ptr = (void *)rdev->gart.table.vram.ptr;
+ u32 tmp;
+
+ /* r7xx hw bug. write to HDP_DEBUG1 followed by fb read
+ * rather than write to HDP_REG_COHERENCY_FLUSH_CNTL
++ * This seems to cause problems on some AGP cards. Just use the old
++ * method for them.
+ */
+ WREG32(HDP_DEBUG1, 0);
+ tmp = readl((void __iomem *)ptr);
+@@ -3525,10 +3528,12 @@ int r600_debugfs_mc_info_init(struct rad
+ void r600_ioctl_wait_idle(struct radeon_device *rdev, struct radeon_bo *bo)
+ {
+ /* r7xx hw bug. write to HDP_DEBUG1 followed by fb read
+- * rather than write to HDP_REG_COHERENCY_FLUSH_CNTL
++ * rather than write to HDP_REG_COHERENCY_FLUSH_CNTL.
++ * This seems to cause problems on some AGP cards. Just use the old
++ * method for them.
+ */
+ if ((rdev->family >= CHIP_RV770) && (rdev->family <= CHIP_RV740) &&
+- rdev->vram_scratch.ptr) {
++ rdev->vram_scratch.ptr && !(rdev->flags & RADEON_IS_AGP)) {
+ void __iomem *ptr = (void *)rdev->vram_scratch.ptr;
+ u32 tmp;
+
diff --git a/queue-2.6.36/drm-radeon-kms-fix-vram-base-calculation-on-rs780-rs880.patch b/queue-2.6.36/drm-radeon-kms-fix-vram-base-calculation-on-rs780-rs880.patch
new file mode 100644
index 0000000000..c45e6d7288
--- /dev/null
+++ b/queue-2.6.36/drm-radeon-kms-fix-vram-base-calculation-on-rs780-rs880.patch
@@ -0,0 +1,34 @@
+From 8961d52d4cc52edf5672f8f2712c57162b736793 Mon Sep 17 00:00:00 2001
+From: Alex Deucher <alexdeucher@gmail.com>
+Date: Fri, 3 Dec 2010 14:37:22 -0500
+Subject: drm/radeon/kms: fix vram base calculation on rs780/rs880
+
+From: Alex Deucher <alexdeucher@gmail.com>
+
+commit 8961d52d4cc52edf5672f8f2712c57162b736793 upstream.
+
+Avoid overflowing a 32 bit value.
+
+Signed-off-by: Alex Deucher <alexdeucher@gmail.com>
+Signed-off-by: Dave Airlie <airlied@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/gpu/drm/radeon/r600.c | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+--- a/drivers/gpu/drm/radeon/r600.c
++++ b/drivers/gpu/drm/radeon/r600.c
+@@ -1198,8 +1198,10 @@ void r600_vram_gtt_location(struct radeo
+ mc->vram_end, mc->real_vram_size >> 20);
+ } else {
+ u64 base = 0;
+- if (rdev->flags & RADEON_IS_IGP)
+- base = (RREG32(MC_VM_FB_LOCATION) & 0xFFFF) << 24;
++ if (rdev->flags & RADEON_IS_IGP) {
++ base = RREG32(MC_VM_FB_LOCATION) & 0xFFFF;
++ base <<= 24;
++ }
+ radeon_vram_location(rdev, &rdev->mc, base);
+ rdev->mc.gtt_base_align = 0;
+ radeon_gtt_location(rdev, mc);
diff --git a/queue-2.6.36/fuse-fix-ioctl-when-server-is-32bit.patch b/queue-2.6.36/fuse-fix-ioctl-when-server-is-32bit.patch
new file mode 100644
index 0000000000..29b5c00eee
--- /dev/null
+++ b/queue-2.6.36/fuse-fix-ioctl-when-server-is-32bit.patch
@@ -0,0 +1,106 @@
+From d9d318d39dd5cb686660504a3565aac453709ccc Mon Sep 17 00:00:00 2001
+From: Miklos Szeredi <mszeredi@suse.cz>
+Date: Tue, 30 Nov 2010 16:39:27 +0100
+Subject: fuse: fix ioctl when server is 32bit
+
+From: Miklos Szeredi <mszeredi@suse.cz>
+
+commit d9d318d39dd5cb686660504a3565aac453709ccc upstream.
+
+If a 32bit CUSE server is run on 64bit this results in EIO being
+returned to the caller.
+
+The reason is that FUSE_IOCTL_RETRY reply was defined to use 'struct
+iovec', which is different on 32bit and 64bit archs.
+
+Work around this by looking at the size of the reply to determine
+which struct was used. This is only needed if CONFIG_COMPAT is
+defined.
+
+A more permanent fix for the interface will be to use the same struct
+on both 32bit and 64bit.
+
+Reported-by: "ccmail111" <ccmail111@yahoo.com>
+Signed-off-by: Miklos Szeredi <mszeredi@suse.cz>
+CC: Tejun Heo <tj@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ fs/fuse/file.c | 50 ++++++++++++++++++++++++++++++++++++++++++++------
+ 1 file changed, 44 insertions(+), 6 deletions(-)
+
+--- a/fs/fuse/file.c
++++ b/fs/fuse/file.c
+@@ -13,6 +13,7 @@
+ #include <linux/kernel.h>
+ #include <linux/sched.h>
+ #include <linux/module.h>
++#include <linux/compat.h>
+
+ static const struct file_operations fuse_direct_io_file_operations;
+
+@@ -1642,6 +1643,44 @@ static int fuse_verify_ioctl_iov(struct
+ }
+
+ /*
++ * CUSE servers compiled on 32bit broke on 64bit kernels because the
++ * ABI was defined to be 'struct iovec' which is different on 32bit
++ * and 64bit. Fortunately we can determine which structure the server
++ * used from the size of the reply.
++ */
++static int fuse_copy_ioctl_iovec(struct iovec *dst, void *src,
++ size_t transferred, unsigned count,
++ bool is_compat)
++{
++#ifdef CONFIG_COMPAT
++ if (count * sizeof(struct compat_iovec) == transferred) {
++ struct compat_iovec *ciov = src;
++ unsigned i;
++
++ /*
++ * With this interface a 32bit server cannot support
++ * non-compat (i.e. ones coming from 64bit apps) ioctl
++ * requests
++ */
++ if (!is_compat)
++ return -EINVAL;
++
++ for (i = 0; i < count; i++) {
++ dst[i].iov_base = compat_ptr(ciov[i].iov_base);
++ dst[i].iov_len = ciov[i].iov_len;
++ }
++ return 0;
++ }
++#endif
++
++ if (count * sizeof(struct iovec) != transferred)
++ return -EIO;
++
++ memcpy(dst, src, transferred);
++ return 0;
++}
++
++/*
+ * For ioctls, there is no generic way to determine how much memory
+ * needs to be read and/or written. Furthermore, ioctls are allowed
+ * to dereference the passed pointer, so the parameter requires deep
+@@ -1822,14 +1861,13 @@ long fuse_do_ioctl(struct file *file, un
+ in_iovs + out_iovs > FUSE_IOCTL_MAX_IOV)
+ goto out;
+
+- err = -EIO;
+- if ((in_iovs + out_iovs) * sizeof(struct iovec) != transferred)
+- goto out;
+-
+- /* okay, copy in iovs and retry */
+ vaddr = kmap_atomic(pages[0], KM_USER0);
+- memcpy(page_address(iov_page), vaddr, transferred);
++ err = fuse_copy_ioctl_iovec(page_address(iov_page), vaddr,
++ transferred, in_iovs + out_iovs,
++ (flags & FUSE_IOCTL_COMPAT) != 0);
+ kunmap_atomic(vaddr, KM_USER0);
++ if (err)
++ goto out;
+
+ in_iov = page_address(iov_page);
+ out_iov = in_iov + in_iovs;
diff --git a/queue-2.6.36/fuse-verify-ioctl-retries.patch b/queue-2.6.36/fuse-verify-ioctl-retries.patch
new file mode 100644
index 0000000000..f2f334bbee
--- /dev/null
+++ b/queue-2.6.36/fuse-verify-ioctl-retries.patch
@@ -0,0 +1,58 @@
+From 7572777eef78ebdee1ecb7c258c0ef94d35bad16 Mon Sep 17 00:00:00 2001
+From: Miklos Szeredi <mszeredi@suse.cz>
+Date: Tue, 30 Nov 2010 16:39:27 +0100
+Subject: fuse: verify ioctl retries
+
+From: Miklos Szeredi <mszeredi@suse.cz>
+
+commit 7572777eef78ebdee1ecb7c258c0ef94d35bad16 upstream.
+
+Verify that the total length of the iovec returned in FUSE_IOCTL_RETRY
+doesn't overflow iov_length().
+
+Signed-off-by: Miklos Szeredi <mszeredi@suse.cz>
+CC: Tejun Heo <tj@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ fs/fuse/file.c | 22 ++++++++++++++++++++++
+ 1 file changed, 22 insertions(+)
+
+--- a/fs/fuse/file.c
++++ b/fs/fuse/file.c
+@@ -1627,6 +1627,20 @@ static int fuse_ioctl_copy_user(struct p
+ return 0;
+ }
+
++/* Make sure iov_length() won't overflow */
++static int fuse_verify_ioctl_iov(struct iovec *iov, size_t count)
++{
++ size_t n;
++ u32 max = FUSE_MAX_PAGES_PER_REQ << PAGE_SHIFT;
++
++ for (n = 0; n < count; n++) {
++ if (iov->iov_len > (size_t) max)
++ return -ENOMEM;
++ max -= iov->iov_len;
++ }
++ return 0;
++}
++
+ /*
+ * For ioctls, there is no generic way to determine how much memory
+ * needs to be read and/or written. Furthermore, ioctls are allowed
+@@ -1820,6 +1834,14 @@ long fuse_do_ioctl(struct file *file, un
+ in_iov = page_address(iov_page);
+ out_iov = in_iov + in_iovs;
+
++ err = fuse_verify_ioctl_iov(in_iov, in_iovs);
++ if (err)
++ goto out;
++
++ err = fuse_verify_ioctl_iov(out_iov, out_iovs);
++ if (err)
++ goto out;
++
+ goto retry;
+ }
+
diff --git a/queue-2.6.36/series b/queue-2.6.36/series
index f4f3453013..807f3eeca2 100644
--- a/queue-2.6.36/series
+++ b/queue-2.6.36/series
@@ -1 +1,11 @@
x86-hotplug-use-mwait-to-offline-a-processor-fix-the-legacy-case.patch
+fuse-verify-ioctl-retries.patch
+fuse-fix-ioctl-when-server-is-32bit.patch
+alsa-hda-quirk-for-dell-vostro-320-to-make-microphone-work.patch
+alsa-hda-do-not-wrongly-restrict-min_channels-based-on-eld.patch
+alsa-hda-always-allow-basic-audio-irrespective-of-eld-info.patch
+alsa-hda-use-position_fix-1-for-acer-aspire-5538-to-enable-capture-on-internal-mic.patch
+alsa-hda-use-model-lg-quirk-for-lg-p1-express-to-enable-playback-and-capture.patch
+drm-radeon-kms-don-t-apply-7xx-hdp-flush-workaround-on-agp.patch
+drm-kms-remove-spaces-from-connector-names-v2.patch
+drm-radeon-kms-fix-vram-base-calculation-on-rs780-rs880.patch