Re: [PATCH] KVM x86: Handle hypercalls for assigned PCI devices

From: Avi Kivity
Date: Tue Apr 29 2008 - 18:50:26 EST


Amit Shah wrote:

+ if (is_error_page(host_page)) {
+ printk(KERN_INFO "%s: gfn %p not valid\n",
+ __func__, (void *)page_gfn);
+ r = -1;
r = -1 is not really informative. Better use some meaningful error.

The error's going to the guest. The guest, as we know, has already done a successful DMA allocation. Something went wrong in the hypercall, and we don't know why (bad page). Any kind of error here isn't going to be intelligible to the guest anyway. It's mostly a host thing if we ever hit this.


If the guest is not able to handle it, why bother returning an error? Better to kill it.

But in any case, -1 is not a good error number.

+ if (find_pci_pt_dev(&vcpu->kvm->arch.pci_pt_dev_head,
+ &pci_pt_info, 0, KVM_PT_SOURCE_ASSIGN))
+ r++; /* We have assigned the device */
+
+ kunmap(host_page);
better use atomic mappings here.

We can't use atomic mappings for guest pages. They can be swapped out.

kmap()ed pages can't be swapped out either. The atomic in kmap_atomic() only refers to the context in which the pages are used. Atmoic kmaps are greatly preferable to the nonatomic ones.

--
Any sufficiently difficult bug is indistinguishable from a feature.

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/