1. 17 11月, 2016 6 次提交
  2. 14 11月, 2016 34 次提交
    • B
      powerpc: convert storcenter_defconfig to use libata PATA drivers · 1aed61f9
      Bartlomiej Zolnierkiewicz 提交于
      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: NBartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
      1aed61f9
    • B
      powerpc: convert pseries_defconfig to use libata PATA drivers · 80269fe4
      Bartlomiej Zolnierkiewicz 提交于
      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: NBartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
      80269fe4
    • B
      powerpc: convert ppc6xx_defconfig to use libata PATA drivers · 7f10fe36
      Bartlomiej Zolnierkiewicz 提交于
      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: NBartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
      7f10fe36
    • B
      powerpc: convert ppc64e_defconfig to use libata PATA drivers · 4a0b4bfe
      Bartlomiej Zolnierkiewicz 提交于
      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: NBartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
      4a0b4bfe
    • B
      powerpc: convert ppc64_defconfig to use libata PATA drivers · 7ddf3db3
      Bartlomiej Zolnierkiewicz 提交于
      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: NBartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
      7ddf3db3
    • B
      powerpc: convert pmac32_defconfig to use libata PATA drivers · b0d3a074
      Bartlomiej Zolnierkiewicz 提交于
      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: NBartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
      b0d3a074
    • B
      powerpc: disable IDE subsystem in pasemi_defconfig · 23bf36cd
      Bartlomiej Zolnierkiewicz 提交于
      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: NBartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
      23bf36cd
    • B
      powerpc: convert maple_defconfig to use libata PATA drivers · c1f9d293
      Bartlomiej Zolnierkiewicz 提交于
      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: NBartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
      c1f9d293
    • B
      powerpc: convert g5_defconfig to use libata PATA drivers · b10fd396
      Bartlomiej Zolnierkiewicz 提交于
      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: NBartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
      b10fd396
    • B
      powerpc: convert chrp32_defconfig to use libata PATA drivers · f22cc4d7
      Bartlomiej Zolnierkiewicz 提交于
      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: NBartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
      f22cc4d7
    • B
      powerpc: convert cell_defconfig to use libata PATA drivers · 8020c122
      Bartlomiej Zolnierkiewicz 提交于
      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: NBartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
      8020c122
    • B
      powerpc: convert amigaone_defconfig to use libata PATA drivers · 67f6d665
      Bartlomiej Zolnierkiewicz 提交于
      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: NBartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
      67f6d665
    • P
      selftests/powerpc: Return false instead of -1 in require_paranoia_below() · 0e27d27e
      Peter Senna Tschudin 提交于
      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: NPeter Senna Tschudin <peter.senna@gmail.com>
      Signed-off-by: NAndrew Shadura <andrew.shadura@collabora.co.uk>
      Signed-off-by: NMichael Ellerman <mpe@ellerman.id.au>
      0e27d27e
    • J
      powerpc/pci/rpadlpar: Fix device reference leaks · 99e5cde5
      Johan Hovold 提交于
      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: NJohan Hovold <johan@kernel.org>
      Signed-off-by: NMichael Ellerman <mpe@ellerman.id.au>
      99e5cde5
    • J
      powerpc/vio: Clarify vio_find_node() reference counting · e8cfb7e7
      Johan Hovold 提交于
      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: NJohan Hovold <johan@kernel.org>
      Signed-off-by: NMichael Ellerman <mpe@ellerman.id.au>
      e8cfb7e7
    • J
      powerpc/ibmebus: Fix further device reference leaks · 815a7141
      Johan Hovold 提交于
      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: NJohan Hovold <johan@kernel.org>
      Signed-off-by: NMichael Ellerman <mpe@ellerman.id.au>
      815a7141
    • J
      powerpc/ibmebus: Fix device reference leaks in sysfs interface · fe0f3168
      Johan Hovold 提交于
      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: NJohan Hovold <johan@kernel.org>
      Signed-off-by: NMichael Ellerman <mpe@ellerman.id.au>
      fe0f3168
    • J
      powerpc/powernv: Simplify searching for compatible device nodes · 9e4f51bd
      Jack Miller 提交于
      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: NJack Miller <jack@codezen.org>
      Signed-off-by: NMichael Ellerman <mpe@ellerman.id.au>
      9e4f51bd
    • M
      powerpc: Revert Load Monitor Register Support · 29a969b7
      Michael Neuling 提交于
      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: NMichael Neuling <mikey@neuling.org>
      Signed-off-by: NMichael Ellerman <mpe@ellerman.id.au>
      29a969b7
    • M
      selftests/powerpc: Revert Load Monitor Register Tests · 7c65856b
      Michael Neuling 提交于
      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: NMichael Neuling <mikey@neuling.org>
      Signed-off-by: NMichael Ellerman <mpe@ellerman.id.au>
      7c65856b
    • M
      powerpc/configs: Drop REISERFS from pseries & powernv · 7a53ef5e
      Michael Ellerman 提交于
      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: NMichael Ellerman <mpe@ellerman.id.au>
      7a53ef5e
    • E
      macintosh: Remove dependency on IDE_GD_ATA if ADB_PMU_LED_DISK is selected · 0e865a80
      Elimar Riesebieter 提交于
      We can use the front led of powerbooks/ibooks to visualize disk activity
      without the deprecated IDE_GD_ATA.
      Signed-off-by: NElimar Riesebieter <riesebie@lxtec.de>
      Signed-off-by: NMichael Ellerman <mpe@ellerman.id.au>
      0e865a80
    • B
      powerpc/hash64: Be more careful when generating tlbiel · f923efbc
      Balbir Singh 提交于
      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: NBalbir Singh <bsingharora@gmail.com>
      [mpe: Rewrite change log, use IFSET instead of IFCLR]
      Signed-off-by: NMichael Ellerman <mpe@ellerman.id.au>
      f923efbc
    • M
      powerpc/book3s64: Always build for power4 or later · 3a849815
      Michael Ellerman 提交于
      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: NMichael Ellerman <mpe@ellerman.id.au>
      3a849815
    • N
      powerpc/64: Add an option to force run-at-load to test relocation · 70839d20
      Nicholas Piggin 提交于
      This adds a config option that can help exercise the case when
      the kernel is not running at PAGE_OFFSET.
      Signed-off-by: NNicholas Piggin <npiggin@gmail.com>
      Reviewed-by: NBalbir Singh <bsingharora@gmail.com>
      Signed-off-by: NMichael Ellerman <mpe@ellerman.id.au>
      70839d20
    • A
      powerpc/pseries: Use H_CLEAR_HPT to clear MMU hash table during kexec · 5246adec
      Anton Blanchard 提交于
      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: NAnton Blanchard <anton@samba.org>
      Tested-by: NMahesh Salgaonkar <mahesh@linux.vnet.ibm.com>
      [mpe: Split into separate functions and tweak function naming]
      Signed-off-by: NMichael Ellerman <mpe@ellerman.id.au>
      5246adec
    • D
      i2c_powermac: shut up lockdep warning · 9e607f72
      Denis Kirjanov 提交于
      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: NDenis Kirjanov <kda@linux-powerpc.org>
      Signed-off-by: NMichael Ellerman <mpe@ellerman.id.au>
      9e607f72
    • N
    • N
      5b9ff027
    • N
      powerpc: Add support for relative exception tables · 61a92f70
      Nicholas Piggin 提交于
      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: NNicholas Piggin <npiggin@gmail.com>
      [mpe: Minor asm fixups and bits to keep the selftests working]
      Signed-off-by: NMichael Ellerman <mpe@ellerman.id.au>
      61a92f70
    • N
      powerpc: EX_TABLE macro for exception tables · 24bfa6a9
      Nicholas Piggin 提交于
      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: NNicholas Piggin <npiggin@gmail.com>
      Signed-off-by: NMichael Ellerman <mpe@ellerman.id.au>
      24bfa6a9
    • M
      selftests/powerpc: Fail load_unaligned_zeropad on miscompare · 997e2001
      Michael Ellerman 提交于
      If the result returned by load_unaligned_zeropad() doesn't match what we
      expect we should fail the test!
      Signed-off-by: NMichael Ellerman <mpe@ellerman.id.au>
      997e2001
    • M
      selftests/powerpc: Abort load_unaligned_zeropad on unhandled SEGV · 06236f4e
      Michael Ellerman 提交于
      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: NMichael Ellerman <mpe@ellerman.id.au>
      06236f4e
    • M
      powerpc/module: Add support for R_PPC64_REL32 relocations · 9f751b82
      Michael Ellerman 提交于
      We haven't seen these before, but the soon to be merged relative
      exception tables support causes them to be generated.
      Signed-off-by: NMichael Ellerman <mpe@ellerman.id.au>
      9f751b82