The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Программное "охлаждение" процессоров AMD Athlon/Duron под Linux. (amd cpu kernel linux patch idle hardware)


<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>
Ключевые слова: amd, cpu, kernel, linux, patch, idle, hardware,  (найти похожие документы)
From: Daniel Nofftz <nofftz@castor.uni-trier.de> Newsgroups: mlist.linux.kernel Subject: Программное "охлаждение" процессоров AMD Athlon/Duron под Linux. Патчи подходят для процессоров AMD Athlon/Duron/AthlonXP, Поддерживаемые чипсеты: VIA kt133/kx133/kt133a, kt266/kt266a Athlon-Powersaving-HOWTO: http://cip.uni-trier.de/nofftz/linux/Athlon-Powersaving-HOWTO.html Страница автора патча: http://cip.uni-trier.de/nofftz/linux/ Утилита для user-level охлаждения (Via KT133 и KX133 (VT8363 и VT8371/VT82C686x)): http://mpet.freeservers.com/LVCool.html
Для работы патча необходимо активировать ACPI при сборке ядра. cd /usr/src/ cat amd_cool.diff | patch -p0 cd linux make menuconfig В "general.setup" активируем "acpi subsystem", "acpi bus" и "acpi Processor entry" (Внимание, при включенном ACPI не будет работать APM). В lilo.conf пропишите: append=" amd_disconnect=yes".
Можно обойтись без патча, переключая режимы acpi при помощи утилиты setpci. Для этого необходимо включить ACPI в ядре, как было описано выше. Для kt133/133a и kx133: Включить "охлаждение": setpci -v -H1 -s 0:0.0 52=EB Выключить: setpci -v -H1 -s 0:0.0 52=6B Для kt266/266a: Включить: setpci -v -H1 -s 0:0.0 92=EB Выключить: setpci -v -H1 -s 0:0.0 92=6B
Две версии патча (для linux ядра 2.4.17): amd_cool.diff
--- linux-2.4.17-orig/drivers/pci/quirks.c Sun Nov 11 19:09:33 2001 +++ linux/drivers/pci/quirks.c Tue Jan 22 16:50:05 2002 @@ -21,6 +21,23 @@ #undef DEBUG +/* Power Saving for Athlon/Duron CPUs on Via Chipsets has to be enabled by + * kernel-boot-option "amd_disconnect=yes" . This is cause it looks like + * there are some stability problems on some boards when this option is + * enabled. + */ + +int enable_amd_disconnect; + +static int __init amd_disconnect_setup (char *str) { + if(!strncmp(str,"yes",3)) { + enable_amd_disconnect=1; + } + return 1; +} + +__setup("amd_disconnect=", amd_disconnect_setup); + /* Deal with broken BIOS'es that neglect to enable passive release, which can cause problems in combination with the 82441FX/PPro MTRRs */ static void __init quirk_passive_release(struct pci_dev *dev) @@ -146,6 +163,47 @@ printk(KERN_INFO "Applying VIA southbridge workaround.\n"); } +/* Power Saving for Athlon/Duron/AthonXP CPUs on Via Chipsets. + * Found in the net and modified for supporting KT266/KT266A chipsets + * by Daniel Nofftz <nofftz@castor.uni-trier.de> + * This Funktion must be enabled by kernel booting option "via_disconnect=yes"! + */ + +static void __init quirk_amddisconnect(struct pci_dev *dev) +{ + u16 did; + u32 res32; + + if(!enable_amd_disconnect) return; + + pci_read_config_word(dev,PCI_DEVICE_ID,&did); + + + if(did==PCI_DEVICE_ID_VIA_8367_0) + { + pci_read_config_dword(dev,0x92&0xfc,&res32); + if ((res32&0x00800000)==0) + { + printk(KERN_INFO "Enabling disconnect in VIA northbridge: KT266/266A chipset found.\n"); + res32|=0x00800000; + pci_write_config_dword(dev,0x92&0xfc,res32); + } else + printk(KERN_INFO "Disconnect already anabled in VIA northbridge.\n"); + + } + else if((did==PCI_DEVICE_ID_VIA_8363_0)||(did==PCI_DEVICE_ID_VIA_8371_0)) + { + pci_read_config_dword(dev,0x52&0xfc,&res32); + if ((res32&0x00800000)==0) + { + printk(KERN_INFO "Enabling disconnect in VIA northbridge: KT133/KX133 chipset found\n"); + res32|=0x00800000; + pci_write_config_dword(dev,0x52&0xfc,res32); + } else + printk(KERN_INFO "Disconnect already anabled in VIA northbridge.\n"); + + } +} /* * VIA Apollo VP3 needs ETBF on BT848/878 */ @@ -485,6 +543,9 @@ { PCI_FIXUP_FINAL, PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8363_0, quirk_vialatency }, { PCI_FIXUP_FINAL, PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8371_1, quirk_vialatency }, { PCI_FIXUP_FINAL, PCI_VENDOR_ID_VIA, 0x3112 /* Not out yet ? */, quirk_vialatency }, + { PCI_FIXUP_FINAL, PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8367_0, quirk_amddisconnect }, + { PCI_FIXUP_FINAL, PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8363_0, quirk_amddisconnect }, + { PCI_FIXUP_FINAL, PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8371_0, quirk_amddisconnect }, { PCI_FIXUP_FINAL, PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C576, quirk_vsfx }, { PCI_FIXUP_FINAL, PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C597_0, quirk_viaetbf }, { PCI_FIXUP_HEADER, PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C597_0, quirk_vt82c598_id },
amd_cool_new.diff
--- linux-2.4.17-orig/drivers/pci/quirks.c Sun Nov 11 19:09:33 2001 +++ linux/drivers/pci/quirks.c Wed Jan 30 09:57:20 2002 @@ -18,9 +18,36 @@ #include <linux/pci.h> #include <linux/init.h> #include <linux/delay.h> +#include <asm/msr.h> #undef DEBUG +/* Power Saving for Athlon/Duron CPUs on Via Chipsets has to be enabled by + * kernel-boot-option "amd_disconnect=yes" . This is cause it looks like + * there are some stability problems on some boards when this option is + * enabled. + */ + +int enable_amd_disconnect = 0; +int force_amd_clk = 0; + + +static int __init force_amd_clk_setup (char *str) { + if(!strncmp(str,"yes",3)) { + force_amd_clk=1; + } + return 1; +} +static int __init amd_disconnect_setup (char *str) { + if(!strncmp(str,"yes",3)) { + enable_amd_disconnect=1; + } + return 1; +} + +__setup("amd_disconnect=", amd_disconnect_setup); +__setup("force_amd_clk=", force_amd_clk_setup); + /* Deal with broken BIOS'es that neglect to enable passive release, which can cause problems in combination with the 82441FX/PPro MTRRs */ static void __init quirk_passive_release(struct pci_dev *dev) @@ -146,6 +173,58 @@ printk(KERN_INFO "Applying VIA southbridge workaround.\n"); } +/* Power Saving for Athlon/Duron/AthonXP CPUs on Via Chipsets. + * Found in the net and modified for supporting KT266/KT266A chipsets + * by Daniel Nofftz <nofftz@castor.uni-trier.de> + * This Funktion must be enabled by kernel booting option "via_disconnect=yes"! + */ + +static void __init quirk_amddisconnect(struct pci_dev *dev) +{ + u16 did; + u32 res32; + u32 eins, zwei; + + if(!enable_amd_disconnect) return; + + pci_read_config_word(dev,PCI_DEVICE_ID,&did); + + rdmsr(0xc001001b , eins, zwei); + + printk(KERN_INFO "Athlon/Duron CLK_Ctrl Value found : %x\n", eins); + if(force_amd_clk) + { + wrmsr(0xc001001b, 0xfff0d22f, 0xd22f); + rdmsr(0xc001001b , eins, zwei); + + printk(KERN_INFO "Athlon/Duron CLK_Ctrl Value set to : %x\n", eins); + + } + if(did==PCI_DEVICE_ID_VIA_8367_0) + { + pci_read_config_dword(dev,0x92&0xfc,&res32); + if ((res32&0x00800000)==0) + { + printk(KERN_INFO "Enabling disconnect in VIA northbridge: KT266/266A chipset found.\n"); + res32|=0x00800000; + pci_write_config_dword(dev,0x92&0xfc,res32); + } else + printk(KERN_INFO "Disconnect already anabled in VIA northbridge.\n"); + + } + else if((did==PCI_DEVICE_ID_VIA_8363_0)||(did==PCI_DEVICE_ID_VIA_8371_0)) + { + pci_read_config_dword(dev,0x52&0xfc,&res32); + if ((res32&0x00800000)==0) + { + printk(KERN_INFO "Enabling disconnect in VIA northbridge: KT133/KX133 chipset found\n"); + res32|=0x00800000; + pci_write_config_dword(dev,0x52&0xfc,res32); + } else + printk(KERN_INFO "Disconnect already anabled in VIA northbridge.\n"); + + } +} /* * VIA Apollo VP3 needs ETBF on BT848/878 */ @@ -485,6 +564,9 @@ { PCI_FIXUP_FINAL, PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8363_0, quirk_vialatency }, { PCI_FIXUP_FINAL, PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8371_1, quirk_vialatency }, { PCI_FIXUP_FINAL, PCI_VENDOR_ID_VIA, 0x3112 /* Not out yet ? */, quirk_vialatency }, + { PCI_FIXUP_FINAL, PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8367_0, quirk_amddisconnect }, + { PCI_FIXUP_FINAL, PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8363_0, quirk_amddisconnect }, + { PCI_FIXUP_FINAL, PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8371_0, quirk_amddisconnect }, { PCI_FIXUP_FINAL, PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C576, quirk_vsfx }, { PCI_FIXUP_FINAL, PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C597_0, quirk_viaetbf }, { PCI_FIXUP_HEADER, PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C597_0, quirk_vt82c598_id },

<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>

Обсуждение [ RSS ]
  • 1, Rinus (?), 11:53, 20/10/2004 [ответить]  
  • +/
    Для чипсета KT266A команда будет такая:
    setpci -v -H1 -s 0:0.0 95=1E
    Её проще просто прописать в rc.local
     
  • 2, Аноним (-), 16:42, 30/07/2005 [ответить]  
  • +/
    Клас. На 20 градусов уменшело температуру
     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру