Merge tag 'edac_for_3.15' of git://git.kernel.org/pub/scm/linux/kernel/git/bp/bp
authorLinus Torvalds <torvalds@linux-foundation.org>
Tue, 1 Apr 2014 20:54:00 +0000 (13:54 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Tue, 1 Apr 2014 20:54:00 +0000 (13:54 -0700)
Pull EDAC updates from Borislav Petkov:
 "A bunch of EDAC updates all over the place:

   - Support for new AMD models, along with more graceful fallback for
     unsupported hw.

   - Bunch of fixes from SUSE accumulated from bug reports

   - Misc other fixes and cleanups"

* tag 'edac_for_3.15' of git://git.kernel.org/pub/scm/linux/kernel/git/bp/bp:
  amd64_edac: Add support for newer F16h models
  i7core_edac: Drop unused variable
  i82875p_edac: Drop redundant call to pci_get_device()
  amd8111_edac: Fix leaks in probe error paths
  e752x_edac: Drop pvt->bridge_ck
  MCE, AMD: Fix decoding module loading on unsupported hw
  i5100_edac: Remove an unneeded condition in i5100_init_csrows()
  sb_edac: Degrade log level for device registration
  amd64_edac: Fix logic to determine channel for F15 M30h processors
  edac/85xx: Remove deprecated IRQF_DISABLED
  i3200_edac: Add a missing pci_disable_device() on the exit path
  i5400_edac: Disable device when unloading module
  e752x_edac: Simplify call to pci_get_device()

1  2 
arch/x86/kernel/amd_nb.c
drivers/edac/i7core_edac.c
include/linux/pci_ids.h

diff --combined arch/x86/kernel/amd_nb.c
@@@ -22,6 -22,7 +22,7 @@@ const struct pci_device_id amd_nb_misc_
        { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_15H_M10H_F3) },
        { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_15H_M30H_NB_F3) },
        { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_16H_NB_F3) },
+       { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_16H_M30H_NB_F3) },
        {}
  };
  EXPORT_SYMBOL(amd_nb_misc_ids);
@@@ -30,6 -31,7 +31,7 @@@ static const struct pci_device_id amd_n
        { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_15H_NB_F4) },
        { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_15H_M30H_NB_F4) },
        { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_16H_NB_F4) },
+       { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_16H_M30H_NB_F4) },
        {}
  };
  
@@@ -179,7 -181,7 +181,7 @@@ int amd_get_subcaches(int cpu
        return (mask >> (4 * cuid)) & 0xf;
  }
  
 -int amd_set_subcaches(int cpu, int mask)
 +int amd_set_subcaches(int cpu, unsigned long mask)
  {
        static unsigned int reset, ban;
        struct amd_northbridge *nb = node_to_amd_nb(amd_get_nb_id(cpu));
@@@ -1334,19 -1334,14 +1334,19 @@@ static int i7core_get_onedevice(struct 
         * is at addr 8086:2c40, instead of 8086:2c41. So, we need
         * to probe for the alternate address in case of failure
         */
 -      if (dev_descr->dev_id == PCI_DEVICE_ID_INTEL_I7_NONCORE && !pdev)
 +      if (dev_descr->dev_id == PCI_DEVICE_ID_INTEL_I7_NONCORE && !pdev) {
 +              pci_dev_get(*prev);     /* pci_get_device will put it */
                pdev = pci_get_device(PCI_VENDOR_ID_INTEL,
                                      PCI_DEVICE_ID_INTEL_I7_NONCORE_ALT, *prev);
 +      }
  
 -      if (dev_descr->dev_id == PCI_DEVICE_ID_INTEL_LYNNFIELD_NONCORE && !pdev)
 +      if (dev_descr->dev_id == PCI_DEVICE_ID_INTEL_LYNNFIELD_NONCORE &&
 +          !pdev) {
 +              pci_dev_get(*prev);     /* pci_get_device will put it */
                pdev = pci_get_device(PCI_VENDOR_ID_INTEL,
                                      PCI_DEVICE_ID_INTEL_LYNNFIELD_NONCORE_ALT,
                                      *prev);
 +      }
  
        if (!pdev) {
                if (*prev) {
@@@ -1708,7 -1703,7 +1708,7 @@@ static void i7core_mce_output_error(str
                                    const struct mce *m)
  {
        struct i7core_pvt *pvt = mci->pvt_info;
-       char *type, *optype, *err;
+       char *optype, *err;
        enum hw_event_mc_err_type tp_event;
        unsigned long error = m->status & 0x1ff0000l;
        bool uncorrected_error = m->mcgstatus & 1ll << 61;
        u32 errnum = find_first_bit(&error, 32);
  
        if (uncorrected_error) {
-               if (ripv) {
-                       type = "FATAL";
+               if (ripv)
                        tp_event = HW_EVENT_ERR_FATAL;
-               } else {
-                       type = "NON_FATAL";
+               else
                        tp_event = HW_EVENT_ERR_UNCORRECTED;
-               }
        } else {
-               type = "CORRECTED";
                tp_event = HW_EVENT_ERR_CORRECTED;
        }
  
diff --combined include/linux/pci_ids.h
  #define PCI_DEVICE_ID_AMD_15H_NB_F5   0x1605
  #define PCI_DEVICE_ID_AMD_16H_NB_F3   0x1533
  #define PCI_DEVICE_ID_AMD_16H_NB_F4   0x1534
+ #define PCI_DEVICE_ID_AMD_16H_M30H_NB_F3 0x1583
+ #define PCI_DEVICE_ID_AMD_16H_M30H_NB_F4 0x1584
  #define PCI_DEVICE_ID_AMD_CNB17H_F3   0x1703
  #define PCI_DEVICE_ID_AMD_LANCE               0x2000
  #define PCI_DEVICE_ID_AMD_LANCE_HOME  0x2001
  
  #define PCI_VENDOR_ID_INTEL           0x8086
  #define PCI_DEVICE_ID_INTEL_EESSC     0x0008
 +#define PCI_DEVICE_ID_INTEL_SNB_IMC   0x0100
 +#define PCI_DEVICE_ID_INTEL_IVB_IMC   0x0154
 +#define PCI_DEVICE_ID_INTEL_HSW_IMC   0x0c00
  #define PCI_DEVICE_ID_INTEL_PXHD_0    0x0320
  #define PCI_DEVICE_ID_INTEL_PXHD_1    0x0321
  #define PCI_DEVICE_ID_INTEL_PXH_0     0x0329