Skip to content

Commit

Permalink
Merge git://git.kernel.org/pub/scm/virt/kvm/kvm
Browse files Browse the repository at this point in the history
Pull a couple of KVM fixes from Avi Kivity:
 "One is an adjustment for an irq layer change that affected device
  assignment, the other a one-liner ppc fix."

* git://git.kernel.org/pub/scm/virt/kvm/kvm:
  powerpc/kvm: Fix "PR" KVM implementation of H_CEDE
  KVM: Fix device assignment threaded irq handler
  • Loading branch information
torvalds committed Jul 13, 2012
2 parents 91f68c8 + 37e41af commit e7654c1
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 2 deletions.
1 change: 1 addition & 0 deletions arch/powerpc/kvm/book3s_pr_papr.c
Expand Up @@ -241,6 +241,7 @@ int kvmppc_h_pr(struct kvm_vcpu *vcpu, unsigned long cmd)
case H_PUT_TCE:
return kvmppc_h_pr_put_tce(vcpu);
case H_CEDE:
vcpu->arch.shared->msr |= MSR_EE;
kvm_vcpu_block(vcpu);
clear_bit(KVM_REQ_UNHALT, &vcpu->requests);
vcpu->stat.halt_wakeup++;
Expand Down
15 changes: 13 additions & 2 deletions virt/kvm/assigned-dev.c
Expand Up @@ -334,6 +334,11 @@ static int assigned_device_enable_host_intx(struct kvm *kvm,
}

#ifdef __KVM_HAVE_MSI
static irqreturn_t kvm_assigned_dev_msi(int irq, void *dev_id)
{
return IRQ_WAKE_THREAD;
}

static int assigned_device_enable_host_msi(struct kvm *kvm,
struct kvm_assigned_dev_kernel *dev)
{
Expand All @@ -346,7 +351,7 @@ static int assigned_device_enable_host_msi(struct kvm *kvm,
}

dev->host_irq = dev->dev->irq;
if (request_threaded_irq(dev->host_irq, NULL,
if (request_threaded_irq(dev->host_irq, kvm_assigned_dev_msi,
kvm_assigned_dev_thread_msi, 0,
dev->irq_name, dev)) {
pci_disable_msi(dev->dev);
Expand All @@ -358,6 +363,11 @@ static int assigned_device_enable_host_msi(struct kvm *kvm,
#endif

#ifdef __KVM_HAVE_MSIX
static irqreturn_t kvm_assigned_dev_msix(int irq, void *dev_id)
{
return IRQ_WAKE_THREAD;
}

static int assigned_device_enable_host_msix(struct kvm *kvm,
struct kvm_assigned_dev_kernel *dev)
{
Expand All @@ -374,7 +384,8 @@ static int assigned_device_enable_host_msix(struct kvm *kvm,

for (i = 0; i < dev->entries_nr; i++) {
r = request_threaded_irq(dev->host_msix_entries[i].vector,
NULL, kvm_assigned_dev_thread_msix,
kvm_assigned_dev_msix,
kvm_assigned_dev_thread_msix,
0, dev->irq_name, dev);
if (r)
goto err;
Expand Down

0 comments on commit e7654c1

Please sign in to comment.