Index: uspace/srv/hw/irc/apic/apic.c
===================================================================
--- uspace/srv/hw/irc/apic/apic.c	(revision 2c22f1f7f3b5f60513a9f2fb179a04acd244e1b7)
+++ uspace/srv/hw/irc/apic/apic.c	(revision 206f71ae21a040a7540499adee488e4c575500b1)
@@ -54,4 +54,6 @@
 #define NAME  "apic"
 
+static bool apic_found = false;
+
 static int apic_enable_irq(sysarg_t irq)
 {
@@ -79,5 +81,15 @@
 		callid = async_get_call(&call);
 		
-		switch (IPC_GET_IMETHOD(call)) {
+		sysarg_t method = IPC_GET_IMETHOD(call);
+		if (method == IPC_M_PHONE_HUNGUP) {
+			return;
+		}
+
+		if (!apic_found) {
+			async_answer_0(callid, ENOTSUP);
+			break;
+		}
+
+		switch (method) {
 		case IRC_ENABLE_INTERRUPT:
 			async_answer_0(callid, apic_enable_irq(IPC_GET_ARG1(call)));
@@ -97,17 +109,15 @@
  *
  */
-static bool apic_init(void)
+static void apic_init(void)
 {
 	sysarg_t apic;
 	
-	if ((sysinfo_get_value("apic", &apic) != EOK) || (!apic)) {
-		printf(NAME ": No APIC found\n");
-		return false;
+	apic_found = sysinfo_get_value("apic", &apic) && apic;
+	if (!apic_found) {
+		printf(NAME ": Warning: no APIC found\n");
 	}
 	
 	async_set_client_connection(apic_connection);
 	service_register(SERVICE_APIC);
-	
-	return true;
 }
 
@@ -116,7 +126,6 @@
 	printf(NAME ": HelenOS APIC driver\n");
 	
-	if (!apic_init())
-		return -1;
-	
+	apic_init();
+
 	printf(NAME ": Accepting connections\n");
 	async_manager();
