Re: [PATCH] Move irq sharing information to irqchip level.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sun, Aug 23, 2009 at 02:28:24PM +0300, Avi Kivity wrote:
> On 08/21/2009 09:16 PM, Gleb Natapov wrote:
> >On Mon, Aug 17, 2009 at 12:35:47PM +0300, Avi Kivity wrote:
> >>On 08/13/2009 08:19 PM, Gleb Natapov wrote:
> >>>This removes assumptions that max GSIs is smaller than number of pins.
> >>>Sharing is tracked on pin level not GSI level.
> >>>
> >>>Signed-off-by: Gleb Natapov<gleb@xxxxxxxxxx>
> >>>diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h
> >>>index b17d845..4c15bdd 100644
> >>>--- a/arch/x86/include/asm/kvm_host.h
> >>>+++ b/arch/x86/include/asm/kvm_host.h
> >>>@@ -413,7 +413,6 @@ struct kvm_arch{
> >>>  	gpa_t ept_identity_map_addr;
> >>>
> >>>  	unsigned long irq_sources_bitmap;
> >>>-	unsigned long irq_states[KVM_IOAPIC_NUM_PINS];
> >>>  	u64 vm_init_tsc;
> >>>  };
> >>>
> >>>diff --git a/arch/x86/kvm/irq.h b/arch/x86/kvm/irq.h
> >>>index 7d6058a..c025a23 100644
> >>>--- a/arch/x86/kvm/irq.h
> >>>+++ b/arch/x86/kvm/irq.h
> >>>@@ -71,6 +71,7 @@ struct kvm_pic {
> >>>  	int output;		/* intr from master PIC */
> >>>  	struct kvm_io_device dev;
> >>>  	void (*ack_notifier)(void *opaque, int irq);
> >>>+	unsigned long irq_states[16];
> >>>  };
> >>>
> >>I think it's cleaner to move this into the routing table to avoid
> >>duplication.  Currently there is no object which is unique to a gsi,
> >>but after your array patch, it can be placed next to the hlist_head.
> >>
> >The problem is that at this level it is not known if GSI is MSI or not.
> >Current code dials with this by arbitrary assuming that GSI is MSI if it
> >is greater then KVM_IOAPIC_NUM_PINS, but this is not enforced when
> >routing table is installed and userspace is free to use any GSI as MSI.
> >Of cause this problem would not exist if MSIs were not linked to GSIs
> >in the first place.
> 
> Does msi actually care about the states?  I don't think it does.
> 
That is the point. MSI doesn't care, but we don't know if GSI is MSI or
not.

> >The code duplication is very small (one line of code) and logically it
> >is more correct to track duplications at irqchip level. Theoretically
> >GSI may be shared when PIC is used and not shared when IOAPIC is used.
> >
> 
> No, it's more correct at the GSI level, since all interrupt lines
> connected to one GSI are shared.
> 
Why? All interrupts connected to the same irqchip pin (through pci irq
router or other onboard logic) are shared. GSI is pure logical
abstraction.

--
			Gleb.
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux