From 779ae9345dbce36df1146d7f6be6bbeb55497dbd Mon Sep 17 00:00:00 2001 From: Linus Torvalds Date: Sat, 16 May 2009 11:22:06 -0700 Subject: [PATCH] --- yaml --- r: 145069 b: refs/heads/master c: 5fe4990a97ef340046117aceb02bcad01644ebc2 h: refs/heads/master i: 145067: 9f4ad9c6e7cec9c7db3cedb65646a5f4e9e80c90 v: v3 --- [refs] | 2 +- trunk/Makefile | 2 +- trunk/drivers/pci/msi.c | 8 ++++++-- trunk/drivers/pci/pcie/aer/aerdrv.h | 3 +++ trunk/drivers/pci/pcie/portdrv_pci.c | 2 +- 5 files changed, 12 insertions(+), 5 deletions(-) diff --git a/[refs] b/[refs] index 8520fb1ecfdc..f2a0d1c0e589 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 4e3507f7189111b0cb66c30def3423c6aba8f85a +refs/heads/master: 5fe4990a97ef340046117aceb02bcad01644ebc2 diff --git a/trunk/Makefile b/trunk/Makefile index 9b2b58c3b3db..b57e1f539e83 100644 --- a/trunk/Makefile +++ b/trunk/Makefile @@ -1,7 +1,7 @@ VERSION = 2 PATCHLEVEL = 6 SUBLEVEL = 30 -EXTRAVERSION = -rc5 +EXTRAVERSION = -rc6 NAME = Vindictive Armadillo # *DOCUMENTATION* diff --git a/trunk/drivers/pci/msi.c b/trunk/drivers/pci/msi.c index 6f2e6295e773..362773247fbf 100644 --- a/trunk/drivers/pci/msi.c +++ b/trunk/drivers/pci/msi.c @@ -455,8 +455,6 @@ static int msix_capability_init(struct pci_dev *dev, entry->msi_attrib.default_irq = dev->irq; entry->msi_attrib.pos = pos; entry->mask_base = base; - entry->masked = readl(base + j * PCI_MSIX_ENTRY_SIZE + - PCI_MSIX_ENTRY_VECTOR_CTRL_OFFSET); msix_mask_irq(entry, 1); 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); 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; } diff --git a/trunk/drivers/pci/pcie/aer/aerdrv.h b/trunk/drivers/pci/pcie/aer/aerdrv.h index c7ad68b6c6d6..aa14482a4779 100644 --- a/trunk/drivers/pci/pcie/aer/aerdrv.h +++ b/trunk/drivers/pci/pcie/aer/aerdrv.h @@ -95,6 +95,9 @@ struct aer_broadcast_data { static inline pci_ers_result_t merge_result(enum pci_ers_result orig, enum pci_ers_result new) { + if (new == PCI_ERS_RESULT_NONE) + return orig; + switch (orig) { case PCI_ERS_RESULT_CAN_RECOVER: case PCI_ERS_RESULT_RECOVERED: diff --git a/trunk/drivers/pci/pcie/portdrv_pci.c b/trunk/drivers/pci/pcie/portdrv_pci.c index b924e2463f85..091ce70051e0 100644 --- a/trunk/drivers/pci/pcie/portdrv_pci.c +++ b/trunk/drivers/pci/pcie/portdrv_pci.c @@ -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) { - pci_ers_result_t status = PCI_ERS_RESULT_NONE; + pci_ers_result_t status = PCI_ERS_RESULT_RECOVERED; int retval; /* If fatal, restore cfg space for possible link reset at upstream */