* [ 00/32] 3.4.49-stable review
@ 2013-06-11 20:02 Greg Kroah-Hartman
2013-06-11 20:03 ` [ 01/32] USB: option: blacklist network interface on Huawei E1820 Greg Kroah-Hartman
` (31 more replies)
0 siblings, 32 replies; 33+ messages in thread
From: Greg Kroah-Hartman @ 2013-06-11 20:02 UTC (permalink / raw)
To: linux-kernel; +Cc: Greg Kroah-Hartman, torvalds, akpm, stable
This is the start of the stable review cycle for the 3.4.49 release.
There are 32 patches in this series, all will be posted as a response
to this one. If anyone has any issues with these being applied, please
let me know.
Responses should be made by Thu Jun 13 19:59:36 UTC 2013.
Anything received after that time might be too late.
The whole patch series can be found in one patch at:
kernel.org/pub/linux/kernel/v3.0/stable-review/patch-3.4.49-rc1.gz
and the diffstat can be found below.
thanks,
greg k-h
-------------
Pseudo-Shortlog of commits:
Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Linux 3.4.49-rc1
Steven Rostedt <rostedt@goodmis.org>
ftrace: Move ftrace_filter_lseek out of CONFIG_DYNAMIC_FTRACE section
Namhyung Kim <namhyung.kim@lge.com>
tracing: Fix possible NULL pointer dereferences
Patrik Jakobsson <patrik.r.jakobsson@gmail.com>
drm/gma500: Increase max resolution for mode setting
Ying Xue <ying.xue@windriver.com>
USB: ftdi_sio: Quiet sparse noise about using plain integer was NULL pointer
Jan Beulich <jbeulich@suse.com>
xen-pciback: rate limit error messages from xen_pcibk_enable_msi{,x}()
Ben Mesman <ben@bnc.nl>
drm/i915: no lvds quirk for hp t5740
Egbert Eich <eich@suse.de>
drm/i915/sdvo: Use &intel_sdvo->ddc instead of intel_sdvo->i2c for DDC.
Huacai Chen <chenhc@lemote.com>
drm: fix a use-after-free when GPU acceleration disabled
Guenter Roeck <linux@roeck-us.net>
hwmon: (adm1021) Strengthen chip detection for ADM1021, LM84 and MAX1617
Alex Deucher <alexander.deucher@amd.com>
drm/radeon: don't allow audio on DCE6
Adis Hamzić <adis@hamzadis.com>
radeon: Fix system hang issue when using KMS with older cards
Gavin Shan <shangw@linux.vnet.ibm.com>
powerpc/eeh: Don't check RTAS token to get PE addr
Ash Willis <ashwillis.kernel@gmail.com>
ACPI / video: ignore BIOS initial backlight value for HP Pavilion g6
Alex Hung <alex.hung@canonical.com>
ACPI / video: ignore BIOS initial backlight value for HP m4
Johan Hovold <jhovold@gmail.com>
USB: mos7720: fix hardware flow control
Johan Hovold <jhovold@gmail.com>
USB: mos7720: fix message timeouts
Johan Hovold <jhovold@gmail.com>
USB: mos7720: fix DMA to stack
Alan Stern <stern@rowland.harvard.edu>
USB: revert periodic scheduling bugfix
Johan Hovold <jhovold@gmail.com>
USB: serial: fix Treo/Kyocera interrrupt-in urb context
Johan Hovold <jhovold@gmail.com>
USB: whiteheat: fix broken port configuration
Robert Butora <robert.butora.fi@gmail.com>
USB: Serial: cypress_M8: Enable FRWD Dongle hidcom device
Johan Hovold <jhovold@gmail.com>
USB: visor: fix initialisation of Treo/Kyocera devices
Johan Hovold <jhovold@gmail.com>
USB: ark3116: fix control-message timeout
Johan Hovold <jhovold@gmail.com>
USB: keyspan: fix bogus array index
Johan Hovold <jhovold@gmail.com>
USB: iuu_phoenix: fix bulk-message timeout
Takashi Iwai <tiwai@suse.de>
ALSA: usb-audio - Fix invalid volume resolution on Logitech HD webcam c270
Takashi Iwai <tiwai@suse.de>
ALSA: usb-audio - Apply Logitech QuickCam Pro 9000 quirk only to audio iface
Clemens Ladisch <clemens@ladisch.de>
ALSA: usb-audio: fix Roland/Cakewalk UM-3G support
Vladimir Murzin <murzin.v@gmail.com>
xhci: fix list access before init
Sergio Aguirre <sergio.a.aguirre.rodriguez@intel.com>
xhci-mem: init list heads at the beginning of init
Tony Camuso <tcamuso@redhat.com>
xhci - correct comp_mode_recovery_timer on return from hibernate
Bjørn Mork <bjorn@mork.no>
USB: option: blacklist network interface on Huawei E1820
-------------
Diffstat:
Makefile | 4 +-
arch/powerpc/platforms/pseries/eeh_pseries.c | 12 +++---
drivers/acpi/video.c | 16 ++++++++
drivers/gpu/drm/drm_irq.c | 6 ++-
drivers/gpu/drm/gma500/framebuffer.c | 4 +-
drivers/gpu/drm/i915/intel_lvds.c | 4 +-
drivers/gpu/drm/i915/intel_sdvo.c | 2 +-
drivers/gpu/drm/radeon/atombios_encoders.c | 11 ++++--
drivers/gpu/drm/radeon/evergreen.c | 10 +++--
drivers/gpu/drm/radeon/ni.c | 10 +++--
drivers/gpu/drm/radeon/r100.c | 9 +++--
drivers/gpu/drm/radeon/r300.c | 9 +++--
drivers/gpu/drm/radeon/r420.c | 10 +++--
drivers/gpu/drm/radeon/r520.c | 9 +++--
drivers/gpu/drm/radeon/r600.c | 10 +++--
drivers/gpu/drm/radeon/rs400.c | 9 +++--
drivers/gpu/drm/radeon/rs600.c | 9 +++--
drivers/gpu/drm/radeon/rs690.c | 9 +++--
drivers/gpu/drm/radeon/rv515.c | 9 +++--
drivers/gpu/drm/radeon/rv770.c | 10 +++--
drivers/gpu/drm/radeon/si.c | 10 +++--
drivers/hwmon/adm1021.c | 58 ++++++++++++++++++++++++----
drivers/usb/host/ehci-sched.c | 2 +-
drivers/usb/host/xhci-mem.c | 10 +++--
drivers/usb/host/xhci.c | 12 +++++-
drivers/usb/serial/ark3116.c | 2 +-
drivers/usb/serial/cypress_m8.c | 18 ++++++++-
drivers/usb/serial/cypress_m8.h | 4 ++
drivers/usb/serial/ftdi_sio.c | 2 +-
drivers/usb/serial/iuu_phoenix.c | 4 +-
drivers/usb/serial/keyspan.c | 2 +-
drivers/usb/serial/mos7720.c | 25 ++++++++----
drivers/usb/serial/option.c | 2 +
drivers/usb/serial/visor.c | 9 +++++
drivers/usb/serial/whiteheat.c | 2 +-
drivers/xen/xen-pciback/pciback_ops.c | 16 ++++----
include/linux/ftrace.h | 3 +-
kernel/trace/ftrace.c | 36 ++++++++---------
kernel/trace/trace_stack.c | 2 +-
sound/usb/mixer.c | 1 +
sound/usb/quirks-table.h | 14 ++++++-
41 files changed, 287 insertions(+), 119 deletions(-)
^ permalink raw reply [flat|nested] 33+ messages in thread
* [ 01/32] USB: option: blacklist network interface on Huawei E1820
2013-06-11 20:02 [ 00/32] 3.4.49-stable review Greg Kroah-Hartman
@ 2013-06-11 20:03 ` Greg Kroah-Hartman
2013-06-11 20:03 ` [ 02/32] xhci - correct comp_mode_recovery_timer on return from hibernate Greg Kroah-Hartman
` (30 subsequent siblings)
31 siblings, 0 replies; 33+ messages in thread
From: Greg Kroah-Hartman @ 2013-06-11 20:03 UTC (permalink / raw)
To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Graham Inggs, Bjørn Mork
3.4-stable review patch. If anyone has any objections, please let me know.
------------------
From: Bjørn Mork <bjorn@mork.no>
commit b8a24e6281d37243c06b9497dcbfaa98c1e2ad35 upstream.
The mode used by Windows for the Huawei E1820 will use the
same ff/ff/ff class codes for both serial and network
functions.
Reported-by: Graham Inggs <graham.inggs@uct.ac.za>
Signed-off-by: Bjørn Mork <bjorn@mork.no>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/usb/serial/option.c | 2 ++
1 file changed, 2 insertions(+)
--- a/drivers/usb/serial/option.c
+++ b/drivers/usb/serial/option.c
@@ -593,6 +593,8 @@ static const struct usb_device_id option
.driver_info = (kernel_ulong_t) &huawei_cdc12_blacklist },
{ USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K3765, 0xff, 0xff, 0xff),
.driver_info = (kernel_ulong_t) &huawei_cdc12_blacklist },
+ { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0x14ac, 0xff, 0xff, 0xff), /* Huawei E1820 */
+ .driver_info = (kernel_ulong_t) &net_intf1_blacklist },
{ USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K4605, 0xff, 0xff, 0xff),
.driver_info = (kernel_ulong_t) &huawei_cdc12_blacklist },
{ USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0xff, 0xff) },
^ permalink raw reply [flat|nested] 33+ messages in thread
* [ 02/32] xhci - correct comp_mode_recovery_timer on return from hibernate
2013-06-11 20:02 [ 00/32] 3.4.49-stable review Greg Kroah-Hartman
2013-06-11 20:03 ` [ 01/32] USB: option: blacklist network interface on Huawei E1820 Greg Kroah-Hartman
@ 2013-06-11 20:03 ` Greg Kroah-Hartman
2013-06-11 20:03 ` [ 03/32] xhci-mem: init list heads at the beginning of init Greg Kroah-Hartman
` (29 subsequent siblings)
31 siblings, 0 replies; 33+ messages in thread
From: Greg Kroah-Hartman @ 2013-06-11 20:03 UTC (permalink / raw)
To: linux-kernel
Cc: Greg Kroah-Hartman, stable, Tony Camuso, Don Zickus, Sarah Sharp
3.4-stable review patch. If anyone has any objections, please let me know.
------------------
From: Tony Camuso <tcamuso@redhat.com>
commit 77df9e0b799b03e1d5d9c68062709af5f637e834 upstream.
Commit 71c731a2 (usb: host: xhci: Fix Compliance Mode on SN65LVPE502CP
Hardware) was a workaround for systems using the SN65LVPE502CP,
controller, but it introduced a bug in resume from hibernate.
The fix created a timer, comp_mode_recovery_timer, which is deleted from
a timer list when xhci_suspend() is called. However, the hibernate image,
including the timer list containing the comp_mode_recovery_timer, had
already been saved before the timer was deleted.
Upon resume from hibernate, the list containing the comp_mode_recovery_timer
is restored from the image saved to disk, and xhci_resume(), assuming that
the timer had been deleted by xhci_suspend(), makes a call to
compliance_mode_recoery_timer_init(), which creates a new instance of the
comp_mode_recovery_timer and attempts to place it into the same list in which
it is already active, thus corrupting the list during the list_add() call.
At this point, a call trace is emitted indicating the list corruption.
Soon afterward, the system locks up, the watchdog times out, and the
ensuing NMI crashes the system.
The problem did not occur when resuming from suspend. In suspend, the
image in RAM remains exactly as it was when xhci_suspend() deleted the
comp_mode_recovery_timer, so there is no problem when xhci_resume()
creates a new instance of this timer and places it in the still empty
list.
This patch avoids the problem by deleting the timer in xhci_resume()
when resuming from hibernate. Now xhci_resume() can safely make the
call to create a new instance of this timer, whether returning from
suspend or hibernate.
Thanks to Alan Stern for his help with understanding the problem.
[Sarah reworked this patch to cover the case where the xHCI restore
register operation fails, and (temp & STS_SRE) is true (and we re-init
the host, including re-init for the compliance mode), but hibernate is
false. The original patch would have caused list corruption in this
case.]
This patch should be backported to kernels as old as 3.2, that
contain the commit 71c731a296f1b08a3724bd1b514b64f1bda87a23 "usb: host:
xhci: Fix Compliance Mode on SN65LVPE502CP Hardware"
Signed-off-by: Tony Camuso <tcamuso@redhat.com>
Tested-by: Tony Camuso <tcamuso@redhat.com>
Acked-by: Don Zickus <dzickus@redhat.com>
Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/usb/host/xhci.c | 12 +++++++++++-
1 file changed, 11 insertions(+), 1 deletion(-)
--- a/drivers/usb/host/xhci.c
+++ b/drivers/usb/host/xhci.c
@@ -947,6 +947,7 @@ int xhci_resume(struct xhci_hcd *xhci, b
struct usb_hcd *hcd = xhci_to_hcd(xhci);
struct usb_hcd *secondary_hcd;
int retval = 0;
+ bool comp_timer_running = false;
/* Wait a bit if either of the roothubs need to settle from the
* transition into bus suspend.
@@ -984,6 +985,13 @@ int xhci_resume(struct xhci_hcd *xhci, b
/* If restore operation fails, re-initialize the HC during resume */
if ((temp & STS_SRE) || hibernated) {
+
+ if ((xhci->quirks & XHCI_COMP_MODE_QUIRK) &&
+ !(xhci_all_ports_seen_u0(xhci))) {
+ del_timer_sync(&xhci->comp_mode_recovery_timer);
+ xhci_dbg(xhci, "Compliance Mode Recovery Timer deleted!\n");
+ }
+
/* Let the USB core know _both_ roothubs lost power. */
usb_root_hub_lost_power(xhci->main_hcd->self.root_hub);
usb_root_hub_lost_power(xhci->shared_hcd->self.root_hub);
@@ -1026,6 +1034,8 @@ int xhci_resume(struct xhci_hcd *xhci, b
retval = xhci_init(hcd->primary_hcd);
if (retval)
return retval;
+ comp_timer_running = true;
+
xhci_dbg(xhci, "Start the primary HCD\n");
retval = xhci_run(hcd->primary_hcd);
if (!retval) {
@@ -1067,7 +1077,7 @@ int xhci_resume(struct xhci_hcd *xhci, b
* to suffer the Compliance Mode issue again. It doesn't matter if
* ports have entered previously to U0 before system's suspension.
*/
- if (xhci->quirks & XHCI_COMP_MODE_QUIRK)
+ if ((xhci->quirks & XHCI_COMP_MODE_QUIRK) && !comp_timer_running)
compliance_mode_recovery_timer_init(xhci);
/* Re-enable port polling. */
^ permalink raw reply [flat|nested] 33+ messages in thread
* [ 03/32] xhci-mem: init list heads at the beginning of init
2013-06-11 20:02 [ 00/32] 3.4.49-stable review Greg Kroah-Hartman
2013-06-11 20:03 ` [ 01/32] USB: option: blacklist network interface on Huawei E1820 Greg Kroah-Hartman
2013-06-11 20:03 ` [ 02/32] xhci - correct comp_mode_recovery_timer on return from hibernate Greg Kroah-Hartman
@ 2013-06-11 20:03 ` Greg Kroah-Hartman
2013-06-11 20:03 ` [ 04/32] xhci: fix list access before init Greg Kroah-Hartman
` (28 subsequent siblings)
31 siblings, 0 replies; 33+ messages in thread
From: Greg Kroah-Hartman @ 2013-06-11 20:03 UTC (permalink / raw)
To: linux-kernel
Cc: Greg Kroah-Hartman, stable, Sergio Aguirre, David Cohen,
Sarah Sharp
3.4-stable review patch. If anyone has any objections, please let me know.
------------------
From: Sergio Aguirre <sergio.a.aguirre.rodriguez@intel.com>
commit 331de00a64e5027365145bdf51da27b9ce15dfd5 upstream.
It is possible that we fail on xhci_mem_init, just before doing
the INIT_LIST_HEAD, and calling xhci_mem_cleanup.
Problem is that, the list_for_each_entry_safe macro, assumes
list heads are initialized (not NULL), and dereferences their 'next'
pointer, causing a kernel panic if this is not yet initialized.
Let's protect from that by moving inits to the beginning.
This patch should be backported to kernels as old as 3.2, that
contain the commit 9574323c39d1f8359a04843075d89c9f32d8b7e6 "xHCI: test
USB2 software LPM".
Signed-off-by: Sergio Aguirre <sergio.a.aguirre.rodriguez@intel.com>
Acked-by: David Cohen <david.a.cohen@intel.com>
Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/usb/host/xhci-mem.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
--- a/drivers/usb/host/xhci-mem.c
+++ b/drivers/usb/host/xhci-mem.c
@@ -2274,6 +2274,9 @@ int xhci_mem_init(struct xhci_hcd *xhci,
u32 page_size, temp;
int i;
+ INIT_LIST_HEAD(&xhci->lpm_failed_devs);
+ INIT_LIST_HEAD(&xhci->cancel_cmd_list);
+
page_size = xhci_readl(xhci, &xhci->op_regs->page_size);
xhci_dbg(xhci, "Supported page size register = 0x%x\n", page_size);
for (i = 0; i < 16; i++) {
@@ -2352,7 +2355,6 @@ int xhci_mem_init(struct xhci_hcd *xhci,
xhci->cmd_ring = xhci_ring_alloc(xhci, 1, 1, TYPE_COMMAND, flags);
if (!xhci->cmd_ring)
goto fail;
- INIT_LIST_HEAD(&xhci->cancel_cmd_list);
xhci_dbg(xhci, "Allocated command ring at %p\n", xhci->cmd_ring);
xhci_dbg(xhci, "First segment DMA is 0x%llx\n",
(unsigned long long)xhci->cmd_ring->first_seg->dma);
@@ -2453,8 +2455,6 @@ int xhci_mem_init(struct xhci_hcd *xhci,
if (xhci_setup_port_arrays(xhci, flags))
goto fail;
- INIT_LIST_HEAD(&xhci->lpm_failed_devs);
-
/* Enable USB 3.0 device notifications for function remote wake, which
* is necessary for allowing USB 3.0 devices to do remote wakeup from
* U3 (device suspend).
^ permalink raw reply [flat|nested] 33+ messages in thread
* [ 04/32] xhci: fix list access before init
2013-06-11 20:02 [ 00/32] 3.4.49-stable review Greg Kroah-Hartman
` (2 preceding siblings ...)
2013-06-11 20:03 ` [ 03/32] xhci-mem: init list heads at the beginning of init Greg Kroah-Hartman
@ 2013-06-11 20:03 ` Greg Kroah-Hartman
2013-06-11 20:03 ` [ 05/32] ALSA: usb-audio: fix Roland/Cakewalk UM-3G support Greg Kroah-Hartman
` (27 subsequent siblings)
31 siblings, 0 replies; 33+ messages in thread
From: Greg Kroah-Hartman @ 2013-06-11 20:03 UTC (permalink / raw)
To: linux-kernel
Cc: Greg Kroah-Hartman, stable, Sergey Dyasly, Vladimir Murzin,
Sarah Sharp
3.4-stable review patch. If anyone has any objections, please let me know.
------------------
From: Vladimir Murzin <murzin.v@gmail.com>
commit 88696ae432ce7321540ac53d9caab3de9118b094 upstream.
If for whatever reason we fall into fail path in xhci_mem_init()
before bw table gets initialized we may access the uninitialized lists
in xhci_mem_cleanup().
Check for bw table before traversing lists in cleanup routine.
This patch should be backported to kernels as old as 3.2, that contain
the commit 839c817ce67178ca3c7c7ad534c571bba1e69ebe "xhci: Store
information about roothubs and TTs."
Reported-by: Sergey Dyasly <dserrg@gmail.com>
Tested-by: Sergey Dyasly <dserrg@gmail.com>
Signed-off-by: Vladimir Murzin <murzin.v@gmail.com>
Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/usb/host/xhci-mem.c | 4 ++++
1 file changed, 4 insertions(+)
--- a/drivers/usb/host/xhci-mem.c
+++ b/drivers/usb/host/xhci-mem.c
@@ -1845,6 +1845,9 @@ void xhci_mem_cleanup(struct xhci_hcd *x
}
spin_unlock_irqrestore(&xhci->lock, flags);
+ if (!xhci->rh_bw)
+ goto no_bw;
+
num_ports = HCS_MAX_PORTS(xhci->hcs_params1);
for (i = 0; i < num_ports; i++) {
struct xhci_interval_bw_table *bwt = &xhci->rh_bw[i].bw_table;
@@ -1863,6 +1866,7 @@ void xhci_mem_cleanup(struct xhci_hcd *x
}
}
+no_bw:
xhci->num_usb2_ports = 0;
xhci->num_usb3_ports = 0;
xhci->num_active_eps = 0;
^ permalink raw reply [flat|nested] 33+ messages in thread
* [ 05/32] ALSA: usb-audio: fix Roland/Cakewalk UM-3G support
2013-06-11 20:02 [ 00/32] 3.4.49-stable review Greg Kroah-Hartman
` (3 preceding siblings ...)
2013-06-11 20:03 ` [ 04/32] xhci: fix list access before init Greg Kroah-Hartman
@ 2013-06-11 20:03 ` Greg Kroah-Hartman
2013-06-11 20:03 ` [ 06/32] ALSA: usb-audio - Apply Logitech QuickCam Pro 9000 quirk only to audio iface Greg Kroah-Hartman
` (26 subsequent siblings)
31 siblings, 0 replies; 33+ messages in thread
From: Greg Kroah-Hartman @ 2013-06-11 20:03 UTC (permalink / raw)
To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Clemens Ladisch, Takashi Iwai
3.4-stable review patch. If anyone has any objections, please let me know.
------------------
From: Clemens Ladisch <clemens@ladisch.de>
commit a0c6d309c6df14655f9962f666d1da96318b0b7c upstream.
Commit 927c9423dd5f2d1c0b93d5e694ab84b4a5559713 (ALSA: usb-audio: add
Edirol UM-3G support) used a wrong quirk type, which would make the
driver refuse to attach with the error message "MIDIStreaming interface
descriptor not found".
Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
sound/usb/quirks-table.h | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
--- a/sound/usb/quirks-table.h
+++ b/sound/usb/quirks-table.h
@@ -1622,7 +1622,11 @@ YAMAHA_DEVICE(0x7010, "UB99"),
USB_DEVICE_VENDOR_SPEC(0x0582, 0x0108),
.driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
.ifnum = 0,
- .type = QUIRK_MIDI_STANDARD_INTERFACE
+ .type = QUIRK_MIDI_FIXED_ENDPOINT,
+ .data = & (const struct snd_usb_midi_endpoint_info) {
+ .out_cables = 0x0007,
+ .in_cables = 0x0007
+ }
}
},
{
^ permalink raw reply [flat|nested] 33+ messages in thread
* [ 06/32] ALSA: usb-audio - Apply Logitech QuickCam Pro 9000 quirk only to audio iface
2013-06-11 20:02 [ 00/32] 3.4.49-stable review Greg Kroah-Hartman
` (4 preceding siblings ...)
2013-06-11 20:03 ` [ 05/32] ALSA: usb-audio: fix Roland/Cakewalk UM-3G support Greg Kroah-Hartman
@ 2013-06-11 20:03 ` Greg Kroah-Hartman
2013-06-11 20:03 ` [ 07/32] ALSA: usb-audio - Fix invalid volume resolution on Logitech HD webcam c270 Greg Kroah-Hartman
` (25 subsequent siblings)
31 siblings, 0 replies; 33+ messages in thread
From: Greg Kroah-Hartman @ 2013-06-11 20:03 UTC (permalink / raw)
To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Takashi Iwai
3.4-stable review patch. If anyone has any objections, please let me know.
------------------
From: Takashi Iwai <tiwai@suse.de>
commit 8eafc0a161123d90617c9ca2eddfe87b382b1b89 upstream.
... instead of applying to all interfaces.
Reference: http://forums.gentoo.org/viewtopic-p-6886404.html
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
sound/usb/quirks-table.h | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
--- a/sound/usb/quirks-table.h
+++ b/sound/usb/quirks-table.h
@@ -157,7 +157,13 @@
.bInterfaceSubClass = USB_SUBCLASS_AUDIOCONTROL
},
{
- USB_DEVICE(0x046d, 0x0990),
+ .match_flags = USB_DEVICE_ID_MATCH_DEVICE |
+ USB_DEVICE_ID_MATCH_INT_CLASS |
+ USB_DEVICE_ID_MATCH_INT_SUBCLASS,
+ .idVendor = 0x046d,
+ .idProduct = 0x0990,
+ .bInterfaceClass = USB_CLASS_AUDIO,
+ .bInterfaceSubClass = USB_SUBCLASS_AUDIOCONTROL,
.driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
.vendor_name = "Logitech, Inc.",
.product_name = "QuickCam Pro 9000",
^ permalink raw reply [flat|nested] 33+ messages in thread
* [ 07/32] ALSA: usb-audio - Fix invalid volume resolution on Logitech HD webcam c270
2013-06-11 20:02 [ 00/32] 3.4.49-stable review Greg Kroah-Hartman
` (5 preceding siblings ...)
2013-06-11 20:03 ` [ 06/32] ALSA: usb-audio - Apply Logitech QuickCam Pro 9000 quirk only to audio iface Greg Kroah-Hartman
@ 2013-06-11 20:03 ` Greg Kroah-Hartman
2013-06-11 20:03 ` [ 08/32] USB: iuu_phoenix: fix bulk-message timeout Greg Kroah-Hartman
` (24 subsequent siblings)
31 siblings, 0 replies; 33+ messages in thread
From: Greg Kroah-Hartman @ 2013-06-11 20:03 UTC (permalink / raw)
To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Takashi Iwai
3.4-stable review patch. If anyone has any objections, please let me know.
------------------
From: Takashi Iwai <tiwai@suse.de>
commit 11e7064f35bb87da8f427d1aa4bbd8b7473a3993 upstream.
USB audio driver spews an error message when probing Logitech HD
webcam c270:
ALSA mixer.c:1300 usb_audio: Warning! Unlikely big volume range (=6144), cval->res is probably wrong.
ALSA mixer.c:1304 usb_audio: [5] FU [Mic Capture Volume] ch = 1, val = 1536/7680/1
Obviously the device needs a fixed volume resolution (cval->res = 384)
like other Logitech devices.
Bugzilla: https://bugzilla.novell.com/show_bug.cgi?id=821735
Reported-and-tested-by: Cristian Rodríguez <crrodriguez@opensuse.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
sound/usb/mixer.c | 1 +
1 file changed, 1 insertion(+)
--- a/sound/usb/mixer.c
+++ b/sound/usb/mixer.c
@@ -822,6 +822,7 @@ static void volume_control_quirks(struct
case USB_ID(0x046d, 0x0808):
case USB_ID(0x046d, 0x0809):
case USB_ID(0x046d, 0x081d): /* HD Webcam c510 */
+ case USB_ID(0x046d, 0x0825): /* HD Webcam c270 */
case USB_ID(0x046d, 0x0991):
/* Most audio usb devices lie about volume resolution.
* Most Logitech webcams have res = 384.
^ permalink raw reply [flat|nested] 33+ messages in thread
* [ 08/32] USB: iuu_phoenix: fix bulk-message timeout
2013-06-11 20:02 [ 00/32] 3.4.49-stable review Greg Kroah-Hartman
` (6 preceding siblings ...)
2013-06-11 20:03 ` [ 07/32] ALSA: usb-audio - Fix invalid volume resolution on Logitech HD webcam c270 Greg Kroah-Hartman
@ 2013-06-11 20:03 ` Greg Kroah-Hartman
2013-06-11 20:03 ` [ 09/32] USB: keyspan: fix bogus array index Greg Kroah-Hartman
` (23 subsequent siblings)
31 siblings, 0 replies; 33+ messages in thread
From: Greg Kroah-Hartman @ 2013-06-11 20:03 UTC (permalink / raw)
To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Johan Hovold
3.4-stable review patch. If anyone has any objections, please let me know.
------------------
From: Johan Hovold <jhovold@gmail.com>
commit 6c13ff68a7ce01da7a51b44241a7aad8eaaedde7 upstream.
The bulk-message timeout is specified in milliseconds and should not
depend on HZ.
Signed-off-by: Johan Hovold <jhovold@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/usb/serial/iuu_phoenix.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
--- a/drivers/usb/serial/iuu_phoenix.c
+++ b/drivers/usb/serial/iuu_phoenix.c
@@ -326,7 +326,7 @@ static int bulk_immediate(struct usb_ser
usb_bulk_msg(serial->dev,
usb_sndbulkpipe(serial->dev,
port->bulk_out_endpointAddress), buf,
- count, &actual, HZ * 1);
+ count, &actual, 1000);
if (status != IUU_OPERATION_OK)
dbg("%s - error = %2x", __func__, status);
@@ -349,7 +349,7 @@ static int read_immediate(struct usb_ser
usb_bulk_msg(serial->dev,
usb_rcvbulkpipe(serial->dev,
port->bulk_in_endpointAddress), buf,
- count, &actual, HZ * 1);
+ count, &actual, 1000);
if (status != IUU_OPERATION_OK)
dbg("%s - error = %2x", __func__, status);
^ permalink raw reply [flat|nested] 33+ messages in thread
* [ 09/32] USB: keyspan: fix bogus array index
2013-06-11 20:02 [ 00/32] 3.4.49-stable review Greg Kroah-Hartman
` (7 preceding siblings ...)
2013-06-11 20:03 ` [ 08/32] USB: iuu_phoenix: fix bulk-message timeout Greg Kroah-Hartman
@ 2013-06-11 20:03 ` Greg Kroah-Hartman
2013-06-11 20:03 ` [ 10/32] USB: ark3116: fix control-message timeout Greg Kroah-Hartman
` (22 subsequent siblings)
31 siblings, 0 replies; 33+ messages in thread
From: Greg Kroah-Hartman @ 2013-06-11 20:03 UTC (permalink / raw)
To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Johan Hovold
3.4-stable review patch. If anyone has any objections, please let me know.
------------------
From: Johan Hovold <jhovold@gmail.com>
commit a07088098a650267b2eda689538133a324b9523f upstream.
The outcont_endpoints array was indexed using the port minor number
(which can be greater than the array size) rather than the device port
number.
Signed-off-by: Johan Hovold <jhovold@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/usb/serial/keyspan.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/drivers/usb/serial/keyspan.c
+++ b/drivers/usb/serial/keyspan.c
@@ -1705,7 +1705,7 @@ static int keyspan_usa26_send_setup(stru
d_details = s_priv->device_details;
device_port = port->number - port->serial->minor;
- outcont_urb = d_details->outcont_endpoints[port->number];
+ outcont_urb = d_details->outcont_endpoints[device_port];
this_urb = p_priv->outcont_urb;
dbg("%s - endpoint %d", __func__, usb_pipeendpoint(this_urb->pipe));
^ permalink raw reply [flat|nested] 33+ messages in thread
* [ 10/32] USB: ark3116: fix control-message timeout
2013-06-11 20:02 [ 00/32] 3.4.49-stable review Greg Kroah-Hartman
` (8 preceding siblings ...)
2013-06-11 20:03 ` [ 09/32] USB: keyspan: fix bogus array index Greg Kroah-Hartman
@ 2013-06-11 20:03 ` Greg Kroah-Hartman
2013-06-11 20:03 ` [ 11/32] USB: visor: fix initialisation of Treo/Kyocera devices Greg Kroah-Hartman
` (21 subsequent siblings)
31 siblings, 0 replies; 33+ messages in thread
From: Greg Kroah-Hartman @ 2013-06-11 20:03 UTC (permalink / raw)
To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Johan Hovold
3.4-stable review patch. If anyone has any objections, please let me know.
------------------
From: Johan Hovold <jhovold@gmail.com>
commit 634371911730a462626071065b64cd6e1fe213e0 upstream.
The control-message timeout is specified in milliseconds and should not
depend on HZ.
Signed-off-by: Johan Hovold <jhovold@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/usb/serial/ark3116.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/drivers/usb/serial/ark3116.c
+++ b/drivers/usb/serial/ark3116.c
@@ -49,7 +49,7 @@ static bool debug;
#define DRIVER_NAME "ark3116"
/* usb timeout of 1 second */
-#define ARK_TIMEOUT (1*HZ)
+#define ARK_TIMEOUT 1000
static const struct usb_device_id id_table[] = {
{ USB_DEVICE(0x6547, 0x0232) },
^ permalink raw reply [flat|nested] 33+ messages in thread
* [ 11/32] USB: visor: fix initialisation of Treo/Kyocera devices
2013-06-11 20:02 [ 00/32] 3.4.49-stable review Greg Kroah-Hartman
` (9 preceding siblings ...)
2013-06-11 20:03 ` [ 10/32] USB: ark3116: fix control-message timeout Greg Kroah-Hartman
@ 2013-06-11 20:03 ` Greg Kroah-Hartman
2013-06-11 20:03 ` [ 12/32] USB: Serial: cypress_M8: Enable FRWD Dongle hidcom device Greg Kroah-Hartman
` (20 subsequent siblings)
31 siblings, 0 replies; 33+ messages in thread
From: Greg Kroah-Hartman @ 2013-06-11 20:03 UTC (permalink / raw)
To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Johan Hovold
3.4-stable review patch. If anyone has any objections, please let me know.
------------------
From: Johan Hovold <jhovold@gmail.com>
commit 420021a395ce38b7ab2cceb52dee4038be7d8fa3 upstream.
Fix regression introduced by commit 214916f2e ("USB: visor: reimplement
using generic framework") which broke initialisation of Treo/Kyocera
devices that re-mapped bulk-in endpoints.
Signed-off-by: Johan Hovold <jhovold@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/usb/serial/visor.c | 8 ++++++++
1 file changed, 8 insertions(+)
--- a/drivers/usb/serial/visor.c
+++ b/drivers/usb/serial/visor.c
@@ -596,9 +596,17 @@ static int treo_attach(struct usb_serial
*/
#define COPY_PORT(dest, src) \
do { \
+ int i; \
+ \
+ for (i = 0; i < ARRAY_SIZE(src->read_urbs); ++i) { \
+ dest->read_urbs[i] = src->read_urbs[i]; \
+ dest->read_urbs[i]->context = dest; \
+ dest->bulk_in_buffers[i] = src->bulk_in_buffers[i]; \
+ } \
dest->read_urb = src->read_urb; \
dest->bulk_in_endpointAddress = src->bulk_in_endpointAddress;\
dest->bulk_in_buffer = src->bulk_in_buffer; \
+ dest->bulk_in_size = src->bulk_in_size; \
dest->interrupt_in_urb = src->interrupt_in_urb; \
dest->interrupt_in_endpointAddress = \
src->interrupt_in_endpointAddress;\
^ permalink raw reply [flat|nested] 33+ messages in thread
* [ 12/32] USB: Serial: cypress_M8: Enable FRWD Dongle hidcom device
2013-06-11 20:02 [ 00/32] 3.4.49-stable review Greg Kroah-Hartman
` (10 preceding siblings ...)
2013-06-11 20:03 ` [ 11/32] USB: visor: fix initialisation of Treo/Kyocera devices Greg Kroah-Hartman
@ 2013-06-11 20:03 ` Greg Kroah-Hartman
2013-06-11 20:03 ` [ 13/32] USB: whiteheat: fix broken port configuration Greg Kroah-Hartman
` (19 subsequent siblings)
31 siblings, 0 replies; 33+ messages in thread
From: Greg Kroah-Hartman @ 2013-06-11 20:03 UTC (permalink / raw)
To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Robert Butora
3.4-stable review patch. If anyone has any objections, please let me know.
------------------
From: Robert Butora <robert.butora.fi@gmail.com>
commit 6529591e3eef65f0f528a81ac169f6e294b947a7 upstream.
The patch adds a new HIDCOM device and does not affect other devices
driven by the cypress_M8 module. Changes are:
- add VendorID ProductID to device tables
- skip unstable speed check because FRWD uses 115200bps
- skip reset at probe which is an issue workaround for this
particular device.
Signed-off-by: Robert Butora <robert.butora.fi@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/usb/serial/cypress_m8.c | 18 +++++++++++++++++-
drivers/usb/serial/cypress_m8.h | 4 ++++
2 files changed, 21 insertions(+), 1 deletion(-)
--- a/drivers/usb/serial/cypress_m8.c
+++ b/drivers/usb/serial/cypress_m8.c
@@ -70,6 +70,7 @@ static const struct usb_device_id id_tab
static const struct usb_device_id id_table_cyphidcomrs232[] = {
{ USB_DEVICE(VENDOR_ID_CYPRESS, PRODUCT_ID_CYPHIDCOM) },
{ USB_DEVICE(VENDOR_ID_POWERCOM, PRODUCT_ID_UPS) },
+ { USB_DEVICE(VENDOR_ID_FRWD, PRODUCT_ID_CYPHIDCOM_FRWD) },
{ } /* Terminating entry */
};
@@ -83,6 +84,7 @@ static const struct usb_device_id id_tab
{ USB_DEVICE(VENDOR_ID_DELORME, PRODUCT_ID_EARTHMATEUSB_LT20) },
{ USB_DEVICE(VENDOR_ID_CYPRESS, PRODUCT_ID_CYPHIDCOM) },
{ USB_DEVICE(VENDOR_ID_POWERCOM, PRODUCT_ID_UPS) },
+ { USB_DEVICE(VENDOR_ID_FRWD, PRODUCT_ID_CYPHIDCOM_FRWD) },
{ USB_DEVICE(VENDOR_ID_DAZZLE, PRODUCT_ID_CA42) },
{ } /* Terminating entry */
};
@@ -243,6 +245,12 @@ static struct usb_serial_driver * const
* Cypress serial helper functions
*****************************************************************************/
+/* FRWD Dongle hidcom needs to skip reset and speed checks */
+static inline bool is_frwd(struct usb_device *dev)
+{
+ return ((le16_to_cpu(dev->descriptor.idVendor) == VENDOR_ID_FRWD) &&
+ (le16_to_cpu(dev->descriptor.idProduct) == PRODUCT_ID_CYPHIDCOM_FRWD));
+}
static int analyze_baud_rate(struct usb_serial_port *port, speed_t new_rate)
{
@@ -252,6 +260,10 @@ static int analyze_baud_rate(struct usb_
if (unstable_bauds)
return new_rate;
+ /* FRWD Dongle uses 115200 bps */
+ if (is_frwd(port->serial->dev))
+ return new_rate;
+
/*
* The general purpose firmware for the Cypress M8 allows for
* a maximum speed of 57600bps (I have no idea whether DeLorme
@@ -465,7 +477,11 @@ static int generic_startup(struct usb_se
}
init_waitqueue_head(&priv->delta_msr_wait);
- usb_reset_configuration(serial->dev);
+ /* Skip reset for FRWD device. It is a workaound:
+ device hangs if it receives SET_CONFIGURE in Configured
+ state. */
+ if (!is_frwd(serial->dev))
+ usb_reset_configuration(serial->dev);
priv->cmd_ctrl = 0;
priv->line_control = 0;
--- a/drivers/usb/serial/cypress_m8.h
+++ b/drivers/usb/serial/cypress_m8.h
@@ -24,6 +24,10 @@
#define VENDOR_ID_CYPRESS 0x04b4
#define PRODUCT_ID_CYPHIDCOM 0x5500
+/* FRWD Dongle - a GPS sports watch */
+#define VENDOR_ID_FRWD 0x6737
+#define PRODUCT_ID_CYPHIDCOM_FRWD 0x0001
+
/* Powercom UPS, chip CY7C63723 */
#define VENDOR_ID_POWERCOM 0x0d9f
#define PRODUCT_ID_UPS 0x0002
^ permalink raw reply [flat|nested] 33+ messages in thread
* [ 13/32] USB: whiteheat: fix broken port configuration
2013-06-11 20:02 [ 00/32] 3.4.49-stable review Greg Kroah-Hartman
` (11 preceding siblings ...)
2013-06-11 20:03 ` [ 12/32] USB: Serial: cypress_M8: Enable FRWD Dongle hidcom device Greg Kroah-Hartman
@ 2013-06-11 20:03 ` Greg Kroah-Hartman
2013-06-11 20:03 ` [ 14/32] USB: serial: fix Treo/Kyocera interrrupt-in urb context Greg Kroah-Hartman
` (18 subsequent siblings)
31 siblings, 0 replies; 33+ messages in thread
From: Greg Kroah-Hartman @ 2013-06-11 20:03 UTC (permalink / raw)
To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Johan Hovold
3.4-stable review patch. If anyone has any objections, please let me know.
------------------
From: Johan Hovold <jhovold@gmail.com>
commit 9eecf22d2b375b9064a20421c6c307b760b03d46 upstream.
When configuring the port (e.g. set_termios) the port minor number
rather than the port number was used in the request (and they only
coincide for minor number 0).
Signed-off-by: Johan Hovold <jhovold@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/usb/serial/whiteheat.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/drivers/usb/serial/whiteheat.c
+++ b/drivers/usb/serial/whiteheat.c
@@ -1154,7 +1154,7 @@ static void firm_setup_port(struct tty_s
struct whiteheat_port_settings port_settings;
unsigned int cflag = tty->termios->c_cflag;
- port_settings.port = port->number + 1;
+ port_settings.port = port->number - port->serial->minor + 1;
/* get the byte size */
switch (cflag & CSIZE) {
^ permalink raw reply [flat|nested] 33+ messages in thread
* [ 14/32] USB: serial: fix Treo/Kyocera interrrupt-in urb context
2013-06-11 20:02 [ 00/32] 3.4.49-stable review Greg Kroah-Hartman
` (12 preceding siblings ...)
2013-06-11 20:03 ` [ 13/32] USB: whiteheat: fix broken port configuration Greg Kroah-Hartman
@ 2013-06-11 20:03 ` Greg Kroah-Hartman
2013-06-11 20:03 ` [ 15/32] USB: revert periodic scheduling bugfix Greg Kroah-Hartman
` (17 subsequent siblings)
31 siblings, 0 replies; 33+ messages in thread
From: Greg Kroah-Hartman @ 2013-06-11 20:03 UTC (permalink / raw)
To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Johan Hovold
3.4-stable review patch. If anyone has any objections, please let me know.
------------------
From: Johan Hovold <jhovold@gmail.com>
commit 5f8e2c07d75967ee49a5da1d21ddf5f50d48cda0 upstream.
The first and second interrupt-in urbs are swapped for some Treo/Kyocera
devices, but the urb context was never updated with the new port.
Signed-off-by: Johan Hovold <jhovold@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/usb/serial/visor.c | 1 +
1 file changed, 1 insertion(+)
--- a/drivers/usb/serial/visor.c
+++ b/drivers/usb/serial/visor.c
@@ -608,6 +608,7 @@ static int treo_attach(struct usb_serial
dest->bulk_in_buffer = src->bulk_in_buffer; \
dest->bulk_in_size = src->bulk_in_size; \
dest->interrupt_in_urb = src->interrupt_in_urb; \
+ dest->interrupt_in_urb->context = dest; \
dest->interrupt_in_endpointAddress = \
src->interrupt_in_endpointAddress;\
dest->interrupt_in_buffer = src->interrupt_in_buffer; \
^ permalink raw reply [flat|nested] 33+ messages in thread
* [ 15/32] USB: revert periodic scheduling bugfix
2013-06-11 20:02 [ 00/32] 3.4.49-stable review Greg Kroah-Hartman
` (13 preceding siblings ...)
2013-06-11 20:03 ` [ 14/32] USB: serial: fix Treo/Kyocera interrrupt-in urb context Greg Kroah-Hartman
@ 2013-06-11 20:03 ` Greg Kroah-Hartman
2013-06-11 20:03 ` [ 16/32] USB: mos7720: fix DMA to stack Greg Kroah-Hartman
` (16 subsequent siblings)
31 siblings, 0 replies; 33+ messages in thread
From: Greg Kroah-Hartman @ 2013-06-11 20:03 UTC (permalink / raw)
To: linux-kernel
Cc: Greg Kroah-Hartman, stable, Alan Stern, Joseph Salisbury,
Tim Richardson
3.4-stable review patch. If anyone has any objections, please let me know.
------------------
From: Alan Stern <stern@rowland.harvard.edu>
commit fdc03438f53a00294ed9939eb3a1f6db6f3d8963 upstream.
This patch reverts commit 3e619d04159be54b3daa0b7036b0ce9e067f4b5d
(USB: EHCI: fix bug in scheduling periodic split transfers). The
commit was valid -- it fixed a real bug -- but the periodic scheduler
in ehci-hcd is in such bad shape (especially the part that handles
split transactions) that fixing one bug is very likely to cause
another to surface. That's what happened in this case; the result was
choppy and noisy playback on certain 24-bit audio devices.
The only real fix will be to rewrite this entire section of code. My
next project...
This fixes https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1136110.
Thanks to Tim Richardson for extra testing and feedback, and to Joseph
Salisbury and Tyson Tan for tracking down the original source of the
problem.
Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
CC: Joseph Salisbury <joseph.salisbury@canonical.com>
CC: Tim Richardson <tim@tim-richardson.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/usb/host/ehci-sched.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/drivers/usb/host/ehci-sched.c
+++ b/drivers/usb/host/ehci-sched.c
@@ -236,7 +236,7 @@ static inline unsigned char tt_start_ufr
}
static const unsigned char
-max_tt_usecs[] = { 125, 125, 125, 125, 125, 125, 125, 25 };
+max_tt_usecs[] = { 125, 125, 125, 125, 125, 125, 30, 0 };
/* carryover low/fullspeed bandwidth that crosses uframe boundries */
static inline void carryover_tt_bandwidth(unsigned short tt_usecs[8])
^ permalink raw reply [flat|nested] 33+ messages in thread
* [ 16/32] USB: mos7720: fix DMA to stack
2013-06-11 20:02 [ 00/32] 3.4.49-stable review Greg Kroah-Hartman
` (14 preceding siblings ...)
2013-06-11 20:03 ` [ 15/32] USB: revert periodic scheduling bugfix Greg Kroah-Hartman
@ 2013-06-11 20:03 ` Greg Kroah-Hartman
2013-06-11 20:03 ` [ 17/32] USB: mos7720: fix message timeouts Greg Kroah-Hartman
` (15 subsequent siblings)
31 siblings, 0 replies; 33+ messages in thread
From: Greg Kroah-Hartman @ 2013-06-11 20:03 UTC (permalink / raw)
To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Johan Hovold
3.4-stable review patch. If anyone has any objections, please let me know.
------------------
From: Johan Hovold <jhovold@gmail.com>
commit 72ea18a558ed7a63a50bb121ba60d73b5b38ae30 upstream.
The read_mos_reg function is called with stack-allocated buffers, which
must not be used for control messages.
Signed-off-by: Johan Hovold <jhovold@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/usb/serial/mos7720.c | 17 ++++++++++++++---
1 file changed, 14 insertions(+), 3 deletions(-)
--- a/drivers/usb/serial/mos7720.c
+++ b/drivers/usb/serial/mos7720.c
@@ -234,11 +234,22 @@ static int read_mos_reg(struct usb_seria
__u8 requesttype = (__u8)0xc0;
__u16 index = get_reg_index(reg);
__u16 value = get_reg_value(reg, serial_portnum);
- int status = usb_control_msg(usbdev, pipe, request, requesttype, value,
- index, data, 1, MOS_WDR_TIMEOUT);
- if (status < 0)
+ u8 *buf;
+ int status;
+
+ buf = kmalloc(1, GFP_KERNEL);
+ if (!buf)
+ return -ENOMEM;
+
+ status = usb_control_msg(usbdev, pipe, request, requesttype, value,
+ index, buf, 1, MOS_WDR_TIMEOUT);
+ if (status == 1)
+ *data = *buf;
+ else if (status < 0)
dev_err(&usbdev->dev,
"mos7720: usb_control_msg() failed: %d", status);
+ kfree(buf);
+
return status;
}
^ permalink raw reply [flat|nested] 33+ messages in thread
* [ 17/32] USB: mos7720: fix message timeouts
2013-06-11 20:02 [ 00/32] 3.4.49-stable review Greg Kroah-Hartman
` (15 preceding siblings ...)
2013-06-11 20:03 ` [ 16/32] USB: mos7720: fix DMA to stack Greg Kroah-Hartman
@ 2013-06-11 20:03 ` Greg Kroah-Hartman
2013-06-11 20:03 ` [ 18/32] USB: mos7720: fix hardware flow control Greg Kroah-Hartman
` (14 subsequent siblings)
31 siblings, 0 replies; 33+ messages in thread
From: Greg Kroah-Hartman @ 2013-06-11 20:03 UTC (permalink / raw)
To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Johan Hovold
3.4-stable review patch. If anyone has any objections, please let me know.
------------------
From: Johan Hovold <jhovold@gmail.com>
commit 849513a7809175420d353625b6f651d961e99d49 upstream.
The control and bulk-message timeouts are specified in milliseconds and
should not depend on HZ.
Signed-off-by: Johan Hovold <jhovold@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/usb/serial/mos7720.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
--- a/drivers/usb/serial/mos7720.c
+++ b/drivers/usb/serial/mos7720.c
@@ -44,7 +44,7 @@
#define DRIVER_DESC "Moschip USB Serial Driver"
/* default urb timeout */
-#define MOS_WDR_TIMEOUT (HZ * 5)
+#define MOS_WDR_TIMEOUT 5000
#define MOS_MAX_PORT 0x02
#define MOS_WRITE 0x0E
@@ -2105,7 +2105,7 @@ static int mos7720_startup(struct usb_se
/* setting configuration feature to one */
usb_control_msg(serial->dev, usb_sndctrlpipe(serial->dev, 0),
- (__u8)0x03, 0x00, 0x01, 0x00, NULL, 0x00, 5*HZ);
+ (__u8)0x03, 0x00, 0x01, 0x00, NULL, 0x00, 5000);
/* start the interrupt urb */
ret_val = usb_submit_urb(serial->port[0]->interrupt_in_urb, GFP_KERNEL);
@@ -2150,7 +2150,7 @@ static void mos7720_release(struct usb_s
/* wait for synchronous usb calls to return */
if (mos_parport->msg_pending)
wait_for_completion_timeout(&mos_parport->syncmsg_compl,
- MOS_WDR_TIMEOUT);
+ msecs_to_jiffies(MOS_WDR_TIMEOUT));
parport_remove_port(mos_parport->pp);
usb_set_serial_data(serial, NULL);
^ permalink raw reply [flat|nested] 33+ messages in thread
* [ 18/32] USB: mos7720: fix hardware flow control
2013-06-11 20:02 [ 00/32] 3.4.49-stable review Greg Kroah-Hartman
` (16 preceding siblings ...)
2013-06-11 20:03 ` [ 17/32] USB: mos7720: fix message timeouts Greg Kroah-Hartman
@ 2013-06-11 20:03 ` Greg Kroah-Hartman
2013-06-11 20:03 ` [ 19/32] ACPI / video: ignore BIOS initial backlight value for HP m4 Greg Kroah-Hartman
` (13 subsequent siblings)
31 siblings, 0 replies; 33+ messages in thread
From: Greg Kroah-Hartman @ 2013-06-11 20:03 UTC (permalink / raw)
To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Johan Hovold
3.4-stable review patch. If anyone has any objections, please let me know.
------------------
From: Johan Hovold <jhovold@gmail.com>
commit a26f009a070e840fadacb91013b2391ba7ab6cc2 upstream.
The register access to enable hardware flow control depends on the
device port number and not the port minor number.
Signed-off-by: Johan Hovold <jhovold@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/usb/serial/mos7720.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/drivers/usb/serial/mos7720.c
+++ b/drivers/usb/serial/mos7720.c
@@ -1701,7 +1701,7 @@ static void change_port_settings(struct
mos7720_port->shadowMCR |= (UART_MCR_XONANY);
/* To set hardware flow control to the specified *
* serial port, in SP1/2_CONTROL_REG */
- if (port->number)
+ if (port_number)
write_mos_reg(serial, dummy, SP_CONTROL_REG, 0x01);
else
write_mos_reg(serial, dummy, SP_CONTROL_REG, 0x02);
^ permalink raw reply [flat|nested] 33+ messages in thread
* [ 19/32] ACPI / video: ignore BIOS initial backlight value for HP m4
2013-06-11 20:02 [ 00/32] 3.4.49-stable review Greg Kroah-Hartman
` (17 preceding siblings ...)
2013-06-11 20:03 ` [ 18/32] USB: mos7720: fix hardware flow control Greg Kroah-Hartman
@ 2013-06-11 20:03 ` Greg Kroah-Hartman
2013-06-11 20:03 ` [ 20/32] ACPI / video: ignore BIOS initial backlight value for HP Pavilion g6 Greg Kroah-Hartman
` (12 subsequent siblings)
31 siblings, 0 replies; 33+ messages in thread
From: Greg Kroah-Hartman @ 2013-06-11 20:03 UTC (permalink / raw)
To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Alex Hung, Rafael J. Wysocki
3.4-stable review patch. If anyone has any objections, please let me know.
------------------
From: Alex Hung <alex.hung@canonical.com>
commit fedbe9bc6fd3e14b1ffbb3dac407777ac4a3650c upstream.
On HP m4 lapops, BIOS reports minimum backlight on boot and
causes backlight to dim completely. This ignores the initial backlight
values and set to max brightness.
References: https://bugs.launchpad.net/bugs/1184501
Signed-off-by: Alex Hung <alex.hung@canonical.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/acpi/video.c | 8 ++++++++
1 file changed, 8 insertions(+)
--- a/drivers/acpi/video.c
+++ b/drivers/acpi/video.c
@@ -447,6 +447,14 @@ static struct dmi_system_id video_dmi_ta
DMI_MATCH(DMI_PRODUCT_NAME, "HP Folio 13 - 2000 Notebook PC"),
},
},
+ {
+ .callback = video_ignore_initial_backlight,
+ .ident = "HP Pavilion m4",
+ .matches = {
+ DMI_MATCH(DMI_BOARD_VENDOR, "Hewlett-Packard"),
+ DMI_MATCH(DMI_PRODUCT_NAME, "HP Pavilion m4 Notebook PC"),
+ },
+ },
{}
};
^ permalink raw reply [flat|nested] 33+ messages in thread
* [ 20/32] ACPI / video: ignore BIOS initial backlight value for HP Pavilion g6
2013-06-11 20:02 [ 00/32] 3.4.49-stable review Greg Kroah-Hartman
` (18 preceding siblings ...)
2013-06-11 20:03 ` [ 19/32] ACPI / video: ignore BIOS initial backlight value for HP m4 Greg Kroah-Hartman
@ 2013-06-11 20:03 ` Greg Kroah-Hartman
2013-06-11 20:03 ` [ 21/32] powerpc/eeh: Dont check RTAS token to get PE addr Greg Kroah-Hartman
` (11 subsequent siblings)
31 siblings, 0 replies; 33+ messages in thread
From: Greg Kroah-Hartman @ 2013-06-11 20:03 UTC (permalink / raw)
To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Ash Willis, Rafael J. Wysocki
3.4-stable review patch. If anyone has any objections, please let me know.
------------------
From: Ash Willis <ashwillis.kernel@gmail.com>
commit 780a6ec640a3fed671fc2c40e4dd30c03eca3ac3 upstream.
This patch addresses kernel bug 56661. BIOS reports an incorrect
backlight value, causing the driver to switch off the backlight
completely during startup. This patch ignores the incorrect value from
BIOS.
References: https://bugzilla.kernel.org/show_bug.cgi?id=56661
Signed-off-by: Ash Willis <ashwillis@programmer.net>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/acpi/video.c | 8 ++++++++
1 file changed, 8 insertions(+)
--- a/drivers/acpi/video.c
+++ b/drivers/acpi/video.c
@@ -449,6 +449,14 @@ static struct dmi_system_id video_dmi_ta
},
{
.callback = video_ignore_initial_backlight,
+ .ident = "HP Pavilion g6 Notebook PC",
+ .matches = {
+ DMI_MATCH(DMI_BOARD_VENDOR, "Hewlett-Packard"),
+ DMI_MATCH(DMI_PRODUCT_NAME, "HP Pavilion g6 Notebook PC"),
+ },
+ },
+ {
+ .callback = video_ignore_initial_backlight,
.ident = "HP Pavilion m4",
.matches = {
DMI_MATCH(DMI_BOARD_VENDOR, "Hewlett-Packard"),
^ permalink raw reply [flat|nested] 33+ messages in thread
* [ 21/32] powerpc/eeh: Dont check RTAS token to get PE addr
2013-06-11 20:02 [ 00/32] 3.4.49-stable review Greg Kroah-Hartman
` (19 preceding siblings ...)
2013-06-11 20:03 ` [ 20/32] ACPI / video: ignore BIOS initial backlight value for HP Pavilion g6 Greg Kroah-Hartman
@ 2013-06-11 20:03 ` Greg Kroah-Hartman
2013-06-11 20:03 ` [ 22/32] radeon: Fix system hang issue when using KMS with older cards Greg Kroah-Hartman
` (10 subsequent siblings)
31 siblings, 0 replies; 33+ messages in thread
From: Greg Kroah-Hartman @ 2013-06-11 20:03 UTC (permalink / raw)
To: linux-kernel
Cc: Greg Kroah-Hartman, stable, Robert Knight, Gavin Shan,
Benjamin Herrenschmidt
3.4-stable review patch. If anyone has any objections, please let me know.
------------------
From: Gavin Shan <shangw@linux.vnet.ibm.com>
commit b8b3de224f194005ad87ede6fd022fcc2bef3b1a upstream.
RTAS token "ibm,get-config-addr-info" or ibm,get-config-addr-info2"
are used to retrieve the PE address according to PCI address, which
made up of domain/bus/slot/function. If we don't have those 2 tokens,
the domain/bus/slot/function would be used as the address for EEH
RTAS operations. Some older f/w might not have those 2 tokens and
that blocks the EEH functionality to be initialized. It was introduced
by commit e2af155c ("powerpc/eeh: pseries platform EEH initialization").
The patch skips the check on those 2 tokens so we can bring up EEH
functionality successfully. And domain/bus/slot/function will be
used as address for EEH RTAS operations.
Reported-by: Robert Knight <knight@princeton.edu>
Signed-off-by: Gavin Shan <shangw@linux.vnet.ibm.com>
Tested-by: Robert Knight <knight@princeton.edu>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
arch/powerpc/platforms/pseries/eeh_pseries.c | 12 +++++-------
1 file changed, 5 insertions(+), 7 deletions(-)
--- a/arch/powerpc/platforms/pseries/eeh_pseries.c
+++ b/arch/powerpc/platforms/pseries/eeh_pseries.c
@@ -83,7 +83,11 @@ static int pseries_eeh_init(void)
ibm_configure_pe = rtas_token("ibm,configure-pe");
ibm_configure_bridge = rtas_token ("ibm,configure-bridge");
- /* necessary sanity check */
+ /*
+ * Necessary sanity check. We needn't check "get-config-addr-info"
+ * and its variant since the old firmware probably support address
+ * of domain/bus/slot/function for EEH RTAS operations.
+ */
if (ibm_set_eeh_option == RTAS_UNKNOWN_SERVICE) {
pr_warning("%s: RTAS service <ibm,set-eeh-option> invalid\n",
__func__);
@@ -102,12 +106,6 @@ static int pseries_eeh_init(void)
pr_warning("%s: RTAS service <ibm,slot-error-detail> invalid\n",
__func__);
return -EINVAL;
- } else if (ibm_get_config_addr_info2 == RTAS_UNKNOWN_SERVICE &&
- ibm_get_config_addr_info == RTAS_UNKNOWN_SERVICE) {
- pr_warning("%s: RTAS service <ibm,get-config-addr-info2> and "
- "<ibm,get-config-addr-info> invalid\n",
- __func__);
- return -EINVAL;
} else if (ibm_configure_pe == RTAS_UNKNOWN_SERVICE &&
ibm_configure_bridge == RTAS_UNKNOWN_SERVICE) {
pr_warning("%s: RTAS service <ibm,configure-pe> and "
^ permalink raw reply [flat|nested] 33+ messages in thread
* [ 22/32] radeon: Fix system hang issue when using KMS with older cards
2013-06-11 20:02 [ 00/32] 3.4.49-stable review Greg Kroah-Hartman
` (20 preceding siblings ...)
2013-06-11 20:03 ` [ 21/32] powerpc/eeh: Dont check RTAS token to get PE addr Greg Kroah-Hartman
@ 2013-06-11 20:03 ` Greg Kroah-Hartman
2013-06-11 20:03 ` [ 23/32] drm/radeon: dont allow audio on DCE6 Greg Kroah-Hartman
` (9 subsequent siblings)
31 siblings, 0 replies; 33+ messages in thread
From: Greg Kroah-Hartman @ 2013-06-11 20:03 UTC (permalink / raw)
To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Adis Hamzić, Alex Deucher
3.4-stable review patch. If anyone has any objections, please let me know.
------------------
From: Adis Hamzić <adis@hamzadis.com>
commit e49f3959a96dc279860af7e86e6dbcfda50580a5 upstream.
The current radeon driver initialization routines, when using KMS, are written
so that the IRQ installation routine is called before initializing the WB buffer
and the CP rings. With some ASICs, though, the IRQ routine tries to access the
GFX_INDEX ring causing a call to RREG32 with the value of -1 in
radeon_fence_read. This, in turn causes the system to completely hang with some
cards, requiring a hard reset.
A call stack that can cause such a hang looks like this (using rv515 ASIC for the
example here):
* rv515_init (rv515.c)
* radeon_irq_kms_init (radeon_irq_kms.c)
* drm_irq_install (drm_irq.c)
* radeon_driver_irq_preinstall_kms (radeon_irq_kms.c)
* rs600_irq_process (rs600.c)
* radeon_fence_process - due to SW interrupt (radeon_fence.c)
* radeon_fence_read (radeon_fence.c)
* hang due to RREG32(-1)
The patch moves the IRQ installation to the card startup routine, after the ring
has been initialized, but before the IRQ has been set. This fixes the issue, but
requires a check to see if the IRQ is already installed, as is the case in the
system resume codepath.
I have tested the patch on three machines using the rv515, the rv770 and the
evergreen ASIC. They worked without issues.
This seems to be a known issue and has been reported on several bug tracking
sites by various distributions (see links below). Most of reports recommend
booting the system with KMS disabled and then enabling KMS by reloading the
radeon module. For some reason, this was indeed a usable workaround, however,
UMS is now deprecated and disabled by default.
Bug reports:
https://bugzilla.redhat.com/show_bug.cgi?id=845745
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/561789
https://bbs.archlinux.org/viewtopic.php?id=156964
Signed-off-by: Adis Hamzić <adis@hamzadis.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
---
drivers/gpu/drm/radeon/evergreen.c | 10 ++++++----
drivers/gpu/drm/radeon/ni.c | 10 ++++++----
drivers/gpu/drm/radeon/r100.c | 9 ++++++---
drivers/gpu/drm/radeon/r300.c | 9 ++++++---
drivers/gpu/drm/radeon/r420.c | 10 ++++++----
drivers/gpu/drm/radeon/r520.c | 9 ++++++---
drivers/gpu/drm/radeon/r600.c | 10 ++++++----
drivers/gpu/drm/radeon/rs400.c | 9 ++++++---
drivers/gpu/drm/radeon/rs600.c | 9 ++++++---
drivers/gpu/drm/radeon/rs690.c | 9 ++++++---
drivers/gpu/drm/radeon/rv515.c | 9 ++++++---
drivers/gpu/drm/radeon/rv770.c | 10 ++++++----
drivers/gpu/drm/radeon/si.c | 10 ++++++----
13 files changed, 78 insertions(+), 45 deletions(-)
--- a/drivers/gpu/drm/radeon/evergreen.c
+++ b/drivers/gpu/drm/radeon/evergreen.c
@@ -3258,6 +3258,12 @@ static int evergreen_startup(struct rade
}
/* Enable IRQ */
+ if (!rdev->irq.installed) {
+ r = radeon_irq_kms_init(rdev);
+ if (r)
+ return r;
+ }
+
r = r600_irq_init(rdev);
if (r) {
DRM_ERROR("radeon: IH init failed (%d).\n", r);
@@ -3409,10 +3415,6 @@ int evergreen_init(struct radeon_device
if (r)
return r;
- r = radeon_irq_kms_init(rdev);
- if (r)
- return r;
-
rdev->ring[RADEON_RING_TYPE_GFX_INDEX].ring_obj = NULL;
r600_ring_init(rdev, &rdev->ring[RADEON_RING_TYPE_GFX_INDEX], 1024 * 1024);
--- a/drivers/gpu/drm/radeon/ni.c
+++ b/drivers/gpu/drm/radeon/ni.c
@@ -1614,6 +1614,12 @@ static int cayman_startup(struct radeon_
}
/* Enable IRQ */
+ if (!rdev->irq.installed) {
+ r = radeon_irq_kms_init(rdev);
+ if (r)
+ return r;
+ }
+
r = r600_irq_init(rdev);
if (r) {
DRM_ERROR("radeon: IH init failed (%d).\n", r);
@@ -1744,10 +1750,6 @@ int cayman_init(struct radeon_device *rd
if (r)
return r;
- r = radeon_irq_kms_init(rdev);
- if (r)
- return r;
-
ring->ring_obj = NULL;
r600_ring_init(rdev, ring, 1024 * 1024);
--- a/drivers/gpu/drm/radeon/r100.c
+++ b/drivers/gpu/drm/radeon/r100.c
@@ -3952,6 +3952,12 @@ static int r100_startup(struct radeon_de
}
/* Enable IRQ */
+ if (!rdev->irq.installed) {
+ r = radeon_irq_kms_init(rdev);
+ if (r)
+ return r;
+ }
+
r100_irq_set(rdev);
rdev->config.r100.hdp_cntl = RREG32(RADEON_HOST_PATH_CNTL);
/* 1M ring buffer */
@@ -4113,9 +4119,6 @@ int r100_init(struct radeon_device *rdev
r = radeon_fence_driver_init(rdev);
if (r)
return r;
- r = radeon_irq_kms_init(rdev);
- if (r)
- return r;
/* Memory manager */
r = radeon_bo_init(rdev);
if (r)
--- a/drivers/gpu/drm/radeon/r300.c
+++ b/drivers/gpu/drm/radeon/r300.c
@@ -1405,6 +1405,12 @@ static int r300_startup(struct radeon_de
}
/* Enable IRQ */
+ if (!rdev->irq.installed) {
+ r = radeon_irq_kms_init(rdev);
+ if (r)
+ return r;
+ }
+
r100_irq_set(rdev);
rdev->config.r300.hdp_cntl = RREG32(RADEON_HOST_PATH_CNTL);
/* 1M ring buffer */
@@ -1545,9 +1551,6 @@ int r300_init(struct radeon_device *rdev
r = radeon_fence_driver_init(rdev);
if (r)
return r;
- r = radeon_irq_kms_init(rdev);
- if (r)
- return r;
/* Memory manager */
r = radeon_bo_init(rdev);
if (r)
--- a/drivers/gpu/drm/radeon/r420.c
+++ b/drivers/gpu/drm/radeon/r420.c
@@ -265,6 +265,12 @@ static int r420_startup(struct radeon_de
}
/* Enable IRQ */
+ if (!rdev->irq.installed) {
+ r = radeon_irq_kms_init(rdev);
+ if (r)
+ return r;
+ }
+
r100_irq_set(rdev);
rdev->config.r300.hdp_cntl = RREG32(RADEON_HOST_PATH_CNTL);
/* 1M ring buffer */
@@ -417,10 +423,6 @@ int r420_init(struct radeon_device *rdev
if (r) {
return r;
}
- r = radeon_irq_kms_init(rdev);
- if (r) {
- return r;
- }
/* Memory manager */
r = radeon_bo_init(rdev);
if (r) {
--- a/drivers/gpu/drm/radeon/r520.c
+++ b/drivers/gpu/drm/radeon/r520.c
@@ -194,6 +194,12 @@ static int r520_startup(struct radeon_de
}
/* Enable IRQ */
+ if (!rdev->irq.installed) {
+ r = radeon_irq_kms_init(rdev);
+ if (r)
+ return r;
+ }
+
rs600_irq_set(rdev);
rdev->config.r300.hdp_cntl = RREG32(RADEON_HOST_PATH_CNTL);
/* 1M ring buffer */
@@ -301,9 +307,6 @@ int r520_init(struct radeon_device *rdev
r = radeon_fence_driver_init(rdev);
if (r)
return r;
- r = radeon_irq_kms_init(rdev);
- if (r)
- return r;
/* Memory manager */
r = radeon_bo_init(rdev);
if (r)
--- a/drivers/gpu/drm/radeon/r600.c
+++ b/drivers/gpu/drm/radeon/r600.c
@@ -2470,6 +2470,12 @@ int r600_startup(struct radeon_device *r
}
/* Enable IRQ */
+ if (!rdev->irq.installed) {
+ r = radeon_irq_kms_init(rdev);
+ if (r)
+ return r;
+ }
+
r = r600_irq_init(rdev);
if (r) {
DRM_ERROR("radeon: IH init failed (%d).\n", r);
@@ -2624,10 +2630,6 @@ int r600_init(struct radeon_device *rdev
if (r)
return r;
- r = radeon_irq_kms_init(rdev);
- if (r)
- return r;
-
rdev->ring[RADEON_RING_TYPE_GFX_INDEX].ring_obj = NULL;
r600_ring_init(rdev, &rdev->ring[RADEON_RING_TYPE_GFX_INDEX], 1024 * 1024);
--- a/drivers/gpu/drm/radeon/rs400.c
+++ b/drivers/gpu/drm/radeon/rs400.c
@@ -417,6 +417,12 @@ static int rs400_startup(struct radeon_d
}
/* Enable IRQ */
+ if (!rdev->irq.installed) {
+ r = radeon_irq_kms_init(rdev);
+ if (r)
+ return r;
+ }
+
r100_irq_set(rdev);
rdev->config.r300.hdp_cntl = RREG32(RADEON_HOST_PATH_CNTL);
/* 1M ring buffer */
@@ -541,9 +547,6 @@ int rs400_init(struct radeon_device *rde
r = radeon_fence_driver_init(rdev);
if (r)
return r;
- r = radeon_irq_kms_init(rdev);
- if (r)
- return r;
/* Memory manager */
r = radeon_bo_init(rdev);
if (r)
--- a/drivers/gpu/drm/radeon/rs600.c
+++ b/drivers/gpu/drm/radeon/rs600.c
@@ -864,6 +864,12 @@ static int rs600_startup(struct radeon_d
}
/* Enable IRQ */
+ if (!rdev->irq.installed) {
+ r = radeon_irq_kms_init(rdev);
+ if (r)
+ return r;
+ }
+
rs600_irq_set(rdev);
rdev->config.r300.hdp_cntl = RREG32(RADEON_HOST_PATH_CNTL);
/* 1M ring buffer */
@@ -994,9 +1000,6 @@ int rs600_init(struct radeon_device *rde
r = radeon_fence_driver_init(rdev);
if (r)
return r;
- r = radeon_irq_kms_init(rdev);
- if (r)
- return r;
/* Memory manager */
r = radeon_bo_init(rdev);
if (r)
--- a/drivers/gpu/drm/radeon/rs690.c
+++ b/drivers/gpu/drm/radeon/rs690.c
@@ -628,6 +628,12 @@ static int rs690_startup(struct radeon_d
}
/* Enable IRQ */
+ if (!rdev->irq.installed) {
+ r = radeon_irq_kms_init(rdev);
+ if (r)
+ return r;
+ }
+
rs600_irq_set(rdev);
rdev->config.r300.hdp_cntl = RREG32(RADEON_HOST_PATH_CNTL);
/* 1M ring buffer */
@@ -759,9 +765,6 @@ int rs690_init(struct radeon_device *rde
r = radeon_fence_driver_init(rdev);
if (r)
return r;
- r = radeon_irq_kms_init(rdev);
- if (r)
- return r;
/* Memory manager */
r = radeon_bo_init(rdev);
if (r)
--- a/drivers/gpu/drm/radeon/rv515.c
+++ b/drivers/gpu/drm/radeon/rv515.c
@@ -386,6 +386,12 @@ static int rv515_startup(struct radeon_d
}
/* Enable IRQ */
+ if (!rdev->irq.installed) {
+ r = radeon_irq_kms_init(rdev);
+ if (r)
+ return r;
+ }
+
rs600_irq_set(rdev);
rdev->config.r300.hdp_cntl = RREG32(RADEON_HOST_PATH_CNTL);
/* 1M ring buffer */
@@ -520,9 +526,6 @@ int rv515_init(struct radeon_device *rde
r = radeon_fence_driver_init(rdev);
if (r)
return r;
- r = radeon_irq_kms_init(rdev);
- if (r)
- return r;
/* Memory manager */
r = radeon_bo_init(rdev);
if (r)
--- a/drivers/gpu/drm/radeon/rv770.c
+++ b/drivers/gpu/drm/radeon/rv770.c
@@ -1099,6 +1099,12 @@ static int rv770_startup(struct radeon_d
}
/* Enable IRQ */
+ if (!rdev->irq.installed) {
+ r = radeon_irq_kms_init(rdev);
+ if (r)
+ return r;
+ }
+
r = r600_irq_init(rdev);
if (r) {
DRM_ERROR("radeon: IH init failed (%d).\n", r);
@@ -1237,10 +1243,6 @@ int rv770_init(struct radeon_device *rde
if (r)
return r;
- r = radeon_irq_kms_init(rdev);
- if (r)
- return r;
-
rdev->ring[RADEON_RING_TYPE_GFX_INDEX].ring_obj = NULL;
r600_ring_init(rdev, &rdev->ring[RADEON_RING_TYPE_GFX_INDEX], 1024 * 1024);
--- a/drivers/gpu/drm/radeon/si.c
+++ b/drivers/gpu/drm/radeon/si.c
@@ -3876,6 +3876,12 @@ static int si_startup(struct radeon_devi
}
/* Enable IRQ */
+ if (!rdev->irq.installed) {
+ r = radeon_irq_kms_init(rdev);
+ if (r)
+ return r;
+ }
+
r = si_irq_init(rdev);
if (r) {
DRM_ERROR("radeon: IH init failed (%d).\n", r);
@@ -4044,10 +4050,6 @@ int si_init(struct radeon_device *rdev)
if (r)
return r;
- r = radeon_irq_kms_init(rdev);
- if (r)
- return r;
-
ring = &rdev->ring[RADEON_RING_TYPE_GFX_INDEX];
ring->ring_obj = NULL;
r600_ring_init(rdev, ring, 1024 * 1024);
^ permalink raw reply [flat|nested] 33+ messages in thread
* [ 23/32] drm/radeon: dont allow audio on DCE6
2013-06-11 20:02 [ 00/32] 3.4.49-stable review Greg Kroah-Hartman
` (21 preceding siblings ...)
2013-06-11 20:03 ` [ 22/32] radeon: Fix system hang issue when using KMS with older cards Greg Kroah-Hartman
@ 2013-06-11 20:03 ` Greg Kroah-Hartman
2013-06-11 20:03 ` [ 24/32] hwmon: (adm1021) Strengthen chip detection for ADM1021, LM84 and MAX1617 Greg Kroah-Hartman
` (8 subsequent siblings)
31 siblings, 0 replies; 33+ messages in thread
From: Greg Kroah-Hartman @ 2013-06-11 20:03 UTC (permalink / raw)
To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Alex Deucher
3.4-stable review patch. If anyone has any objections, please let me know.
------------------
From: Alex Deucher <alexander.deucher@amd.com>
commit 1cbcca302a318499f20a512847c5d6a510c08c35 upstream.
It's not supported yet. Fixes display issues when
users force it on.
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/gpu/drm/radeon/atombios_encoders.c | 11 ++++++++---
1 file changed, 8 insertions(+), 3 deletions(-)
--- a/drivers/gpu/drm/radeon/atombios_encoders.c
+++ b/drivers/gpu/drm/radeon/atombios_encoders.c
@@ -396,6 +396,8 @@ atombios_digital_setup(struct drm_encode
int
atombios_get_encoder_mode(struct drm_encoder *encoder)
{
+ struct drm_device *dev = encoder->dev;
+ struct radeon_device *rdev = dev->dev_private;
struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder);
struct drm_connector *connector;
struct radeon_connector *radeon_connector;
@@ -421,7 +423,8 @@ atombios_get_encoder_mode(struct drm_enc
case DRM_MODE_CONNECTOR_DVII:
case DRM_MODE_CONNECTOR_HDMIB: /* HDMI-B is basically DL-DVI; analog works fine */
if (drm_detect_hdmi_monitor(radeon_connector->edid) &&
- radeon_audio)
+ radeon_audio &&
+ !ASIC_IS_DCE6(rdev)) /* remove once we support DCE6 */
return ATOM_ENCODER_MODE_HDMI;
else if (radeon_connector->use_digital)
return ATOM_ENCODER_MODE_DVI;
@@ -432,7 +435,8 @@ atombios_get_encoder_mode(struct drm_enc
case DRM_MODE_CONNECTOR_HDMIA:
default:
if (drm_detect_hdmi_monitor(radeon_connector->edid) &&
- radeon_audio)
+ radeon_audio &&
+ !ASIC_IS_DCE6(rdev)) /* remove once we support DCE6 */
return ATOM_ENCODER_MODE_HDMI;
else
return ATOM_ENCODER_MODE_DVI;
@@ -446,7 +450,8 @@ atombios_get_encoder_mode(struct drm_enc
(dig_connector->dp_sink_type == CONNECTOR_OBJECT_ID_eDP))
return ATOM_ENCODER_MODE_DP;
else if (drm_detect_hdmi_monitor(radeon_connector->edid) &&
- radeon_audio)
+ radeon_audio &&
+ !ASIC_IS_DCE6(rdev)) /* remove once we support DCE6 */
return ATOM_ENCODER_MODE_HDMI;
else
return ATOM_ENCODER_MODE_DVI;
^ permalink raw reply [flat|nested] 33+ messages in thread
* [ 24/32] hwmon: (adm1021) Strengthen chip detection for ADM1021, LM84 and MAX1617
2013-06-11 20:02 [ 00/32] 3.4.49-stable review Greg Kroah-Hartman
` (22 preceding siblings ...)
2013-06-11 20:03 ` [ 23/32] drm/radeon: dont allow audio on DCE6 Greg Kroah-Hartman
@ 2013-06-11 20:03 ` Greg Kroah-Hartman
2013-06-11 20:03 ` [ 25/32] drm: fix a use-after-free when GPU acceleration disabled Greg Kroah-Hartman
` (7 subsequent siblings)
31 siblings, 0 replies; 33+ messages in thread
From: Greg Kroah-Hartman @ 2013-06-11 20:03 UTC (permalink / raw)
To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Guenter Roeck, Jean Delvare
3.4-stable review patch. If anyone has any objections, please let me know.
------------------
From: Guenter Roeck <linux@roeck-us.net>
commit 591bfcfc334a003ba31c0deff03b22e73349939b upstream.
On a system with both MAX1617 and JC42 sensors, JC42 sensors can be misdetected
as LM84. Strengthen detection sufficiently enough to avoid this misdetection.
Also improve detection for ADM1021.
Modeled after chip detection code in sensors-detect command.
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
Tested-by: Jean Delvare <khali@linux-fr.org>
Acked-by: Jean Delvare <khali@linux-fr.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/hwmon/adm1021.c | 58 +++++++++++++++++++++++++++++++++++++++++-------
1 file changed, 50 insertions(+), 8 deletions(-)
--- a/drivers/hwmon/adm1021.c
+++ b/drivers/hwmon/adm1021.c
@@ -332,26 +332,68 @@ static int adm1021_detect(struct i2c_cli
man_id = i2c_smbus_read_byte_data(client, ADM1021_REG_MAN_ID);
dev_id = i2c_smbus_read_byte_data(client, ADM1021_REG_DEV_ID);
+ if (man_id < 0 || dev_id < 0)
+ return -ENODEV;
+
if (man_id == 0x4d && dev_id == 0x01)
type_name = "max1617a";
else if (man_id == 0x41) {
if ((dev_id & 0xF0) == 0x30)
type_name = "adm1023";
- else
+ else if ((dev_id & 0xF0) == 0x00)
type_name = "adm1021";
+ else
+ return -ENODEV;
} else if (man_id == 0x49)
type_name = "thmc10";
else if (man_id == 0x23)
type_name = "gl523sm";
else if (man_id == 0x54)
type_name = "mc1066";
- /* LM84 Mfr ID in a different place, and it has more unused bits */
- else if (conv_rate == 0x00
- && (config & 0x7F) == 0x00
- && (status & 0xAB) == 0x00)
- type_name = "lm84";
- else
- type_name = "max1617";
+ else {
+ int lte, rte, lhi, rhi, llo, rlo;
+
+ /* extra checks for LM84 and MAX1617 to avoid misdetections */
+
+ llo = i2c_smbus_read_byte_data(client, ADM1021_REG_THYST_R(0));
+ rlo = i2c_smbus_read_byte_data(client, ADM1021_REG_THYST_R(1));
+
+ /* fail if any of the additional register reads failed */
+ if (llo < 0 || rlo < 0)
+ return -ENODEV;
+
+ lte = i2c_smbus_read_byte_data(client, ADM1021_REG_TEMP(0));
+ rte = i2c_smbus_read_byte_data(client, ADM1021_REG_TEMP(1));
+ lhi = i2c_smbus_read_byte_data(client, ADM1021_REG_TOS_R(0));
+ rhi = i2c_smbus_read_byte_data(client, ADM1021_REG_TOS_R(1));
+
+ /*
+ * Fail for negative temperatures and negative high limits.
+ * This check also catches read errors on the tested registers.
+ */
+ if ((s8)lte < 0 || (s8)rte < 0 || (s8)lhi < 0 || (s8)rhi < 0)
+ return -ENODEV;
+
+ /* fail if all registers hold the same value */
+ if (lte == rte && lte == lhi && lte == rhi && lte == llo
+ && lte == rlo)
+ return -ENODEV;
+
+ /*
+ * LM84 Mfr ID is in a different place,
+ * and it has more unused bits.
+ */
+ if (conv_rate == 0x00
+ && (config & 0x7F) == 0x00
+ && (status & 0xAB) == 0x00) {
+ type_name = "lm84";
+ } else {
+ /* fail if low limits are larger than high limits */
+ if ((s8)llo > lhi || (s8)rlo > rhi)
+ return -ENODEV;
+ type_name = "max1617";
+ }
+ }
pr_debug("adm1021: Detected chip %s at adapter %d, address 0x%02x.\n",
type_name, i2c_adapter_id(adapter), client->addr);
^ permalink raw reply [flat|nested] 33+ messages in thread
* [ 25/32] drm: fix a use-after-free when GPU acceleration disabled
2013-06-11 20:02 [ 00/32] 3.4.49-stable review Greg Kroah-Hartman
` (23 preceding siblings ...)
2013-06-11 20:03 ` [ 24/32] hwmon: (adm1021) Strengthen chip detection for ADM1021, LM84 and MAX1617 Greg Kroah-Hartman
@ 2013-06-11 20:03 ` Greg Kroah-Hartman
2013-06-11 20:03 ` [ 26/32] drm/i915/sdvo: Use &intel_sdvo->ddc instead of intel_sdvo->i2c for DDC Greg Kroah-Hartman
` (6 subsequent siblings)
31 siblings, 0 replies; 33+ messages in thread
From: Greg Kroah-Hartman @ 2013-06-11 20:03 UTC (permalink / raw)
To: linux-kernel
Cc: Greg Kroah-Hartman, stable, Huacai Chen, Binbin Zhou,
Michel Dänzer, Paul Menzel, Dave Airlie
3.4-stable review patch. If anyone has any objections, please let me know.
------------------
From: Huacai Chen <chenhc@lemote.com>
commit b7ea85a4fed37835eec78a7be3039c8dc22b8178 upstream.
When GPU acceleration is disabled, drm_vblank_cleanup() will free the
vblank-related data, such as vblank_refcount, vblank_inmodeset, etc.
But we found that drm_vblank_post_modeset() may be called after the
cleanup, which use vblank_refcount and vblank_inmodeset. And this will
cause a kernel panic.
Fix this by return immediately if dev->num_crtcs is zero. This is the
same thing that drm_vblank_pre_modeset() does.
Call trace of a drm_vblank_post_modeset() after drm_vblank_cleanup():
[ 62.628906] [<ffffffff804868d0>] drm_vblank_post_modeset+0x34/0xb4
[ 62.628906] [<ffffffff804c7008>] atombios_crtc_dpms+0xb4/0x174
[ 62.628906] [<ffffffff804c70e0>] atombios_crtc_commit+0x18/0x38
[ 62.628906] [<ffffffff8047f038>] drm_crtc_helper_set_mode+0x304/0x3cc
[ 62.628906] [<ffffffff8047f92c>] drm_crtc_helper_set_config+0x6d8/0x988
[ 62.628906] [<ffffffff8047dd40>] drm_fb_helper_set_par+0x94/0x104
[ 62.628906] [<ffffffff80439d14>] fbcon_init+0x424/0x57c
[ 62.628906] [<ffffffff8046a638>] visual_init+0xb8/0x118
[ 62.628906] [<ffffffff8046b9f8>] take_over_console+0x238/0x384
[ 62.628906] [<ffffffff80436df8>] fbcon_takeover+0x7c/0xdc
[ 62.628906] [<ffffffff8024fa20>] notifier_call_chain+0x44/0x94
[ 62.628906] [<ffffffff8024fcbc>] __blocking_notifier_call_chain+0x48/0x68
[ 62.628906] [<ffffffff8042d990>] register_framebuffer+0x228/0x260
[ 62.628906] [<ffffffff8047e010>] drm_fb_helper_single_fb_probe+0x260/0x314
[ 62.628906] [<ffffffff8047e2c4>] drm_fb_helper_initial_config+0x200/0x234
[ 62.628906] [<ffffffff804e5560>] radeon_fbdev_init+0xd4/0xf4
[ 62.628906] [<ffffffff804e0e08>] radeon_modeset_init+0x9bc/0xa18
[ 62.628906] [<ffffffff804bfc14>] radeon_driver_load_kms+0xdc/0x12c
[ 62.628906] [<ffffffff8048b548>] drm_get_pci_dev+0x148/0x238
[ 62.628906] [<ffffffff80423564>] local_pci_probe+0x5c/0xd0
[ 62.628906] [<ffffffff80241ac4>] work_for_cpu_fn+0x1c/0x30
[ 62.628906] [<ffffffff802427c8>] process_one_work+0x274/0x3bc
[ 62.628906] [<ffffffff80242934>] process_scheduled_works+0x24/0x44
[ 62.628906] [<ffffffff8024515c>] worker_thread+0x31c/0x3f4
[ 62.628906] [<ffffffff802497a8>] kthread+0x88/0x90
[ 62.628906] [<ffffffff80206794>] kernel_thread_helper+0x10/0x18
Signed-off-by: Huacai Chen <chenhc@lemote.com>
Signed-off-by: Binbin Zhou <zhoubb@lemote.com>
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
Acked-by: Paul Menzel <paulepanter@users.sourceforge.net>
Signed-off-by: Dave Airlie <airlied@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/gpu/drm/drm_irq.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
--- a/drivers/gpu/drm/drm_irq.c
+++ b/drivers/gpu/drm/drm_irq.c
@@ -981,7 +981,7 @@ EXPORT_SYMBOL(drm_vblank_off);
*/
void drm_vblank_pre_modeset(struct drm_device *dev, int crtc)
{
- /* vblank is not initialized (IRQ not installed ?) */
+ /* vblank is not initialized (IRQ not installed ?), or has been freed */
if (!dev->num_crtcs)
return;
/*
@@ -1003,6 +1003,10 @@ void drm_vblank_post_modeset(struct drm_
{
unsigned long irqflags;
+ /* vblank is not initialized (IRQ not installed ?), or has been freed */
+ if (!dev->num_crtcs)
+ return;
+
if (dev->vblank_inmodeset[crtc]) {
spin_lock_irqsave(&dev->vbl_lock, irqflags);
dev->vblank_disable_allowed = 1;
^ permalink raw reply [flat|nested] 33+ messages in thread
* [ 26/32] drm/i915/sdvo: Use &intel_sdvo->ddc instead of intel_sdvo->i2c for DDC.
2013-06-11 20:02 [ 00/32] 3.4.49-stable review Greg Kroah-Hartman
` (24 preceding siblings ...)
2013-06-11 20:03 ` [ 25/32] drm: fix a use-after-free when GPU acceleration disabled Greg Kroah-Hartman
@ 2013-06-11 20:03 ` Greg Kroah-Hartman
2013-06-11 20:03 ` [ 27/32] drm/i915: no lvds quirk for hp t5740 Greg Kroah-Hartman
` (5 subsequent siblings)
31 siblings, 0 replies; 33+ messages in thread
From: Greg Kroah-Hartman @ 2013-06-11 20:03 UTC (permalink / raw)
To: linux-kernel
Cc: Greg Kroah-Hartman, stable, Egbert Eich, Chris Wilson,
Daniel Vetter
3.4-stable review patch. If anyone has any objections, please let me know.
------------------
From: Egbert Eich <eich@suse.de>
commit 53d3b4d7778daf15900867336c85d3f8dd70600c upstream.
In intel_sdvo_get_lvds_modes() the wrong i2c adapter record is used
for DDC. Thus the code will always have to rely on a LVDS panel
mode supplied by VBT.
In most cases this succeeds, so this didn't get detected for quite
a while.
This regression seems to have been introduced in
commit f899fc64cda8569d0529452aafc0da31c042df2e
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date: Tue Jul 20 15:44:45 2010 -0700
drm/i915: use GMBUS to manage i2c links
Signed-off-by: Egbert Eich <eich@suse.de>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
[danvet: Add note about which commit likely introduced this issue.]
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/gpu/drm/i915/intel_sdvo.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/drivers/gpu/drm/i915/intel_sdvo.c
+++ b/drivers/gpu/drm/i915/intel_sdvo.c
@@ -1581,7 +1581,7 @@ static void intel_sdvo_get_lvds_modes(st
* Assume that the preferred modes are
* arranged in priority order.
*/
- intel_ddc_get_modes(connector, intel_sdvo->i2c);
+ intel_ddc_get_modes(connector, &intel_sdvo->ddc);
if (list_empty(&connector->probed_modes) == false)
goto end;
^ permalink raw reply [flat|nested] 33+ messages in thread
* [ 27/32] drm/i915: no lvds quirk for hp t5740
2013-06-11 20:02 [ 00/32] 3.4.49-stable review Greg Kroah-Hartman
` (25 preceding siblings ...)
2013-06-11 20:03 ` [ 26/32] drm/i915/sdvo: Use &intel_sdvo->ddc instead of intel_sdvo->i2c for DDC Greg Kroah-Hartman
@ 2013-06-11 20:03 ` Greg Kroah-Hartman
2013-06-11 20:03 ` [ 28/32] xen-pciback: rate limit error messages from xen_pcibk_enable_msi{,x}() Greg Kroah-Hartman
` (4 subsequent siblings)
31 siblings, 0 replies; 33+ messages in thread
From: Greg Kroah-Hartman @ 2013-06-11 20:03 UTC (permalink / raw)
To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Ben Mesman, Daniel Vetter
3.4-stable review patch. If anyone has any objections, please let me know.
------------------
From: Ben Mesman <ben@bnc.nl>
commit 45a211d75137b1ac869a8a758a6667f15827a115 upstream.
Last year, a patch was made for the "HP t5740e Thin Client" (see
http://lists.freedesktop.org/archives/dri-devel/2012-May/023245.html).
This device reports an lvds panel, but does not really have one.
The predecessor of this device is the "hp t5740", which also does not have
an lvds panel. This patch will add the same quirk for this device.
Signed-off-by: Ben Mesman <ben@bnc.nl>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/gpu/drm/i915/intel_lvds.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
--- a/drivers/gpu/drm/i915/intel_lvds.c
+++ b/drivers/gpu/drm/i915/intel_lvds.c
@@ -747,10 +747,10 @@ static const struct dmi_system_id intel_
},
{
.callback = intel_no_lvds_dmi_callback,
- .ident = "Hewlett-Packard HP t5740e Thin Client",
+ .ident = "Hewlett-Packard HP t5740",
.matches = {
DMI_MATCH(DMI_BOARD_VENDOR, "Hewlett-Packard"),
- DMI_MATCH(DMI_PRODUCT_NAME, "HP t5740e Thin Client"),
+ DMI_MATCH(DMI_PRODUCT_NAME, " t5740"),
},
},
{
^ permalink raw reply [flat|nested] 33+ messages in thread
* [ 28/32] xen-pciback: rate limit error messages from xen_pcibk_enable_msi{,x}()
2013-06-11 20:02 [ 00/32] 3.4.49-stable review Greg Kroah-Hartman
` (26 preceding siblings ...)
2013-06-11 20:03 ` [ 27/32] drm/i915: no lvds quirk for hp t5740 Greg Kroah-Hartman
@ 2013-06-11 20:03 ` Greg Kroah-Hartman
2013-06-11 20:03 ` [ 29/32] USB: ftdi_sio: Quiet sparse noise about using plain integer was NULL pointer Greg Kroah-Hartman
` (3 subsequent siblings)
31 siblings, 0 replies; 33+ messages in thread
From: Greg Kroah-Hartman @ 2013-06-11 20:03 UTC (permalink / raw)
To: linux-kernel
Cc: Greg Kroah-Hartman, stable, Jan Beulich, Ian Campbell,
Konrad Rzeszutek Wilk
3.4-stable review patch. If anyone has any objections, please let me know.
------------------
From: Jan Beulich <jbeulich@suse.com>
commit 51ac8893a7a51b196501164e645583bf78138699 upstream.
... as being guest triggerable (e.g. by invoking
XEN_PCI_OP_enable_msi{,x} on a device not being MSI/MSI-X capable).
This is CVE-2013-0231 / XSA-43.
Also make the two messages uniform in both their wording and severity.
Signed-off-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Ian Campbell <ian.campbell@citrix.com>
Reviewed-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
[stable tree: Added two extra #include files]
Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/xen/xen-pciback/pciback_ops.c | 16 +++++++++-------
1 file changed, 9 insertions(+), 7 deletions(-)
--- a/drivers/xen/xen-pciback/pciback_ops.c
+++ b/drivers/xen/xen-pciback/pciback_ops.c
@@ -9,6 +9,8 @@
#include <xen/events.h>
#include <linux/sched.h>
#include "pciback.h"
+#include <linux/ratelimit.h>
+#include <linux/printk.h>
int verbose_request;
module_param(verbose_request, int, 0644);
@@ -136,7 +138,6 @@ int xen_pcibk_enable_msi(struct xen_pcib
struct pci_dev *dev, struct xen_pci_op *op)
{
struct xen_pcibk_dev_data *dev_data;
- int otherend = pdev->xdev->otherend_id;
int status;
if (unlikely(verbose_request))
@@ -145,8 +146,9 @@ int xen_pcibk_enable_msi(struct xen_pcib
status = pci_enable_msi(dev);
if (status) {
- printk(KERN_ERR "error enable msi for guest %x status %x\n",
- otherend, status);
+ pr_warn_ratelimited(DRV_NAME ": %s: error enabling MSI for guest %u: err %d\n",
+ pci_name(dev), pdev->xdev->otherend_id,
+ status);
op->value = 0;
return XEN_PCI_ERR_op_failed;
}
@@ -224,10 +226,10 @@ int xen_pcibk_enable_msix(struct xen_pci
pci_name(dev), i,
op->msix_entries[i].vector);
}
- } else {
- printk(KERN_WARNING DRV_NAME ": %s: failed to enable MSI-X: err %d!\n",
- pci_name(dev), result);
- }
+ } else
+ pr_warn_ratelimited(DRV_NAME ": %s: error enabling MSI-X for guest %u: err %d!\n",
+ pci_name(dev), pdev->xdev->otherend_id,
+ result);
kfree(entries);
op->value = result;
^ permalink raw reply [flat|nested] 33+ messages in thread
* [ 29/32] USB: ftdi_sio: Quiet sparse noise about using plain integer was NULL pointer
2013-06-11 20:02 [ 00/32] 3.4.49-stable review Greg Kroah-Hartman
` (27 preceding siblings ...)
2013-06-11 20:03 ` [ 28/32] xen-pciback: rate limit error messages from xen_pcibk_enable_msi{,x}() Greg Kroah-Hartman
@ 2013-06-11 20:03 ` Greg Kroah-Hartman
2013-06-11 20:03 ` [ 30/32] drm/gma500: Increase max resolution for mode setting Greg Kroah-Hartman
` (2 subsequent siblings)
31 siblings, 0 replies; 33+ messages in thread
From: Greg Kroah-Hartman @ 2013-06-11 20:03 UTC (permalink / raw)
To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Ying Xue, Lotfi Manseur
3.4-stable review patch. If anyone has any objections, please let me know.
------------------
From: Ying Xue <ying.xue@windriver.com>
commit a816e3113b63753c330ca4751ea1d208e93e3015 upstream.
Pointers should not be compared to plain integers.
Quiets the sparse warning:
warning: Using plain integer as NULL pointer
Signed-off-by: Ying Xue <ying.xue@windriver.com>
Cc: Lotfi Manseur <lotfi.manseur@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/usb/serial/ftdi_sio.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/drivers/usb/serial/ftdi_sio.c
+++ b/drivers/usb/serial/ftdi_sio.c
@@ -2173,7 +2173,7 @@ static void ftdi_set_termios(struct tty_
cflag = termios->c_cflag;
- if (old_termios == 0)
+ if (!old_termios)
goto no_skip;
if (old_termios->c_cflag == termios->c_cflag
^ permalink raw reply [flat|nested] 33+ messages in thread
* [ 30/32] drm/gma500: Increase max resolution for mode setting
2013-06-11 20:02 [ 00/32] 3.4.49-stable review Greg Kroah-Hartman
` (28 preceding siblings ...)
2013-06-11 20:03 ` [ 29/32] USB: ftdi_sio: Quiet sparse noise about using plain integer was NULL pointer Greg Kroah-Hartman
@ 2013-06-11 20:03 ` Greg Kroah-Hartman
2013-06-11 20:03 ` [ 31/32] tracing: Fix possible NULL pointer dereferences Greg Kroah-Hartman
2013-06-11 20:03 ` [ 32/32] ftrace: Move ftrace_filter_lseek out of CONFIG_DYNAMIC_FTRACE section Greg Kroah-Hartman
31 siblings, 0 replies; 33+ messages in thread
From: Greg Kroah-Hartman @ 2013-06-11 20:03 UTC (permalink / raw)
To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Patrik Jakobsson
3.4-stable review patch. If anyone has any objections, please let me know.
------------------
From: Patrik Jakobsson <patrik.r.jakobsson@gmail.com>
commit cbbd379aa43890f36da934f5af619d2fb8ec3d87 upstream.
By having a higher max resolution we can now set up a virtual
framebuffer that spans several monitors. 4096 should be ok since we're
gen 3 or higher and should be enough for most dual head setups.
Bugzilla:
https://bugs.launchpad.net/ubuntu/+source/xserver-xorg-video-modesetting/+bug/1169147
Signed-off-by: Patrik Jakobsson <patrik.r.jakobsson@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/gpu/drm/gma500/framebuffer.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
--- a/drivers/gpu/drm/gma500/framebuffer.c
+++ b/drivers/gpu/drm/gma500/framebuffer.c
@@ -782,8 +782,8 @@ void psb_modeset_init(struct drm_device
for (i = 0; i < dev_priv->num_pipe; i++)
psb_intel_crtc_init(dev, i, mode_dev);
- dev->mode_config.max_width = 2048;
- dev->mode_config.max_height = 2048;
+ dev->mode_config.max_width = 4096;
+ dev->mode_config.max_height = 4096;
psb_setup_outputs(dev);
}
^ permalink raw reply [flat|nested] 33+ messages in thread
* [ 31/32] tracing: Fix possible NULL pointer dereferences
2013-06-11 20:02 [ 00/32] 3.4.49-stable review Greg Kroah-Hartman
` (29 preceding siblings ...)
2013-06-11 20:03 ` [ 30/32] drm/gma500: Increase max resolution for mode setting Greg Kroah-Hartman
@ 2013-06-11 20:03 ` Greg Kroah-Hartman
2013-06-11 20:03 ` [ 32/32] ftrace: Move ftrace_filter_lseek out of CONFIG_DYNAMIC_FTRACE section Greg Kroah-Hartman
31 siblings, 0 replies; 33+ messages in thread
From: Greg Kroah-Hartman @ 2013-06-11 20:03 UTC (permalink / raw)
To: linux-kernel
Cc: Greg Kroah-Hartman, stable, Namhyung Kim, Frederic Weisbecker,
Ingo Molnar, Namhyung Kim, Steven Rostedt, Li Zefan
3.4-stable review patch. If anyone has any objections, please let me know.
------------------
From: Namhyung Kim <namhyung.kim@lge.com>
commit 6a76f8c0ab19f215af2a3442870eeb5f0e81998d upstream.
Currently set_ftrace_pid and set_graph_function files use seq_lseek
for their fops. However seq_open() is called only for FMODE_READ in
the fops->open() so that if an user tries to seek one of those file
when she open it for writing, it sees NULL seq_file and then panic.
It can be easily reproduced with following command:
$ cd /sys/kernel/debug/tracing
$ echo 1234 | sudo tee -a set_ftrace_pid
In this example, GNU coreutils' tee opens the file with fopen(, "a")
and then the fopen() internally calls lseek().
Link:
http://lkml.kernel.org/r/1365663302-2170-1-git-send-email-namhyung@kernel.org
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Namhyung Kim <namhyung.kim@lge.com>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
[ lizf: adjust context ]
Signed-off-by: Li Zefan <lizefan@huawei.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
include/linux/ftrace.h | 2 +-
kernel/trace/ftrace.c | 10 +++++-----
kernel/trace/trace_stack.c | 2 +-
3 files changed, 7 insertions(+), 7 deletions(-)
--- a/include/linux/ftrace.h
+++ b/include/linux/ftrace.h
@@ -299,7 +299,7 @@ ssize_t ftrace_filter_write(struct file
size_t cnt, loff_t *ppos);
ssize_t ftrace_notrace_write(struct file *file, const char __user *ubuf,
size_t cnt, loff_t *ppos);
-loff_t ftrace_regex_lseek(struct file *file, loff_t offset, int origin);
+loff_t ftrace_filter_lseek(struct file *file, loff_t offset, int origin);
int ftrace_regex_release(struct inode *inode, struct file *file);
void __init
--- a/kernel/trace/ftrace.c
+++ b/kernel/trace/ftrace.c
@@ -2626,7 +2626,7 @@ ftrace_notrace_open(struct inode *inode,
}
loff_t
-ftrace_regex_lseek(struct file *file, loff_t offset, int origin)
+ftrace_filter_lseek(struct file *file, loff_t offset, int origin)
{
loff_t ret;
@@ -3445,7 +3445,7 @@ static const struct file_operations ftra
.open = ftrace_filter_open,
.read = seq_read,
.write = ftrace_filter_write,
- .llseek = ftrace_regex_lseek,
+ .llseek = ftrace_filter_lseek,
.release = ftrace_regex_release,
};
@@ -3453,7 +3453,7 @@ static const struct file_operations ftra
.open = ftrace_notrace_open,
.read = seq_read,
.write = ftrace_notrace_write,
- .llseek = ftrace_regex_lseek,
+ .llseek = ftrace_filter_lseek,
.release = ftrace_regex_release,
};
@@ -3659,8 +3659,8 @@ static const struct file_operations ftra
.open = ftrace_graph_open,
.read = seq_read,
.write = ftrace_graph_write,
+ .llseek = ftrace_filter_lseek,
.release = ftrace_graph_release,
- .llseek = seq_lseek,
};
#endif /* CONFIG_FUNCTION_GRAPH_TRACER */
@@ -4261,7 +4261,7 @@ static const struct file_operations ftra
.open = ftrace_pid_open,
.write = ftrace_pid_write,
.read = seq_read,
- .llseek = seq_lseek,
+ .llseek = ftrace_filter_lseek,
.release = ftrace_pid_release,
};
--- a/kernel/trace/trace_stack.c
+++ b/kernel/trace/trace_stack.c
@@ -384,7 +384,7 @@ static const struct file_operations stac
.open = stack_trace_filter_open,
.read = seq_read,
.write = ftrace_filter_write,
- .llseek = ftrace_regex_lseek,
+ .llseek = ftrace_filter_lseek,
.release = ftrace_regex_release,
};
^ permalink raw reply [flat|nested] 33+ messages in thread
* [ 32/32] ftrace: Move ftrace_filter_lseek out of CONFIG_DYNAMIC_FTRACE section
2013-06-11 20:02 [ 00/32] 3.4.49-stable review Greg Kroah-Hartman
` (30 preceding siblings ...)
2013-06-11 20:03 ` [ 31/32] tracing: Fix possible NULL pointer dereferences Greg Kroah-Hartman
@ 2013-06-11 20:03 ` Greg Kroah-Hartman
31 siblings, 0 replies; 33+ messages in thread
From: Greg Kroah-Hartman @ 2013-06-11 20:03 UTC (permalink / raw)
To: linux-kernel
Cc: Greg Kroah-Hartman, stable, Steven Rostedt, Namhyung Kim,
Li Zefan
3.4-stable review patch. If anyone has any objections, please let me know.
------------------
From: Steven Rostedt <rostedt@goodmis.org>
commit 7f49ef69db6bbf756c0abca7e9b65b32e999eec8 upstream.
As ftrace_filter_lseek is now used with ftrace_pid_fops, it needs to
be moved out of the #ifdef CONFIG_DYNAMIC_FTRACE section as the
ftrace_pid_fops is defined when DYNAMIC_FTRACE is not.
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
Cc: Namhyung Kim <namhyung@kernel.org>
[ lizf: adjust context ]
Signed-off-by: Li Zefan <lizefan@huawei.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
include/linux/ftrace.h | 3 ++-
kernel/trace/ftrace.c | 28 ++++++++++++++--------------
2 files changed, 16 insertions(+), 15 deletions(-)
--- a/include/linux/ftrace.h
+++ b/include/linux/ftrace.h
@@ -299,7 +299,6 @@ ssize_t ftrace_filter_write(struct file
size_t cnt, loff_t *ppos);
ssize_t ftrace_notrace_write(struct file *file, const char __user *ubuf,
size_t cnt, loff_t *ppos);
-loff_t ftrace_filter_lseek(struct file *file, loff_t offset, int origin);
int ftrace_regex_release(struct inode *inode, struct file *file);
void __init
@@ -420,6 +419,8 @@ static inline int
ftrace_regex_release(struct inode *inode, struct file *file) { return -ENODEV; }
#endif /* CONFIG_DYNAMIC_FTRACE */
+loff_t ftrace_filter_lseek(struct file *file, loff_t offset, int whence);
+
/* totally disable ftrace - can not re-enable after this */
void ftrace_kill(void);
--- a/kernel/trace/ftrace.c
+++ b/kernel/trace/ftrace.c
@@ -999,6 +999,19 @@ static __init void ftrace_profile_debugf
static struct pid * const ftrace_swapper_pid = &init_struct_pid;
+loff_t
+ftrace_filter_lseek(struct file *file, loff_t offset, int whence)
+{
+ loff_t ret;
+
+ if (file->f_mode & FMODE_READ)
+ ret = seq_lseek(file, offset, whence);
+ else
+ file->f_pos = ret = 1;
+
+ return ret;
+}
+
#ifdef CONFIG_DYNAMIC_FTRACE
#ifndef CONFIG_FTRACE_MCOUNT_RECORD
@@ -2541,7 +2554,7 @@ static void ftrace_filter_reset(struct f
* routine, you can use ftrace_filter_write() for the write
* routine if @flag has FTRACE_ITER_FILTER set, or
* ftrace_notrace_write() if @flag has FTRACE_ITER_NOTRACE set.
- * ftrace_regex_lseek() should be used as the lseek routine, and
+ * ftrace_filter_lseek() should be used as the lseek routine, and
* release must call ftrace_regex_release().
*/
int
@@ -2625,19 +2638,6 @@ ftrace_notrace_open(struct inode *inode,
inode, file);
}
-loff_t
-ftrace_filter_lseek(struct file *file, loff_t offset, int origin)
-{
- loff_t ret;
-
- if (file->f_mode & FMODE_READ)
- ret = seq_lseek(file, offset, origin);
- else
- file->f_pos = ret = 1;
-
- return ret;
-}
-
static int ftrace_match(char *str, char *regex, int len, int type)
{
int matched = 0;
^ permalink raw reply [flat|nested] 33+ messages in thread
end of thread, other threads:[~2013-06-11 20:03 UTC | newest]
Thread overview: 33+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-06-11 20:02 [ 00/32] 3.4.49-stable review Greg Kroah-Hartman
2013-06-11 20:03 ` [ 01/32] USB: option: blacklist network interface on Huawei E1820 Greg Kroah-Hartman
2013-06-11 20:03 ` [ 02/32] xhci - correct comp_mode_recovery_timer on return from hibernate Greg Kroah-Hartman
2013-06-11 20:03 ` [ 03/32] xhci-mem: init list heads at the beginning of init Greg Kroah-Hartman
2013-06-11 20:03 ` [ 04/32] xhci: fix list access before init Greg Kroah-Hartman
2013-06-11 20:03 ` [ 05/32] ALSA: usb-audio: fix Roland/Cakewalk UM-3G support Greg Kroah-Hartman
2013-06-11 20:03 ` [ 06/32] ALSA: usb-audio - Apply Logitech QuickCam Pro 9000 quirk only to audio iface Greg Kroah-Hartman
2013-06-11 20:03 ` [ 07/32] ALSA: usb-audio - Fix invalid volume resolution on Logitech HD webcam c270 Greg Kroah-Hartman
2013-06-11 20:03 ` [ 08/32] USB: iuu_phoenix: fix bulk-message timeout Greg Kroah-Hartman
2013-06-11 20:03 ` [ 09/32] USB: keyspan: fix bogus array index Greg Kroah-Hartman
2013-06-11 20:03 ` [ 10/32] USB: ark3116: fix control-message timeout Greg Kroah-Hartman
2013-06-11 20:03 ` [ 11/32] USB: visor: fix initialisation of Treo/Kyocera devices Greg Kroah-Hartman
2013-06-11 20:03 ` [ 12/32] USB: Serial: cypress_M8: Enable FRWD Dongle hidcom device Greg Kroah-Hartman
2013-06-11 20:03 ` [ 13/32] USB: whiteheat: fix broken port configuration Greg Kroah-Hartman
2013-06-11 20:03 ` [ 14/32] USB: serial: fix Treo/Kyocera interrrupt-in urb context Greg Kroah-Hartman
2013-06-11 20:03 ` [ 15/32] USB: revert periodic scheduling bugfix Greg Kroah-Hartman
2013-06-11 20:03 ` [ 16/32] USB: mos7720: fix DMA to stack Greg Kroah-Hartman
2013-06-11 20:03 ` [ 17/32] USB: mos7720: fix message timeouts Greg Kroah-Hartman
2013-06-11 20:03 ` [ 18/32] USB: mos7720: fix hardware flow control Greg Kroah-Hartman
2013-06-11 20:03 ` [ 19/32] ACPI / video: ignore BIOS initial backlight value for HP m4 Greg Kroah-Hartman
2013-06-11 20:03 ` [ 20/32] ACPI / video: ignore BIOS initial backlight value for HP Pavilion g6 Greg Kroah-Hartman
2013-06-11 20:03 ` [ 21/32] powerpc/eeh: Dont check RTAS token to get PE addr Greg Kroah-Hartman
2013-06-11 20:03 ` [ 22/32] radeon: Fix system hang issue when using KMS with older cards Greg Kroah-Hartman
2013-06-11 20:03 ` [ 23/32] drm/radeon: dont allow audio on DCE6 Greg Kroah-Hartman
2013-06-11 20:03 ` [ 24/32] hwmon: (adm1021) Strengthen chip detection for ADM1021, LM84 and MAX1617 Greg Kroah-Hartman
2013-06-11 20:03 ` [ 25/32] drm: fix a use-after-free when GPU acceleration disabled Greg Kroah-Hartman
2013-06-11 20:03 ` [ 26/32] drm/i915/sdvo: Use &intel_sdvo->ddc instead of intel_sdvo->i2c for DDC Greg Kroah-Hartman
2013-06-11 20:03 ` [ 27/32] drm/i915: no lvds quirk for hp t5740 Greg Kroah-Hartman
2013-06-11 20:03 ` [ 28/32] xen-pciback: rate limit error messages from xen_pcibk_enable_msi{,x}() Greg Kroah-Hartman
2013-06-11 20:03 ` [ 29/32] USB: ftdi_sio: Quiet sparse noise about using plain integer was NULL pointer Greg Kroah-Hartman
2013-06-11 20:03 ` [ 30/32] drm/gma500: Increase max resolution for mode setting Greg Kroah-Hartman
2013-06-11 20:03 ` [ 31/32] tracing: Fix possible NULL pointer dereferences Greg Kroah-Hartman
2013-06-11 20:03 ` [ 32/32] ftrace: Move ftrace_filter_lseek out of CONFIG_DYNAMIC_FTRACE section Greg Kroah-Hartman
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).