1. 15 6月, 2017 1 次提交
  2. 24 5月, 2017 1 次提交
  3. 08 5月, 2017 4 次提交
  4. 20 4月, 2017 1 次提交
  5. 04 4月, 2017 1 次提交
    • C
      KVM: arm/arm64: vgic: Fix GICC_PMR uaccess on GICv3 and clarify ABI · 6d56111c
      Christoffer Dall 提交于
      As an oversight, for GICv2, we accidentally export the GICC_PMR register
      in the format of the GICH_VMCR.VMPriMask field in the lower 5 bits of a
      word, meaning that userspace must always use the lower 5 bits to
      communicate with the KVM device and must shift the value left by 3
      places to obtain the actual priority mask level.
      
      Since GICv3 supports the full 8 bits of priority masking in the ICH_VMCR,
      we have to fix the value we export when emulating a GICv2 on top of a
      hardware GICv3 and exporting the emulated GICv2 state to userspace.
      
      Take the chance to clarify this aspect of the ABI.
      Reviewed-by: NMarc Zyngier <marc.zyngier@arm.com>
      Signed-off-by: NChristoffer Dall <cdall@linaro.org>
      6d56111c
  6. 06 3月, 2017 1 次提交
  7. 08 2月, 2017 3 次提交
  8. 30 1月, 2017 2 次提交
  9. 25 12月, 2016 1 次提交
  10. 29 11月, 2016 1 次提交
  11. 14 11月, 2016 1 次提交
  12. 17 10月, 2016 1 次提交
  13. 13 9月, 2016 1 次提交
    • T
      irqchip/gicv3-its: Refactor ITS DT init code to prepare for ACPI · db40f0a7
      Tomasz Nowicki 提交于
      In order to add ACPI support we need to isolate ACPI&DT common code and
      move DT logic to corresponding functions. To achieve this we are using
      firmware agnostic handle which can be unpacked to either DT or ACPI node.
      
      No functional changes other than a very minor one:
      1. Terminate its_init call with -ENODEV for non-DT case which allows
      to remove hack from its-gic-v3.c.
      2. Fix ITS base register address type (from 'unsigned long' to 'phys_addr_t'),
      as a bonus we get nice string formatting.
      3. Since there is only one of ITS parent domain convert it to static global
      variable and drop the parameter from its_probe_one. Users can refer to it
      in more convenient way then.
      Signed-off-by: NHanjun Guo <hanjun.guo@linaro.org>
      Signed-off-by: NTomasz Nowicki <tn@semihalf.com>
      Signed-off-by: NMarc Zyngier <marc.zyngier@arm.com>
      db40f0a7
  14. 09 8月, 2016 1 次提交
  15. 19 7月, 2016 2 次提交
  16. 13 6月, 2016 4 次提交
    • S
      irqchip/gicv3-its: Implement two-level(indirect) device table support · 3faf24ea
      Shanker Donthineni 提交于
      Since device IDs are extremely sparse, the single, a.k.a flat table is
      not sufficient for the following two reasons.
      
      1) According to ARM-GIC spec, ITS hw can access maximum of 256(pages)*
         64K(pageszie) bytes. In the best case, it supports upto DEVid=21
         sparse with minimum device table entry size 8bytes.
      
      2) The maximum memory size that is possible without memblock depends on
         MAX_ORDER. 4MB on 4K page size kernel with default MAX_ORDER, so it
         supports DEVid range 19bits.
      
      The two-level device table feature brings us two advantages, the first
      is a very high possibility of supporting upto 32bit sparse, and the
      second one is the best utilization of memory allocation.
      
      The feature is enabled automatically during driver probe if the memory
      requirement is more than 2*ITS-pages and the hardware is capable of
      two-level table walk.
      Signed-off-by: NShanker Donthineni <shankerd@codeaurora.org>
      Signed-off-by: NMarc Zyngier <marc.zyngier@arm.com>
      3faf24ea
    • S
      irqchip/gicv3-its: Split its_alloc_tables() into two functions · 9347359a
      Shanker Donthineni 提交于
      The function is getting out of control, it has too many goto
      statements and would be too complicated for adding a feature
      two-level device table. So, it is time for us to cleanup and
      move some of the logic to a separate function without affecting
      the existing functionality.
      Signed-off-by: NShanker Donthineni <shankerd@codeaurora.org>
      Signed-off-by: NMarc Zyngier <marc.zyngier@arm.com>
      9347359a
    • J
      irqchip/gic: Add platform driver for non-root GICs that require RPM · 9c8edddf
      Jon Hunter 提交于
      Add a platform driver to support non-root GICs that require runtime
      power-management. Currently, only non-root GICs are supported because
      the functions, smp_cross_call() and set_handle_irq(), that need to
      be called for a root controller are located in the __init section and
      so cannot be called by the platform driver.
      
      The GIC platform driver re-uses many functions from the existing GIC
      driver including some functions to save and restore the GIC context
      during power transitions. The functions for saving and restoring the
      GIC context are currently only defined if CONFIG_CPU_PM is enabled and
      to ensure that these functions are always defined when the platform
      driver is enabled, a dependency on CONFIG_ARM_GIC_PM (which selects the
      platform driver) has been added.
      
      In order to re-use the private GIC initialisation code, a new public
      function, gic_of_init_child(), has been added which calls various
      private functions to initialise the GIC. This is different from the
      existing gic_of_init() because it only supports non-root GICs (ie. does
      not call smp_cross_call() is set_handle_irq()) and is not located in
      the __init section (so can be used by platform drivers). Furthermore,
      gic_of_init_child() dynamically allocates memory for the GIC chip data
      which is also different from gic_of_init().
      
      There is no specific suspend handling for GICs registered as platform
      devices. Non-wakeup interrupts will be disabled by the kernel during
      late suspend, however, this alone will not power down the GIC if
      interrupts have been requested and not freed. Therefore, requestors of
      non-wakeup interrupts will need to free them on entering suspend in
      order to power-down the GIC.
      Signed-off-by: NJon Hunter <jonathanh@nvidia.com>
      Signed-off-by: NMarc Zyngier <marc.zyngier@arm.com>
      9c8edddf
    • J
      irqchip/gic: Prepare for adding platform driver · cdbb813d
      Jon Hunter 提交于
      To support GICs that require runtime power management, it is necessary
      to add a platform driver, so that the probing of the chip can be
      deferred if resources, such as a power-domain, is not yet available.
      
      To prepare for adding a platform driver:
       1. Drop the __init section from the gic_dist_config() so this can be
          re-used by the platform driver.
       2. Add prototypes for functions required by the platform driver to the
          GIC header file so they can be re-used.
      Signed-off-by: NJon Hunter <jonathanh@nvidia.com>
      Signed-off-by: NMarc Zyngier <marc.zyngier@arm.com>
      cdbb813d
  17. 03 6月, 2016 2 次提交
  18. 20 5月, 2016 4 次提交
  19. 13 5月, 2016 1 次提交
  20. 11 5月, 2016 1 次提交
  21. 03 5月, 2016 2 次提交
  22. 02 5月, 2016 1 次提交
    • M
      irqchip: Add per-cpu interrupt partitioning library · 9e2c986c
      Marc Zyngier 提交于
      We've unfortunately started seeing a situation where percpu interrupts
      are partitioned in the system: one arbitrary set of CPUs has an
      interrupt connected to a type of device, while another disjoint
      set of CPUs has the same interrupt connected to another type of device.
      
      This makes it impossible to have a device driver requesting this interrupt
      using the current percpu-interrupt abstraction, as the same interrupt number
      is now potentially claimed by at least two drivers, and we forbid interrupt
      sharing on per-cpu interrupt.
      
      A solution to this is to turn things upside down. Let's assume that our
      system describes all the possible partitions for a given interrupt, and
      give each of them a unique identifier. It is then possible to create
      a namespace where the affinity identifier itself is a form of interrupt
      number. At this point, it becomes easy to implement a set of partitions
      as a cascaded irqchip, each affinity identifier being the HW irq.
      
      This allows us to keep a number of nice properties:
      - Each partition results in a separate percpu-interrupt (with a restrictied
        affinity), which keeps drivers happy.
      - Because the underlying interrupt is still per-cpu, the overhead of
        the indirection can be kept pretty minimal.
      - The core code can ignore most of that crap.
      
      For that purpose, we implement a small library that deals with some of
      the boilerplate code, relying on platform-specific drivers to provide
      a description of the affinity sets and a set of callbacks.
      Signed-off-by: NMarc Zyngier <marc.zyngier@arm.com>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: devicetree@vger.kernel.org
      Cc: Jason Cooper <jason@lakedaemon.net>
      Cc: Will Deacon <will.deacon@arm.com>
      Cc: Rob Herring <robh+dt@kernel.org>
      Link: http://lkml.kernel.org/r/1460365075-7316-4-git-send-email-marc.zyngier@arm.comSigned-off-by: NThomas Gleixner <tglx@linutronix.de>
      9e2c986c
  23. 25 2月, 2016 1 次提交
  24. 21 12月, 2015 1 次提交
  25. 16 12月, 2015 1 次提交
    • L
      irqchip/gic: Support RealView variant setup · 8673c1d7
      Linus Walleij 提交于
      The ARM RealView PB11MPCore reference design has some special
      bits in a system controller register to set up the GIC in one
      of three modes: legacy, new with DCC, new without DCC. The
      register is also used to enable FIQ.
      
      Since the platform will not boot unless this register is set
      up to "new with DCC" mode, we need a special quirk to be
      compiled-in for the RealView platforms.
      
      If we find the right compatible string on the GIC TestChip,
      we enable this quirk by looking up the system controller and
      enabling the special bits.
      
      We depend on the CONFIG_REALVIEW_DT Kconfig symbol as the old
      boardfile code has the same fix hardcoded, and this is only
      needed for the attempts to modernize the RealView code using
      device tree.
      
      After fixing this, the PB11MPCore boots with device tree
      only.
      
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Jason Cooper <jason@lakedaemon.net>
      Signed-off-by: NLinus Walleij <linus.walleij@linaro.org>
      Signed-off-by: NMarc Zyngier <marc.zyngier@arm.com>
      8673c1d7