1. 17 Nov, 2016 3 commits
  2. 14 Nov, 2016 37 commits
    • Bartlomiej Zolnierkiewicz's avatar
      powerpc: convert storcenter_defconfig to use libata PATA drivers · 1aed61f9
      Bartlomiej Zolnierkiewicz authored
      IDE subsystem has been deprecated since 2009 and the majority
      (if not all) of Linux distributions have switched to use
      libata for ATA support exclusively.  However there are still
      some users (mostly old or/and embedded non-x86 systems) that
      have not converted from using IDE subsystem to libata PATA
      drivers.  This doesn't seem to be good thing in the long-term
      for Linux as while there is less and less PATA systems left
      in use:
      
      * testing efforts are divided between two subsystems
      
      * having duplicate drivers for same hardware confuses users
      
      This patch converts storcenter_defconfig to use libata PATA
      drivers.
      Signed-off-by: default avatarBartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
      1aed61f9
    • Bartlomiej Zolnierkiewicz's avatar
      powerpc: convert pseries_defconfig to use libata PATA drivers · 80269fe4
      Bartlomiej Zolnierkiewicz authored
      IDE subsystem has been deprecated since 2009 and the majority
      (if not all) of Linux distributions have switched to use
      libata for ATA support exclusively.  However there are still
      some users (mostly old or/and embedded non-x86 systems) that
      have not converted from using IDE subsystem to libata PATA
      drivers.  This doesn't seem to be good thing in the long-term
      for Linux as while there is less and less PATA systems left
      in use:
      
      * testing efforts are divided between two subsystems
      
      * having duplicate drivers for same hardware confuses users
      
      This patch converts pseries_defconfig to use libata PATA
      drivers.
      Signed-off-by: default avatarBartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
      80269fe4
    • Bartlomiej Zolnierkiewicz's avatar
      powerpc: convert ppc6xx_defconfig to use libata PATA drivers · 7f10fe36
      Bartlomiej Zolnierkiewicz authored
      IDE subsystem has been deprecated since 2009 and the majority
      (if not all) of Linux distributions have switched to use
      libata for ATA support exclusively.  However there are still
      some users (mostly old or/and embedded non-x86 systems) that
      have not converted from using IDE subsystem to libata PATA
      drivers.  This doesn't seem to be good thing in the long-term
      for Linux as while there is less and less PATA systems left
      in use:
      
      * testing efforts are divided between two subsystems
      
      * having duplicate drivers for same hardware confuses users
      
      This patch converts ppc6xx_defconfig to use libata PATA
      drivers.
      Signed-off-by: default avatarBartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
      7f10fe36
    • Bartlomiej Zolnierkiewicz's avatar
      powerpc: convert ppc64e_defconfig to use libata PATA drivers · 4a0b4bfe
      Bartlomiej Zolnierkiewicz authored
      IDE subsystem has been deprecated since 2009 and the majority
      (if not all) of Linux distributions have switched to use
      libata for ATA support exclusively.  However there are still
      some users (mostly old or/and embedded non-x86 systems) that
      have not converted from using IDE subsystem to libata PATA
      drivers.  This doesn't seem to be good thing in the long-term
      for Linux as while there is less and less PATA systems left
      in use:
      
      * testing efforts are divided between two subsystems
      
      * having duplicate drivers for same hardware confuses users
      
      This patch converts ppc64e_defconfig to use libata PATA
      drivers.
      Signed-off-by: default avatarBartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
      4a0b4bfe
    • Bartlomiej Zolnierkiewicz's avatar
      powerpc: convert ppc64_defconfig to use libata PATA drivers · 7ddf3db3
      Bartlomiej Zolnierkiewicz authored
      IDE subsystem has been deprecated since 2009 and the majority
      (if not all) of Linux distributions have switched to use
      libata for ATA support exclusively.  However there are still
      some users (mostly old or/and embedded non-x86 systems) that
      have not converted from using IDE subsystem to libata PATA
      drivers.  This doesn't seem to be good thing in the long-term
      for Linux as while there is less and less PATA systems left
      in use:
      
      * testing efforts are divided between two subsystems
      
      * having duplicate drivers for same hardware confuses users
      
      This patch converts ppc64_defconfig to use libata PATA
      drivers.
      Signed-off-by: default avatarBartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
      7ddf3db3
    • Bartlomiej Zolnierkiewicz's avatar
      powerpc: convert pmac32_defconfig to use libata PATA drivers · b0d3a074
      Bartlomiej Zolnierkiewicz authored
      IDE subsystem has been deprecated since 2009 and the majority
      (if not all) of Linux distributions have switched to use
      libata for ATA support exclusively.  However there are still
      some users (mostly old or/and embedded non-x86 systems) that
      have not converted from using IDE subsystem to libata PATA
      drivers.  This doesn't seem to be good thing in the long-term
      for Linux as while there is less and less PATA systems left
      in use:
      
      * testing efforts are divided between two subsystems
      
      * having duplicate drivers for same hardware confuses users
      
      This patch converts pmac32_defconfig to use libata PATA
      drivers.
      Signed-off-by: default avatarBartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
      b0d3a074
    • Bartlomiej Zolnierkiewicz's avatar
      powerpc: disable IDE subsystem in pasemi_defconfig · 23bf36cd
      Bartlomiej Zolnierkiewicz authored
      This patch disables deprecated IDE subsystem in pasemi_defconfig
      (no IDE host drivers are selected in this config so there is no valid
      reason to enable IDE subsystem itself).
      
      Cc: Olof Johansson <olof@lixom.net>
      Signed-off-by: default avatarBartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
      23bf36cd
    • Bartlomiej Zolnierkiewicz's avatar
      powerpc: convert maple_defconfig to use libata PATA drivers · c1f9d293
      Bartlomiej Zolnierkiewicz authored
      IDE subsystem has been deprecated since 2009 and the majority
      (if not all) of Linux distributions have switched to use
      libata for ATA support exclusively.  However there are still
      some users (mostly old or/and embedded non-x86 systems) that
      have not converted from using IDE subsystem to libata PATA
      drivers.  This doesn't seem to be good thing in the long-term
      for Linux as while there is less and less PATA systems left
      in use:
      
      * testing efforts are divided between two subsystems
      
      * having duplicate drivers for same hardware confuses users
      
      This patch converts maple_defconfig to use libata PATA
      drivers.
      Signed-off-by: default avatarBartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
      c1f9d293
    • Bartlomiej Zolnierkiewicz's avatar
      powerpc: convert g5_defconfig to use libata PATA drivers · b10fd396
      Bartlomiej Zolnierkiewicz authored
      IDE subsystem has been deprecated since 2009 and the majority
      (if not all) of Linux distributions have switched to use
      libata for ATA support exclusively.  However there are still
      some users (mostly old or/and embedded non-x86 systems) that
      have not converted from using IDE subsystem to libata PATA
      drivers.  This doesn't seem to be good thing in the long-term
      for Linux as while there is less and less PATA systems left
      in use:
      
      * testing efforts are divided between two subsystems
      
      * having duplicate drivers for same hardware confuses users
      
      This patch converts g5_defconfig to use libata PATA drivers.
      Signed-off-by: default avatarBartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
      b10fd396
    • Bartlomiej Zolnierkiewicz's avatar
      powerpc: convert chrp32_defconfig to use libata PATA drivers · f22cc4d7
      Bartlomiej Zolnierkiewicz authored
      IDE subsystem has been deprecated since 2009 and the majority
      (if not all) of Linux distributions have switched to use
      libata for ATA support exclusively.  However there are still
      some users (mostly old or/and embedded non-x86 systems) that
      have not converted from using IDE subsystem to libata PATA
      drivers.  This doesn't seem to be good thing in the long-term
      for Linux as while there is less and less PATA systems left
      in use:
      
      * testing efforts are divided between two subsystems
      
      * having duplicate drivers for same hardware confuses users
      
      This patch converts chrp32_defconfig to use libata PATA
      drivers.
      Signed-off-by: default avatarBartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
      f22cc4d7
    • Bartlomiej Zolnierkiewicz's avatar
      powerpc: convert cell_defconfig to use libata PATA drivers · 8020c122
      Bartlomiej Zolnierkiewicz authored
      IDE subsystem has been deprecated since 2009 and the majority
      (if not all) of Linux distributions have switched to use
      libata for ATA support exclusively.  However there are still
      some users (mostly old or/and embedded non-x86 systems) that
      have not converted from using IDE subsystem to libata PATA
      drivers.  This doesn't seem to be good thing in the long-term
      for Linux as while there is less and less PATA systems left
      in use:
      
      * testing efforts are divided between two subsystems
      
      * having duplicate drivers for same hardware confuses users
      
      This patch converts cell_defconfig to use libata PATA drivers.
      Signed-off-by: default avatarBartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
      8020c122
    • Bartlomiej Zolnierkiewicz's avatar
      powerpc: convert amigaone_defconfig to use libata PATA drivers · 67f6d665
      Bartlomiej Zolnierkiewicz authored
      IDE subsystem has been deprecated since 2009 and the majority
      (if not all) of Linux distributions have switched to use
      libata for ATA support exclusively.  However there are still
      some users (mostly old or/and embedded non-x86 systems) that
      have not converted from using IDE subsystem to libata PATA
      drivers.  This doesn't seem to be good thing in the long-term
      for Linux as while there is less and less PATA systems left
      in use:
      
      * testing efforts are divided between two subsystems
      
      * having duplicate drivers for same hardware confuses users
      
      This patch converts amigaone_defconfig to use libata PATA
      drivers.
      Signed-off-by: default avatarBartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
      67f6d665
    • Peter Senna Tschudin's avatar
      selftests/powerpc: Return false instead of -1 in require_paranoia_below() · 0e27d27e
      Peter Senna Tschudin authored
      Returning a negative value for a boolean function seem to have the
      undesired effect of returning true. require_paranoia_below() is a
      boolean function, but the variable used to store the return value is an
      integer, receiving -1 or 0. This patch converts rc to bool, replaces -1
      by false, and 0 by true.
      
      mpe: This wasn't exhibiting in practice because the common case, where
      we do the comparison of the desired level vs the current value, was
      being compiled into a computation based on the result of the comparison,
      ie. it wasn't using the default -1 value at all. However that was just
      luck and the code is still wrong.
      Signed-off-by: default avatarPeter Senna Tschudin <peter.senna@gmail.com>
      Signed-off-by: default avatarAndrew Shadura <andrew.shadura@collabora.co.uk>
      Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
      0e27d27e
    • Johan Hovold's avatar
      powerpc/pci/rpadlpar: Fix device reference leaks · 99e5cde5
      Johan Hovold authored
      Make sure to drop any device reference taken by vio_find_node() when
      adding and removing virtual I/O slots.
      
      Fixes: 5eeb8c63 ("[PATCH] PCI Hotplug: rpaphp: Move VIO registration")
      Signed-off-by: default avatarJohan Hovold <johan@kernel.org>
      Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
      99e5cde5
    • Johan Hovold's avatar
      powerpc/vio: Clarify vio_find_node() reference counting · e8cfb7e7
      Johan Hovold authored
      Add comment clarifying that vio_find_node() takes a reference to the
      embedded struct device which needs to be dropped after use.
      Signed-off-by: default avatarJohan Hovold <johan@kernel.org>
      Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
      e8cfb7e7
    • Johan Hovold's avatar
      powerpc/ibmebus: Fix further device reference leaks · 815a7141
      Johan Hovold authored
      Make sure to drop any reference taken by bus_find_device() when creating
      devices during init and driver registration.
      
      Fixes: 55347cc9 ("[POWERPC] ibmebus: Add device creation and bus probing based on of_device")
      Signed-off-by: default avatarJohan Hovold <johan@kernel.org>
      Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
      815a7141
    • Johan Hovold's avatar
      powerpc/ibmebus: Fix device reference leaks in sysfs interface · fe0f3168
      Johan Hovold authored
      Make sure to drop any reference taken by bus_find_device() in the sysfs
      callbacks that are used to create and destroy devices based on
      device-tree entries.
      
      Fixes: 6bccf755 ("[POWERPC] ibmebus: dynamic addition/removal of adapters, some code cleanup")
      Signed-off-by: default avatarJohan Hovold <johan@kernel.org>
      Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
      fe0f3168
    • Jack Miller's avatar
      powerpc/powernv: Simplify searching for compatible device nodes · 9e4f51bd
      Jack Miller authored
      This condenses the opal node searching into a single function that finds
      all compatible nodes, instead of just searching the ibm,opal children,
      for ipmi, flash, and prd similar to how opal-i2c nodes are found.
      Signed-off-by: default avatarJack Miller <jack@codezen.org>
      Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
      9e4f51bd
    • Michael Neuling's avatar
      powerpc: Revert Load Monitor Register Support · 29a969b7
      Michael Neuling authored
      Load monitored is no longer supported on POWER9 so let's remove the
      code.
      
      This reverts commit bd3ea317 ("powerpc: Load Monitor Register
      Support").
      Signed-off-by: default avatarMichael Neuling <mikey@neuling.org>
      Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
      29a969b7
    • Michael Neuling's avatar
      selftests/powerpc: Revert Load Monitor Register Tests · 7c65856b
      Michael Neuling authored
      Load monitored won't be supported in POWER9, so PPC_FEATURE2_ARCH_3_00
      (in HWCAP2) will no longer imply Load monitor support.
      
      These Load monitored tests are enabled by PPC_FEATURE2_ARCH_3_00 so
      they are now bogus and need to be removed.
      
      This reverts commit 16c19a2e ("selftests/powerpc: Load Monitor
      Register Tests").
      Signed-off-by: default avatarMichael Neuling <mikey@neuling.org>
      Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
      7c65856b
    • Michael Ellerman's avatar
      powerpc/configs: Drop REISERFS from pseries & powernv · 7a53ef5e
      Michael Ellerman authored
      No one uses reiserfs much these days, or is likely to in future. So drop
      it from pseries and powernv defconfigs to save time and space. It's
      still enabled in ppc64_defconfig so we get some build coverage.
      Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
      7a53ef5e
    • Elimar Riesebieter's avatar
      macintosh: Remove dependency on IDE_GD_ATA if ADB_PMU_LED_DISK is selected · 0e865a80
      Elimar Riesebieter authored
      We can use the front led of powerbooks/ibooks to visualize disk activity
      without the deprecated IDE_GD_ATA.
      Signed-off-by: default avatarElimar Riesebieter <riesebie@lxtec.de>
      Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
      0e865a80
    • Balbir Singh's avatar
      powerpc/hash64: Be more careful when generating tlbiel · f923efbc
      Balbir Singh authored
      In ISA v2.05, the tlbiel instruction takes two arguments, RB and L:
      
      tlbiel RB,L
      
      +---------+---------+----+---------+---------+---------+----+
      |    31   |    /    | L  |    /    |    RB   |   274   | /  |
      | 31 - 26 | 25 - 22 | 21 | 20 - 16 | 15 - 11 |  10 - 1 | 0  |
      +---------+---------+----+---------+---------+---------+----+
      
      In ISA v2.06 tlbiel takes only one argument, RB:
      
      tlbiel RB
      
      +---------+---------+---------+---------+---------+----+
      |    31   |    /    |    /    |    RB   |   274   | /  |
      | 31 - 26 | 25 - 21 | 20 - 16 | 15 - 11 |  10 - 1 | 0  |
      +---------+---------+---------+---------+---------+----+
      
      And in ISA v3.00 tlbiel takes five arguments:
      
      tlbiel RB,RS,RIC,PRS,R
      
      +---------+---------+----+---------+----+----+---------+---------+----+
      |    31   |    RS   | /  |   RIC   |PRS | R  |    RB   |   274   | /  |
      | 31 - 26 | 25 - 21 | 20 | 19 - 18 | 17 | 16 | 15 - 11 |  10 - 1 | 0  |
      +---------+---------+----+---------+----+----+---------+---------+----+
      
      However the assembler also accepts "tlbiel RB", and generates
      "tlbiel RB,r0,0,0,0".
      
      As you can see above the L field from the v2.05 encoding overlaps with the
      reserved field of the v2.06 encoding, and the low bit of the RS field of the
      v3.00 encoding.
      
      Currently in __tlbiel() we generate two tlbiel instructions manually using hex
      constants. In the first case, for MMU_PAGE_4K, we generate "tlbiel RB,0", which
      is safe in all cases, because the L bit is zero.
      
      However in the default case we generate "tlbiel RB,1", therefore setting bit 21
      to 1.
      
      This is not an actual bug on v2.06 processors, because the CPU ignores the value
      of the reserved field. However software is supposed to encode the reserved
      fields as zero to enable forward compatibility.
      
      On v3.00 processors setting bit 21 to 1 and no other bits of RS, means we are
      using r1 for the value of RS.
      
      Although it's not obvious, the code sets the IS field (bits 10-11) to 0 (by
      omission), and L=1, in the va value, which is passed as RB. We also pass R=0 in
      the instruction.
      
      The combination of IS=0, L=1 and R=0 means the value of RS is not used, so even
      on ISA v3.00 there is no actual bug.
      
      We should still fix it, as setting a reserved bit on v2.06 is naughty, and we
      are only avoiding a bug on v3.00 by accident rather than design. Use
      ASM_FTR_IFSET() to generate the single argument form on ISA v2.06 and later, and
      the two argument form on pre v2.06.
      
      Although there may be very old toolchains which don't understand tlbiel, we have
      other code in the tree which has been using tlbiel for over five years, and no
      one has reported any build failures, so just let the assembler generate the
      instructions.
      Signed-off-by: default avatarBalbir Singh <bsingharora@gmail.com>
      [mpe: Rewrite change log, use IFSET instead of IFCLR]
      Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
      f923efbc
    • Michael Ellerman's avatar
      powerpc/book3s64: Always build for power4 or later · 3a849815
      Michael Ellerman authored
      When we're not compiling for a specific CPU, ie. none of the
      CONFIG_POWERx_CPU options are set, and CONFIG_GENERIC_CPU *is* set, we
      currently don't pass any -mcpu option to the compiler. This means the
      compiler builds for a "generic" Power CPU.
      
      But back in 2014 we dropped support for pre power4 CPUs in commit
      468a3302 ("powerpc: Drop support for pre-POWER4 cpus").
      
      Given that, there's no point in building the kernel to run on pre power4
      cpus. So update the flags we pass to the compiler when
      CONFIG_GENERIC_CPU is set, to specify -mcpu=power4.
      Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
      3a849815
    • Nicholas Piggin's avatar
      powerpc/64: Add an option to force run-at-load to test relocation · 70839d20
      Nicholas Piggin authored
      This adds a config option that can help exercise the case when
      the kernel is not running at PAGE_OFFSET.
      Signed-off-by: default avatarNicholas Piggin <npiggin@gmail.com>
      Reviewed-by: default avatarBalbir Singh <bsingharora@gmail.com>
      Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
      70839d20
    • Anton Blanchard's avatar
      powerpc/pseries: Use H_CLEAR_HPT to clear MMU hash table during kexec · 5246adec
      Anton Blanchard authored
      An hcall was recently added that does exactly what we need during kexec
      - it clears the entire MMU hash table, ignoring any VRMA mappings.
      
      Try it and fall back to the old method if we get a failure.
      
      On a POWER8 box with 5TB of memory, this reduces the time it takes to
      kexec a new kernel from from 4 minutes to 1 minute.
      Signed-off-by: default avatarAnton Blanchard <anton@samba.org>
      Tested-by: default avatarMahesh Salgaonkar <mahesh@linux.vnet.ibm.com>
      [mpe: Split into separate functions and tweak function naming]
      Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
      5246adec
    • Denis Kirjanov's avatar
      i2c_powermac: shut up lockdep warning · 9e607f72
      Denis Kirjanov authored
      That's unclear why lockdep shows the following warning but adding a
      lockdep class to struct pmac_i2c_bus solves it
      
      [   20.507795] ======================================================
      [   20.507796] [ INFO: possible circular locking dependency detected ]
      [   20.507800] 4.8.0-rc7-00037-gd2ffb010 #21 Not tainted
      [   20.507801] -------------------------------------------------------
      [   20.507803] swapper/0/1 is trying to acquire lock:
      [   20.507818]  (&bus->mutex){+.+.+.}, at: [<c000000000052830>] .pmac_i2c_open+0x30/0x100
      [   20.507819]
      [   20.507819] but task is already holding lock:
      [   20.507829]  (&policy->rwsem){+.+.+.}, at: [<c00000000068adcc>] .cpufreq_online+0x1ac/0x9d0
      [   20.507830]
      [   20.507830] which lock already depends on the new lock.
      [   20.507830]
      [   20.507832]
      [   20.507832] the existing dependency chain (in reverse order) is:
      [   20.507837]
      [   20.507837] -> #4 (&policy->rwsem){+.+.+.}:
      [   20.507844]        [<c00000000082385c>] .down_write+0x6c/0x110
      [   20.507849]        [<c00000000068adcc>] .cpufreq_online+0x1ac/0x9d0
      [   20.507855]        [<c0000000004d76d8>] .subsys_interface_register+0xb8/0x110
      [   20.507860]        [<c000000000689bb0>] .cpufreq_register_driver+0x1d0/0x250
      [   20.507866]        [<c000000000b4f8f4>] .g5_cpufreq_init+0x9cc/0xa28
      [   20.507872]        [<c00000000000a98c>] .do_one_initcall+0x5c/0x1d0
      [   20.507878]        [<c000000000b0f86c>] .kernel_init_freeable+0x1ac/0x28c
      [   20.507883]        [<c00000000000b3bc>] .kernel_init+0x1c/0x140
      [   20.507887]        [<c0000000000098f4>] .ret_from_kernel_thread+0x58/0x64
      [   20.507894]
      [   20.507894] -> #3 (subsys mutex#2){+.+.+.}:
      [   20.507899]        [<c000000000820448>] .mutex_lock_nested+0xa8/0x590
      [   20.507903]        [<c0000000004d7f24>] .bus_probe_device+0x44/0xe0
      [   20.507907]        [<c0000000004d5208>] .device_add+0x508/0x730
      [   20.507911]        [<c0000000004dd528>] .register_cpu+0x118/0x190
      [   20.507916]        [<c000000000b14450>] .topology_init+0x148/0x248
      [   20.507921]        [<c00000000000a98c>] .do_one_initcall+0x5c/0x1d0
      [   20.507925]        [<c000000000b0f86c>] .kernel_init_freeable+0x1ac/0x28c
      [   20.507929]        [<c00000000000b3bc>] .kernel_init+0x1c/0x140
      [   20.507934]        [<c0000000000098f4>] .ret_from_kernel_thread+0x58/0x64
      [   20.507939]
      [   20.507939] -> #2 (cpu_add_remove_lock){+.+.+.}:
      [   20.507944]        [<c000000000820448>] .mutex_lock_nested+0xa8/0x590
      [   20.507950]        [<c000000000087a9c>] .register_cpu_notifier+0x2c/0x70
      [   20.507955]        [<c000000000b267e0>] .spawn_ksoftirqd+0x18/0x4c
      [   20.507959]        [<c00000000000a98c>] .do_one_initcall+0x5c/0x1d0
      [   20.507964]        [<c000000000b0f770>] .kernel_init_freeable+0xb0/0x28c
      [   20.507968]        [<c00000000000b3bc>] .kernel_init+0x1c/0x140
      [   20.507972]        [<c0000000000098f4>] .ret_from_kernel_thread+0x58/0x64
      [   20.507978]
      [   20.507978] -> #1 (&host->mutex){+.+.+.}:
      [   20.507982]        [<c000000000820448>] .mutex_lock_nested+0xa8/0x590
      [   20.507987]        [<c0000000000527e8>] .kw_i2c_open+0x18/0x30
      [   20.507991]        [<c000000000052894>] .pmac_i2c_open+0x94/0x100
      [   20.507995]        [<c000000000b220a0>] .smp_core99_probe+0x260/0x410
      [   20.507999]        [<c000000000b185bc>] .smp_prepare_cpus+0x280/0x2ac
      [   20.508003]        [<c000000000b0f748>] .kernel_init_freeable+0x88/0x28c
      [   20.508008]        [<c00000000000b3bc>] .kernel_init+0x1c/0x140
      [   20.508012]        [<c0000000000098f4>] .ret_from_kernel_thread+0x58/0x64
      [   20.508018]
      [   20.508018] -> #0 (&bus->mutex){+.+.+.}:
      [   20.508023]        [<c0000000000ed5b4>] .lock_acquire+0x84/0x100
      [   20.508027]        [<c000000000820448>] .mutex_lock_nested+0xa8/0x590
      [   20.508032]        [<c000000000052830>] .pmac_i2c_open+0x30/0x100
      [   20.508037]        [<c000000000052e14>] .pmac_i2c_do_begin+0x34/0x120
      [   20.508040]        [<c000000000056bc0>] .pmf_call_one+0x50/0xd0
      [   20.508045]        [<c00000000068ff1c>] .g5_pfunc_switch_volt+0x2c/0xc0
      [   20.508050]        [<c00000000068fecc>] .g5_pfunc_switch_freq+0x1cc/0x1f0
      [   20.508054]        [<c00000000068fc2c>] .g5_cpufreq_target+0x2c/0x40
      [   20.508058]        [<c0000000006873ec>] .__cpufreq_driver_target+0x23c/0x840
      [   20.508062]        [<c00000000068c798>] .cpufreq_gov_performance_limits+0x18/0x30
      [   20.508067]        [<c00000000068915c>] .cpufreq_start_governor+0xac/0x100
      [   20.508071]        [<c00000000068a788>] .cpufreq_set_policy+0x208/0x260
      [   20.508076]        [<c00000000068abdc>] .cpufreq_init_policy+0x6c/0xb0
      [   20.508081]        [<c00000000068ae70>] .cpufreq_online+0x250/0x9d0
      [   20.508085]        [<c0000000004d76d8>] .subsys_interface_register+0xb8/0x110
      [   20.508090]        [<c000000000689bb0>] .cpufreq_register_driver+0x1d0/0x250
      [   20.508094]        [<c000000000b4f8f4>] .g5_cpufreq_init+0x9cc/0xa28
      [   20.508099]        [<c00000000000a98c>] .do_one_initcall+0x5c/0x1d0
      [   20.508103]        [<c000000000b0f86c>] .kernel_init_freeable+0x1ac/0x28c
      [   20.508107]        [<c00000000000b3bc>] .kernel_init+0x1c/0x140
      [   20.508112]        [<c0000000000098f4>] .ret_from_kernel_thread+0x58/0x64
      [   20.508113]
      [   20.508113] other info that might help us debug this:
      [   20.508113]
      [   20.508121] Chain exists of:
      [   20.508121]   &bus->mutex --> subsys mutex#2 --> &policy->rwsem
      [   20.508121]
      [   20.508123]  Possible unsafe locking scenario:
      [   20.508123]
      [   20.508124]        CPU0                    CPU1
      [   20.508125]        ----                    ----
      [   20.508128]   lock(&policy->rwsem);
      [   20.508132]                                lock(subsys mutex#2);
      [   20.508135]                                lock(&policy->rwsem);
      [   20.508138]   lock(&bus->mutex);
      [   20.508139]
      [   20.508139]  *** DEADLOCK ***
      [   20.508139]
      [   20.508141] 3 locks held by swapper/0/1:
      [   20.508150]  #0:  (cpu_hotplug.lock){++++++}, at: [<c000000000087838>] .get_online_cpus+0x48/0xc0
      [   20.508159]  #1:  (subsys mutex#2){+.+.+.}, at: [<c0000000004d7670>] .subsys_interface_register+0x50/0x110
      [   20.508168]  #2:  (&policy->rwsem){+.+.+.}, at: [<c00000000068adcc>] .cpufreq_online+0x1ac/0x9d0
      [   20.508169]
      [   20.508169] stack backtrace:
      [   20.508173] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.8.0-rc7-00037-gd2ffb010 #21
      [   20.508175] Call Trace:
      [   20.508180] [c0000000790c2b90] [c00000000082cc70] .dump_stack+0xe0/0x14c (unreliable)
      [   20.508184] [c0000000790c2c20] [c000000000828c88] .print_circular_bug+0x350/0x388
      [   20.508188] [c0000000790c2cd0] [c0000000000ecb0c] .__lock_acquire+0x196c/0x1d30
      [   20.508192] [c0000000790c2e50] [c0000000000ed5b4] .lock_acquire+0x84/0x100
      [   20.508196] [c0000000790c2f20] [c000000000820448] .mutex_lock_nested+0xa8/0x590
      [   20.508201] [c0000000790c3030] [c000000000052830] .pmac_i2c_open+0x30/0x100
      [   20.508206] [c0000000790c30c0] [c000000000052e14] .pmac_i2c_do_begin+0x34/0x120
      [   20.508209] [c0000000790c3150] [c000000000056bc0] .pmf_call_one+0x50/0xd0
      [   20.508213] [c0000000790c31e0] [c00000000068ff1c] .g5_pfunc_switch_volt+0x2c/0xc0
      [   20.508217] [c0000000790c3250] [c00000000068fecc] .g5_pfunc_switch_freq+0x1cc/0x1f0
      [   20.508221] [c0000000790c3320] [c00000000068fc2c] .g5_cpufreq_target+0x2c/0x40
      [   20.508226] [c0000000790c3390] [c0000000006873ec] .__cpufreq_driver_target+0x23c/0x840
      [   20.508230] [c0000000790c3440] [c00000000068c798] .cpufreq_gov_performance_limits+0x18/0x30
      [   20.508235] [c0000000790c34b0] [c00000000068915c] .cpufreq_start_governor+0xac/0x100
      [   20.508239] [c0000000790c3530] [c00000000068a788] .cpufreq_set_policy+0x208/0x260
      [   20.508244] [c0000000790c35d0] [c00000000068abdc] .cpufreq_init_policy+0x6c/0xb0
      [   20.508249] [c0000000790c3940] [c00000000068ae70] .cpufreq_online+0x250/0x9d0
      [   20.508253] [c0000000790c3a30] [c0000000004d76d8] .subsys_interface_register+0xb8/0x110
      [   20.508258] [c0000000790c3ad0] [c000000000689bb0] .cpufreq_register_driver+0x1d0/0x250
      [   20.508262] [c0000000790c3b60] [c000000000b4f8f4] .g5_cpufreq_init+0x9cc/0xa28
      [   20.508267] [c0000000790c3c20] [c00000000000a98c] .do_one_initcall+0x5c/0x1d0
      [   20.508271] [c0000000790c3d00] [c000000000b0f86c] .kernel_init_freeable+0x1ac/0x28c
      [   20.508276] [c0000000790c3db0] [c00000000000b3bc] .kernel_init+0x1c/0x140
      [   20.508280] [c0000000790c3e30] [c0000000000098f4] .ret_from_kernel_thread+0x58/0x64
      Signed-off-by: default avatarDenis Kirjanov <kda@linux-powerpc.org>
      Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
      9e607f72
    • Nicholas Piggin's avatar
    • Nicholas Piggin's avatar
      5b9ff027
    • Nicholas Piggin's avatar
      powerpc: Add support for relative exception tables · 61a92f70
      Nicholas Piggin authored
      This halves the exception table size on 64-bit builds, and it allows
      build-time sorting of exception tables to work on relocated kernels.
      Signed-off-by: default avatarNicholas Piggin <npiggin@gmail.com>
      [mpe: Minor asm fixups and bits to keep the selftests working]
      Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
      61a92f70
    • Nicholas Piggin's avatar
      powerpc: EX_TABLE macro for exception tables · 24bfa6a9
      Nicholas Piggin authored
      This macro is taken from s390, and allows more flexibility in
      changing exception table format.
      
      mpe: Put it in ppc_asm.h and only define one version using
      stringinfy_in_c(). Add some empty definitions and headers to keep the
      selftests happy.
      Signed-off-by: default avatarNicholas Piggin <npiggin@gmail.com>
      Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
      24bfa6a9
    • Michael Ellerman's avatar
      selftests/powerpc: Fail load_unaligned_zeropad on miscompare · 997e2001
      Michael Ellerman authored
      If the result returned by load_unaligned_zeropad() doesn't match what we
      expect we should fail the test!
      Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
      997e2001
    • Michael Ellerman's avatar
      selftests/powerpc: Abort load_unaligned_zeropad on unhandled SEGV · 06236f4e
      Michael Ellerman authored
      If the load unaligned zeropad test takes a SEGV which can't be handled,
      we increment segv_error, print the offending NIP and then return without
      taking any further action. In almost all cases this means we'll just
      take the SEGV again, and loop eternally spamming the console.
      
      Instead just abort(), it's a fatal error in the test. The test harness
      will notice that the child died and print a nice message for us.
      Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
      06236f4e
    • Michael Ellerman's avatar
      powerpc/module: Add support for R_PPC64_REL32 relocations · 9f751b82
      Michael Ellerman authored
      We haven't seen these before, but the soon to be merged relative
      exception tables support causes them to be generated.
      Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
      9f751b82
    • Michael Ellerman's avatar
      powerpc/asm: Allow including ppc_asm.h in asm files · e3f2c6c3
      Michael Ellerman authored
      There's no reason to #error if we include ppc_asm.h in asm files, the
      ifdef already prevents any problems.
      Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
      e3f2c6c3
    • Nicholas Piggin's avatar
      powerpc/64s: Reduce exception alignment · f4329f2e
      Nicholas Piggin authored
      Exception handlers are aligned to 128 bytes (L1 cache) on 64s, which is
      overkill. It can reduce the icache footprint of any individual exception
      path. However taken as a whole, the expansion in icache footprint seems
      likely to be counter-productive and cause more total misses.
      
      Create IFETCH_ALIGN_SHIFT/BYTES, which should give optimal ifetch
      alignment with much more reasonable alignment. This saves 1792 bytes
      from head_64.o text with an allmodconfig build.
      
      Other subarchitectures should define appropriate IFETCH_ALIGN_SHIFT
      values if this becomes more widely used.
      Signed-off-by: default avatarNicholas Piggin <npiggin@gmail.com>
      Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
      f4329f2e
    • Rui Teng's avatar
      powerpc: Remove suspect CONFIG_PPC_BOOK3E #ifdefs in nohash/64/pgtable.h · fda0440d
      Rui Teng authored
      There are three #ifdef CONFIG_PPC_BOOK3E sections in nohash/64/pgtable.h.
      And there should be no configurations possible which use nohash/64/pgtable.h
      but don't also enable CONFIG_PPC_BOOK3E.
      Suggested-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
      Signed-off-by: default avatarRui Teng <rui.teng@linux.vnet.ibm.com>
      Reviewed-by: default avatarAneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
      Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
      fda0440d