x86.c (35e6eaa3df55822d0cb1df3bf08e6cb816737131) x86.c (49776faf93f8074bb4990beac04781a9507d3650)
1/*
2 * Kernel-based Virtual Machine driver for Linux
3 *
4 * derived from drivers/kvm/kvm_main.c
5 *
6 * Copyright (C) 2006 Qumranet, Inc.
7 * Copyright (C) 2008 Qumranet, Inc.
8 * Copyright IBM Corporation, 2008

--- 3880 unchanged lines hidden (view full) ---

3889 goto split_irqchip_unlock;
3890 if (kvm->created_vcpus)
3891 goto split_irqchip_unlock;
3892 r = kvm_setup_empty_irq_routing(kvm);
3893 if (r)
3894 goto split_irqchip_unlock;
3895 /* Pairs with irqchip_in_kernel. */
3896 smp_wmb();
1/*
2 * Kernel-based Virtual Machine driver for Linux
3 *
4 * derived from drivers/kvm/kvm_main.c
5 *
6 * Copyright (C) 2006 Qumranet, Inc.
7 * Copyright (C) 2008 Qumranet, Inc.
8 * Copyright IBM Corporation, 2008

--- 3880 unchanged lines hidden (view full) ---

3889 goto split_irqchip_unlock;
3890 if (kvm->created_vcpus)
3891 goto split_irqchip_unlock;
3892 r = kvm_setup_empty_irq_routing(kvm);
3893 if (r)
3894 goto split_irqchip_unlock;
3895 /* Pairs with irqchip_in_kernel. */
3896 smp_wmb();
3897 kvm->arch.irqchip_split = true;
3897 kvm->arch.irqchip_mode = KVM_IRQCHIP_SPLIT;
3898 kvm->arch.nr_reserved_ioapic_pins = cap->args[0];
3899 r = 0;
3900split_irqchip_unlock:
3901 mutex_unlock(&kvm->lock);
3902 break;
3903 }
3904 case KVM_CAP_X2APIC_API:
3905 r = -EINVAL;

--- 77 unchanged lines hidden (view full) ---

3983 mutex_lock(&kvm->slots_lock);
3984 mutex_lock(&kvm->irq_lock);
3985 kvm_ioapic_destroy(kvm);
3986 kvm_destroy_pic(vpic);
3987 mutex_unlock(&kvm->irq_lock);
3988 mutex_unlock(&kvm->slots_lock);
3989 goto create_irqchip_unlock;
3990 }
3898 kvm->arch.nr_reserved_ioapic_pins = cap->args[0];
3899 r = 0;
3900split_irqchip_unlock:
3901 mutex_unlock(&kvm->lock);
3902 break;
3903 }
3904 case KVM_CAP_X2APIC_API:
3905 r = -EINVAL;

--- 77 unchanged lines hidden (view full) ---

3983 mutex_lock(&kvm->slots_lock);
3984 mutex_lock(&kvm->irq_lock);
3985 kvm_ioapic_destroy(kvm);
3986 kvm_destroy_pic(vpic);
3987 mutex_unlock(&kvm->irq_lock);
3988 mutex_unlock(&kvm->slots_lock);
3989 goto create_irqchip_unlock;
3990 }
3991 /* Write kvm->irq_routing before kvm->arch.vpic. */
3991 /* Write kvm->irq_routing before enabling irqchip_in_kernel. */
3992 smp_wmb();
3992 smp_wmb();
3993 kvm->arch.irqchip_mode = KVM_IRQCHIP_KERNEL;
3993 kvm->arch.vpic = vpic;
3994 create_irqchip_unlock:
3995 mutex_unlock(&kvm->lock);
3996 break;
3997 }
3998 case KVM_CREATE_PIT:
3999 u.pit_config.flags = KVM_PIT_SPEAKER_DUMMY;
4000 goto create_pit;

--- 4598 unchanged lines hidden ---
3994 kvm->arch.vpic = vpic;
3995 create_irqchip_unlock:
3996 mutex_unlock(&kvm->lock);
3997 break;
3998 }
3999 case KVM_CREATE_PIT:
4000 u.pit_config.flags = KVM_PIT_SPEAKER_DUMMY;
4001 goto create_pit;

--- 4598 unchanged lines hidden ---