1. 17 12月, 2009 2 次提交
  2. 16 12月, 2009 1 次提交
  3. 05 12月, 2009 14 次提交
  4. 25 11月, 2009 5 次提交
  5. 07 11月, 2009 1 次提交
    • K
      PCI ASPM: fix oops on root port removal · 761434a3
      Kenji Kaneshige 提交于
      Fix the following BUG_ON() problem reported by Alex Chiang.
      
      This problem happened when removing PCIe root port using PCI logical
      hotplug operation.
      
      The immediate cause of this problem is that the pointer to invalid
      data structure is passed to pcie_update_aspm_capable() by
      pcie_aspm_exit_link_state(). When pcie_aspm_exit_link_state() received
      a pointer to root port link, it unconfigures the root port link and
      frees its data structure at first. At this point, there are not links
      to configure under the root port and the data structure for root port
      link is already freed. So pcie_aspm_exit_link_state() must not call
      pcie_update_aspm_capable() and pcie_config_aspm_path().
      
      This patch fixes the problem by changing pcie_aspm_exit_link_state()
      not to call pcie_update_aspm_capable() and pcie_config_aspm_path() if
      the specified link is root port link.
      
      ------------[ cut here ]------------
      kernel BUG at drivers/pci/pcie/aspm.c:606!
      invalid opcode: 0000 [#1] SMP DEBUG_PAGEALLOC
      last sysfs file: /sys/devices/pci0000:40/0000:40:13.0/remove
      CPU 1
      Modules linked in: shpchp
      Pid: 9345, comm: sysfsd Not tainted 2.6.32-rc5 #98 ProLiant DL785 G6
      RIP: 0010:[<ffffffff811df69b>]  [<ffffffff811df69b>] pcie_update_aspm_capable+0x15/0xbe
      RSP: 0018:ffff88082a2f5ca0  EFLAGS: 00010202
      RAX: 0000000000000e77 RBX: ffff88182cc3e000 RCX: ffff88082a33d006
      RDX: 0000000000000001 RSI: ffffffff811dff4a RDI: ffff88182cc3e000
      RBP: ffff88082a2f5cc0 R08: ffff88182cc3e000 R09: 0000000000000000
      R10: ffff88182fc00180 R11: ffff88182fc00198 R12: ffff88182cc3e000
      R13: 0000000000000000 R14: ffff88182cc3e000 R15: ffff88082a2f5e20
      FS:  00007f259a64b6f0(0000) GS:ffff880864600000(0000) knlGS:0000000000000000
      CS:  0010 DS: 0018 ES: 0018 CR0: 000000008005003b
      CR2: 00007feb53f73da0 CR3: 000000102cc94000 CR4: 00000000000006e0
      DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
      DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
      Process sysfsd (pid: 9345, threadinfo ffff88082a2f4000, task ffff88082a33cf00)
      Stack:
       ffff88182cc3e000 ffff88182cc3e000 0000000000000000 ffff88082a33cf00
      <0> ffff88082a2f5cf0 ffffffff811dff52 ffff88082a2f5cf0 ffff88082c525168
      <0> ffff88402c9fd2f8 ffff88402c9fd2f8 ffff88082a2f5d20 ffffffff811d7db2
      Call Trace:
       [<ffffffff811dff52>] pcie_aspm_exit_link_state+0xf5/0x11e
       [<ffffffff811d7db2>] pci_stop_bus_device+0x76/0x7e
       [<ffffffff811d7d67>] pci_stop_bus_device+0x2b/0x7e
       [<ffffffff811d7e4f>] pci_remove_bus_device+0x15/0xb9
       [<ffffffff811dcb8c>] remove_callback+0x29/0x3a
       [<ffffffff81135aeb>] sysfs_schedule_callback_work+0x15/0x6d
       [<ffffffff81072790>] worker_thread+0x19d/0x298
       [<ffffffff8107273b>] ? worker_thread+0x148/0x298
       [<ffffffff81135ad6>] ? sysfs_schedule_callback_work+0x0/0x6d
       [<ffffffff810765c0>] ? autoremove_wake_function+0x0/0x38
       [<ffffffff810725f3>] ? worker_thread+0x0/0x298
       [<ffffffff8107629e>] kthread+0x7d/0x85
       [<ffffffff8102eafa>] child_rip+0xa/0x20
       [<ffffffff8102e4bc>] ? restore_args+0x0/0x30
       [<ffffffff81076221>] ? kthread+0x0/0x85
       [<ffffffff8102eaf0>] ? child_rip+0x0/0x20
      Code: 89 e5 8a 50 48 31 c0 c0 ea 03 83 e2 07 e8 b2 de fe ff c9 48 98 c3 55 48 89 e5 41 56 49 89 fe 41 55 41 54 53 48 83 7f 10 00 74 04 <0f> 0b eb fe 48 8b 05 da 7d 63 00 4c 8d 60 e8 4c 89 e1 eb 24 4c
      RIP  [<ffffffff811df69b>] pcie_update_aspm_capable+0x15/0xbe
       RSP <ffff88082a2f5ca0>
      ---[ end trace 6ae0f65bdeab8555 ]---
      Reported-by: NAlex Chiang <achiang@hp.com>
      Signed-off-by: NKenji Kaneshige <kaneshige.kenji@jp.fujitsu.com>
      Tested-by: NAlex Chiang <achiang@hp.com>
      Signed-off-by: NJesse Barnes <jbarnes@virtuousgeek.org>
      761434a3
  6. 05 11月, 2009 4 次提交
  7. 12 10月, 2009 1 次提交
  8. 08 10月, 2009 1 次提交
  9. 07 10月, 2009 1 次提交
  10. 18 9月, 2009 2 次提交
  11. 15 9月, 2009 1 次提交
  12. 11 9月, 2009 1 次提交
  13. 10 9月, 2009 6 次提交
    • E
      PCI: Simplify hotplug mch quirk. · 0ba379ec
      Eric W. Biederman 提交于
      There is a very old quirk for the intel E7502 E7320 and E7525 memory
      controller hubs that disables usage of msi interrupts on pcie hotplug
      bridges of those devices, and disables changing the affinity of irqs.
      
      Today all we have to do to disable msi on a specific device is to set
      dev->no_msi, which is much more straightforward than the previous
      logic.
      
      The re-running of this fixup after pci hotplug happens below these
      devices is totally bogus.  All of the state we change is pure software
      state and we don't change the hardware at all.  Which means hotplug on
      the lower devices doesn't have a chance to change this state.  So we
      can safely remove the special case from the pciehp driver and the pcie
      portdriver.
      
      I suspect the special case was someone's expermental debug code that
      slipped in. Certainly it isn't mentioned in commit
      6fb8880a61510295aece04a542767161f624dffe aka BKrev:
      41966101LJ_ogfOU0m2aE6teZfQnuQ where the code first appears.
      Reviewed-by: NKenji Kaneshige <kaneshige.kenji@jp.fujitsu.com>
      Signed-off-by: N"Eric W. Biederman" <ebiederm@xmission.com>
      Signed-off-by: NJesse Barnes <jbarnes@virtuousgeek.org>
      0ba379ec
    • H
      PCI: pcie, aer: report all error before recovery · b1c089b7
      Hidetoshi Seto 提交于
      This patch is required not to lost error records by action invoked on
      error recovery, such as slot reset etc.
      
      Following sample (real machine + dummy record injected by aer-inject)
      shows that record of 28:00.1 could not be retrieved by recovery of 28:00.0:
      
      - Before:
      
      pcieport-driver 0000:00:02.0: AER: Multiple Uncorrected (Non-Fatal) error received: id=2801
      e1000e 0000:28:00.0: PCIE Bus Error: severity=Uncorrected (Non-Fatal), type=Transaction Layer, id=2800(Receiver ID)
      e1000e 0000:28:00.0:   device [8086:1096] error status/mask=00001000/00100000
      e1000e 0000:28:00.0:    [12] Poisoned TLP           (First)
      e1000e 0000:28:00.0:   TLP Header: 00000000 00000001 00000002 00000003
      e1000e 0000:28:00.0: broadcast error_detected message
      e1000e 0000:28:00.0: broadcast slot_reset message
      e1000e 0000:28:00.0: setting latency timer to 64
      e1000e 0000:28:00.0: restoring config space at offset 0x1 (was 0x100547, writing 0x100147)
      e1000e 0000:28:00.0: PME# disabled
      e1000e 0000:28:00.0: PME# disabled
      e1000e 0000:28:00.1: setting latency timer to 64
      e1000e 0000:28:00.1: restoring config space at offset 0x1 (was 0x100547, writing 0x100147)
      e1000e 0000:28:00.1: PME# disabled
      e1000e 0000:28:00.1: PME# disabled
      e1000e 0000:28:00.0: broadcast resume message
      e1000e 0000:28:00.0: AER driver successfully recovered
      e1000e: eth0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: RX/TX
      
      - After:
      
      pcieport-driver 0000:00:02.0: AER: Multiple Uncorrected (Non-Fatal) error received: id=2801
      e1000e 0000:28:00.0: PCIE Bus Error: severity=Uncorrected (Non-Fatal), type=Transaction Layer, id=2800(Receiver ID)
      e1000e 0000:28:00.0:   device [8086:1096] error status/mask=00001000/00100000
      e1000e 0000:28:00.0:    [12] Poisoned TLP           (First)
      e1000e 0000:28:00.0:   TLP Header: 00000000 00000001 00000002 00000003
      e1000e 0000:28:00.1: PCIE Bus Error: severity=Uncorrected (Non-Fatal), type=Transaction Layer, id=2801(Receiver ID)
      e1000e 0000:28:00.1:   device [8086:1096] error status/mask=00081000/00100000
      e1000e 0000:28:00.1:    [12] Poisoned TLP           (First)
      e1000e 0000:28:00.1:    [19] ECRC
      e1000e 0000:28:00.1:   TLP Header: 00000000 00000001 00000002 00000003
      e1000e 0000:28:00.1:   Error of this Agent(2801) is reported first
      e1000e 0000:28:00.0: broadcast error_detected message
      e1000e 0000:28:00.0: broadcast slot_reset message
      e1000e 0000:28:00.0: setting latency timer to 64
      e1000e 0000:28:00.0: restoring config space at offset 0x1 (was 0x100547, writing 0x100147)
      e1000e 0000:28:00.0: PME# disabled
      e1000e 0000:28:00.0: PME# disabled
      e1000e 0000:28:00.1: setting latency timer to 64
      e1000e 0000:28:00.1: restoring config space at offset 0x1 (was 0x100547, writing 0x100147)
      e1000e 0000:28:00.1: PME# disabled
      e1000e 0000:28:00.1: PME# disabled
      e1000e 0000:28:00.0: broadcast resume message
      e1000e 0000:28:00.0: AER driver successfully recovered
      e1000e: eth0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: RX/TX
      Signed-off-by: NHidetoshi Seto <seto.hidetoshi@jp.fujitsu.com>
      Signed-off-by: NJesse Barnes <jbarnes@virtuousgeek.org>
      b1c089b7
    • H
      PCI: pcie, aer: change error print format · 79e4b89b
      Hidetoshi Seto 提交于
      Use dev_printk like format.
      
      Sample (real machine + dummy error injected by aer-inject):
      
      - Before:
      
      +------ PCI-Express Device Error ------+
      Error Severity          : Corrected
      PCIE Bus Error type     : Data Link Layer
      Bad TLP                 :
      Receiver ID             : 2800
      VendorID=8086h, DeviceID=1096h, Bus=28h, Device=00h, Function=00h
      +------ PCI-Express Device Error ------+
      Error Severity          : Corrected
      PCIE Bus Error type     : Data Link Layer
      Bad TLP                 :
      Bad DLLP                :
      Receiver ID             : 2801
      VendorID=8086h, DeviceID=1096h, Bus=28h, Device=00h, Function=01h
      Error of this Agent(2801) is reported first
      
      - After:
      
      pcieport-driver 0000:00:02.0: AER: Multiple Corrected error received: id=2801
      e1000e 0000:28:00.0: PCIE Bus Error: severity=Corrected, type=Data Link Layer, id=2800(Receiver ID)
      e1000e 0000:28:00.0:   device [8086:1096] error status/mask=00000040/00000000
      e1000e 0000:28:00.0:    [ 6] Bad TLP
      e1000e 0000:28:00.1: PCIE Bus Error: severity=Corrected, type=Data Link Layer, id=2801(Receiver ID)
      e1000e 0000:28:00.1:   device [8086:1096] error status/mask=000000c0/00000000
      e1000e 0000:28:00.1:    [ 6] Bad TLP
      e1000e 0000:28:00.1:    [ 7] Bad DLLP
      e1000e 0000:28:00.1:   Error of this Agent(2801) is reported first
      Signed-off-by: NHidetoshi Seto <seto.hidetoshi@jp.fujitsu.com>
      Signed-off-by: NJesse Barnes <jbarnes@virtuousgeek.org>
      79e4b89b
    • H
      PCI: pcie, aer: flags to bits · 273024de
      Hidetoshi Seto 提交于
      Compact struct and codes.
      Signed-off-by: NHidetoshi Seto <seto.hidetoshi@jp.fujitsu.com>
      Signed-off-by: NJesse Barnes <jbarnes@virtuousgeek.org>
      273024de
    • H
      PCI: pcie, aer: remove unused macros · 3472a187
      Hidetoshi Seto 提交于
      Cleanup.
      Signed-off-by: NHidetoshi Seto <seto.hidetoshi@jp.fujitsu.com>
      Signed-off-by: NJesse Barnes <jbarnes@virtuousgeek.org>
      3472a187
    • H
      PCI: pcie, aer: report multiple/first error on a device · e7a0d92b
      Hidetoshi Seto 提交于
      Multiple bits might be set in the Uncorrectable Error Status
      register.  But aer_print_error_source() only report a error of
      the lowest bit set in the error status register.
      
      So print strings for all bits unmasked and set.
      
      And check First Error Pointer to mark the error occured first.
      This FEP is not valid when the corresponing bit of the Uncorrectable
      Error Status register is not set, or unimplemented or undefined.
      Signed-off-by: NHidetoshi Seto <seto.hidetoshi@jp.fujitsu.com>
      Signed-off-by: NJesse Barnes <jbarnes@virtuousgeek.org>
      e7a0d92b