1. 10 9月, 2012 5 次提交
    • G
      powerpc/eeh: Introduce eeh_pe struct · 968f968f
      Gavin Shan 提交于
      As defined in PAPR 2.4, Partitionable Endpoint (PE) is an I/O subtree
      that can be treated as a unit for the purposes of partitioning and error
      recovery. Therefore, eeh core should be aware of PE. With eeh_pe struct,
      we can support PE explicitly. Further more, it makes all the stuff much
      more data centralized. Another important reason is for eeh core to support
      multiple platforms. Some of them like pSeries figures out PEs through
      OF nodes while others like powernv have to do that through PCI bus/device
      tree. With explicit PE support, eeh core will be implemented based on
      the centrialized data and platform dependent implementations figure it
      out by their feasible ways.
      
      When the struct is designed, following factors are taken in account:
        * Reflecting the relationships of PEs. PE might have parent
          as well children.
        * Reflecting the association of PE and (eeh) devices.
        * PEs have PHB boundary.
        * PE should have unique address assigned in the corresponding
          PHB domain.
      Signed-off-by: NGavin Shan <shangw@linux.vnet.ibm.com>
      Signed-off-by: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
      968f968f
    • G
      powerpc/eeh: More logs for EEH initialization · 3ea1ae98
      Gavin Shan 提交于
      The patch adds more logs to EEH initialization functions for
      debugging purpose. Also, the machine type (pSeries) is checked
      in the platform initialization to assure it's the correct platform
      to invoke it.
      Signed-off-by: NGavin Shan <shangw@linux.vnet.ibm.com>
      Signed-off-by: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
      3ea1ae98
    • G
      powerpc/eeh: Use slab to allocate eeh devices · 7e4bbaf0
      Gavin Shan 提交于
      The EEH initialization functions have been postponed until slab/slub
      are ready. So we use slab/slub to allocate the memory chunks for newly
      creatd EEH devices. That would save lots of memory.
      
      The patch also does cleanup to replace "kmalloc" with "kzalloc" so
      that we needn't clear the allocated memory chunk explicitly.
      Signed-off-by: NGavin Shan <shangw@linux.vnet.ibm.com>
      Signed-off-by: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
      7e4bbaf0
    • G
      powerpc/eeh: Move EEH initialization around · 35e5cfe2
      Gavin Shan 提交于
      Currently, we have 3 phases for EEH initialization on pSeries platform.
      All of them are done through builtin functions: platform initialization,
      EEH device creation, and EEH subsystem enablement. All of them are done
      no later than ppc_md.setup_arch. That means that the slab/slub isn't ready
      yet, so we have to allocate memory chunks on basis of PAGE_SIZE for those
      dynamically created EEH devices. That's pretty expensive.
      
      In order to utilize slab/slub for memory allocation, we have to move the EEH
      initialization functions around, but all of them should be called after slab
      is ready.
      Signed-off-by: NGavin Shan <shangw@linux.vnet.ibm.com>
      Signed-off-by: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
      35e5cfe2
    • M
      powerpc: Initialise paca.data_offset with poison · 407821a3
      Michael Ellerman 提交于
      It's possible for the cpu_possible_mask to change between the time we
      initialise the pacas and the time we setup per_cpu areas.
      
      Obviously impossible cpus shouldn't ever be running, but stranger things
      have happened. So be paranoid and initialise data_offset with a poison
      value in case we don't set it up later.
      
      Based on a patch from Anton Blanchard.
      Signed-off-by: NMichael Ellerman <michael@ellerman.id.au>
      Signed-off-by: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
      407821a3
  2. 07 9月, 2012 13 次提交
  3. 05 9月, 2012 22 次提交