Displaying 9 results from an estimated 9 matches for "multi_cap".
2014 Jul 26
0
[RFC PATCH 01/11] PCI/MSI: Use pci_dev->msi_cap instead of msi_desc->msi_attrib.pos
...msi_desc *msi_setup_entry(struct pci_dev *dev)
entry->msi_attrib.entry_nr = 0;
entry->msi_attrib.maskbit = !!(control & PCI_MSI_FLAGS_MASKBIT);
entry->msi_attrib.default_irq = dev->irq; /* Save IOAPIC IRQ */
- entry->msi_attrib.pos = dev->msi_cap;
entry->msi_attrib.multi_cap = (control & PCI_MSI_FLAGS_QMASK) >> 1;
if (control & PCI_MSI_FLAGS_64BIT)
@@ -699,7 +698,6 @@ static int msix_setup_entries(struct pci_dev *dev, void __iomem *base,
entry->msi_attrib.is_64 = 1;
entry->msi_attrib.entry_nr = entries[i].entry;
entry->msi_attrib.de...
2014 Aug 20
1
[RFC PATCH 10/11] PCI/MSI: Split the generic MSI code into new file
...turn;
> +
> + BUG_ON(list_empty(&msi->msi_list));
> +
> + desc = list_first_entry(&msi->msi_list, struct msi_desc, list);
> + msi_set_enable(msi, 0, MSI_TYPE);
> + msi_set_intx(msi, 1);
> + msi->msi_enabled = 0;
> +
> + mask = msi_mask(desc->msi_attrib.multi_cap);
> + arch_msi_mask_irq(desc, mask, ~mask);
> +}
> +
> +void msix_shutdown(struct msi_irqs *msi)
> +{
> + struct msi_desc *entry;
> +
> + if (!msi || !msi->msix_enabled)
> + return;
> +
> + list_for_each_entry(entry, &msi->msi_list, list)
> + arch_msi...
2014 Aug 20
1
[RFC PATCH 10/11] PCI/MSI: Split the generic MSI code into new file
...turn;
> +
> + BUG_ON(list_empty(&msi->msi_list));
> +
> + desc = list_first_entry(&msi->msi_list, struct msi_desc, list);
> + msi_set_enable(msi, 0, MSI_TYPE);
> + msi_set_intx(msi, 1);
> + msi->msi_enabled = 0;
> +
> + mask = msi_mask(desc->msi_attrib.multi_cap);
> + arch_msi_mask_irq(desc, mask, ~mask);
> +}
> +
> +void msix_shutdown(struct msi_irqs *msi)
> +{
> + struct msi_desc *entry;
> +
> + if (!msi || !msi->msix_enabled)
> + return;
> +
> + list_for_each_entry(entry, &msi->msi_list, list)
> + arch_msi...
2014 Jul 26
0
[RFC PATCH 10/11] PCI/MSI: Split the generic MSI code into new file
...;
+
+ if (!msi || !msi->msi_enabled)
+ return;
+
+ BUG_ON(list_empty(&msi->msi_list));
+
+ desc = list_first_entry(&msi->msi_list, struct msi_desc, list);
+ msi_set_enable(msi, 0, MSI_TYPE);
+ msi_set_intx(msi, 1);
+ msi->msi_enabled = 0;
+
+ mask = msi_mask(desc->msi_attrib.multi_cap);
+ arch_msi_mask_irq(desc, mask, ~mask);
+}
+
+void msix_shutdown(struct msi_irqs *msi)
+{
+ struct msi_desc *entry;
+
+ if (!msi || !msi->msix_enabled)
+ return;
+
+ list_for_each_entry(entry, &msi->msi_list, list)
+ arch_msix_mask_irq(entry, 1);
+
+ msi_set_enable(msi, 0, MSIX_TYPE);...
2014 Jul 26
0
[RFC PATCH 09/11] PCI/MSI: refactor PCI MSI driver
...i_set_enable(dev, 0);
- arch_restore_msi_irqs(dev);
+ pci_intx_for_msi(dev->msi, 0);
+ msi_set_enable(dev->msi, 0, MSI_TYPE);
+ arch_restore_msi_irqs(dev->msi);
pci_read_config_word(dev, dev->msi_cap + PCI_MSI_FLAGS, &control);
msi_mask_irq(entry, msi_mask(entry->msi_attrib.multi_cap),
@@ -459,22 +488,21 @@ static void __pci_restore_msi_state(struct pci_dev *dev)
static void __pci_restore_msix_state(struct pci_dev *dev)
{
struct msi_desc *entry;
+ struct msi_irqs *msi = dev->msi;
- if (!dev->msix_enabled)
+ if (!pci_dev_msi_enabled(dev, MSIX_TYPE))
return;
- BUG_...
2014 Aug 20
1
[RFC PATCH 09/11] PCI/MSI: refactor PCI MSI driver
...restore_msi_irqs(dev);
> + pci_intx_for_msi(dev->msi, 0);
> + msi_set_enable(dev->msi, 0, MSI_TYPE);
> + arch_restore_msi_irqs(dev->msi);
>
> pci_read_config_word(dev, dev->msi_cap + PCI_MSI_FLAGS, &control);
> msi_mask_irq(entry, msi_mask(entry->msi_attrib.multi_cap),
> @@ -459,22 +488,21 @@ static void __pci_restore_msi_state(struct pci_dev *dev)
> static void __pci_restore_msix_state(struct pci_dev *dev)
> {
> struct msi_desc *entry;
> + struct msi_irqs *msi = dev->msi;
>
> - if (!dev->msix_enabled)
> + if (!pci_dev_msi_ena...
2014 Aug 20
1
[RFC PATCH 09/11] PCI/MSI: refactor PCI MSI driver
...restore_msi_irqs(dev);
> + pci_intx_for_msi(dev->msi, 0);
> + msi_set_enable(dev->msi, 0, MSI_TYPE);
> + arch_restore_msi_irqs(dev->msi);
>
> pci_read_config_word(dev, dev->msi_cap + PCI_MSI_FLAGS, &control);
> msi_mask_irq(entry, msi_mask(entry->msi_attrib.multi_cap),
> @@ -459,22 +488,21 @@ static void __pci_restore_msi_state(struct pci_dev *dev)
> static void __pci_restore_msix_state(struct pci_dev *dev)
> {
> struct msi_desc *entry;
> + struct msi_irqs *msi = dev->msi;
>
> - if (!dev->msix_enabled)
> + if (!pci_dev_msi_ena...
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