1. 21 9月, 2011 1 次提交
  2. 21 8月, 2011 1 次提交
  3. 08 4月, 2011 1 次提交
    • D
      pseries: Abolish envs array · c7a5c0c9
      David Gibson 提交于
      Currently the pseries machine init code builds up an array, envs, of
      CPUState pointers for all the cpus in the system.  This is kind of
      pointless, given the generic code already has a perfectly good linked list
      of the cpus.
      
      In addition, there are a number of places which assume that the cpu's
      cpu_index field is equal to its index in this array.  This is true in
      practice, because cpu_index values are just assigned sequentially, but
      it's conceptually incorrect and may not always be true.
      
      Therefore, this patch abolishes the envs array, and explicitly uses the
      generic cpu linked list and cpu_index values throughout.
      Signed-off-by: NDavid Gibson <david@gibson.dropbear.id.au>
      Signed-off-by: NAlexander Graf <agraf@suse.de>
      c7a5c0c9
  4. 02 4月, 2011 1 次提交
    • D
      Implement the PAPR (pSeries) virtualized interrupt controller (xics) · b5cec4c5
      David Gibson 提交于
      PAPR defines an interrupt control architecture which is logically divided
      into ICS (Interrupt Control Presentation, each unit is responsible for
      presenting interrupts to a particular "interrupt server", i.e. CPU) and
      ICS (Interrupt Control Source, each unit responsible for one or more
      hardware interrupts as numbered globally across the system).  All PAPR
      virtual IO devices expect to deliver interrupts via this mechanism.  In
      Linux, this interrupt controller system is handled by the "xics" driver.
      
      On pSeries systems, access to the interrupt controller is virtualized via
      hypercalls and RTAS methods.  However, the virtualized interface is very
      similar to the underlying interrupt controller hardware, and similar PICs
      exist un-virtualized in some other systems.
      
      This patch implements both the ICP and ICS sides of the PAPR interrupt
      controller.  For now, only the hypercall virtualized interface is provided,
      however it would be relatively straightforward to graft an emulated
      register interface onto the underlying interrupt logic if we want to add
      a machine with a hardware ICS/ICP system in the future.
      
      There are some limitations in this implementation: it is assumed for now
      that only one instance of the ICS exists, although a full xics system can
      have several, each responsible for a different group of hardware irqs.
      ICP/ICS can handle both level-sensitve (LSI) and message signalled (MSI)
      interrupt inputs.  For now, this implementation supports only MSI
      interrupts, since that is used by PAPR virtual IO devices.
      Signed-off-by: NPaul Mackerras <paulus@samba.org>
      Signed-off-by: NDavid Gibson <dwg@au1.ibm.com>
      Signed-off-by: NAlexander Graf <agraf@suse.de>
      b5cec4c5