Index: kernel/arch/ia64/src/ddi/ddi.c
===================================================================
--- kernel/arch/ia64/src/ddi/ddi.c	(revision 334bf2812cd844f83efc295b39c767c42f7e9107)
+++ kernel/arch/ia64/src/ddi/ddi.c	(revision 6eeb4a3e81a72dcdffeb1256ea248c75983514ab)
@@ -47,9 +47,9 @@
  * Interrupts are disabled and task is locked.
  *
- * @param task		Task.
- * @param ioaddr	Starting I/O space address.
- * @param size		Size of the enabled I/O range.
+ * @param task	 Task.
+ * @param ioaddr Starting I/O space address.
+ * @param size	 Size of the enabled I/O range.
  *
- * @return 0 on success or an error code from errno.h.
+ * @return EOK on success or an error code from errno.h.
  */
 int ddi_iospace_enable_arch(task_t *task, uintptr_t ioaddr, size_t size)
@@ -72,5 +72,27 @@
 	bitmap_set_range(task->arch.iomap, iopage, size / 4);
 	
-	return 0;
+	return EOK;
+}
+
+/** Disable I/O space range for task.
+ *
+ * Interrupts are disabled and task is locked.
+ *
+ * @param task	 Task.
+ * @param ioaddr Starting I/O space address.
+ * @param size	 Size of the disabled I/O range.
+ *
+ * @return EOK on success or an error code from errno.h.
+ */
+int ddi_iospace_disable_arch(task_t *task, uintptr_t ioaddr, size_t size)
+{
+	if (!task->arch.iomap)
+		return EINVAL;
+
+	uintptr_t iopage = ioaddr / PORTS_PER_PAGE;
+	size = ALIGN_UP(size + ioaddr - 4 * iopage, PORTS_PER_PAGE);
+	bitmap_clear_range(task->arch.iomap, iopage, size / 4);
+	
+	return EOK;
 }
 
