diff --git a/system/ulib/ddk/test/usb-request-test.c b/system/ulib/ddk/test/usb-request-test.c
index c622a57..6103b1e 100644
--- a/system/ulib/ddk/test/usb-request-test.c
+++ b/system/ulib/ddk/test/usb-request-test.c
@@ -5,11 +5,21 @@
 #include <limits.h>
 #include <ddk/usb-request.h>
 #include <unittest/unittest.h>
+#include <zircon/syscalls/iommu.h>
+
+extern zx_handle_t get_root_resource(void);
 
 static bool test_alloc_simple(void) {
     BEGIN_TEST;
+    zx_handle_t iommu_handle;
+    zx_handle_t bti_handle;
+    zx_iommu_desc_dummy_t desc;
+    ASSERT_EQ(zx_iommu_create(get_root_resource(), ZX_IOMMU_TYPE_DUMMY, &desc, sizeof(desc),
+                              &iommu_handle), ZX_OK, "");
+    ASSERT_EQ(zx_bti_create(iommu_handle, 0, 0, &bti_handle), ZX_OK, "");
+
     usb_request_t* req;
-    ASSERT_EQ(usb_request_alloc(&req, PAGE_SIZE * 3, 1), ZX_OK, "");
+    ASSERT_EQ(usb_request_alloc_with_bti(&req, bti_handle, PAGE_SIZE * 3, 1), ZX_OK, "");
     ASSERT_NONNULL(req, "");
     ASSERT_TRUE(io_buffer_is_valid(&req->buffer), "");
 
@@ -18,17 +28,25 @@
     ASSERT_EQ(req->buffer.phys_count, 3u, "unexpected phys count");
 
     usb_request_release(req);
+    zx_handle_close(bti_handle);
+    zx_handle_close(iommu_handle);
     END_TEST;
 }
 
 static bool test_alloc_vmo(void) {
     BEGIN_TEST;
+    zx_handle_t iommu_handle;
+    zx_handle_t bti_handle;
+    zx_iommu_desc_dummy_t desc;
+    ASSERT_EQ(zx_iommu_create(get_root_resource(), ZX_IOMMU_TYPE_DUMMY, &desc, sizeof(desc),
+                              &iommu_handle), ZX_OK, "");
+    ASSERT_EQ(zx_bti_create(iommu_handle, 0, 0, &bti_handle), ZX_OK, "");
 
     zx_handle_t vmo;
     ASSERT_EQ(zx_vmo_create(PAGE_SIZE * 4, 0, &vmo), ZX_OK, "");
 
     usb_request_t* req;
-    ASSERT_EQ(usb_request_alloc_vmo(&req, vmo, PAGE_SIZE, PAGE_SIZE * 3, 0), ZX_OK, "");
+    ASSERT_EQ(usb_request_alloc_vmo_with_bti(&req, bti_handle, vmo, PAGE_SIZE, PAGE_SIZE * 3, 0), ZX_OK, "");
 
     // Try copying some random data to and from the request.
     void* data = malloc(PAGE_SIZE * 4);
@@ -44,18 +62,27 @@
     free(data);
     free(out_data);
     usb_request_release(req);
+    zx_handle_close(bti_handle);
+    zx_handle_close(iommu_handle);
     END_TEST;
 }
 
 static bool test_pool(void) {
     BEGIN_TEST;
+    zx_handle_t iommu_handle;
+    zx_handle_t bti_handle;
+    zx_iommu_desc_dummy_t desc;
+    ASSERT_EQ(zx_iommu_create(get_root_resource(), ZX_IOMMU_TYPE_DUMMY, &desc, sizeof(desc),
+                              &iommu_handle), ZX_OK, "");
+    ASSERT_EQ(zx_bti_create(iommu_handle, 0, 0, &bti_handle), ZX_OK, "");
+
     usb_request_t* req;
-    ASSERT_EQ(usb_request_alloc(&req, 8u, 1), ZX_OK, "");
+    ASSERT_EQ(usb_request_alloc_with_bti(&req, bti_handle, 8u, 1), ZX_OK, "");
     ASSERT_NONNULL(req, "");
     ASSERT_TRUE(io_buffer_is_valid(&req->buffer), "");
 
     usb_request_t* zero_req;
-    ASSERT_EQ(usb_request_alloc(&zero_req, 0, 1), ZX_OK, "");
+    ASSERT_EQ(usb_request_alloc_with_bti(&zero_req, bti_handle, 0, 1), ZX_OK, "");
     ASSERT_NONNULL(zero_req, "");
 
     usb_request_pool_t pool;
@@ -71,6 +98,8 @@
 
     usb_request_release(req);
     usb_request_release(zero_req);
+    zx_handle_close(bti_handle);
+    zx_handle_close(iommu_handle);
     END_TEST;
 }
 
