Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6: PCI MSI: Fix MSI-X with NIU cards PCI: Fix pci-e port driver slot_reset bad default return value
This commit is contained in:
Коммит
72357d5955
|
@ -455,8 +455,6 @@ static int msix_capability_init(struct pci_dev *dev,
|
||||||
entry->msi_attrib.default_irq = dev->irq;
|
entry->msi_attrib.default_irq = dev->irq;
|
||||||
entry->msi_attrib.pos = pos;
|
entry->msi_attrib.pos = pos;
|
||||||
entry->mask_base = base;
|
entry->mask_base = base;
|
||||||
entry->masked = readl(base + j * PCI_MSIX_ENTRY_SIZE +
|
|
||||||
PCI_MSIX_ENTRY_VECTOR_CTRL_OFFSET);
|
|
||||||
msix_mask_irq(entry, 1);
|
msix_mask_irq(entry, 1);
|
||||||
|
|
||||||
list_add_tail(&entry->list, &dev->msi_list);
|
list_add_tail(&entry->list, &dev->msi_list);
|
||||||
|
@ -493,6 +491,12 @@ static int msix_capability_init(struct pci_dev *dev,
|
||||||
msix_set_enable(dev, 1);
|
msix_set_enable(dev, 1);
|
||||||
dev->msix_enabled = 1;
|
dev->msix_enabled = 1;
|
||||||
|
|
||||||
|
list_for_each_entry(entry, &dev->msi_list, list) {
|
||||||
|
int vector = entry->msi_attrib.entry_nr;
|
||||||
|
entry->masked = readl(base + vector * PCI_MSIX_ENTRY_SIZE +
|
||||||
|
PCI_MSIX_ENTRY_VECTOR_CTRL_OFFSET);
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -95,6 +95,9 @@ struct aer_broadcast_data {
|
||||||
static inline pci_ers_result_t merge_result(enum pci_ers_result orig,
|
static inline pci_ers_result_t merge_result(enum pci_ers_result orig,
|
||||||
enum pci_ers_result new)
|
enum pci_ers_result new)
|
||||||
{
|
{
|
||||||
|
if (new == PCI_ERS_RESULT_NONE)
|
||||||
|
return orig;
|
||||||
|
|
||||||
switch (orig) {
|
switch (orig) {
|
||||||
case PCI_ERS_RESULT_CAN_RECOVER:
|
case PCI_ERS_RESULT_CAN_RECOVER:
|
||||||
case PCI_ERS_RESULT_RECOVERED:
|
case PCI_ERS_RESULT_RECOVERED:
|
||||||
|
|
|
@ -200,7 +200,7 @@ static int slot_reset_iter(struct device *device, void *data)
|
||||||
|
|
||||||
static pci_ers_result_t pcie_portdrv_slot_reset(struct pci_dev *dev)
|
static pci_ers_result_t pcie_portdrv_slot_reset(struct pci_dev *dev)
|
||||||
{
|
{
|
||||||
pci_ers_result_t status = PCI_ERS_RESULT_NONE;
|
pci_ers_result_t status = PCI_ERS_RESULT_RECOVERED;
|
||||||
int retval;
|
int retval;
|
||||||
|
|
||||||
/* If fatal, restore cfg space for possible link reset at upstream */
|
/* If fatal, restore cfg space for possible link reset at upstream */
|
||||||
|
|
Загрузка…
Ссылка в новой задаче