diff --git a/.travis.yml b/.travis.yml
index be9d034e8407b3a1d2c9020b1d0e34f67e032059..9d190d41ca6326a8c9026469af60b6c61788bad7 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -30,8 +30,8 @@ matrix:
     # Run tests on some extra platforms
     - env: TARGET=i686-unknown-linux-gnu
     - env: TARGET=armv7-unknown-linux-gnueabihf
-    - env: TARGET=powerpc-unknown-linux-gnu
-    - env: TARGET=powerpc64-unknown-linux-gnu
+    - env: RUST_TEST_THREADS=1 TARGET=powerpc-unknown-linux-gnu
+    - env: RUST_TEST_THREADS=1 TARGET=powerpc64-unknown-linux-gnu
 
 before_install: set -e
 
diff --git a/tests/test_bytes.rs b/tests/test_bytes.rs
index cfb50707d9b8dfaf0f164ffc5bb516e0f0ef3659..2e163dfe8ae4112232a220f121e3e32a4065d0af 100644
--- a/tests/test_bytes.rs
+++ b/tests/test_bytes.rs
@@ -298,6 +298,9 @@ fn extend() {
 }
 
 #[test]
+// Only run these tests on little endian systems. CI uses qemu for testing
+// little endian... and qemu doesn't really support threading all that well.
+#[cfg(target_endian = "little")]
 fn stress() {
     // Tests promoting a buffer from a vec -> shared in a concurrent situation
     use std::sync::{Arc, Barrier};
@@ -308,7 +311,7 @@ fn stress() {
 
     for i in 0..ITERS {
         let data = [i as u8; 256];
-        let buf = Arc::new(BytesMut::from(&data[..]));
+        let buf = Arc::new(Bytes::from(&data[..]));
 
         let barrier = Arc::new(Barrier::new(THREADS));
         let mut joins = Vec::with_capacity(THREADS);
@@ -319,7 +322,8 @@ fn stress() {
 
             joins.push(thread::spawn(move || {
                 c.wait();
-                let _buf = buf.clone();
+                let buf: Bytes = (*buf).clone();
+                drop(buf);
             }));
         }