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 --- |