All of lore.kernel.org
 help / color / mirror / Atom feed
From: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
To: Stefano Stabellini <Stefano.Stabellini@eu.citrix.com>
Cc: linux-kernel@vger.kernel.org, xen-devel@lists.xensource.com,
	Jeremy.Fitzhardinge@citrix.com, Qing He <qing.he@intel.com>,
	Yunhong Jiang <yunhong.jiang@intel.com>
Subject: Re: [PATCH v3 03/10] xen: remap MSIs into pirqs when running as initial domain
Date: Mon, 18 Oct 2010 11:46:03 -0400	[thread overview]
Message-ID: <20101018154603.GC27373@dumpdata.com> (raw)
In-Reply-To: <1286901770-8612-3-git-send-email-Stefano.Stabellini@eu.citrix.com>

> +int xen_create_msi_irq(struct pci_dev *dev, struct msi_desc *msidesc, int type)
> +{
> +	int irq = 0;

Lets make the default one -1, as that is the value we
are checking for errors later on.

> +	struct physdev_map_pirq map_irq;
> +	int rc;
> +	int pos;
> +	u32 table_offset, bir;
> +
> +	memset(&map_irq, 0, sizeof(map_irq));
> +	map_irq.domid = DOMID_SELF;
> +	map_irq.type = MAP_PIRQ_TYPE_MSI;
> +	map_irq.index = -1;
> +	map_irq.pirq = -1;
> +	map_irq.bus = dev->bus->number;
> +	map_irq.devfn = dev->devfn;
> +
> +	if (type == PCI_CAP_ID_MSIX) {
> +		pos = pci_find_capability(dev, PCI_CAP_ID_MSIX);
> +
> +		pci_read_config_dword(dev, msix_table_offset_reg(pos),
> +					&table_offset);
> +		bir = (u8)(table_offset & PCI_MSIX_FLAGS_BIRMASK);
> +
> +		map_irq.table_base = pci_resource_start(dev, bir);
> +		map_irq.entry_nr = msidesc->msi_attrib.entry_nr;
> +	}
> +
> +	spin_lock(&irq_mapping_update_lock);
> +
> +	irq = find_unbound_irq();
> +
> +	if (irq == -1)
> +		goto out;
> +
> +	rc = HYPERVISOR_physdev_op(PHYSDEVOP_map_pirq, &map_irq);
> +	if (rc) {
> +		printk(KERN_WARNING "xen map irq failed %d\n", rc);
> +
> +		dynamic_irq_cleanup(irq);
> +
> +		irq = -1;
> +		goto out;
> +	}
> +	irq_info[irq] = mk_pirq_info(0, map_irq.pirq, 0, map_irq.index);
> +
> +	set_irq_chip_and_handler_name(irq, &xen_pirq_chip,
> +			handle_level_irq,
> +			(type == PCI_CAP_ID_MSIX) ? "msi-x":"msi");
> +
> +out:
> +	spin_unlock(&irq_mapping_update_lock);
> +	return irq;
> +}
> +#endif
> +
>  int xen_destroy_irq(int irq)
>  {
>  	struct irq_desc *desc;
> diff --git a/include/xen/events.h b/include/xen/events.h
> index 0c58db6..8fa27dc 100644
> --- a/include/xen/events.h
> +++ b/include/xen/events.h
> @@ -72,8 +72,12 @@ void xen_hvm_evtchn_do_upcall(void);
>   * usual. */
>  int xen_allocate_pirq(unsigned gsi, int shareable, char *name);
>  int xen_map_pirq_gsi(unsigned pirq, unsigned gsi, int shareable, char *name);
> +
> +#ifdef CONFIG_PCI_MSI
>  /* Allocate an irq and a pirq to be used with MSIs. */
>  void xen_allocate_pirq_msi(char *name, int *irq, int *pirq);
> +int xen_create_msi_irq(struct pci_dev *dev, struct msi_desc *msidesc, int type);
> +#endif
>  
>  /* De-allocates the above mentioned physical interrupt. */
>  int xen_destroy_irq(int irq);
> -- 
> 1.5.6.5

WARNING: multiple messages have this Message-ID (diff)
From: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
To: Stefano Stabellini <Stefano.Stabellini@eu.citrix.com>
Cc: Jeremy.Fitzhardinge@citrix.com, xen-devel@lists.xensource.com,
	linux-kernel@vger.kernel.org, Qing He <qing.he@intel.com>,
	Yunhong Jiang <yunhong.jiang@intel.com>
Subject: Re: [PATCH v3 03/10] xen: remap MSIs into pirqs when running as initial domain
Date: Mon, 18 Oct 2010 11:46:03 -0400	[thread overview]
Message-ID: <20101018154603.GC27373@dumpdata.com> (raw)
In-Reply-To: <1286901770-8612-3-git-send-email-Stefano.Stabellini@eu.citrix.com>

> +int xen_create_msi_irq(struct pci_dev *dev, struct msi_desc *msidesc, int type)
> +{
> +	int irq = 0;

Lets make the default one -1, as that is the value we
are checking for errors later on.

> +	struct physdev_map_pirq map_irq;
> +	int rc;
> +	int pos;
> +	u32 table_offset, bir;
> +
> +	memset(&map_irq, 0, sizeof(map_irq));
> +	map_irq.domid = DOMID_SELF;
> +	map_irq.type = MAP_PIRQ_TYPE_MSI;
> +	map_irq.index = -1;
> +	map_irq.pirq = -1;
> +	map_irq.bus = dev->bus->number;
> +	map_irq.devfn = dev->devfn;
> +
> +	if (type == PCI_CAP_ID_MSIX) {
> +		pos = pci_find_capability(dev, PCI_CAP_ID_MSIX);
> +
> +		pci_read_config_dword(dev, msix_table_offset_reg(pos),
> +					&table_offset);
> +		bir = (u8)(table_offset & PCI_MSIX_FLAGS_BIRMASK);
> +
> +		map_irq.table_base = pci_resource_start(dev, bir);
> +		map_irq.entry_nr = msidesc->msi_attrib.entry_nr;
> +	}
> +
> +	spin_lock(&irq_mapping_update_lock);
> +
> +	irq = find_unbound_irq();
> +
> +	if (irq == -1)
> +		goto out;
> +
> +	rc = HYPERVISOR_physdev_op(PHYSDEVOP_map_pirq, &map_irq);
> +	if (rc) {
> +		printk(KERN_WARNING "xen map irq failed %d\n", rc);
> +
> +		dynamic_irq_cleanup(irq);
> +
> +		irq = -1;
> +		goto out;
> +	}
> +	irq_info[irq] = mk_pirq_info(0, map_irq.pirq, 0, map_irq.index);
> +
> +	set_irq_chip_and_handler_name(irq, &xen_pirq_chip,
> +			handle_level_irq,
> +			(type == PCI_CAP_ID_MSIX) ? "msi-x":"msi");
> +
> +out:
> +	spin_unlock(&irq_mapping_update_lock);
> +	return irq;
> +}
> +#endif
> +
>  int xen_destroy_irq(int irq)
>  {
>  	struct irq_desc *desc;
> diff --git a/include/xen/events.h b/include/xen/events.h
> index 0c58db6..8fa27dc 100644
> --- a/include/xen/events.h
> +++ b/include/xen/events.h
> @@ -72,8 +72,12 @@ void xen_hvm_evtchn_do_upcall(void);
>   * usual. */
>  int xen_allocate_pirq(unsigned gsi, int shareable, char *name);
>  int xen_map_pirq_gsi(unsigned pirq, unsigned gsi, int shareable, char *name);
> +
> +#ifdef CONFIG_PCI_MSI
>  /* Allocate an irq and a pirq to be used with MSIs. */
>  void xen_allocate_pirq_msi(char *name, int *irq, int *pirq);
> +int xen_create_msi_irq(struct pci_dev *dev, struct msi_desc *msidesc, int type);
> +#endif
>  
>  /* De-allocates the above mentioned physical interrupt. */
>  int xen_destroy_irq(int irq);
> -- 
> 1.5.6.5

  reply	other threads:[~2010-10-18 15:47 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-10-12 16:41 [PATCH v3 00/10] xen: initial domain support Stefano Stabellini
2010-10-12 16:42 ` [PATCH v3 01/10] xen: introduce XEN_DOM0 as a silent option Stefano Stabellini
2010-10-12 16:42 ` [PATCH v3 02/10] xen: remap GSIs as pirqs when running as initial domain Stefano Stabellini
2010-10-18 15:41   ` Konrad Rzeszutek Wilk
2010-10-18 15:41     ` Konrad Rzeszutek Wilk
2010-10-19 10:41     ` Stefano Stabellini
2010-10-19 10:41       ` Stefano Stabellini
2010-10-19 15:48       ` [Xen-devel] " Konrad Rzeszutek Wilk
2010-10-19 15:48         ` Konrad Rzeszutek Wilk
2010-10-12 16:42 ` [PATCH v3 03/10] xen: remap MSIs into " Stefano Stabellini
2010-10-18 15:46   ` Konrad Rzeszutek Wilk [this message]
2010-10-18 15:46     ` Konrad Rzeszutek Wilk
2010-10-19 10:43     ` Stefano Stabellini
2010-10-19 10:43       ` Stefano Stabellini
2010-10-12 16:42 ` [PATCH v3 04/10] xen: map a dummy page for local apic and ioapic in xen_set_fixmap Stefano Stabellini
2010-10-12 16:42 ` [PATCH v3 05/10] xen: use vcpu_ops to setup cpu masks Stefano Stabellini
2010-10-12 16:42 ` [PATCH v3 06/10] xen: Initialize xenbus for dom0 Stefano Stabellini
2010-10-12 16:42 ` [PATCH v3 07/10] xen: add the direct mapping area for ISA bus access Stefano Stabellini
2010-10-12 16:42 ` [PATCH v3 08/10] xen: use host E820 map for dom0 Stefano Stabellini
2010-10-18 15:54   ` Konrad Rzeszutek Wilk
2010-10-18 15:54     ` Konrad Rzeszutek Wilk
2010-10-19 10:49     ` Stefano Stabellini
2010-10-19 10:49       ` Stefano Stabellini
2010-10-20 17:05       ` [Xen-devel] " Jeremy Fitzhardinge
2010-10-12 16:42 ` [PATCH v3 09/10] xen: make hvc_xen console work " Stefano Stabellini
2010-10-12 16:42 ` [PATCH v3 10/10] xen: mask the MTRR feature from the cpuid Stefano Stabellini

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20101018154603.GC27373@dumpdata.com \
    --to=konrad.wilk@oracle.com \
    --cc=Jeremy.Fitzhardinge@citrix.com \
    --cc=Stefano.Stabellini@eu.citrix.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=qing.he@intel.com \
    --cc=xen-devel@lists.xensource.com \
    --cc=yunhong.jiang@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.