1. 18 3月, 2016 1 次提交
  2. 04 2月, 2016 1 次提交
    • T
      ipmi: put acpi.h with the other headers · 58c9d61f
      Tony Camuso 提交于
      Enclosing '#include <linux/acpi.h>' within '#ifdef CONFIG_ACPI' is
      unnecessary, since it has its own conditional compile for CONFIG_ACPI.
      
      Commit 0fbcf4af ("ipmi: Convert the IPMI SI ACPI handling to a
      platform device") exposed this as a problem for platforms that do not
      support ACPI when it introduced a call to ACPI_PTR() macro outside of
      the CONFIG_ACPI conditional compile. This would have been perfectly
      acceptable if acpi.h were not conditionally excluded for the non-acpi
      platform, because the conditional compile within acpi.h defines
      ACPI_PTR() to return NULL when compiled for non acpi platforms.
      Signed-off-by: NTony Camuso <tcamuso@redhat.com>
      
      Fixed commit reference in header to conform to standard.
      Signed-off-by: NCorey Minyard <cminyard@mvista.com>
      58c9d61f
  3. 13 1月, 2016 2 次提交
    • D
      ipmi: Remove unnecessary pci_disable_device. · bb0dcebe
      Dave Jones 提交于
      We call cleanup_one_si from ipmi_pci_remove, which calls ->addr_source_cleanup,
       which gets set to point to ipmi_pci_cleanup, which does a pci_disable_device.
      
      On return from this, we do a second pci_disable_device, which
      results in the trace below.
      
      ipmi_si 0000:00:16.0: disabling already-disabled device
      Call Trace:
       [<ffffffff818ce54c>] dump_stack+0x45/0x57
       [<ffffffff810525f7>] warn_slowpath_common+0x97/0xe0
       [<ffffffff810526f6>] warn_slowpath_fmt+0x46/0x50
       [<ffffffff81497ca1>] pci_disable_device+0xb1/0xc0
       [<ffffffffa00851a5>] ipmi_pci_remove+0x25/0x30 [ipmi_si]
       [<ffffffff8149a696>] pci_device_remove+0x46/0xc0
       [<ffffffff8156801f>] __device_release_driver+0x7f/0xf0
       [<ffffffff81568978>] driver_detach+0xb8/0xc0
       [<ffffffff81567e50>] bus_remove_driver+0x50/0xa0
       [<ffffffff8156914e>] driver_unregister+0x2e/0x60
       [<ffffffff8149a3e5>] pci_unregister_driver+0x25/0x90
       [<ffffffffa0085804>] cleanup_ipmi_si+0xd4/0xf0 [ipmi_si]
       [<ffffffff810c727a>] SyS_delete_module+0x12a/0x200
       [<ffffffff818d4d72>] system_call_fastpath+0x12/0x17
      Signed-off-by: NDave Jones <dsj@fb.com>
      bb0dcebe
    • L
      ipmi: constify some struct and char arrays · 99ee6735
      LABBE Corentin 提交于
      Lots of char arrays could be set as const since they contain only literal
      char arrays.
      We could in the same time make const some struct members who are pointer
      to those const char arrays.
      Signed-off-by: NLABBE Corentin <clabbe.montjoie@gmail.com>
      Signed-off-by: NCorey Minyard <cminyard@mvista.com>
      99ee6735
  4. 10 12月, 2015 1 次提交
    • J
      ipmi: move timer init to before irq is setup · 27f972d3
      Jan Stancek 提交于
      We encountered a panic on boot in ipmi_si on a dell per320 due to an
      uninitialized timer as follows.
      
      static int smi_start_processing(void       *send_info,
                                      ipmi_smi_t intf)
      {
              /* Try to claim any interrupts. */
              if (new_smi->irq_setup)
                      new_smi->irq_setup(new_smi);
      
       --> IRQ arrives here and irq handler tries to modify uninitialized timer
      
          which triggers BUG_ON(!timer->function) in __mod_timer().
      
       Call Trace:
         <IRQ>
         [<ffffffffa0532617>] start_new_msg+0x47/0x80 [ipmi_si]
         [<ffffffffa053269e>] start_check_enables+0x4e/0x60 [ipmi_si]
         [<ffffffffa0532bd8>] smi_event_handler+0x1e8/0x640 [ipmi_si]
         [<ffffffff810f5584>] ? __rcu_process_callbacks+0x54/0x350
         [<ffffffffa053327c>] si_irq_handler+0x3c/0x60 [ipmi_si]
         [<ffffffff810efaf0>] handle_IRQ_event+0x60/0x170
         [<ffffffff810f245e>] handle_edge_irq+0xde/0x180
         [<ffffffff8100fc59>] handle_irq+0x49/0xa0
         [<ffffffff8154643c>] do_IRQ+0x6c/0xf0
         [<ffffffff8100ba53>] ret_from_intr+0x0/0x11
      
              /* Set up the timer that drives the interface. */
              setup_timer(&new_smi->si_timer, smi_timeout, (long)new_smi);
      
      The following patch fixes the problem.
      
      To: Openipmi-developer@lists.sourceforge.net
      To: Corey Minyard <minyard@acm.org>
      CC: linux-kernel@vger.kernel.org
      Signed-off-by: NJan Stancek <jstancek@redhat.com>
      Signed-off-by: NTony Camuso <tcamuso@redhat.com>
      Signed-off-by: NCorey Minyard <cminyard@mvista.com>
      Cc: stable@vger.kernel.org # Applies cleanly to 3.10-, needs small rework before
      27f972d3
  5. 16 11月, 2015 3 次提交
  6. 04 9月, 2015 8 次提交
  7. 06 5月, 2015 4 次提交
  8. 11 4月, 2015 1 次提交
  9. 17 3月, 2015 1 次提交
  10. 20 2月, 2015 5 次提交
  11. 12 12月, 2014 10 次提交
  12. 20 10月, 2014 1 次提交
  13. 08 10月, 2014 2 次提交
    • T
      ipmi: Clear drvdata when interface is removed · 567eded9
      Takao Indoh 提交于
      This patch fixes a bug on hotmod removing.
      
      After ipmi interface is removed using hotmod, kernel panic occurs when
      rmmod impi_si.  For example, try this:
      
       # echo "remove,"`cat /proc/ipmi/0/params` > \
       /sys/module/ipmi_si/parameters/hotmod
       # rmmod ipmi_si
      
      Then, rmmod fails with the following messages.
      
        ------------[ cut here ]------------
        WARNING: CPU: 12 PID: 10819 at /mnt/repos/linux/lib/list_debug.c:53 __list_del_entry+0x63/0xd0()
        CPU: 12 PID: 10819 Comm: rmmod Not tainted 3.17.0-rc1 #19
        Hardware name: FUJITSU-SV PRIMERGY BX920 S2/D3030, BIOS 080015 Rev.3D81.3030 02/10/2012
        Call Trace:
          dump_stack+0x45/0x56
          warn_slowpath_common+0x7d/0xa0
          warn_slowpath_fmt+0x4c/0x50
          __list_del_entry+0x63/0xd0
          list_del+0xd/0x30
          cleanup_one_si+0x2a/0x230 [ipmi_si]
          ipmi_pnp_remove+0x15/0x20 [ipmi_si]
          pnp_device_remove+0x24/0x40
          __device_release_driver+0x7f/0xf0
          driver_detach+0xb0/0xc0
          bus_remove_driver+0x55/0xd0
          driver_unregister+0x2c/0x50
          pnp_unregister_driver+0x12/0x20
          cleanup_ipmi_si+0xbc/0xf0 [ipmi_si]
          SyS_delete_module+0x132/0x1c0
          system_call_fastpath+0x16/0x1b
        ---[ end trace 70b4377268f85c23 ]---
      
      list_del in cleanup_one_si() fails because the smi_info is already
      removed when hotmod removing.
      
      When ipmi interface is removed by hotmod, smi_info is removed by
      cleanup_one_si(), but is is still set in drvdata.  Therefore when rmmod
      ipmi_si, ipmi_pnp_remove tries to remove it again and fails.
      
      By this patch, a pointer to smi_info in drvdata is cleared when hotmod
      removing so that it will be not accessed when rmmod.
      
      changelog:
      v2:
      - Clear drvdata in cleanup_one_si
      - Change subject
      
      v1:
      https://lkml.org/lkml/2014/9/8/741Signed-off-by: NTakao Indoh <indou.takao@jp.fujitsu.com>
      Signed-off-by: NCorey Minyard <cminyard@mvista.com>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      567eded9
    • A
      ipmi: work around gcc-4.9 build warning · cc4cbe90
      Arnd Bergmann 提交于
      Building ipmi on arm with gcc-4.9 results in this warning for an
      allmodconfig build:
      
        drivers/char/ipmi/ipmi_si_intf.c: In function 'ipmi_thread':
        include/linux/time.h:28:5: warning: 'busy_until.tv_sec' may be used uninitialized in this function [-Wmaybe-uninitialized]
          if (lhs->tv_sec > rhs->tv_sec)
             ^
        drivers/char/ipmi/ipmi_si_intf.c:1007:18: note: 'busy_until.tv_sec' was declared here
          struct timespec busy_until;
                          ^
      
      The warning is bogus and this case can not occur.  Apparently this is a
      false positive resulting from gcc getting a little smarter about
      tracking assignments but not smart enough.
      
      Marking the ipmi_thread_busy_wait function as inline gives the gcc
      optimization logic enough information to figure out for itself that the
      case cannot happen, which gets rid of the warning without adding any
      fake initialization.
      Signed-off-by: NArnd Bergmann <arnd@arndb.de>
      Signed-off-by: NCorey Minyard <cminyard@mvista.com>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      cc4cbe90