Index: uspace/drv/char/ski-con/ski-con.c
===================================================================
--- uspace/drv/char/ski-con/ski-con.c	(revision 2519349d829fafe584aeabcb3b72f219367e9dfb)
+++ uspace/drv/char/ski-con/ski-con.c	(revision cf3a905cae8433ab4e89de18f9432cc8cbaa8deb)
@@ -31,7 +31,9 @@
  */
 
+#include <as.h>
 #include <async.h>
 #include <ddf/driver.h>
 #include <ddf/log.h>
+#include <ddi.h>
 #include <errno.h>
 #include <fibril.h>
@@ -69,4 +71,6 @@
 	ddf_fun_t *fun = NULL;
 	bool bound = false;
+	uintptr_t faddr;
+	void *addr = AS_AREA_ANY;
 	errno_t rc;
 
@@ -88,4 +92,18 @@
 	con->cds.sarg = con;
 
+	rc = sysinfo_get_value("ski.paddr", &faddr);
+	if (rc != EOK)
+		faddr = 0; /* No kernel driver to arbitrate with */
+
+	if (faddr != 0) {
+		addr = AS_AREA_ANY;
+		rc = physmem_map(faddr, 1, AS_AREA_READ | AS_AREA_CACHEABLE,
+		    &addr);
+		if (rc != EOK) {
+			ddf_msg(LVL_ERROR, "Cannot map kernel driver arbitration area.");
+			goto error;
+		}
+	}
+
 	rc = ddf_fun_bind(fun);
 	if (rc != EOK) {
@@ -108,4 +126,6 @@
 	return EOK;
 error:
+	if (addr != AS_AREA_ANY)
+		as_area_destroy(addr);
 	if (bound)
 		ddf_fun_unbind(fun);
Index: uspace/drv/char/ski-con/ski-con.h
===================================================================
--- uspace/drv/char/ski-con/ski-con.h	(revision 2519349d829fafe584aeabcb3b72f219367e9dfb)
+++ uspace/drv/char/ski-con/ski-con.h	(revision cf3a905cae8433ab4e89de18f9432cc8cbaa8deb)
@@ -56,4 +56,6 @@
 	fibril_mutex_t buf_lock;
 	fibril_condvar_t buf_cv;
+	/** Memory area mapped to arbitrate with the kernel driver */
+	void *mem_area;
 } ski_con_t;
 
