]> Pileus Git - ~andy/linux/blobdiff - drivers/hv/vmbus_drv.c
ARM: OMAP4: sleep: build OMAP4 specific functions only for OMAP4
[~andy/linux] / drivers / hv / vmbus_drv.c
index bf421e0efa1ebca57d834ff6599014b049dc6a19..a2464bf07c49b03342c0dfcd79852cc0a232a703 100644 (file)
@@ -434,7 +434,7 @@ static void vmbus_on_msg_dpc(unsigned long data)
                 * will not deliver any more messages since there is
                 * no empty slot
                 */
-               smp_mb();
+               mb();
 
                if (msg->header.message_flags.msg_pending) {
                        /*
@@ -563,6 +563,9 @@ static int vmbus_bus_init(int irq)
         */
        hv_register_vmbus_handler(irq, vmbus_isr);
 
+       ret = hv_synic_alloc();
+       if (ret)
+               goto err_alloc;
        /*
         * Initialize the per-cpu interrupt state and
         * connect to the host.
@@ -570,13 +573,14 @@ static int vmbus_bus_init(int irq)
        on_each_cpu(hv_synic_init, NULL, 1);
        ret = vmbus_connect();
        if (ret)
-               goto err_irq;
+               goto err_alloc;
 
        vmbus_request_offers();
 
        return 0;
 
-err_irq:
+err_alloc:
+       hv_synic_free();
        free_irq(irq, hv_acpi_dev);
 
 err_unregister: