Index: uspace/lib/c/generic/async.c
===================================================================
--- uspace/lib/c/generic/async.c	(revision e4d96e9386cdf86237fbc59dfe286c09d4a45432)
+++ uspace/lib/c/generic/async.c	(revision b4df8db46336b1d3a612064e87644b1698115b9c)
@@ -350,4 +350,5 @@
 static async_client_conn_t client_connection = default_client_connection;
 static async_interrupt_handler_t interrupt_received = default_interrupt_received;
+static size_t interrupt_handler_stksz = (size_t) -1;
 
 /** Setter for client_connection function pointer.
@@ -370,4 +371,13 @@
 {
 	interrupt_received = intr;
+}
+
+/** Set the stack size for the interrupt handler notification fibrils.
+ *
+ * @param size Stack size. Use -1 to use the system default stack size.
+ */
+void async_set_interrupt_handler_stack_size(size_t size)
+{
+	interrupt_handler_stksz = size;
 }
 
@@ -587,5 +597,6 @@
 	msg->call = *call;
 	
-	fid_t fid = fibril_create(notification_fibril, msg);
+	fid_t fid = fibril_create_generic(notification_fibril, msg,
+	    interrupt_handler_stksz);
 	if (fid == 0) {
 		free(msg);
Index: uspace/lib/c/generic/fibril.c
===================================================================
--- uspace/lib/c/generic/fibril.c	(revision e4d96e9386cdf86237fbc59dfe286c09d4a45432)
+++ uspace/lib/c/generic/fibril.c	(revision b4df8db46336b1d3a612064e87644b1698115b9c)
@@ -256,9 +256,10 @@
  * @param func Implementing function of the new fibril.
  * @param arg Argument to pass to func.
+ * @param stksz Stack size, -1 for the system default stack size.
  *
  * @return 0 on failure or TLS of the new fibril.
  *
  */
-fid_t fibril_create(int (*func)(void *), void *arg)
+fid_t fibril_create_generic(int (*func)(void *), void *arg, size_t stksz)
 {
 	fibril_t *fibril;
@@ -268,5 +269,5 @@
 		return 0;
 	
-	size_t stack_size = stack_size_get();
+	size_t stack_size = (stksz == (size_t) -1) ? stack_size_get() : stksz;
 	fibril->stack = as_area_create((void *) -1, stack_size,
 	    AS_AREA_READ | AS_AREA_WRITE | AS_AREA_CACHEABLE | AS_AREA_GUARD |
Index: uspace/lib/c/include/async.h
===================================================================
--- uspace/lib/c/include/async.h	(revision e4d96e9386cdf86237fbc59dfe286c09d4a45432)
+++ uspace/lib/c/include/async.h	(revision b4df8db46336b1d3a612064e87644b1698115b9c)
@@ -156,4 +156,5 @@
 extern void async_set_client_connection(async_client_conn_t);
 extern void async_set_interrupt_received(async_interrupt_handler_t);
+extern void async_set_interrupt_handler_stack_size(size_t);
 
 /*
Index: uspace/lib/c/include/fibril.h
===================================================================
--- uspace/lib/c/include/fibril.h	(revision e4d96e9386cdf86237fbc59dfe286c09d4a45432)
+++ uspace/lib/c/include/fibril.h	(revision b4df8db46336b1d3a612064e87644b1698115b9c)
@@ -86,5 +86,7 @@
 extern void context_restore(context_t *ctx) __attribute__((noreturn));
 
-extern fid_t fibril_create(int (*func)(void *), void *arg);
+#define fibril_create(func, arg) \
+	fibril_create_generic((func), (arg), (size_t) -1)
+extern fid_t fibril_create_generic(int (*func)(void *), void *arg, size_t);
 extern void fibril_destroy(fid_t fid);
 extern fibril_t *fibril_setup(void);
