1. 30 3月, 2018 1 次提交
    • M
      powerpc/mpic: Check if cpu_possible() in mpic_physmask() · 0834d627
      Michael Ellerman 提交于
      In mpic_physmask() we loop over all CPUs up to 32, then get the hard
      SMP processor id of that CPU.
      
      Currently that's possibly walking off the end of the paca array, but
      in a future patch we will change the paca array to be an array of
      pointers, and in that case we will get a NULL for missing CPUs and
      oops. eg:
      
        Unable to handle kernel paging request for data at address 0x88888888888888b8
        Faulting instruction address: 0xc00000000004e380
        Oops: Kernel access of bad area, sig: 11 [#1]
        ...
        NIP .mpic_set_affinity+0x60/0x1a0
        LR  .irq_do_set_affinity+0x48/0x100
      
      Fix it by checking the CPU is possible, this also fixes the code if
      there are gaps in the CPU numbering which probably never happens on
      mpic systems but who knows.
      Debugged-by: NNicholas Piggin <npiggin@gmail.com>
      Signed-off-by: NMichael Ellerman <mpe@ellerman.id.au>
      0834d627
  2. 04 12月, 2017 1 次提交
  3. 23 8月, 2017 1 次提交
  4. 25 9月, 2016 1 次提交
  5. 20 9月, 2016 1 次提交
    • M
      powerpc: Remove all usages of NO_IRQ · ef24ba70
      Michael Ellerman 提交于
      NO_IRQ has been == 0 on powerpc for just over ten years (since commit
      0ebfff14 ("[POWERPC] Add new interrupt mapping core and change
      platforms to use it")). It's also 0 on most other arches.
      
      Although it's fairly harmless, every now and then it causes confusion
      when a driver is built on powerpc and another arch which doesn't define
      NO_IRQ. There's at least 6 definitions of NO_IRQ in drivers/, at least
      some of which are to work around that problem.
      
      So we'd like to remove it. This is fairly trivial in the arch code, we
      just convert:
      
          if (irq == NO_IRQ)	to	if (!irq)
          if (irq != NO_IRQ)	to	if (irq)
          irq = NO_IRQ;	to	irq = 0;
          return NO_IRQ;	to	return 0;
      
      And a few other odd cases as well.
      
      At least for now we keep the #define NO_IRQ, because there is driver
      code that uses NO_IRQ and the fixes to remove those will go via other
      trees.
      
      Note we also change some occurrences in PPC sound drivers, drivers/ps3,
      and drivers/macintosh.
      Signed-off-by: NMichael Ellerman <mpe@ellerman.id.au>
      ef24ba70
  6. 27 4月, 2016 1 次提交
  7. 01 3月, 2016 1 次提交
  8. 28 10月, 2015 1 次提交
    • S
      powerpc: mpic: use IRQCHIP_SKIP_SET_WAKE instead of redundant mpic_irq_set_wake · 9100d20c
      Sudeep Holla 提交于
      mpic_irq_set_wake return -ENXIO for non FSL MPIC and sets IRQF_NO_SUSPEND
      flag for FSL ones. enable_irq_wake already returns -ENXIO if irq_set_wak
      is not implemented. Also there's no need to set the IRQF_NO_SUSPEND flag
      as it doesn't guarantee wakeup for that interrupt.
      
      This patch removes the redundant mpic_irq_set_wake and sets the
      IRQCHIP_SKIP_SET_WAKE for only FSL MPIC.
      
      Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Michael Ellerman <mpe@ellerman.id.au>
      Cc: Scott Wood <scottwood@freescale.com>
      Cc: Hongtao Jia <hongtao.jia@freescale.com>
      Cc: Marc Zyngier <marc.zyngier@arm.com>
      Cc: linuxppc-dev@lists.ozlabs.org
      Signed-off-by: NSudeep Holla <sudeep.holla@arm.com>
      Acked-by: NScott Wood <scottwood@freescale.com>
      Signed-off-by: NScott Wood <scottwood@freescale.com>
      9100d20c
  9. 14 10月, 2015 1 次提交
  10. 16 9月, 2015 1 次提交
    • T
      genirq: Remove irq argument from irq flow handlers · bd0b9ac4
      Thomas Gleixner 提交于
      Most interrupt flow handlers do not use the irq argument. Those few
      which use it can retrieve the irq number from the irq descriptor.
      
      Remove the argument.
      
      Search and replace was done with coccinelle and some extra helper
      scripts around it. Thanks to Julia for her help!
      Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
      Cc: Julia Lawall <Julia.Lawall@lip6.fr>
      Cc: Jiang Liu <jiang.liu@linux.intel.com>
      bd0b9ac4
  11. 30 7月, 2015 1 次提交
    • M
      genirq/irqdomain: Allow irq domain aliasing · ad3aedfb
      Marc Zyngier 提交于
      It is not uncommon (at least with the ARM stuff) to have a piece
      of hardware that implements different flavours of "interrupts".
      A typical example of this is the GICv3 ITS, which implements
      standard PCI/MSI support, but also some form of "generic MSI".
      
      So far, the PCI/MSI domain is registered using the ITS device_node,
      so that irq_find_host can return it. On the contrary, the raw MSI
      domain is not registered with an device_node, making it impossible
      to be looked up by another subsystem (obviously, using the same
      device_node twice would only result in confusion, as it is not
      defined which one irq_find_host would return).
      
      A solution to this is to "type" domains that may be aliasing, and
      to be able to lookup an device_node that matches a given type.
      For this, we introduce irq_find_matching_host() as a superset
      of irq_find_host:
      
      struct irq_domain *irq_find_matching_host(struct device_node *node,
                                      enum irq_domain_bus_token bus_token);
      
      where bus_token is the "type" we want to match the domain against
      (so far, only DOMAIN_BUS_ANY is defined). This result in some
      moderately invasive changes on the PPC side (which is the only
      user of the .match method).
      
      This has otherwise no functionnal change.
      Reviewed-by: NHanjun Guo <hanjun.guo@linaro.org>
      Signed-off-by: NMarc Zyngier <marc.zyngier@arm.com>
      Cc: <linux-arm-kernel@lists.infradead.org>
      Cc: Yijing Wang <wangyijing@huawei.com>
      Cc: Ma Jun <majun258@huawei.com>
      Cc: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
      Cc: Duc Dang <dhdang@apm.com>
      Cc: Bjorn Helgaas <bhelgaas@google.com>
      Cc: Jiang Liu <jiang.liu@linux.intel.com>
      Cc: Jason Cooper <jason@lakedaemon.net>
      Link: http://lkml.kernel.org/r/1438091186-10244-2-git-send-email-marc.zyngier@arm.comSigned-off-by: NThomas Gleixner <tglx@linutronix.de>
      ad3aedfb
  12. 11 5月, 2015 1 次提交
  13. 10 4月, 2015 1 次提交
    • M
      powerpc: Drop return value of smp_ops->probe() · a7f4ee1f
      Michael Ellerman 提交于
      smp_ops->probe() is currently supposed to return the number of cpus in
      the system.
      
      The last actual usage of the value was removed in May 2007 in e147ec8f
      "[POWERPC] Simplify smp_space_timers". We still passed the value around
      until June 2010 when even that was finally removed in c1aa687d
      "powerpc: Clean up obsolete code relating to decrementer and timebase".
      
      So drop that requirement, probe() now returns void, and update all
      implementations.
      Signed-off-by: NMichael Ellerman <mpe@ellerman.id.au>
      a7f4ee1f
  14. 01 4月, 2015 1 次提交
  15. 24 3月, 2015 1 次提交
  16. 16 3月, 2015 1 次提交
  17. 23 1月, 2015 1 次提交
  18. 10 11月, 2014 1 次提交
  19. 25 9月, 2014 1 次提交
  20. 23 5月, 2014 1 次提交
  21. 11 2月, 2014 1 次提交
    • P
      powerpc: Fix build failure in sysdev/mpic.c for MPIC_WEIRD=y · 0215b4aa
      Paul Gortmaker 提交于
      Commit 446f6d06 ("powerpc/mpic: Properly
      set default triggers") breaks the mpc7447_hpc_defconfig as follows:
      
        CC      arch/powerpc/sysdev/mpic.o
      arch/powerpc/sysdev/mpic.c: In function 'mpic_set_irq_type':
      arch/powerpc/sysdev/mpic.c:886:9: error: case label does not reduce to an integer constant
      arch/powerpc/sysdev/mpic.c:890:9: error: case label does not reduce to an integer constant
      arch/powerpc/sysdev/mpic.c:894:9: error: case label does not reduce to an integer constant
      arch/powerpc/sysdev/mpic.c:898:9: error: case label does not reduce to an integer constant
      
      Looking at the cpp output (gcc 4.7.3), I see:
      
         case mpic->hw_set[MPIC_IDX_VECPRI_SENSE_EDGE] |
              mpic->hw_set[MPIC_IDX_VECPRI_POLARITY_POSITIVE]:
      
      The pointer into an array appears because CONFIG_MPIC_WEIRD=y is set
      for this platform, thus enabling the following:
      
        -------------------
        #ifdef CONFIG_MPIC_WEIRD
        static u32 mpic_infos[][MPIC_IDX_END] = {
              [0] = { /* Original OpenPIC compatible MPIC */
      
        [...]
      
        #define MPIC_INFO(name) mpic->hw_set[MPIC_IDX_##name]
      
        #else /* CONFIG_MPIC_WEIRD */
      
        #define MPIC_INFO(name) MPIC_##name
      
        #endif /* CONFIG_MPIC_WEIRD */
        -------------------
      
      Here we convert the case section to if/else if, and also add
      the equivalent of a default case to warn about unknown types.
      Boot tested on sbc8548, build tested on all defconfigs.
      Signed-off-by: NPaul Gortmaker <paul.gortmaker@windriver.com>
      Signed-off-by: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
      0215b4aa
  22. 11 10月, 2013 1 次提交
  23. 10 10月, 2013 1 次提交
    • R
      powerpc: add explicit OF includes · 26a2056e
      Rob Herring 提交于
      When removing prom.h include by of.h, several OF headers will no longer
      be implicitly included. Add explicit includes of of_*.h as needed.
      Signed-off-by: NRob Herring <rob.herring@calxeda.com>
      Acked-by: NGrant Likely <grant.likely@linaro.org>
      Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Anatolij Gustschin <agust@denx.de>
      Cc: Kumar Gala <galak@kernel.crashing.org>
      Cc: Olof Johansson <olof@lixom.net>
      Cc: linuxppc-dev@lists.ozlabs.org
      26a2056e
  24. 02 7月, 2013 3 次提交
  25. 01 6月, 2013 1 次提交
  26. 14 5月, 2013 1 次提交
  27. 06 5月, 2013 1 次提交
    • B
      irqdomain: Allow quiet failure mode · 5fe0c1f2
      Benjamin Herrenschmidt 提交于
      Some interrupt controllers refuse to map interrupts marked as
      "protected" by firwmare. Since we try to map everyting in the
      device-tree on some platforms, we end up with a lot of nasty
      WARN's in the boot log for what is a normal situation on those
      machines.
      
      This defines a specific return code (-EPERM) from the host map()
      callback which cause irqdomain to fail silently.
      
      MPIC is updated to return this when hitting a protected source
      printing only a single line message for diagnostic purposes.
      Signed-off-by: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
      5fe0c1f2
  28. 16 2月, 2013 1 次提交
  29. 29 1月, 2013 1 次提交
  30. 04 1月, 2013 1 次提交
    • G
      POWERPC: drivers: remove __dev* attributes. · cad5cef6
      Greg Kroah-Hartman 提交于
      CONFIG_HOTPLUG is going away as an option.  As a result, the __dev*
      markings need to be removed.
      
      This change removes the use of __devinit, __devexit_p, __devinitdata,
      __devinitconst, and __devexit from these drivers.
      
      Based on patches originally written by Bill Pemberton, but redone by me
      in order to handle some of the coding style issues better, by hand.
      
      Cc: Bill Pemberton <wfp5p@virginia.edu>
      Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
      Cc: Paul Mackerras <paulus@samba.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      cad5cef6
  31. 13 9月, 2012 2 次提交
  32. 23 7月, 2012 1 次提交
  33. 10 7月, 2012 1 次提交
  34. 23 4月, 2012 2 次提交
  35. 27 2月, 2012 1 次提交
  36. 23 2月, 2012 1 次提交
    • K
      powerpc/mpic: Remove duplicate MPIC_WANTS_RESET flag · e55d7f73
      Kyle Moffett 提交于
      There are two separate flags controlling whether or not the MPIC is
      reset during initialization, which is completely unnecessary, and only
      one of them can be specified in the device tree.
      
      Also, most platforms in-tree right now do actually want to reset the
      MPIC during initialization anyways, which means lots of duplicate code
      passing the MPIC_WANTS_RESET flag.
      
      Fix all of the callers which currently do not pass the MPIC_WANTS_RESET
      flag to pass the MPIC_NO_RESET flag, then remove the MPIC_WANTS_RESET
      flag and make the code reset the MPIC by default.
      Signed-off-by: NKyle Moffett <Kyle.D.Moffett@boeing.com>
      Signed-off-by: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
      e55d7f73