KVM/ARM changes for v4.1, take #2:
Rather small this time: - a fix for a nasty bug with virtual IRQ injection - a fix for irqfd -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iQIcBAABAgAGBQJVN7ecAAoJECPQ0LrRPXpDmcEP/jTcP89kPm8r7xk0YggalpQT 4An+Nx5dnumO7ZJMVZM5eqBuXT3C2tvgKdz1VpEBr9J7F31QBEANCXd9P6smEhXI /0GuJ82tz+VC/XaVFUXsmtSW0Kkt7dIEJ29OCHdSjchxsM3C4X175IMhtVvKDGOc qVvHJllS4WBddNRTrWuk5su62QmEra6TgQMdXPabtcVcUYgQ3DLHnp/rvlYFsCfD MvZKCrlqAHNftzxW4fcimPdaToUWVNmKADm0ejujIxDRfNBH/6w7vmcFkNICAyqa Q/UgVKpVxa/baRr6jKyXh32S0ewQSki2OViIijs45tHXlSQMgUnOQ9ZMKkgR215q J5QsQFDJ5QjVth42CX3jAN6+iZFO1QX7xMBCutjg/If8rL+Cv5zKEGPzv4mOjt2M slSvgXo0Rv2c/o+7XOz15rCIW8Io4+MA2y1M6htZ8UCVAmQCGwkvlIo/9ZU2b8Hl NGnA+C8thXtrsMxjLfNWFQBGlBHKWuptTpB0qypws0C/KSXG3LM/R41q+WXqmJKy UZJWgC75ITeRle9PAHSoIzdDiH+hNhhUUyRRruLXoses98lIgUyuTvHNFhPHjIfC V/S6Ai8lBAMk/jBw/iMH1G+ubw2i2ZzFVw132NQrpucPchZvZ1DYMPA1tZEQT7Tl QkfD5j64y5qiQWbbqfZL =Cfx3 -----END PGP SIGNATURE----- Merge tag 'kvm-arm-for-4.1-take2' of git://git.kernel.org/pub/scm/linux/kernel/git/kvmarm/kvmarm into kvm-master KVM/ARM changes for v4.1, take #2: Rather small this time: - a fix for a nasty bug with virtual IRQ injection - a fix for irqfd
This commit is contained in:
commit
2fa462f826
|
@ -195,8 +195,14 @@ struct kvm_arch_memory_slot {
|
||||||
#define KVM_ARM_IRQ_CPU_IRQ 0
|
#define KVM_ARM_IRQ_CPU_IRQ 0
|
||||||
#define KVM_ARM_IRQ_CPU_FIQ 1
|
#define KVM_ARM_IRQ_CPU_FIQ 1
|
||||||
|
|
||||||
/* Highest supported SPI, from VGIC_NR_IRQS */
|
/*
|
||||||
|
* This used to hold the highest supported SPI, but it is now obsolete
|
||||||
|
* and only here to provide source code level compatibility with older
|
||||||
|
* userland. The highest SPI number can be set via KVM_DEV_ARM_VGIC_GRP_NR_IRQS.
|
||||||
|
*/
|
||||||
|
#ifndef __KERNEL__
|
||||||
#define KVM_ARM_IRQ_GIC_MAX 127
|
#define KVM_ARM_IRQ_GIC_MAX 127
|
||||||
|
#endif
|
||||||
|
|
||||||
/* One single KVM irqchip, ie. the VGIC */
|
/* One single KVM irqchip, ie. the VGIC */
|
||||||
#define KVM_NR_IRQCHIPS 1
|
#define KVM_NR_IRQCHIPS 1
|
||||||
|
|
|
@ -671,8 +671,7 @@ int kvm_vm_ioctl_irq_line(struct kvm *kvm, struct kvm_irq_level *irq_level,
|
||||||
if (!irqchip_in_kernel(kvm))
|
if (!irqchip_in_kernel(kvm))
|
||||||
return -ENXIO;
|
return -ENXIO;
|
||||||
|
|
||||||
if (irq_num < VGIC_NR_PRIVATE_IRQS ||
|
if (irq_num < VGIC_NR_PRIVATE_IRQS)
|
||||||
irq_num > KVM_ARM_IRQ_GIC_MAX)
|
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
return kvm_vgic_inject_irq(kvm, 0, irq_num, level);
|
return kvm_vgic_inject_irq(kvm, 0, irq_num, level);
|
||||||
|
|
|
@ -188,8 +188,14 @@ struct kvm_arch_memory_slot {
|
||||||
#define KVM_ARM_IRQ_CPU_IRQ 0
|
#define KVM_ARM_IRQ_CPU_IRQ 0
|
||||||
#define KVM_ARM_IRQ_CPU_FIQ 1
|
#define KVM_ARM_IRQ_CPU_FIQ 1
|
||||||
|
|
||||||
/* Highest supported SPI, from VGIC_NR_IRQS */
|
/*
|
||||||
|
* This used to hold the highest supported SPI, but it is now obsolete
|
||||||
|
* and only here to provide source code level compatibility with older
|
||||||
|
* userland. The highest SPI number can be set via KVM_DEV_ARM_VGIC_GRP_NR_IRQS.
|
||||||
|
*/
|
||||||
|
#ifndef __KERNEL__
|
||||||
#define KVM_ARM_IRQ_GIC_MAX 127
|
#define KVM_ARM_IRQ_GIC_MAX 127
|
||||||
|
#endif
|
||||||
|
|
||||||
/* One single KVM irqchip, ie. the VGIC */
|
/* One single KVM irqchip, ie. the VGIC */
|
||||||
#define KVM_NR_IRQCHIPS 1
|
#define KVM_NR_IRQCHIPS 1
|
||||||
|
|
|
@ -1561,6 +1561,9 @@ int kvm_vgic_inject_irq(struct kvm *kvm, int cpuid, unsigned int irq_num,
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (irq_num >= kvm->arch.vgic.nr_irqs)
|
||||||
|
return -EINVAL;
|
||||||
|
|
||||||
vcpu_id = vgic_update_irq_pending(kvm, cpuid, irq_num, level);
|
vcpu_id = vgic_update_irq_pending(kvm, cpuid, irq_num, level);
|
||||||
if (vcpu_id >= 0) {
|
if (vcpu_id >= 0) {
|
||||||
/* kick the specified vcpu */
|
/* kick the specified vcpu */
|
||||||
|
@ -2141,7 +2144,7 @@ int kvm_irq_map_gsi(struct kvm *kvm,
|
||||||
struct kvm_kernel_irq_routing_entry *entries,
|
struct kvm_kernel_irq_routing_entry *entries,
|
||||||
int gsi)
|
int gsi)
|
||||||
{
|
{
|
||||||
return gsi;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int kvm_irq_map_chip_pin(struct kvm *kvm, unsigned irqchip, unsigned pin)
|
int kvm_irq_map_chip_pin(struct kvm *kvm, unsigned irqchip, unsigned pin)
|
||||||
|
|
Loading…
Reference in New Issue