search for: unmask_msi_irq

Displaying 10 results from an estimated 10 matches for "unmask_msi_irq".

2013 Aug 29
6
[PATCH 2/3 v3] Refactor MSI restore call-chain to drop unnecessary argument
Driver init call graph under baremetal: driver_init-> msix_capability_init-> msix_program_entries-> msix_mask_irq-> entry->masked = 1 request_irq-> __setup_irq-> irq_startup-> unmask_msi_irq-> msix_mask_irq-> entry->masked = 0 So entry->masked is always updated with newest value and its value could be used to restore to mask register in device. But in initial domain (aka priviliged guest), it''s different. Driver init ca...
2011 Sep 20
0
[PATCH 4/4] x86: split MSI IRQ chip
...goto out; msi_desc = irq_desc->msi_desc; --- a/xen/arch/x86/io_apic.c +++ b/xen/arch/x86/io_apic.c @@ -1882,44 +1882,6 @@ static hw_irq_controller ioapic_level_ty .set_affinity = set_ioapic_affinity_irq, }; -static unsigned int startup_msi_irq(struct irq_desc *desc) -{ - unmask_msi_irq(desc); - return 0; -} - -static void ack_msi_irq(struct irq_desc *desc) -{ - irq_complete_move(desc); - move_native_irq(desc); - - if ( msi_maskable_irq(desc->msi_desc) ) - ack_APIC_irq(); /* ACKTYPE_NONE */ -} - -static void end_msi_irq(struct irq_desc *desc, u8 vector) -{ -...
2014 Jul 26
0
[RFC PATCH 10/11] PCI/MSI: Split the generic MSI code into new file
...mask_irq(desc, flag); + readl(desc->mask_base); /* Flush write to device */ + } else { + unsigned offset = data->irq - desc->irq; + msi_mask_irq(desc, 1 << offset, flag << offset); + } +} + +void mask_msi_irq(struct irq_data *data) +{ + msi_set_mask_bit(data, 1); +} + +void unmask_msi_irq(struct irq_data *data) +{ + msi_set_mask_bit(data, 0); +} + +void msi_set_enable(struct msi_irqs *msi, int enable, int type) +{ + if (!msi || !msi->ops || !msi->ops->msi_set_enable) + return; + msi->ops->msi_set_enable(msi, enable, type); +} +EXPORT_SYMBOL(msi_set_enable); + +void _...
2014 Aug 20
1
[RFC PATCH 10/11] PCI/MSI: Split the generic MSI code into new file
...h write to device */ > + } else { > + unsigned offset = data->irq - desc->irq; > + msi_mask_irq(desc, 1 << offset, flag << offset); > + } > +} > + > +void mask_msi_irq(struct irq_data *data) > +{ > + msi_set_mask_bit(data, 1); > +} > + > +void unmask_msi_irq(struct irq_data *data) > +{ > + msi_set_mask_bit(data, 0); > +} > + > +void msi_set_enable(struct msi_irqs *msi, int enable, int type) > +{ > + if (!msi || !msi->ops || !msi->ops->msi_set_enable) > + return; > + msi->ops->msi_set_enable(msi, enable, type);...
2014 Aug 20
1
[RFC PATCH 10/11] PCI/MSI: Split the generic MSI code into new file
...h write to device */ > + } else { > + unsigned offset = data->irq - desc->irq; > + msi_mask_irq(desc, 1 << offset, flag << offset); > + } > +} > + > +void mask_msi_irq(struct irq_data *data) > +{ > + msi_set_mask_bit(data, 1); > +} > + > +void unmask_msi_irq(struct irq_data *data) > +{ > + msi_set_mask_bit(data, 0); > +} > + > +void msi_set_enable(struct msi_irqs *msi, int enable, int type) > +{ > + if (!msi || !msi->ops || !msi->ops->msi_set_enable) > + return; > + msi->ops->msi_set_enable(msi, enable, type);...
2014 Jul 26
0
[RFC PATCH 09/11] PCI/MSI: refactor PCI MSI driver
...u32 default_msi_mask_irq(struct msi_desc *desc, u32 mask, u32 flag) mask_bits &= ~mask; mask_bits |= flag; - pci_write_config_dword(desc->dev, desc->mask_pos, mask_bits); + pci_write_config_dword(dev, desc->mask_pos, mask_bits); return mask_bits; } @@ -250,18 +261,30 @@ void unmask_msi_irq(struct irq_data *data) msi_set_mask_bit(data, 0); } -void default_restore_msi_irqs(struct pci_dev *dev) +static void msix_set_all_mask(struct msi_irqs *msi, int flag) +{ + struct pci_dev *dev = msi->data; + + if (flag) + msix_clear_and_set_ctrl(dev, 0, PCI_MSIX_FLAGS_MASKALL); + else + ms...
2014 Aug 20
1
[RFC PATCH 09/11] PCI/MSI: refactor PCI MSI driver
...u32 mask, > u32 flag) > > mask_bits &= ~mask; > mask_bits |= flag; > - pci_write_config_dword(desc->dev, desc->mask_pos, mask_bits); > + pci_write_config_dword(dev, desc->mask_pos, mask_bits); > > return mask_bits; > } > @@ -250,18 +261,30 @@ void unmask_msi_irq(struct irq_data *data) > msi_set_mask_bit(data, 0); > } > > -void default_restore_msi_irqs(struct pci_dev *dev) > +static void msix_set_all_mask(struct msi_irqs *msi, int flag) > +{ > + struct pci_dev *dev = msi->data; > + > + if (flag) > + msix_clear_and_set_c...
2014 Aug 20
1
[RFC PATCH 09/11] PCI/MSI: refactor PCI MSI driver
...u32 mask, > u32 flag) > > mask_bits &= ~mask; > mask_bits |= flag; > - pci_write_config_dword(desc->dev, desc->mask_pos, mask_bits); > + pci_write_config_dword(dev, desc->mask_pos, mask_bits); > > return mask_bits; > } > @@ -250,18 +261,30 @@ void unmask_msi_irq(struct irq_data *data) > msi_set_mask_bit(data, 0); > } > > -void default_restore_msi_irqs(struct pci_dev *dev) > +static void msix_set_all_mask(struct msi_irqs *msi, int flag) > +{ > + struct pci_dev *dev = msi->data; > + > + if (flag) > + msix_clear_and_set_c...
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