Amit Shah wrote: > On Thursday 19 June 2008 10:17:29 Amit Shah wrote: >> * On Wednesday 18 June 2008 18:26:16 Ben-Ami Yassour wrote: >>> Amit, >>> >>> With the current implementation we have an issue if the driver on >>> the host was never loaded. >>> >>> To be able to run kvm with passthrough we have to load and then >>> unload the driver on the host at least once. After that it works ok. >> >> Yes, whenever a device issues pci_request_regions(), the IRQ may be >> reassigned. >> >> The unloading / loading should not be necessary once I commit these >> changes to the tree. >> >>> Note that after doing the load and unload the irq as reported by >>> lspci -v is changed. >>> >>> The questions that I think we need to figure out are: >>> 1. How does the loading of the driver on the host causes the irq to >>> change? >>> 2. What other side effects does it do that helps kvm pcipt work? >>> 3. What do we need to add to the pcipt code that will do the same >>> "side effect" (or bypass the problem)? >> >> That already answers all these. >> >>> Also note that in the current implementation the user is required to >>> provide the irq for the device in the kvm command line. >>> With respect to the comments above it is clear that lspci will show >>> an irrelevant irq value. Why do we need the user to provide this >>> information anyhow? >>> Why can't KVM find it out automatically? >> >> I thought we discussed this several times. The next commit is going >> to fix this. >> >>> Note, if the kernel can find this information then we can also >>> remove it from the ioctl interface. >> >> Coming soon; coming soon indeed. > > I just pushed out the changes so the trickery with module loading / > unloading, assigning irq number, etc. are not needed. The userspace > command line still expects a number for the irq, though, and you can > pass it any number as long as you use the in-kernel irq handler > (this is needed for the irqhook module, which I'm not updating the > irqhook module as of now). >
Amit, it doesn't work with VT-d even passing correct IRQ. The output is as follows: irq 16: nobody cared (try booting with the "irqpoll" option) Pid: 0, comm: swapper Not tainted 2.6.26-rc3-00988-g6d9586a-dirty #5 Call Trace: <IRQ> [<ffffffff802538eb>] __report_bad_irq+0x30/0x72 [<ffffffff80253b23>] note_interrupt+0x1f6/0x233 [<ffffffff802543ab>] handle_fasteoi_irq+0xa5/0xc8 [<ffffffff8020db0b>] do_IRQ+0xf1/0x162 [<ffffffff8020b581>] ret_from_intr+0x0/0xa <EOI> [<ffffffff8038ad82>] acpi_idle_enter_simple+0x180/0x1ea [<ffffffff8038ad78>] acpi_idle_enter_simple+0x176/0x1ea [<ffffffff8049f195>] cpuidle_idle_call+0x73/0xaa [<ffffffff8049f122>] cpuidle_idle_call+0x0/0xaa [<ffffffff80209e6b>] cpu_idle+0x6d/0x8b handlers: [<ffffffff8046a083>] (usb_hcd_irq+0x0/0x51) [<ffffffff8046a083>] (usb_hcd_irq+0x0/0x51) Disabling IRQ #16 But I found kvm_vm_ioctl_pci_pt_dev() indeed got the correct IRQ for the assigned device before request_irq(). Randy (Weidong) > A couple of notes for the VT-d patch: > - The pci_dev struct is now available in the pci_pt kernel structure, > so just use that information each time you want to add a device > instead of searching for it each time. > - The kernel with KVM VT-d patches doesn't build on the > kvm-userspace.git tree. Please fix that. > > Amit. -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html