summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGreg Kroah-Hartman <gregkh@suse.de>2011-04-19 11:11:03 -0700
committerGreg Kroah-Hartman <gregkh@suse.de>2011-04-19 11:11:03 -0700
commitde3464c47252c013a60c0f27e087c9e024ef7bb5 (patch)
tree41ebbd9846922999b9234029d3cab251f5ea0cb3
parentafb1efecbc5a1ca4eb521aed13fd22f1ce7a76ce (diff)
downloadstable-queue-de3464c47252c013a60c0f27e087c9e024ef7bb5.tar.gz
.38 patches
-rw-r--r--queue-2.6.38/bluetooth-fix-hci_reset-command-synchronization.patch80
-rw-r--r--queue-2.6.38/radeon-fix-kms-cp-writeback-on-big-endian-machines.patch48
-rw-r--r--queue-2.6.38/series2
3 files changed, 130 insertions, 0 deletions
diff --git a/queue-2.6.38/bluetooth-fix-hci_reset-command-synchronization.patch b/queue-2.6.38/bluetooth-fix-hci_reset-command-synchronization.patch
new file mode 100644
index 0000000000..afba0bba98
--- /dev/null
+++ b/queue-2.6.38/bluetooth-fix-hci_reset-command-synchronization.patch
@@ -0,0 +1,80 @@
+From f630cf0d5434e3923e1b8226ffa2753ead6b0ce5 Mon Sep 17 00:00:00 2001
+From: Gustavo F. Padovan <padovan@profusion.mobi>
+Date: Wed, 16 Mar 2011 15:36:29 -0300
+Subject: Bluetooth: Fix HCI_RESET command synchronization
+
+From: Gustavo F. Padovan <padovan@profusion.mobi>
+
+commit f630cf0d5434e3923e1b8226ffa2753ead6b0ce5 upstream.
+
+We can't send new commands before a cmd_complete for the HCI_RESET command
+shows up.
+
+Reported-by: Mikko Vinni <mmvinni@yahoo.com>
+Reported-by: Justin P. Mattock <justinmattock@gmail.com>
+Reported-by: Ed Tomlinson <edt@aei.ca>
+Signed-off-by: Gustavo F. Padovan <padovan@profusion.mobi>
+Tested-by: Justin P. Mattock <justinmattock@gmail.com>
+Tested-by: Mikko Vinni <mmvinni@yahoo.com>
+Tested-by: Ed Tomlinson <edt@aei.ca>
+
+
+---
+ include/net/bluetooth/hci.h | 2 ++
+ net/bluetooth/hci_core.c | 5 ++++-
+ net/bluetooth/hci_event.c | 4 +++-
+ 3 files changed, 9 insertions(+), 2 deletions(-)
+
+--- a/include/net/bluetooth/hci.h
++++ b/include/net/bluetooth/hci.h
+@@ -76,6 +76,8 @@ enum {
+ HCI_INQUIRY,
+
+ HCI_RAW,
++
++ HCI_RESET,
+ };
+
+ /* HCI ioctl defines */
+--- a/net/bluetooth/hci_core.c
++++ b/net/bluetooth/hci_core.c
+@@ -184,6 +184,7 @@ static void hci_reset_req(struct hci_dev
+ BT_DBG("%s %ld", hdev->name, opt);
+
+ /* Reset device */
++ set_bit(HCI_RESET, &hdev->flags);
+ hci_send_cmd(hdev, HCI_OP_RESET, 0, NULL);
+ }
+
+@@ -210,8 +211,10 @@ static void hci_init_req(struct hci_dev
+ /* Mandatory initialization */
+
+ /* Reset */
+- if (!test_bit(HCI_QUIRK_NO_RESET, &hdev->quirks))
++ if (!test_bit(HCI_QUIRK_NO_RESET, &hdev->quirks)) {
++ set_bit(HCI_RESET, &hdev->flags);
+ hci_send_cmd(hdev, HCI_OP_RESET, 0, NULL);
++ }
+
+ /* Read Local Supported Features */
+ hci_send_cmd(hdev, HCI_OP_READ_LOCAL_FEATURES, 0, NULL);
+--- a/net/bluetooth/hci_event.c
++++ b/net/bluetooth/hci_event.c
+@@ -183,6 +183,8 @@ static void hci_cc_reset(struct hci_dev
+
+ BT_DBG("%s status 0x%x", hdev->name, status);
+
++ clear_bit(HCI_RESET, &hdev->flags);
++
+ hci_req_complete(hdev, HCI_OP_RESET, status);
+ }
+
+@@ -1464,7 +1466,7 @@ static inline void hci_cmd_status_evt(st
+ break;
+ }
+
+- if (ev->ncmd) {
++ if (ev->ncmd && !test_bit(HCI_RESET, &hdev->flags)) {
+ atomic_set(&hdev->cmd_cnt, 1);
+ if (!skb_queue_empty(&hdev->cmd_q))
+ tasklet_schedule(&hdev->cmd_task);
diff --git a/queue-2.6.38/radeon-fix-kms-cp-writeback-on-big-endian-machines.patch b/queue-2.6.38/radeon-fix-kms-cp-writeback-on-big-endian-machines.patch
new file mode 100644
index 0000000000..bbc17672a8
--- /dev/null
+++ b/queue-2.6.38/radeon-fix-kms-cp-writeback-on-big-endian-machines.patch
@@ -0,0 +1,48 @@
+From dc66b325f161bb651493c7d96ad44876b629cf6a Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Michel=20D=C3=A4nzer?= <daenzer@vmware.com>
+Date: Thu, 7 Apr 2011 16:17:47 +0200
+Subject: radeon: Fix KMS CP writeback on big endian machines.
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+From: =?UTF-8?q?Michel=20D=C3=A4nzer?= <daenzer@vmware.com>
+
+commit dc66b325f161bb651493c7d96ad44876b629cf6a upstream.
+
+This is necessary even with PCI(e) GART, and it makes writeback work even with
+AGP on my PowerBook. Might still be unreliable with older revisions of UniNorth
+and other AGP bridges though.
+
+Signed-off-by: Michel Dänzer <daenzer@vmware.com>
+Reviewed-by: Alex Deucher <alex.deucher@gmail.com>
+Signed-off-by: Dave Airlie <airlied@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/gpu/drm/radeon/radeon_fence.c | 2 +-
+ drivers/gpu/drm/radeon/radeon_ring.c | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+--- a/drivers/gpu/drm/radeon/radeon_fence.c
++++ b/drivers/gpu/drm/radeon/radeon_fence.c
+@@ -80,7 +80,7 @@ static bool radeon_fence_poll_locked(str
+ scratch_index = R600_WB_EVENT_OFFSET + rdev->fence_drv.scratch_reg - rdev->scratch.reg_base;
+ else
+ scratch_index = RADEON_WB_SCRATCH_OFFSET + rdev->fence_drv.scratch_reg - rdev->scratch.reg_base;
+- seq = rdev->wb.wb[scratch_index/4];
++ seq = le32_to_cpu(rdev->wb.wb[scratch_index/4]);
+ } else
+ seq = RREG32(rdev->fence_drv.scratch_reg);
+ if (seq != rdev->fence_drv.last_seq) {
+--- a/drivers/gpu/drm/radeon/radeon_ring.c
++++ b/drivers/gpu/drm/radeon/radeon_ring.c
+@@ -248,7 +248,7 @@ void radeon_ib_pool_fini(struct radeon_d
+ void radeon_ring_free_size(struct radeon_device *rdev)
+ {
+ if (rdev->wb.enabled)
+- rdev->cp.rptr = rdev->wb.wb[RADEON_WB_CP_RPTR_OFFSET/4];
++ rdev->cp.rptr = le32_to_cpu(rdev->wb.wb[RADEON_WB_CP_RPTR_OFFSET/4]);
+ else {
+ if (rdev->family >= CHIP_R600)
+ rdev->cp.rptr = RREG32(R600_CP_RB_RPTR);
diff --git a/queue-2.6.38/series b/queue-2.6.38/series
index a51a03e9ff..4909e95f72 100644
--- a/queue-2.6.38/series
+++ b/queue-2.6.38/series
@@ -65,3 +65,5 @@ usb-xhci-fix-unsafe-macro-definitions.patch
usb-xhci-fix-math-in-xhci_get_endpoint_interval.patch
usb-xhci-also-free-streams-when-resetting-devices.patch
usb-fix-unplug-of-device-with-active-streams.patch
+radeon-fix-kms-cp-writeback-on-big-endian-machines.patch
+bluetooth-fix-hci_reset-command-synchronization.patch