lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Tue, 14 Jun 2011 23:28:27 +0200
From:	Tobias Diedrich <ranma+xen@...edrich.de>
To:	Konrad Rzeszutek Wilk <konrad.wilk@...cle.com>
Cc:	xen-users@...ts.xensource.com, linux-kernel@...r.kernel.org
Subject: Re: 3.0.0-rc2: Xen: powernow-k8: Kernel panic - not syncing:
 Attempted to kill init!

Konrad Rzeszutek Wilk wrote:
> On Tue, Jun 14, 2011 at 03:46:34PM +0200, Tobias Diedrich wrote:
> > [    5.740826] powernow-k8: fid 0x2 (1000 MHz), vid 0x12
> > [    5.740941] powernow-k8: fid 0xa (1800 MHz), vid 0xa
> > [    5.741057] powernow-k8: fid 0xc (2000 MHz), vid 0x8
> > [    5.741170] powernow-k8: fid 0xe (2200 MHz), vid 0x8
> > [    5.741304] cpufreq_stats_create_table: policy->cur is 800000
> > [    5.741475] last_index set to -1 in cpufreq_stats_create_table!
> > 
> > I think policy->cur used here probably set in powernowk8_cpu_init.
> 
> Yup, and there is not much that can be done there. Lets try this patch

Thanks, this works fine for suppressing the crash.

> diff --git a/arch/x86/kernel/cpu/cpufreq/powernow-k8.c b/arch/x86/kernel/cpu/cpufreq/powernow-k8.c
> index 2368e38..7e4a664 100644
> --- a/arch/x86/kernel/cpu/cpufreq/powernow-k8.c
> +++ b/arch/x86/kernel/cpu/cpufreq/powernow-k8.c
> @@ -1079,8 +1079,10 @@ static int transition_frequency_fidvid(struct powernow_k8_data *data,
>  	}
>  
>  	res = transition_fid_vid(data, fid, vid);
> -	freqs.new = find_khz_freq_from_fid(data->currfid);
> +	if (res)
> +		return res;
>  
> +	freqs.new = find_khz_freq_from_fid(data->currfid);
>  	for_each_cpu(i, data->available_cores) {
>  		freqs.cpu = i;
>  		cpufreq_notify_transition(&freqs, CPUFREQ_POSTCHANGE);
> @@ -1112,6 +1114,9 @@ static int transition_frequency_pstate(struct powernow_k8_data *data,
>  	}
>  
>  	res = transition_pstate(data, pstate);
> +	if (res)
> +		return res;
> +
>  	freqs.new = find_khz_freq_from_pstate(data->powernow_table, pstate);
>  
>  	for_each_cpu(i, data->available_cores) {
> diff --git a/drivers/cpufreq/cpufreq_stats.c b/drivers/cpufreq/cpufreq_stats.c
> index 4f1b8de..0ecb1e2 100644
> --- a/drivers/cpufreq/cpufreq_stats.c
> +++ b/drivers/cpufreq/cpufreq_stats.c
> @@ -298,11 +298,13 @@ static int cpufreq_stat_notifier_trans(struct notifier_block *nb,
>  	old_index = stat->last_index;
>  	new_index = freq_table_get_index(stat, freq->new);
>  
> -	cpufreq_stats_update(freq->cpu);
> -	if (old_index == new_index)
> +	/* We can't do stat->time_in_state[-1]= .. */
> +	if (old_index == -1 || new_index == -1)
>  		return 0;
>  
> -	if (old_index == -1 || new_index == -1)
> +	cpufreq_stats_update(freq->cpu);
> +
> +	if (old_index == new_index)
>  		return 0;
>  
>  	spin_lock(&cpufreq_stats_lock);

-- 
Tobias						PGP: http://8ef7ddba.uguu.de
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ