Displaying 12 results from an estimated 12 matches for "arch_restore_msi_irqs".
2013 Aug 29
6
[PATCH 2/3 v3] Refactor MSI restore call-chain to drop unnecessary argument
...9;'s duty to restore entry->msi_attrib.masked to device,
but with current code, entry->masked is used and MSI-x interrupt is masked.
Before patch, restore call graph under initial domain:
pci_reset_function->
    pci_restore_state->
        __pci_restore_msix_state->
            arch_restore_msi_irqs->
                xen_initdom_restore_msi_irqs->
                    PHYSDEVOP_restore_msi hypercall (first mask restore)
            msix_mask_irq(entry, entry->masked)     (second mask restore)
So msix_mask_irq call in initial domain call graph needs to be removed.
Based on this we can...
2014 Aug 20
1
[RFC PATCH 09/11] PCI/MSI: refactor PCI MSI driver
...enabled(dev, MSI_TYPE))  {
> +	} else if (msi->msi_enabled)  {
>  		entry = irq_get_msi_desc(irq);
>  	}
> 
> @@ -133,20 +135,9 @@ static void default_restore_msi_irq(struct pci_dev *dev,
> int irq)
>  		write_msi_msg(irq, &entry->msg);
>  }
> 
> -void __weak arch_restore_msi_irqs(struct pci_dev *dev)
> +void __weak arch_restore_msi_irqs(struct msi_irqs *msi)
>  {
> -	return default_restore_msi_irqs(dev);
> -}
> -
> -static void msi_set_enable(struct pci_dev *dev, int enable)
> -{
> -	u16 control;
> -
> -	pci_read_config_word(dev, dev->msi_ca...
2014 Aug 20
1
[RFC PATCH 09/11] PCI/MSI: refactor PCI MSI driver
...enabled(dev, MSI_TYPE))  {
> +	} else if (msi->msi_enabled)  {
>  		entry = irq_get_msi_desc(irq);
>  	}
> 
> @@ -133,20 +135,9 @@ static void default_restore_msi_irq(struct pci_dev *dev,
> int irq)
>  		write_msi_msg(irq, &entry->msg);
>  }
> 
> -void __weak arch_restore_msi_irqs(struct pci_dev *dev)
> +void __weak arch_restore_msi_irqs(struct msi_irqs *msi)
>  {
> -	return default_restore_msi_irqs(dev);
> -}
> -
> -static void msi_set_enable(struct pci_dev *dev, int enable)
> -{
> -	u16 control;
> -
> -	pci_read_config_word(dev, dev->msi_ca...
2014 Jul 26
0
[RFC PATCH 09/11] PCI/MSI: refactor PCI MSI driver
...;irq)
 				break;
 		}
-	} else if (pci_dev_msi_enabled(dev, MSI_TYPE))  {
+	} else if (msi->msi_enabled)  {
 		entry = irq_get_msi_desc(irq);
 	}
 
@@ -133,20 +135,9 @@ static void default_restore_msi_irq(struct pci_dev *dev, int irq)
 		write_msi_msg(irq, &entry->msg);
 }
 
-void __weak arch_restore_msi_irqs(struct pci_dev *dev)
+void __weak arch_restore_msi_irqs(struct msi_irqs *msi)
 {
-	return default_restore_msi_irqs(dev);
-}
-
-static void msi_set_enable(struct pci_dev *dev, int enable)
-{
-	u16 control;
-
-	pci_read_config_word(dev, dev->msi_cap + PCI_MSI_FLAGS, &control);
-	control &=...
2014 Aug 20
1
[RFC PATCH 10/11] PCI/MSI: Split the generic MSI code into new file
...&entry->msg);
> +}
> +
> +void default_restore_msi_irqs(struct msi_irqs *msi)
> +{
> +	struct msi_desc *entry;
> +
> +	list_for_each_entry(entry, &msi->msi_list, list) {
> +		default_restore_msi_irq(msi, entry->irq);
> +	}
> +}
> +
> +void __weak arch_restore_msi_irqs(struct msi_irqs *msi)
> +{
> +	return default_restore_msi_irqs(msi);
> +}
> +
> +u32 default_msi_mask_irq(struct msi_desc *desc, u32 mask, u32 flag)
> +{
> +	struct msi_irqs *msi = desc->msi;
> +
> +	if (!msi || !msi->ops || !msi->ops->msi_mask_irq)
> +		re...
2014 Aug 20
1
[RFC PATCH 10/11] PCI/MSI: Split the generic MSI code into new file
...&entry->msg);
> +}
> +
> +void default_restore_msi_irqs(struct msi_irqs *msi)
> +{
> +	struct msi_desc *entry;
> +
> +	list_for_each_entry(entry, &msi->msi_list, list) {
> +		default_restore_msi_irq(msi, entry->irq);
> +	}
> +}
> +
> +void __weak arch_restore_msi_irqs(struct msi_irqs *msi)
> +{
> +	return default_restore_msi_irqs(msi);
> +}
> +
> +u32 default_msi_mask_irq(struct msi_desc *desc, u32 mask, u32 flag)
> +{
> +	struct msi_irqs *msi = desc->msi;
> +
> +	if (!msi || !msi->ops || !msi->ops->msi_mask_irq)
> +		re...
2014 Jul 26
0
[RFC PATCH 10/11] PCI/MSI: Split the generic MSI code into new file
...get_msi_desc(irq);
+	}
+
+	if (entry)
+		write_msi_msg(irq, &entry->msg);
+}
+
+void default_restore_msi_irqs(struct msi_irqs *msi)
+{
+	struct msi_desc *entry;
+
+	list_for_each_entry(entry, &msi->msi_list, list) {
+		default_restore_msi_irq(msi, entry->irq);
+	}
+}
+
+void __weak arch_restore_msi_irqs(struct msi_irqs *msi)
+{
+	return default_restore_msi_irqs(msi);
+}
+
+u32 default_msi_mask_irq(struct msi_desc *desc, u32 mask, u32 flag)
+{
+	struct msi_irqs *msi = desc->msi;
+
+	if (!msi || !msi->ops || !msi->ops->msi_mask_irq)
+		return desc->masked;
+	return msi->ops->msi...
2014 Jul 26
20
[RFC PATCH 00/11] Refactor MSI to support Non-PCI device
Hi all,
	The series is a draft of generic MSI driver that supports PCI
and Non-PCI device which have MSI capability. If you're not interested
it, sorry for the noise.
The series is based on Linux-3.16-rc1.
MSI was introduced in PCI Spec 2.2. Currently, kernel MSI 
driver codes are bonding with PCI device. Because MSI has a lot
advantages in design. More and more non-PCI devices want to
use
2014 Jul 26
20
[RFC PATCH 00/11] Refactor MSI to support Non-PCI device
Hi all,
	The series is a draft of generic MSI driver that supports PCI
and Non-PCI device which have MSI capability. If you're not interested
it, sorry for the noise.
The series is based on Linux-3.16-rc1.
MSI was introduced in PCI Spec 2.2. Currently, kernel MSI 
driver codes are bonding with PCI device. Because MSI has a lot
advantages in design. More and more non-PCI devices want to
use
2014 Aug 20
1
[RFC PATCH 11/11] x86/MSI: Refactor x86 MSI code
...msi_irqs *msi)
>  {
> -	x86_msi.teardown_msi_irqs(dev);
> +	x86_msi.teardown_msi_irqs(msi);
>  }
> 
>  void arch_teardown_msi_irq(unsigned int irq)
> @@ -136,9 +136,9 @@ void arch_teardown_msi_irq(unsigned int irq)
>  	x86_msi.teardown_msi_irq(irq);
>  }
> 
> -void arch_restore_msi_irqs(struct pci_dev *dev)
> +void arch_restore_msi_irqs(struct msi_irqs *msi)
>  {
> -	x86_msi.restore_msi_irqs(dev);
> +	x86_msi.restore_msi_irqs(msi);
>  }
>  u32 arch_msi_mask_irq(struct msi_desc *desc, u32 mask, u32 flag)
>  {
> diff --git a/drivers/iommu/amd_iommu.c b/driver...
2014 Aug 20
1
[RFC PATCH 11/11] x86/MSI: Refactor x86 MSI code
...msi_irqs *msi)
>  {
> -	x86_msi.teardown_msi_irqs(dev);
> +	x86_msi.teardown_msi_irqs(msi);
>  }
> 
>  void arch_teardown_msi_irq(unsigned int irq)
> @@ -136,9 +136,9 @@ void arch_teardown_msi_irq(unsigned int irq)
>  	x86_msi.teardown_msi_irq(irq);
>  }
> 
> -void arch_restore_msi_irqs(struct pci_dev *dev)
> +void arch_restore_msi_irqs(struct msi_irqs *msi)
>  {
> -	x86_msi.restore_msi_irqs(dev);
> +	x86_msi.restore_msi_irqs(msi);
>  }
>  u32 arch_msi_mask_irq(struct msi_desc *desc, u32 mask, u32 flag)
>  {
> diff --git a/drivers/iommu/amd_iommu.c b/driver...
2014 Jul 26
0
[RFC PATCH 11/11] x86/MSI: Refactor x86 MSI code
...uct pci_dev *dev)
+void arch_teardown_msi_irqs(struct msi_irqs *msi)
 {
-	x86_msi.teardown_msi_irqs(dev);
+	x86_msi.teardown_msi_irqs(msi);
 }
 
 void arch_teardown_msi_irq(unsigned int irq)
@@ -136,9 +136,9 @@ void arch_teardown_msi_irq(unsigned int irq)
 	x86_msi.teardown_msi_irq(irq);
 }
 
-void arch_restore_msi_irqs(struct pci_dev *dev)
+void arch_restore_msi_irqs(struct msi_irqs *msi)
 {
-	x86_msi.restore_msi_irqs(dev);
+	x86_msi.restore_msi_irqs(msi);
 }
 u32 arch_msi_mask_irq(struct msi_desc *desc, u32 mask, u32 flag)
 {
diff --git a/drivers/iommu/amd_iommu.c b/drivers/iommu/amd_iommu.c
index 4aec6a2..0e45c...