1. 23 10月, 2008 13 次提交
  2. 21 10月, 2008 8 次提交
  3. 26 9月, 2008 1 次提交
    • I
      x86, pci-hotplug, calgary / rio: fix EBDA ioremap() · 15160716
      Ingo Molnar 提交于
      IO resource and ioremap debugging uncovered this ioremap() done
      by drivers/pci/hotplug/ibmphp_ebda.c:
      
      initcall pci_hotplug_init+0x0/0x41 returned 0 after 3 msecs
      calling  ibmphp_init+0x0/0x360 @ 1
      ibmphpd: IBM Hot Plug PCI Controller Driver version: 0.6
      resource map sanity check conflict: 0x9f800 0xaf5e7 0x9f800 0x9ffff reserved
      ------------[ cut here ]------------
      WARNING: at arch/x86/mm/ioremap.c:175 __ioremap_caller+0x5c/0x226()
      Pid: 1, comm: swapper Not tainted 2.6.27-rc7-tip-00914-g347b10f-dirty #36038
       [<c013a72d>] warn_on_slowpath+0x41/0x68
       [<c0156f00>] ? __lock_acquire+0x9ba/0xa7f
       [<c012158c>] ? do_flush_tlb_all+0x0/0x59
       [<c015ac31>] ? smp_call_function_mask+0x74/0x17d
       [<c012158c>] ? do_flush_tlb_all+0x0/0x59
       [<c013b228>] ? printk+0x1a/0x1c
       [<c013f302>] ? iomem_map_sanity_check+0x82/0x8c
       [<c0a773e8>] ? _read_unlock+0x22/0x25
       [<c013f302>] ? iomem_map_sanity_check+0x82/0x8c
       [<c0154e17>] ? trace_hardirqs_off+0xb/0xd
       [<c0127731>] __ioremap_caller+0x5c/0x226
       [<c0156158>] ? trace_hardirqs_on+0xb/0xd
       [<c012767d>] ? iounmap+0x9d/0xa5
       [<c01279dd>] ioremap_nocache+0x15/0x17
       [<c0403c42>] ? ioremap+0xd/0xf
       [<c0403c42>] ioremap+0xd/0xf
       [<c0f1928f>] ibmphp_access_ebda+0x60/0xa0e
       [<c0f17f64>] ibmphp_init+0xb5/0x360
       [<c0101057>] do_one_initcall+0x57/0x138
       [<c0f17eaf>] ? ibmphp_init+0x0/0x360
       [<c0156158>] ? trace_hardirqs_on+0xb/0xd
       [<c0148d75>] ? __queue_work+0x2b/0x30
       [<c0f17eaf>] ? ibmphp_init+0x0/0x360
       [<c0f015a0>] kernel_init+0x17b/0x1e2
       [<c0f01425>] ? kernel_init+0x0/0x1e2
       [<c01178b3>] kernel_thread_helper+0x7/0x10
       =======================
      ---[ end trace a7919e7f17c0a725 ]---
      initcall ibmphp_init+0x0/0x360 returned -19 after 144 msecs
      calling  zt5550_init+0x0/0x6a @ 1
      
      the problem is this code:
      
              io_mem = ioremap (ebda_seg<<4, 65000);
      
      it assumes that the EBDA is 65000 bytes. But BIOS EBDA pointers are
      at most 1K large.
      
      _if_ the Rio code truly extends upon the customary EBDA size it needs
      to iounmap() this memory and ioremap() it larger, once it knows it from
      the generic descriptors that a Rio system is around.
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      15160716
  4. 11 9月, 2008 1 次提交
  5. 10 9月, 2008 1 次提交
  6. 22 8月, 2008 2 次提交
    • A
      PCI: shpchp: Rename duplicate slot name N as N-1, N-2, N-M... · d6a9e9b4
      Alex Chiang 提交于
      Commit ef0ff95f (shpchp: fix slot name)
      introduces the shpchp_slot_with_bus module parameter, which was intended
      to help work around broken firmware that assigns the same name to multiple
      slots.
      
      Commit b3bd307c (shpchp: add message about
      shpchp_slot_with_bus option) tells the user to use the above parameter
      in the event of a name collision.
      
      This approach is sub-optimal because it requires too much work from
      the user.
      
      Instead, let's rename the slot on behalf of the user. If firmware
      assigns the name N to multiple slots, then:
      
      	The first registered slot is assigned N
      	The second registered slot is assigned N-1
      	The third registered slot is assigned N-2
      	The Mth registered slot becomes N-M
      
      In the event we overflow the slot->name parameter, we report an
      error to the user.
      
      This is a temporary fix until the entire PCI core can be reworked
      such that individual drivers no longer have to manage their own
      slot names.
      Tested-by: NKenji Kaneshige <kaneshige.kenji@jp.fujitsu.com>
      Acked-by: NKenji Kaneshige <kaneshige.kenji@jp.fujitsu.com>
      Signed-off-by: NAlex Chiang <achiang@hp.com>
      Signed-off-by: NJesse Barnes <jbarnes@virtuousgeek.org>
      d6a9e9b4
    • A
      PCI: pciehp: Rename duplicate slot name N as N-1, N-2, N-M... · 167e782e
      Alex Chiang 提交于
      Commit 3800345f (pciehp: fix slot name)
      introduces the pciehp_slot_with_bus module parameter, which was intended
      to help work around broken firmware that assigns the same name to multiple
      slots.
      
      Commit 9e4f2e8d (pciehp: add message about
      pciehp_slot_with_bus option) tells the user to use the above parameter
      in the event of a name collision.
      
      This approach is sub-optimal because it requires too much work from
      the user.
      
      Instead, let's rename the slot on behalf of the user. If firmware
      assigns the name N to multiple slots, then:
      
      	The first registered slot is assigned N
      	The second registered slot is assigned N-1
      	The third registered slot is assigned N-2
      	The Mth registered slot becomes N-M
      
      In the event we overflow the slot->name parameter, we report an
      error to the user.
      
      This is a temporary fix until the entire PCI core can be reworked
      such that individual drivers no longer have to manage their own
      slot names.
      Tested-by: NKenji Kaneshige <kaneshige.kenji@jp.fujitsu.com>
      Acked-by: NKenji Kaneshige <kaneshige.kenji@jp.fujitsu.com>
      Signed-off-by: NAlex Chiang <achiang@hp.com>
      Signed-off-by: NJesse Barnes <jbarnes@virtuousgeek.org>
      167e782e
  7. 20 8月, 2008 1 次提交
  8. 19 8月, 2008 2 次提交
  9. 29 7月, 2008 1 次提交
  10. 22 7月, 2008 1 次提交
  11. 16 7月, 2008 1 次提交
  12. 03 7月, 2008 1 次提交
    • A
      PCI: acpiphp: cleanup notify handler on all root bridges · a13307ce
      Alex Chiang 提交于
      During the development of the physical PCI slot patch series, Gary Hade
      kept on reporting strange oopses due to interactions between pci_slot
      and acpiphp.
      
      	http://lkml.org/lkml/2007/11/28/319
      
      find_root_bridges() unconditionally installs
      handle_hotplug_event_bridge() as an ACPI_SYSTEM_NOTIFY handler for all
      root bridges.
      
      However, during module cleanup, remove_bridge() will only remove the
      notify handler iff the root bridge had a hot-pluggable slot directly
      underneath. That is:
      
      	root bridge -> hotplug slot
      
      But, if the topology looks like either of the following:
      
      	root bridge -> non-hotplug slot
      	root bridge -> p2p bridge -> hotplug slot
      
      Then we currently do not remove the notify handler from that root
      bridge.
      
      This can cause a kernel oops if we modprobe acpiphp later and it gets
      loaded somewhere else in memory. If the root bridge then receives a
      hotplug event, it will then attempt to call a stale, non-existent notify
      handler and we blow up.
      
      Much thanks goes to Gary Hade for his persistent debugging efforts.
      Signed-off-by: NAlex Chiang <achiang@hp.com>
      Signed-off-by: NGary Hade <garyhade@us.ibm.com>
      Signed-off-by: NJesse Barnes <jbarnes@virtuousgeek.org>
      a13307ce
  13. 28 6月, 2008 3 次提交
    • K
      pciehp: use get_service_data · b9708940
      Kenji Kaneshige 提交于
      Current pciehp driver saves its private data pointer into pci_dev
      structure using pci_set_drvdata()/pci_get_drvdata(). But because
      pciehp is not a pci device driver but a PCI Express service driver, it
      should save its private data pointer into pcie_device structure using
      set_service_data()/get_service_data().
      Signed-off-by: NKenji Kaneshige <kaneshige.kenji@jp.fujitsu.com>
      Signed-off-by: NJesse Barnes <jbarnes@virtuousgeek.org>
      b9708940
    • K
      pciehp: remove needless command completed interrupt setting · 3aa50c44
      Kenji Kaneshige 提交于
      Currently, pciehp driver enables command completed interrupt as follows.
      
      (1) Don't enable at initialization.
      (2) Enable command completed interrupt whenever pciehp issues a
          command, if the command doesn't attempt to disable the interrupt.
      (3) Disable command completed interrupt at driver unloading.
      
      Once we enable command completed interrupt, we don't need to re-enable
      it for every command. So we can simplify above steps as follows:
      
      (1) Enable command completed interrupt at initialization.
      (2) No special sequence for command completed interrupt.
      (3) Disable command completed interrupt at driver unloading.
      Signed-off-by: NKenji Kaneshige <kaneshige.kenji@jp.fujitsu.com>
      Signed-off-by: NJesse Barnes <jbarnes@virtuousgeek.org>
      3aa50c44
    • K
      pciehp: fix interrupt initialization · c4635eb0
      Kenji Kaneshige 提交于
      Current pciehp driver's intialization sequence is as follows:
      
      (1) initialize controller data structure
      (2) install interrupt handler
      (3) enable software notification
      (4) initialize controller specific slot data structure
      (5) initialize generic slot data structure and register it to pci hotplug core
      
      The interrupt handler of pciehp assumes that controller specific slot
      data structure is already initialized. However, it is installed at (2)
      before initializing controller specific slot data structure at
      (4). Because of this, pciehp driver cannot handle the following cases
      properly.
      
      - If devices that shares IRQ with pciehp raise interrupts between (2) and (4).
      - If hotplug events (e.g. MRL open) happen between (3) and (4).
      
      We already have a workaround for this problem ("pciehp: fix NULL
      dereference in interrupt handler: dbd79aed).
      But we still need fundamental fix.
      
      This patch fix the problem by changing the initilization sequence as follows:
      
      (1) initialize controller data structure
      (2) initialize controller specific slot data structure
      (3) install interrupt handler
      (4) enable software notification
      (5) initialize generic slot data structure and register it to pci hotplug core
      Signed-off-by: NKenji Kaneshige <kaneshige.kenji@jp.fujitsu.com>
      Acked-by: NAlex Chiang <achiang@hp.com>
      Signed-off-by: NJesse Barnes <jbarnes@virtuousgeek.org>
      c4635eb0
  14. 26 6月, 2008 4 次提交