13 Jan, 2012

1 commit


09 Jan, 2012

1 commit

  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial: (53 commits)
    Kconfig: acpi: Fix typo in comment.
    misc latin1 to utf8 conversions
    devres: Fix a typo in devm_kfree comment
    btrfs: free-space-cache.c: remove extra semicolon.
    fat: Spelling s/obsolate/obsolete/g
    SCSI, pmcraid: Fix spelling error in a pmcraid_err() call
    tools/power turbostat: update fields in manpage
    mac80211: drop spelling fix
    types.h: fix comment spelling for 'architectures'
    typo fixes: aera -> area, exntension -> extension
    devices.txt: Fix typo of 'VMware'.
    sis900: Fix enum typo 'sis900_rx_bufer_status'
    decompress_bunzip2: remove invalid vi modeline
    treewide: Fix comment and string typo 'bufer'
    hyper-v: Update MAINTAINERS
    treewide: Fix typos in various parts of the kernel, and fix some comments.
    clockevents: drop unknown Kconfig symbol GENERIC_CLOCKEVENTS_MIGR
    gpio: Kconfig: drop unknown symbol 'CS5535_GPIO'
    leds: Kconfig: Fix typo 'D2NET_V2'
    sound: Kconfig: drop unknown symbol ARCH_CLPS7500
    ...

    Fix up trivial conflicts in arch/powerpc/platforms/40x/Kconfig (some new
    kconfig additions, close to removed commented-out old ones)

    Linus Torvalds
     

21 Dec, 2011

1 commit

  • If the BMC gets reset, it will return 0x80 response errors.

    In less than a week
    # grep "Error 80 on cmd 22" /var/log/kernel |wc -l
    378681

    In this case, it is probably a good idea to restore the IPMI settings.

    Signed-off-by: Corey Minyard
    Tested-by: Arkadiusz Miśkiewicz
    Reported-by: Arkadiusz Miśkiewicz
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Corey Minyard
     

02 Dec, 2011

1 commit


10 Oct, 2011

1 commit

  • Just convert all the files that have an nmi handler to the new routines.
    Most of it is straight forward conversion. A couple of places needed some
    tweaking like kgdb which separates the debug notifier from the nmi handler
    and mce removes a call to notify_die.

    [Thanks to Ying for finding out the history behind that mce call

    https://lkml.org/lkml/2010/5/27/114

    And Boris responding that he would like to remove that call because of it

    https://lkml.org/lkml/2011/9/21/163]

    The things that get converted are the registeration/unregistration routines
    and the nmi handler itself has its args changed along with code removal
    to check which list it is on (most are on one NMI list except for kgdb
    which has both an NMI routine and an NMI Unknown routine).

    Signed-off-by: Don Zickus
    Signed-off-by: Peter Zijlstra
    Acked-by: Corey Minyard
    Cc: Jason Wessel
    Cc: Andi Kleen
    Cc: Robert Richter
    Cc: Huang Ying
    Cc: Corey Minyard
    Cc: Jack Steiner
    Link: http://lkml.kernel.org/r/1317409584-23662-4-git-send-email-dzickus@redhat.com
    Signed-off-by: Ingo Molnar

    Don Zickus
     

27 Jul, 2011

1 commit

  • This allows us to move duplicated code in
    (atomic_inc_not_zero() for now) to

    Signed-off-by: Arun Sharma
    Reviewed-by: Eric Dumazet
    Cc: Ingo Molnar
    Cc: David Miller
    Cc: Eric Dumazet
    Acked-by: Mike Frysinger
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Arun Sharma
     

27 May, 2011

1 commit


19 May, 2011

1 commit

  • Commit b826291c, "drivercore/dt: add a match table pointer to struct
    device" added an of_match pointer to struct device to cache the
    of_match_table entry discovered at driver match time. This was unsafe
    because matching is not an atomic operation with probing a driver. If
    two or more drivers are attempted to be matched to a driver at the
    same time, then the cached matching entry pointer could get
    overwritten.

    This patch reverts the of_match cache pointer and reworks all users to
    call of_match_device() directly instead.

    Signed-off-by: Grant Likely

    Grant Likely
     

31 Mar, 2011

1 commit


24 Mar, 2011

1 commit


17 Mar, 2011

1 commit

  • * 'devicetree/next' of git://git.secretlab.ca/git/linux-2.6: (21 commits)
    tty: serial: altera_jtaguart: Add device tree support
    tty: serial: altera_uart: Add devicetree support
    dt: eliminate of_platform_driver shim code
    dt: Eliminate of_platform_{,un}register_driver
    dt/serial: Eliminate users of of_platform_{,un}register_driver
    dt/usb: Eliminate users of of_platform_{,un}register_driver
    dt/video: Eliminate users of of_platform_{,un}register_driver
    dt/net: Eliminate users of of_platform_{,un}register_driver
    dt/sound: Eliminate users of of_platform_{,un}register_driver
    dt/spi: Eliminate users of of_platform_{,un}register_driver
    dt: uartlite: merge platform and of_platform driver bindings
    dt: xilinx_hwicap: merge platform and of_platform driver bindings
    ipmi: convert OF driver to platform driver
    leds/leds-gpio: merge platform_driver with of_platform_driver
    dt/sparc: Eliminate users of of_platform_{,un}register_driver
    dt/powerpc: Eliminate users of of_platform_{,un}register_driver
    dt/powerpc: move of_bus_type infrastructure to ibmebus
    drivercore/dt: add a match table pointer to struct device
    dt: Typo fix.
    altera_ps2: Add devicetree support
    ...

    Linus Torvalds
     

11 Mar, 2011

1 commit

  • This patch fixes an issue in OpenIPMI module where sometimes an ABORT command
    is sent after sending an IPMI request to BMC causing the IPMI request to fail.

    Signed-off-by: YiCheng Doe
    Signed-off-by: Corey Minyard
    Acked-by: Tom Mingarelli
    Tested-by: Andy Cress
    Tested-by: Mika Lansirine
    Tested-by: Brian De Wolf
    Cc: Jean Michel Audet
    Cc: Jozef Sudelsky
    Acked-by: Matthew Garrett
    Signed-off-by: Linus Torvalds

    Doe, YiCheng
     

01 Mar, 2011

1 commit

  • of_bus is deprecated in favor of the plain platform bus. This patch
    merges the ipmi OF driver with the existing platform driver.

    CONFIG_PPC_OF occurrances are removed or replaced with CONFIG_OF.

    Compile tested with and without CONFIG_OF. Tested OF probe and
    default probe cases.

    Signed-off-by: Rob Herring
    Signed-off-by: Grant Likely

    Rob Herring
     

11 Feb, 2011

1 commit

  • This patch fixes an OOPS triggered when calling modprobe ipmi_si a
    second time after the first modprobe returned without finding any ipmi
    devices. This can happen if you reload the module after having the
    first module load fail. The driver was not deregistering from PNP in
    that case.

    Peter Huewe originally reported this patch and supplied a fix, I have a
    different patch based on Linus' suggestion that cleans things up a bit
    more.

    Cc: stable@kernel.org
    Cc: openipmi-developer@lists.sourceforge.net
    Reviewed-by: Peter Huewe
    Cc: Randy Dunlap
    Signed-off-by: Corey Minyard
    Signed-off-by: Linus Torvalds

    Corey Minyard
     

14 Jan, 2011

1 commit

  • * 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6: (59 commits)
    ACPI / PM: Fix build problems for !CONFIG_ACPI related to NVS rework
    ACPI: fix resource check message
    ACPI / Battery: Update information on info notification and resume
    ACPI: Drop device flag wake_capable
    ACPI: Always check if _PRW is present before trying to evaluate it
    ACPI / PM: Check status of power resources under mutexes
    ACPI / PM: Rename acpi_power_off_device()
    ACPI / PM: Drop acpi_power_nocheck
    ACPI / PM: Drop acpi_bus_get_power()
    Platform / x86: Make fujitsu_laptop use acpi_bus_update_power()
    ACPI / Fan: Rework the handling of power resources
    ACPI / PM: Register power resource devices as soon as they are needed
    ACPI / PM: Register acpi_power_driver early
    ACPI / PM: Add function for updating device power state consistently
    ACPI / PM: Add function for device power state initialization
    ACPI / PM: Introduce __acpi_bus_get_power()
    ACPI / PM: Introduce function for refcounting device power resources
    ACPI / PM: Add functions for manipulating lists of power resources
    ACPI / PM: Prevent acpi_power_get_inferred_state() from making changes
    ACPICA: Update version to 20101209
    ...

    Linus Torvalds
     

12 Jan, 2011

3 commits

  • Len Brown
     
  • The new GPE handler callback has 2 additional parameters, gpe_device and
    gpe_number.

    typedef
    u32 (*acpi_gpe_handler) (acpi_handle gpe_device, u32 gpe_number, void *context);

    Signed-off-by: Lin Ming
    Signed-off-by: Len Brown

    Lin Ming
     
  • …/git/tip/linux-2.6-tip

    * 'perf-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (28 commits)
    perf session: Fix infinite loop in __perf_session__process_events
    perf evsel: Support perf_evsel__open(cpus > 1 && threads > 1)
    perf sched: Use PTHREAD_STACK_MIN to avoid pthread_attr_setstacksize() fail
    perf tools: Emit clearer message for sys_perf_event_open ENOENT return
    perf stat: better error message for unsupported events
    perf sched: Fix allocation result check
    perf, x86: P4 PMU - Fix unflagged overflows handling
    dynamic debug: Fix build issue with older gcc
    tracing: Fix TRACE_EVENT power tracepoint creation
    tracing: Fix preempt count leak
    tracepoint: Add __rcu annotation
    tracing: remove duplicate null-pointer check in skb tracepoint
    tracing/trivial: Add missing comma in TRACE_EVENT comment
    tracing: Include module.h in define_trace.h
    x86: Save rbp in pt_regs on irq entry
    x86, dumpstack: Fix unused variable warning
    x86, NMI: Clean-up default_do_nmi()
    x86, NMI: Allow NMI reason io port (0x61) to be processed on any CPU
    x86, NMI: Remove DIE_NMI_IPI
    x86, NMI: Add priorities to handlers
    ...

    Linus Torvalds
     

07 Jan, 2011

1 commit

  • They are a handful of places in the code that register a die_notifier
    as a catch all in case no claims the NMI. Unfortunately, they trigger
    on events like DIE_NMI and DIE_NMI_IPI, which depending on when they
    registered may collide with other handlers that have the ability to
    determine if the NMI is theirs or not.

    The function unknown_nmi_error() makes one last effort to walk the
    die_chain when no one else has claimed the NMI before spitting out
    messages that the NMI is unknown.

    This is a better spot for these devices to execute any code without
    colliding with the other handlers.

    The two drivers modified are only compiled on x86 arches I believe, so
    they shouldn't be affected by other arches that may not have
    DIE_NMIUNKNOWN defined.

    Signed-off-by: Don Zickus
    Cc: Russ Anderson
    Cc: Corey Minyard
    Cc: openipmi-developer@lists.sourceforge.net
    Cc: dann frazier
    Signed-off-by: Peter Zijlstra
    LKML-Reference:
    Signed-off-by: Ingo Molnar

    Don Zickus
     

04 Jan, 2011

2 commits


14 Dec, 2010

1 commit

  • The IPMI smi_watcher will be used to catch the IPMI interface as they
    come or go. In order to communicate with the correct IPMI device, it
    should be confirmed whether it is what we wanted especially on the
    system with multiple IPMI devices. But the new_smi callback function
    of smi_watcher provides very limited info(only the interface number
    and dev pointer) and there is no detailed info about the low level
    interface. For example: which mechansim registers the IPMI
    interface(ACPI, PCI, DMI and so on).

    This is to add one interface that can get more info of low-level IPMI
    device. For example: the ACPI device handle will be returned for the
    pnp_acpi IPMI device.

    Signed-off-by: Zhao Yakui
    Signed-off-by: Corey Minyard
    Signed-off-by: Len Brown

    Zhao Yakui
     

28 Oct, 2010

2 commits


27 Oct, 2010

1 commit

  • Unloading ipmi module can trigger following error. (if
    CONFIG_DEBUG_SPINLOCK=y)

    [ 9633.779590] BUG: spinlock bad magic on CPU#1, rmmod/7170
    [ 9633.779606] lock: f41f5414, .magic: 00000000, .owner:
    /-1, .owner_cpu: 0
    [ 9633.779626] Pid: 7170, comm: rmmod Not tainted
    2.6.36-rc7-11474-gb71eb1e-dirty #328
    [ 9633.779644] Call Trace:
    [ 9633.779657] [] ? printk+0x18/0x1c
    [ 9633.779672] [] spin_bug+0xa3/0xf0
    [ 9633.779685] [] do_raw_spin_lock+0x7d/0x160
    [ 9633.779702] [] ? release_sysfs_dirent+0x47/0xb0
    [ 9633.779718] [] ? sysfs_addrm_finish+0xa8/0xd0
    [ 9633.779734] [] _raw_spin_lock_irqsave+0xc/0x20
    [ 9633.779752] [] cleanup_one_si+0x6a/0x200 [ipmi_si]
    [ 9633.779768] [] ? sysfs_hash_and_remove+0x72/0x80
    [ 9633.779786] [] ipmi_pnp_remove+0xd/0xf [ipmi_si]
    [ 9633.779802] [] pnp_device_remove+0x1b/0x40

    Fix this by initializing spinlocks in a smi_info_alloc() helper function,
    right after memory allocation and clearing.

    Signed-off-by: Eric Dumazet
    Acked-by: David Miller
    Cc: Yinghai Lu
    Acked-by: Corey Minyard
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Eric Dumazet
     

25 Oct, 2010

1 commit

  • * 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial: (39 commits)
    Update broken web addresses in arch directory.
    Update broken web addresses in the kernel.
    Revert "drivers/usb: Remove unnecessary return's from void functions" for musb gadget
    Revert "Fix typo: configuation => configuration" partially
    ida: document IDA_BITMAP_LONGS calculation
    ext2: fix a typo on comment in ext2/inode.c
    drivers/scsi: Remove unnecessary casts of private_data
    drivers/s390: Remove unnecessary casts of private_data
    net/sunrpc/rpc_pipe.c: Remove unnecessary casts of private_data
    drivers/infiniband: Remove unnecessary casts of private_data
    drivers/gpu/drm: Remove unnecessary casts of private_data
    kernel/pm_qos_params.c: Remove unnecessary casts of private_data
    fs/ecryptfs: Remove unnecessary casts of private_data
    fs/seq_file.c: Remove unnecessary casts of private_data
    arm: uengine.c: remove C99 comments
    arm: scoop.c: remove C99 comments
    Fix typo configue => configure in comments
    Fix typo: configuation => configuration
    Fix typo interrest[ing|ed] => interest[ing|ed]
    Fix various typos of valid in comments
    ...

    Fix up trivial conflicts in:
    drivers/char/ipmi/ipmi_si_intf.c
    drivers/usb/gadget/rndis.c
    net/irda/irnet/irnet_ppp.c

    Linus Torvalds
     

23 Oct, 2010

2 commits

  • * 'llseek' of git://git.kernel.org/pub/scm/linux/kernel/git/arnd/bkl:
    vfs: make no_llseek the default
    vfs: don't use BKL in default_llseek
    llseek: automatically add .llseek fop
    libfs: use generic_file_llseek for simple_attr
    mac80211: disallow seeks in minstrel debug code
    lirc: make chardev nonseekable
    viotape: use noop_llseek
    raw: use explicit llseek file operations
    ibmasmfs: use generic_file_llseek
    spufs: use llseek in all file operations
    arm/omap: use generic_file_llseek in iommu_debug
    lkdtm: use generic_file_llseek in debugfs
    net/wireless: use generic_file_llseek in debugfs
    drm: use noop_llseek

    Linus Torvalds
     
  • * 'trivial' of git://git.kernel.org/pub/scm/linux/kernel/git/arnd/bkl:
    block: autoconvert trivial BKL users to private mutex
    drivers: autoconvert trivial BKL users to private mutex
    ipmi: autoconvert trivial BKL users to private mutex
    mac: autoconvert trivial BKL users to private mutex
    mtd: autoconvert trivial BKL users to private mutex
    scsi: autoconvert trivial BKL users to private mutex

    Fix up trivial conflicts (due to addition of private mutex right next to
    deletion of a version string) in drivers/char/pcmcia/cm40[04]0_cs.c

    Linus Torvalds
     

18 Oct, 2010

1 commit

  • The patch below updates broken web addresses in the kernel

    Signed-off-by: Justin P. Mattock
    Cc: Maciej W. Rozycki
    Cc: Geert Uytterhoeven
    Cc: Finn Thain
    Cc: Randy Dunlap
    Cc: Matt Turner
    Cc: Dimitry Torokhov
    Cc: Mike Frysinger
    Acked-by: Ben Pfaff
    Acked-by: Hans J. Koch
    Reviewed-by: Finn Thain
    Signed-off-by: Jiri Kosina

    Justin P. Mattock
     

15 Oct, 2010

1 commit

  • All file_operations should get a .llseek operation so we can make
    nonseekable_open the default for future file operations without a
    .llseek pointer.

    The three cases that we can automatically detect are no_llseek, seq_lseek
    and default_llseek. For cases where we can we can automatically prove that
    the file offset is always ignored, we use noop_llseek, which maintains
    the current behavior of not returning an error from a seek.

    New drivers should normally not use noop_llseek but instead use no_llseek
    and call nonseekable_open at open time. Existing drivers can be converted
    to do the same when the maintainer knows for certain that no user code
    relies on calling seek on the device file.

    The generated code is often incorrectly indented and right now contains
    comments that clarify for each added line why a specific variant was
    chosen. In the version that gets submitted upstream, the comments will
    be gone and I will manually fix the indentation, because there does not
    seem to be a way to do that using coccinelle.

    Some amount of new code is currently sitting in linux-next that should get
    the same modifications, which I will do at the end of the merge window.

    Many thanks to Julia Lawall for helping me learn to write a semantic
    patch that does all this.

    ===== begin semantic patch =====
    // This adds an llseek= method to all file operations,
    // as a preparation for making no_llseek the default.
    //
    // The rules are
    // - use no_llseek explicitly if we do nonseekable_open
    // - use seq_lseek for sequential files
    // - use default_llseek if we know we access f_pos
    // - use noop_llseek if we know we don't access f_pos,
    // but we still want to allow users to call lseek
    //
    @ open1 exists @
    identifier nested_open;
    @@
    nested_open(...)
    {

    }

    @ open exists@
    identifier open_f;
    identifier i, f;
    identifier open1.nested_open;
    @@
    int open_f(struct inode *i, struct file *f)
    {

    }

    @ read disable optional_qualifier exists @
    identifier read_f;
    identifier f, p, s, off;
    type ssize_t, size_t, loff_t;
    expression E;
    identifier func;
    @@
    ssize_t read_f(struct file *f, char *p, size_t s, loff_t *off)
    {

    }

    @ read_no_fpos disable optional_qualifier exists @
    identifier read_f;
    identifier f, p, s, off;
    type ssize_t, size_t, loff_t;
    @@
    ssize_t read_f(struct file *f, char *p, size_t s, loff_t *off)
    {
    ... when != off
    }

    @ write @
    identifier write_f;
    identifier f, p, s, off;
    type ssize_t, size_t, loff_t;
    expression E;
    identifier func;
    @@
    ssize_t write_f(struct file *f, const char *p, size_t s, loff_t *off)
    {

    }

    @ write_no_fpos @
    identifier write_f;
    identifier f, p, s, off;
    type ssize_t, size_t, loff_t;
    @@
    ssize_t write_f(struct file *f, const char *p, size_t s, loff_t *off)
    {
    ... when != off
    }

    @ fops0 @
    identifier fops;
    @@
    struct file_operations fops = {
    ...
    };

    @ has_llseek depends on fops0 @
    identifier fops0.fops;
    identifier llseek_f;
    @@
    struct file_operations fops = {
    ...
    .llseek = llseek_f,
    ...
    };

    @ has_read depends on fops0 @
    identifier fops0.fops;
    identifier read_f;
    @@
    struct file_operations fops = {
    ...
    .read = read_f,
    ...
    };

    @ has_write depends on fops0 @
    identifier fops0.fops;
    identifier write_f;
    @@
    struct file_operations fops = {
    ...
    .write = write_f,
    ...
    };

    @ has_open depends on fops0 @
    identifier fops0.fops;
    identifier open_f;
    @@
    struct file_operations fops = {
    ...
    .open = open_f,
    ...
    };

    // use no_llseek if we call nonseekable_open
    ////////////////////////////////////////////
    @ nonseekable1 depends on !has_llseek && has_open @
    identifier fops0.fops;
    identifier nso ~= "nonseekable_open";
    @@
    struct file_operations fops = {
    ... .open = nso, ...
    +.llseek = no_llseek, /* nonseekable */
    };

    @ nonseekable2 depends on !has_llseek @
    identifier fops0.fops;
    identifier open.open_f;
    @@
    struct file_operations fops = {
    ... .open = open_f, ...
    +.llseek = no_llseek, /* open uses nonseekable */
    };

    // use seq_lseek for sequential files
    /////////////////////////////////////
    @ seq depends on !has_llseek @
    identifier fops0.fops;
    identifier sr ~= "seq_read";
    @@
    struct file_operations fops = {
    ... .read = sr, ...
    +.llseek = seq_lseek, /* we have seq_read */
    };

    // use default_llseek if there is a readdir
    ///////////////////////////////////////////
    @ fops1 depends on !has_llseek && !nonseekable1 && !nonseekable2 && !seq @
    identifier fops0.fops;
    identifier readdir_e;
    @@
    // any other fop is used that changes pos
    struct file_operations fops = {
    ... .readdir = readdir_e, ...
    +.llseek = default_llseek, /* readdir is present */
    };

    // use default_llseek if at least one of read/write touches f_pos
    /////////////////////////////////////////////////////////////////
    @ fops2 depends on !fops1 && !has_llseek && !nonseekable1 && !nonseekable2 && !seq @
    identifier fops0.fops;
    identifier read.read_f;
    @@
    // read fops use offset
    struct file_operations fops = {
    ... .read = read_f, ...
    +.llseek = default_llseek, /* read accesses f_pos */
    };

    @ fops3 depends on !fops1 && !fops2 && !has_llseek && !nonseekable1 && !nonseekable2 && !seq @
    identifier fops0.fops;
    identifier write.write_f;
    @@
    // write fops use offset
    struct file_operations fops = {
    ... .write = write_f, ...
    + .llseek = default_llseek, /* write accesses f_pos */
    };

    // Use noop_llseek if neither read nor write accesses f_pos
    ///////////////////////////////////////////////////////////

    @ fops4 depends on !fops1 && !fops2 && !fops3 && !has_llseek && !nonseekable1 && !nonseekable2 && !seq @
    identifier fops0.fops;
    identifier read_no_fpos.read_f;
    identifier write_no_fpos.write_f;
    @@
    // write fops use offset
    struct file_operations fops = {
    ...
    .write = write_f,
    .read = read_f,
    ...
    +.llseek = noop_llseek, /* read and write both use no f_pos */
    };

    @ depends on has_write && !has_read && !fops1 && !fops2 && !has_llseek && !nonseekable1 && !nonseekable2 && !seq @
    identifier fops0.fops;
    identifier write_no_fpos.write_f;
    @@
    struct file_operations fops = {
    ... .write = write_f, ...
    +.llseek = noop_llseek, /* write uses no f_pos */
    };

    @ depends on has_read && !has_write && !fops1 && !fops2 && !has_llseek && !nonseekable1 && !nonseekable2 && !seq @
    identifier fops0.fops;
    identifier read_no_fpos.read_f;
    @@
    struct file_operations fops = {
    ... .read = read_f, ...
    +.llseek = noop_llseek, /* read uses no f_pos */
    };

    @ depends on !has_read && !has_write && !fops1 && !fops2 && !has_llseek && !nonseekable1 && !nonseekable2 && !seq @
    identifier fops0.fops;
    @@
    struct file_operations fops = {
    ...
    +.llseek = noop_llseek, /* no read or write fn */
    };
    ===== End semantic patch =====

    Signed-off-by: Arnd Bergmann
    Cc: Julia Lawall
    Cc: Christoph Hellwig

    Arnd Bergmann
     

23 Sep, 2010

2 commits

  • When modprobe.conf has
    options ipmi_si type="kcs" ports=0xCA2 regspacings="4"

    ipmi_si can be loaded properly, but when try to unload it get:

    Sep 20 15:00:27 xx abrt: Kerneloops: Reported 1 kernel oopses to Abrt
    Sep 20 15:00:27 xx abrtd: Directory 'kerneloops-1285020027-1' creation detected
    Sep 20 15:00:27 xx abrtd: New crash /var/spool/abrt/kerneloops-1285020027-1, processing
    Sep 20 15:01:09 xx kernel: ------------[ cut here ]------------
    Sep 20 15:01:09 xx kernel: WARNING: at drivers/base/driver.c:262 driver_unregister+0x8a/0xa0()
    Sep 20 15:01:09 xx kernel: Hardware name: Sun Fire x4800
    Sep 20 15:01:09 xx kernel: Unexpected driver unregister!
    Sep 20 15:01:09 xx kernel: Modules linked in: ipmi_si(-) ipmi_msghandler ip6table_filter ip6_tables ebtable_nat ebtables ipt_MASQUERADE iptable_nat nf_nat bridge stp llc autofs4 sunrpc cpufreq_ondemand acpi_cpufreq freq_table mperf xt_physdev be2iscsi iscsi_boot_sysfs bnx2i cnic uio cxgb3i iw_cxgb3 cxgb3 mdio ib_iser rdma_cm ib_cm iw_cm ib_sa ib_mad ib_core ib_addr ipv6 iscsi_tcp libiscsi_tcp libiscsi scsi_transport_iscsi dm_mirror dm_region_hash dm_log dm_mod vhost_net macvtap macvlan tun kvm_intel kvm uinput sg ses enclosure ahci libahci pcspkr i2c_i801 i2c_core iTCO_wdt iTCO_vendor_support igb dca i7core_edac edac_core ext3 jbd mbcache sd_mod crc_t10dif megaraid_sas [last unloaded: ipmi_devintf]
    Sep 20 15:01:09 xx kernel: Pid: 10625, comm: modprobe Tainted: G W 2.6.36-rc5-tip+ #6
    Sep 20 15:01:09 xx kernel: Call Trace:
    Sep 20 15:01:09 xx kernel: [] warn_slowpath_common+0x7f/0xc0
    Sep 20 15:01:09 xx kernel: [] warn_slowpath_fmt+0x46/0x50
    Sep 20 15:01:09 xx kernel: [] driver_unregister+0x8a/0xa0
    Sep 20 15:01:09 xx kernel: [] pnp_unregister_driver+0x12/0x20
    Sep 20 15:01:09 xx kernel: [] cleanup_ipmi_si+0x3c/0xa7 [ipmi_si]
    Sep 20 15:01:09 xx kernel: [] sys_delete_module+0x1a0/0x270
    Sep 20 15:01:09 xx kernel: [] ? do_page_fault+0x150/0x320
    Sep 20 15:01:09 xx kernel: [] system_call_fastpath+0x16/0x1b
    Sep 20 15:01:09 xx kernel: ---[ end trace 0d1967161adcee0d ]---

    We need to check if ipmi_pnp_driver is loaded before we try to unload it.

    Signed-off-by: Yinghai Lu
    Cc: Corey Minyard
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Yinghai Lu
     
  • After d9e1b6c45059ccf ("ipmi: fix ACPI detection with regspacing") we get

    [ 11.026326] ipmi_si: probing via ACPI
    [ 11.030019] ipmi_si 00:09: (null) regsize 1 spacing 1 irq 0
    [ 11.035594] ipmi_si: Adding ACPI-specified kcs state machine

    on an old system with only one range for ipmi kcs range.

    Try to fix it by adding another res pointer.

    Signed-off-by: Yinghai Lu
    Signed-off-by: Corey Minyard
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Yinghai Lu
     

16 Sep, 2010

1 commit

  • All these files use the big kernel lock in a trivial
    way to serialize their private file operations,
    typically resulting from an earlier semi-automatic
    pushdown from VFS.

    None of these drivers appears to want to lock against
    other code, and they all use the BKL as the top-level
    lock in their file operations, meaning that there
    is no lock-order inversion problem.

    Consequently, we can remove the BKL completely,
    replacing it with a per-file mutex in every case.
    Using a scripted approach means we can avoid
    typos.

    file=$1
    name=$2
    if grep -q lock_kernel ${file} ; then
    if grep -q 'include.*linux.mutex.h' ${file} ; then
    sed -i '/include.*/d' ${file}
    else
    sed -i 's/include.*.*$/include /g' ${file}
    fi
    sed -i ${file} \
    -e "/^#include.*linux.mutex.h/,$ {
    1,/^\(static\|int\|long\)/ {
    /^\(static\|int\|long\)/istatic DEFINE_MUTEX(${name}_mutex);

    } }" \
    -e "s/\(un\)*lock_kernel\>[ ]*()/mutex_\1lock(\&${name}_mutex)/g" \
    -e '/[ ]*cycle_kernel_lock();/d'
    else
    sed -i -e '/include.*\/d' ${file} \
    -e '/cycle_kernel_lock()/d'
    fi

    Signed-off-by: Arnd Bergmann
    Acked-by: Corey Minyard
    Cc: openipmi-developer@lists.sourceforge.net

    Arnd Bergmann
     

13 Aug, 2010

2 commits

  • * 'params' of git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-for-linus: (22 commits)
    param: don't deref arg in __same_type() checks
    param: update drivers/acpi/debug.c to new scheme
    param: use module_param in drivers/message/fusion/mptbase.c
    ide: use module_param_named rather than module_param_call
    param: update drivers/char/ipmi/ipmi_watchdog.c to new scheme
    param: lock if_sdio's lbs_helper_name and lbs_fw_name against sysfs changes.
    param: lock myri10ge_fw_name against sysfs changes.
    param: simple locking for sysfs-writable charp parameters
    param: remove unnecessary writable charp
    param: add kerneldoc to moduleparam.h
    param: locking for kernel parameters
    param: make param sections const.
    param: use free hook for charp (fix leak of charp parameters)
    param: add a free hook to kernel_param_ops.
    param: silence .init.text references from param ops
    Add param ops struct for hvc_iucv driver.
    nfs: update for module_param_named API change
    AppArmor: update for module_param_named API change
    param: use ops in struct kernel_param, rather than get and set fns directly
    param: move the EXPORT_SYMBOL to after the definitions.
    ...

    Linus Torvalds
     
  • * 'next-devicetree' of git://git.secretlab.ca/git/linux-2.6:
    mmc_spi: Fix unterminated of_match_table
    of/sparc: fix build regression from of_device changes
    of/device: Replace struct of_device with struct platform_device

    Linus Torvalds
     

11 Aug, 2010

4 commits

  • Print out the reg spacing and size for spmi and smbios so BIOS developers
    can make them consistent.

    Also remove extra PFX on the duplicating path.

    Signed-off-by: Yinghai Lu
    Cc: Corey Minyard
    Cc: Matthew Garrett
    Cc: Len Brown
    Cc: Myron Stowe
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Yinghai Lu
     
  • Free the temporary info struct when we have duplicated ones.

    Signed-off-by: Yinghai Lu
    Cc: Corey Minyard
    Cc: Matthew Garrett
    Cc: Len Brown
    Cc: Myron Stowe
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Yinghai Lu
     
  • Fix a warning message generated by GCC, and also updates a web address
    pointing to a pdf containing information.

    CC [M] drivers/char/ipmi/ipmi_si_intf.o
    drivers/char/ipmi/ipmi_si_intf.c: In function 'try_init_spmi':
    drivers/char/ipmi/ipmi_si_intf.c:2016:8: warning: variable 'addr_space' set but not used

    Signed-off-by: Sergey V.
    Signed-off-by: Justin P. Mattock
    Acked-by: Corey Minyard
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Justin P. Mattock
     
  • This is one of the most interesting users of module parameters in the
    tree, so weaning it off the old-style non-const module_param_call
    scheme is a useful exercise.

    I was confused by set_param_int/get_param_int (vs. the normal
    param_set_int and param_get_int), so I renamed set_param_int to
    set_param_timeout, and re-used param_get_int directly instead of
    get_param_int. I also implemented param_check_wdog_ifnum and
    param_check_timeout, so now the ifnum_to_use and timeout/pretimeout
    parameters can just use plain module_param().

    Signed-off-by: Rusty Russell
    Cc: Corey Minyard
    Cc: openipmi-developer@lists.sourceforge.net

    Rusty Russell
     

10 Aug, 2010

1 commit

  • After the commit that changed ipmi_si detecting sequence from SMBIOS/ACPI
    to ACPI/SMBIOS,

    | commit 754d453185275951d39792865927ec494fa1ebd8
    | Author: Matthew Garrett
    | Date: Wed May 26 14:43:47 2010 -0700
    |
    | ipmi: change device discovery order
    |
    | The ipmi spec provides an ordering for si discovery. Change the driver to
    | match, with the exception of preferring smbios to SPMI as HPs (at least)
    | contain accurate information in the former but not the latter.

    ipmi_si can not be initialized.

    [ 138.799739] calling init_ipmi_devintf+0x0/0x109 @ 1
    [ 138.805050] ipmi device interface
    [ 138.818131] initcall init_ipmi_devintf+0x0/0x109 returned 0 after 12797 usecs
    [ 138.822998] calling init_ipmi_si+0x0/0xa90 @ 1
    [ 138.840276] IPMI System Interface driver.
    [ 138.846137] ipmi_si: probing via ACPI
    [ 138.849225] ipmi_si 00:09: [io 0x0ca2] regsize 1 spacing 1 irq 0
    [ 138.864438] ipmi_si: Adding ACPI-specified kcs state machine
    [ 138.870893] ipmi_si: probing via SMBIOS
    [ 138.880945] ipmi_si: Adding SMBIOS-specified kcs state machineipmi_si: duplicate interface
    [ 138.896511] ipmi_si: probing via SPMI
    [ 138.899861] ipmi_si: Adding SPMI-specified kcs state machineipmi_si: duplicate interface
    [ 138.917095] ipmi_si: Trying ACPI-specified kcs state machine at i/o address 0xca2, slave address 0x0, irq 0
    [ 138.928658] ipmi_si: Interface detection failed
    [ 138.953411] initcall init_ipmi_si+0x0/0xa90 returned 0 after 110847 usecs

    in smbios has
    DMI/SMBIOS
    Handle 0x00C5, DMI type 38, 18 bytes
    IPMI Device Information
    Interface Type: KCS (Keyboard Control Style)
    Specification Version: 2.0
    I2C Slave Address: 0x00
    NV Storage Device: Not Present
    Base Address: 0x0000000000000CA2 (I/O)
    Register Spacing: 32-bit Boundaries
    in DSDT has
    Device (BMC)
    {

    Name (_HID, EisaId ("IPI0001"))
    Method (_STA, 0, NotSerialized)
    {
    If (LEqual (OSN, Zero))
    {
    Return (Zero)
    }

    Return (0x0F)
    }

    Name (_STR, Unicode ("IPMI_KCS"))
    Name (_UID, Zero)
    Name (_CRS, ResourceTemplate ()
    {
    IO (Decode16,
    0x0CA2, // Range Minimum
    0x0CA2, // Range Maximum
    0x00, // Alignment
    0x01, // Length
    )
    IO (Decode16,
    0x0CA6, // Range Minimum
    0x0CA6, // Range Maximum
    0x00, // Alignment
    0x01, // Length
    )
    })
    Method (_IFT, 0, NotSerialized)
    {
    Return (One)
    }

    Method (_SRV, 0, NotSerialized)
    {
    Return (0x0200)
    }
    }

    so the reg spacing should be 4 instead of 1.

    Try to calculate regspacing for this kind of system.

    Observed on a Sun Fire X4800. Other OSes work and pass certification.

    Signed-off-by: Yinghai Lu
    Cc: Bjorn Helgaas
    Acked-by: Matthew Garrett
    Cc: Len Brown
    Cc: Myron Stowe
    Cc: Corey Minyard
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Yinghai Lu