[Comm] cpufreq-simple и P4 (was: Бета 6.0.1 KDesktop 2012.02.09)

Michael Shigorin mike на osdn.org.ua
Пт Мар 2 23:12:27 MSK 2012


On Thu, Feb 23, 2012 at 08:39:24AM +0400, Геннадий Ищенко wrote:
> > > > > > grep speedstep /etc/modules
> > > > > > rpm -q cpufreq-simple
> > > > > Привожу все, что просили:
> > > > Только все это лучше в багзиллу и уже там разбираться.
> > > Я в багзиллу только раз и положил что-то года три назад и долго
> > > мучился с оформлением.  А тут и сформулировать трудно.
> > Тут как раз сформулировать просто -- если хотите, давайте вместе.
> > Собственно, ответы на мои вопросы из Вашего же письма как раз и
> > пойдут; вешать стоит на проект Sisyphus, компонент cpufreq-simple
> > с остальным по умолчанию.
> Михаил, буду очень благодарен, если это сделаете вы. Я прошлый
> раз возился довольно долго и нет полной уверенности, что все
> сделал правильно, да и забыл уже где и что. Опыт вещь великая,
> а у меня его нет и, самое главное, особенно и нет смысла
> приобретать, так как нахожу что-то очень редко, а возраст
> такой, что все, что не используется - забывается быстро.

Да уж, новое -- это хорошо забытое старое:
https://bugzilla.altlinux.org/6074

Там, правда, про P4M -- но вот как раз для него из P4 и есть
смысл пытаться грузить speedstep-ich; пригодился на паттерн.

Проверьте, что выдаёт приложенный скрипт? (не должен ничего)

2 community: у кого есть машинки с Pentium 4 и Mobile P4 --
пожалуйста, прогоните его тоже.  В идеале заодно попробовав
загрузить предложенный модуль, если вывод непуст.

-- 
 ---- WBR, Michael Shigorin <mike на altlinux.ru>
  ------ Linux.Kiev http://www.linux.kiev.ua/
----------- следующая часть -----------
#!/bin/sh -efu
# Try to detect cpufreq module,
# Heavy based on code from Debian's loadcpufreq init script.

CPUINFO=/proc/cpuinfo
IOPORTS=/proc/ioports

if [ ! -f $CPUINFO ] ; then
	echo "$CPUINFO not detected..." >&2
	return 1
fi

MODEL_NAME=$(grep '^model name' "$CPUINFO" | head -1 | sed -e 's/^.*: //;')
MODEL_ID=$(grep -E '^model[[:space:]]+:' "$CPUINFO" | head -1 | sed -e 's/^.*: //;')
CPU=$(grep -E '^cpud[^:]+:' "$CPUINFO" | head -1 | sed -e 's/^.*: //;')
VENDOR_ID=$(grep -E '^vendor_id[^:]+:' "$CPUINFO" | head -1 | sed -e 's/^.*: //;')
CPU_FAMILY=$(sed -e '/^cpu family/ {s/.*: //;p;Q};d' $CPUINFO)

MODULE=

case "$VENDOR_ID" in
	GenuineIntel*)
		# If the CPU has the est flag, it supports enhanced
		# speedstep and should use the acpi-cpufreq driver
		if [ "$(grep est $CPUINFO)" ]; then
			MODULE=acpi-cpufreq
		elif [ $CPU_FAMILY = 15 ]; then
			# Right. Check if it's a P4 without est.
			case "$MODEL_NAME" in
				Mobile\ Intel\(R\)\ Pentium\(R\)*)
				MODULE=speedstep-ich
				;;
			esac
			# no use of p4-clockmod at all
		else
			# Two modules for PIII-M depending the chipset.
			# modprobe speedstep-ich || modprobe speestep-smi
			# would be another way
			if [ -f $IOPORTS ] && grep -q 'Intel .*ICH' $IOPORTS ; then
				PIII_MODULE=speedstep-ich
			else
				PIII_MODULE=speedstep-smi
			fi

			# So it doesn't have Enhanced Speedstep, and it's not a
			# P4. It could be a Speedstep PIII, or it may be
			# unsupported. There's no terribly good programmatic way
			# of telling.
			case "$MODEL_NAME" in
				Intel\(R\)\ Pentium\(R\)\ III\ Mobile\ CPU*)
					MODULE=$PIII_MODULE
					;;

					# JD: says this works with cpufreq_userspace

					Mobile\ Intel\(R\)\ Pentium\(R\)\ III\ CPU\ -\ M*)
					MODULE=$PIII_MODULE
					;;

					# https://bugzilla.ubuntu.com/show_bug.cgi?id=4262
					# UNCONFIRMED
					Pentium\ III\ \(Coppermine\)*)
					MODULE=$PIII_MODULE
					;;
			esac
		fi
		;;
	AuthenticAMD*)
		# Hurrah. This is nice and easy.
		case $CPU_FAMILY in
			5)
				# K6
				MODULE=powernow-k6
				;;
			6)
				# K7
				MODULE=powernow-k7
				;;
			15|16|17|20)
				# K8
				MODULE=powernow-k8
				;;
		esac
		;;
	CentaurHauls*)
		# VIA
		if [ $CPU_FAMILY = 6 ]; then
			case $MODEL_ID in
				10) # VIA C7 VIA Esther
					# try acpi_cpufreq as
					# suggested in the kernel
					# configuration help
					MODULE=acpi_cpufreq
					;;
				*)
					MODULE=longhaul
					;;
			esac
		fi
		;;
	GenuineTMx86*)
		# Transmeta
		if [ "$(grep longrun $CPUINFO)" ]; then
			MODULE=longrun
		fi
		;;
esac

if [ -n "$MODULE" ]; then
	echo "$MODULE"
else
	exit 1
fi


Подробная информация о списке рассылки community