[lkml]   [2008]   [Jul]   [25]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
    Patch in this message
    SubjectRe: Kernel BUG in 2.6.26-git series
    On Fri, Jul 25, 2008 at 09:37:44AM -0500, Larry Finger wrote:
    > In the current git pulls from Linus's tree, I get a kernel BUG if
    > CONFIG_SCHED_SMT is defined. It does not always appear, but when it does,
    > it is late in the bootup sequence. Perhaps there is a timing issue. This is
    > an x86_64 system on an HP dv2815nr notebook with and AMD Turion X2 CPU. My
    > distro is openSUSE 11.0.

    A couple of people ran into that. It was a latent bug triggered by
    some changes of mine. Here's the patch.


    commit a2ab909933f8c8623282979dfa64f3e358bdb9fc
    Author: Andi Kleen <ak@gargoyle.(none)>
    Date: Thu Jul 24 21:57:40 2008 +0200

    Make scheduler sysfs attributes sysdev class devices

    They are really class devices, but were incorrectly declared. This leads
    to crashes with the recent changes that makes non normal sysdevs
    use a different prototype.

    Signed-off-by: Andi Kleen <>

    diff --git a/kernel/sched.c b/kernel/sched.c
    index 6acf749..24358ca 100644
    --- a/kernel/sched.c
    +++ b/kernel/sched.c
    @@ -7641,34 +7641,34 @@ static ssize_t sched_power_savings_store(const char *buf, size_t count, int smt)

    #ifdef CONFIG_SCHED_MC
    -static ssize_t sched_mc_power_savings_show(struct sys_device *dev,
    - struct sysdev_attribute *attr, char *page)
    +static ssize_t sched_mc_power_savings_show(struct sysdev_class *class,
    + char *page)
    return sprintf(page, "%u\n", sched_mc_power_savings);
    -static ssize_t sched_mc_power_savings_store(struct sys_device *dev,
    - struct sysdev_attribute *attr,
    +static ssize_t sched_mc_power_savings_store(struct sysdev_class *class,
    const char *buf, size_t count)
    return sched_power_savings_store(buf, count, 0);
    -static SYSDEV_ATTR(sched_mc_power_savings, 0644, sched_mc_power_savings_show,
    - sched_mc_power_savings_store);
    +static SYSDEV_CLASS_ATTR(sched_mc_power_savings, 0644,
    + sched_mc_power_savings_show,
    + sched_mc_power_savings_store);

    -static ssize_t sched_smt_power_savings_show(struct sys_device *dev,
    - struct sysdev_attribute *attr, char *page)
    +static ssize_t sched_smt_power_savings_show(struct sysdev_class *dev,
    + char *page)
    return sprintf(page, "%u\n", sched_smt_power_savings);
    -static ssize_t sched_smt_power_savings_store(struct sys_device *dev,
    - struct sysdev_attribute *attr,
    +static ssize_t sched_smt_power_savings_store(struct sysdev_class *dev,
    const char *buf, size_t count)
    return sched_power_savings_store(buf, count, 1);
    -static SYSDEV_ATTR(sched_smt_power_savings, 0644, sched_smt_power_savings_show,
    +static SYSDEV_CLASS_ATTR(sched_smt_power_savings, 0644,
    + sched_smt_power_savings_show,

     \ /
      Last update: 2008-07-25 20:19    [W:0.022 / U:93.744 seconds]
    ©2003-2017 Jasper Spaans. hosted at Digital OceanAdvertise on this site