diff --git a/doc/make_constants.py b/doc/make_constants.py
index c9de4cd87fef509b0bbd5c6ef7e2036af77eb6c4..9ab78ad070ec6d0cc419458335a75ed44f9c9a16 100644
--- a/doc/make_constants.py
+++ b/doc/make_constants.py
@@ -335,7 +335,6 @@ const_ext_lookup = {
             "WRITE_BUFFER_RECT": cl_11,
             "COPY_BUFFER_RECT": cl_11,
             "USER": cl_11,
-            "MIGRATE_MEM_OBJECT_EXT": ("cl_ext_migrate_memobject", "2011.2"),
             "BARRIER": cl_12,
             "MIGRATE_MEM_OBJECTS": cl_12,
             "FILL_BUFFER": cl_12,
@@ -408,9 +407,6 @@ const_ext_lookup = {
             "CONTENT_UNDEFINED": cl_12,
             },
 
-        cl.migrate_mem_object_flags_ext: {
-            "HOST": ("cl_ext_migrate_memobject", "2011.2"),
-            },
         }
 try:
     gl_ci = cl.gl_context_info
diff --git a/doc/runtime_memory.rst b/doc/runtime_memory.rst
index 75b60253d3d5c267e4d70707a8714710de2eaae0..8431e44a6eaea441641e23623bd4847402e81e5e 100644
--- a/doc/runtime_memory.rst
+++ b/doc/runtime_memory.rst
@@ -43,15 +43,6 @@ Memory Migration
 
     Only available with CL 1.2.
 
-.. function:: enqueue_migrate_mem_object_ext(queue, mem_objects, flags=0, wait_for=None)
-
-    :param flags: from :class:`migrate_mem_object_flags_ext`
-
-    .. versionadded:: 2011.2
-
-    Only available with the `cl_ext_migrate_memobject`
-    extension.
-
 Buffer
 ------
 
diff --git a/pyopencl/__init__.py b/pyopencl/__init__.py
index 874cadac5b7a768732815dfdb6c52ec6d0cbd9e6..c99434bd4e7954d64134d59a8a9c24268bcb481b 100644
--- a/pyopencl/__init__.py
+++ b/pyopencl/__init__.py
@@ -129,8 +129,6 @@ from pyopencl._cl import (  # noqa
 
         _enqueue_marker,
 
-        enqueue_migrate_mem_object_ext,
-
         _enqueue_read_buffer,
         _enqueue_write_buffer,
         _enqueue_copy_buffer,
diff --git a/src/wrap_cl.hpp b/src/wrap_cl.hpp
index 76a4af52523a5f7bcb7a35a008371140991fd2cd..555c4a01c69e644628badb79efc63e6b9e2d8179 100644
--- a/src/wrap_cl.hpp
+++ b/src/wrap_cl.hpp
@@ -12,7 +12,6 @@
 #ifdef __APPLE__
 
 // Mac ------------------------------------------------------------------------
-#include "pyopencl_ext.h"
 #include <OpenCL/opencl.h>
 #ifdef HAVE_GL
 
@@ -1766,47 +1765,6 @@ namespace pyopencl
   }
 #endif
 
-#ifdef cl_ext_migrate_memobject
-  inline
-  event *enqueue_migrate_mem_object_ext(
-      command_queue &cq,
-      py::object py_mem_objects,
-      cl_mem_migration_flags_ext flags,
-      py::object py_wait_for)
-  {
-    PYOPENCL_PARSE_WAIT_FOR;
-
-#if PYOPENCL_CL_VERSION >= 0x1020
-    // {{{ get platform
-    cl_device_id dev;
-    PYOPENCL_CALL_GUARDED(clGetCommandQueueInfo, (cq.data(), CL_QUEUE_DEVICE,
-          sizeof(dev), &dev, nullptr));
-    cl_platform_id plat;
-    PYOPENCL_CALL_GUARDED(clGetDeviceInfo, (dev, CL_DEVICE_PLATFORM,
-          sizeof(plat), &plat, nullptr));
-    // }}}
-#endif
-
-    PYOPENCL_GET_EXT_FUN(plat,
-        clEnqueueMigrateMemObjectEXT, enqueue_migrate_fn);
-
-    std::vector<cl_mem> mem_objects;
-    for (py::handle mo: py_mem_objects)
-      mem_objects.push_back(mo.cast<memory_object &>().data());
-
-    cl_event evt;
-    PYOPENCL_RETRY_IF_MEM_ERROR(
-      PYOPENCL_CALL_GUARDED(enqueue_migrate_fn, (
-            cq.data(),
-            mem_objects.size(), mem_objects.empty( ) ? nullptr : &mem_objects.front(),
-            flags,
-            PYOPENCL_WAITLIST_ARGS, &evt
-            ));
-      );
-    PYOPENCL_RETURN_NEW_EVENT(evt);
-  }
-#endif
-
   // }}}
 
 
diff --git a/src/wrap_cl_part_1.cpp b/src/wrap_cl_part_1.cpp
index a88dc75632e3154f6d59c62508dca66ac1f9c89a..2927c8c12d0686b0defa6692c5e420bcb5bf115d 100644
--- a/src/wrap_cl_part_1.cpp
+++ b/src/wrap_cl_part_1.cpp
@@ -205,14 +205,6 @@ void pyopencl_expose_part_1(py::module &m)
       );
 #endif
 
-#ifdef cl_ext_migrate_memobject
-  m.def("enqueue_migrate_mem_object_ext", enqueue_migrate_mem_object_ext,
-      py::arg("queue"),
-      py::arg("mem_objects"),
-      py::arg("flags")=0,
-      py::arg("wait_for")=py::none()
-      );
-#endif
   // }}}
 
   // {{{ buffer
diff --git a/src/wrap_constants.cpp b/src/wrap_constants.cpp
index 0627fe851d44514a3d216f99697a1eb456cd0011..cf004bcf8ae1d27608afaf5d0d2f06fae36a6555 100644
--- a/src/wrap_constants.cpp
+++ b/src/wrap_constants.cpp
@@ -56,7 +56,6 @@ namespace
   class gl_object_type { };
   class gl_texture_info { };
 
-  class migrate_mem_object_flags_ext {};
   // }}}
 }
 
@@ -879,9 +878,6 @@ void pyopencl_expose_constants(py::module &m)
     ADD_ATTR(COMMAND_, COPY_BUFFER_RECT);
     ADD_ATTR(COMMAND_, USER);
 #endif
-#ifdef cl_ext_migrate_memobject
-    ADD_ATTR(COMMAND_, MIGRATE_MEM_OBJECT_EXT);
-#endif
 #if PYOPENCL_CL_VERSION >= 0x1020
     ADD_ATTR(COMMAND_, BARRIER);
     ADD_ATTR(COMMAND_, MIGRATE_MEM_OBJECTS);
@@ -973,13 +969,6 @@ void pyopencl_expose_constants(py::module &m)
   }
 #endif
 
-  {
-    py::class_<migrate_mem_object_flags_ext> cls(m, "migrate_mem_object_flags_ext");
-#ifdef cl_ext_migrate_memobject
-    ADD_ATTR_SUFFIX(MIGRATE_MEM_OBJECT_, HOST, _EXT);
-#endif
-  }
-
   // }}}
 }