1. 28 4月, 2014 5 次提交
  2. 17 2月, 2014 2 次提交
  3. 15 1月, 2014 1 次提交
    • G
      powerpc/eeh: Hotplug improvement · f26c7a03
      Gavin Shan 提交于
      When EEH error comes to one specific PCI device before its driver
      is loaded, we will apply hotplug to recover the error. During the
      plug time, the PCI device will be probed and its driver is loaded.
      Then we wrongly calls to the error handlers if the driver supports
      EEH explicitly.
      
      The patch intends to fix by introducing flag EEH_DEV_NO_HANDLER and
      set it before we remove the PCI device. In turn, we can avoid wrongly
      calls the error handlers of the PCI device after its driver loaded.
      Signed-off-by: NGavin Shan <shangw@linux.vnet.ibm.com>
      Signed-off-by: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
      f26c7a03
  4. 05 12月, 2013 1 次提交
  5. 21 11月, 2013 1 次提交
  6. 05 11月, 2013 1 次提交
  7. 11 10月, 2013 1 次提交
  8. 24 9月, 2013 1 次提交
  9. 09 8月, 2013 1 次提交
  10. 24 7月, 2013 6 次提交
  11. 01 7月, 2013 3 次提交
  12. 25 6月, 2013 1 次提交
  13. 21 6月, 2013 1 次提交
  14. 20 6月, 2013 9 次提交
  15. 10 1月, 2013 1 次提交
  16. 18 9月, 2012 2 次提交
    • G
      powerpc/eeh: Fix crash on converting OF node to edev · 1e38b714
      Gavin Shan 提交于
      The kernel crash was reported by Alexy. He was testing some feature
      with private kernel, in which Alexy added some code in pci_pm_reset()
      to read the CSR after writting it. The bug could be reproduced on
      Fiber Channel card (Fibre Channel: Emulex Corporation Saturn-X:
      LightPulse Fibre Channel Host Adapter (rev 03)) by the following
      commands.
      
      	# echo 1 > /sys/devices/pci0004:01/0004:01:00.0/reset
      	# rmmod lpfc
      	# modprobe lpfc
      
      The history behind the test case is that those additional config
      space reading operations in pci_pm_reset() would cause EEH error,
      but we didn't detect EEH error until "modprobe lpfc". For the case,
      all the PCI devices on PCI bus (0004:01) were removed and added after
      PE reset. Then the EEH devices would be figured out again based on
      the OF nodes. Unfortunately, there were some child OF nodes under
      PCI device (0004:01:00.0), but they didn't have attached PCI_DN since
      they're invisible from PCI domain. However, we were still trying to
      convert OF node to EEH device without checking on the attached PCI_DN.
      Eventually, it caused the kernel crash as follows:
      
      Unable to handle kernel paging request for data at address 0x00000030
      Faulting instruction address: 0xc00000000004d888
      cpu 0x0: Vector: 300 (Data Access) at [c000000fc797b950]
          pc: c00000000004d888: .eeh_add_device_tree_early+0x78/0x140
          lr: c00000000004d880: .eeh_add_device_tree_early+0x70/0x140
          sp: c000000fc797bbd0
         msr: 8000000000009032
         dar: 30
       dsisr: 40000000
        current = 0xc000000fc78d9f70
        paca    = 0xc00000000edb0000   softe: 0        irq_happened: 0x00
          pid   = 2951, comm = eehd
      enter ? for help
      [c000000fc797bc50] c00000000004d848 .eeh_add_device_tree_early+0x38/0x140
      [c000000fc797bcd0] c00000000004d848 .eeh_add_device_tree_early+0x38/0x140
      [c000000fc797bd50] c000000000051b54 .pcibios_add_pci_devices+0x34/0x190
      [c000000fc797bde0] c00000000004fb10 .eeh_reset_device+0x100/0x160
      [c000000fc797be70] c0000000000502dc .eeh_handle_event+0x19c/0x300
      [c000000fc797bf00] c000000000050570 .eeh_event_handler+0x130/0x1a0
      [c000000fc797bf90] c000000000020138 .kernel_thread+0x54/0x70
      
      The patch changes of_node_to_eeh_dev() and just returns NULL if the
      passed OF node doesn't have attached PCI_DN.
      
      Cc: stable@vger.kernel.org
      Reported-by: NAlexey Kardashevskiy <aik@ozlabs.ru>
      Signed-off-by: NGavin Shan <shangw@linux.vnet.ibm.com>
      Signed-off-by: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
      1e38b714
    • G
      powerpc/eeh: Remove EEH PE for normal PCI hotplug · 20ee6a97
      Gavin Shan 提交于
      Function eeh_rmv_from_parent_pe() could be called by the path of
      either normal PCI hotplug, or EEH recovery. For the former case,
      we need purge the corresponding PE on removal of the associated
      PE bus.
      
      The patch tries to cover that by passing more information to function
      pcibios_remove_pci_devices() so that we know if the corresponding PE
      needs to be purged or be marked as "invalid".
      Signed-off-by: NGavin Shan <shangw@linux.vnet.ibm.com>
      Signed-off-by: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
      20ee6a97
  17. 10 9月, 2012 3 次提交
    • G
      powerpc/eeh: Cleanup on EEH PCI address cache · 3ab96a02
      Gavin Shan 提交于
      The patch does cleanup on EEH PCI address cache based on the fact
      EEH core is the only user of the component.
      
              * Cleanup on function names so that they all have prefix
                "eeh" and looks more short.
              * Function printk() has been replaced with pr_debug() or
                pr_warning() accordingly.
      Signed-off-by: NGavin Shan <shangw@linux.vnet.ibm.com>
      Signed-off-by: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
      3ab96a02
    • G
      powerpc/eeh: Trace eeh device from I/O cache · f8f7d63f
      Gavin Shan 提交于
      The idea comes from Benjamin Herrenschmidt. The eeh cache helps
      fetching the pci device according to the given I/O address. Since
      the eeh cache is serving for eeh, it's reasonable for eeh cache
      to trace eeh device except pci device.
      
      The patch make eeh cache to trace eeh device. Also, the major
      eeh entry function eeh_dn_check_failure has been renamed to
      eeh_dev_check_failure since it will take eeh device as input
      parameter.
      Signed-off-by: NGavin Shan <shangw@linux.vnet.ibm.com>
      Signed-off-by: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
      f8f7d63f
    • G
      powerpc/eeh: Probe mode support · d7bb8862
      Gavin Shan 提交于
      While EEH module is installed, PCI devices is checked one by one
      to see if it supports eeh. On different platforms, the PCI devices
      are referred through different ways when the EEH module is loaded.
      For example, on pSeries platform, that is done by OF node. However,
      we would do that by real PCI devices (struct pci_dev) on PowerNV
      platform in future. So we needs some mechanism to differentiate
      those cases by classifying them to probe modes, either from OF
      nodes or real PCI devices.
      
      The patch implements the support to eeh probe mode. Also, the
      EEH on pSeries has set it into EEH_PROBE_MODE_DEVTREE. That means
      the probe will be done based on OF nodes on pSeries platform.
      
      In addition, On pSeries platform, it's done by OF nodes. The patch
      moves the the probe function from EEH core to platform dependent
      backend and some cleanup applied.
      Signed-off-by: NGavin Shan <shangw@linux.vnet.ibm.com>
      Signed-off-by: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
      d7bb8862