Subject: viapm && SSE on broken bioses
To: None <>
From: Sergio Jimenez <>
List: tech-kern
Date: 07/25/2004 08:21:14
 Hi, recently I've made a little patch to get vt8231 power                                                                      
management working throught viapm as OpenBSD has, but like on OpenBSD                                                                  
I'm getting some weird values and I'd like to know if someone could test                                                               
the patch on his system because I'm using it on my laptop and I don't                                                                  
really know if this mobile has some modifications or this chipset is not                                                               
completly compatible with viapm implementation. Any tip will be welcomed                                                               
----- pcidevs -----                                                                                                                    
Index: pcidevs                                                                                                                         
RCS file: /cvsroot/src/sys/dev/pci/pcidevs,v                                                                                           
retrieving revision 1.632                                                                                                              
diff -u -r1.632 pcidevs                                                                                                                
--- pcidevs     17 Jul 2004 20:04:32 -0000      1.632                                                                                  
+++ pcidevs     22 Jul 2004 18:10:52 -0000                                                                                             
@@ -2679,6 +2679,7 @@                                                                                                                  
 product VIATECH VT8233_AC97    0x3059  VT8233/VT8235 AC-97 Audio Controller                                                           
 product VIATECH        VT6102          0x3065  VT6102 (Rhine II) 10/100 Ethernet                                                      
 product VIATECH VT82C686A_MC97 0x3068  VT82C686A MC-97 Modem Controller                                                               
+product VIATECH VT8231_PWR     0x8235  VT8231 Power Management Controller                                                             
 product VIATECH VT8233         0x3074  VT8233 PCI-ISA Bridge                                                                          
 product VIATECH VT8366         0x3099  VT8366 (Apollo KT266) CPU-PCI Bridge                                                           
 product VIATECH VT8653         0x3101  VT8653 (Apollo Pro 266T) CPU-PCI Bridge                                                        
----- pcidevs -----                                                                                                                    
----- viapm.c -----                                                                                                                    
Index: viapm.c                                                                                                                         
RCS file: /cvsroot/src/sys/dev/pci/viapm.c,v                                                                                           
retrieving revision 1.9                                                                                                                
diff -u -r1.9 viapm.c                                                                                                                  
--- viapm.c     1 Jan 2003 00:10:23 -0000       1.9                                                                                    
+++ viapm.c     22 Jul 2004 18:12:44 -0000                                                                                             
@@ -67,7 +67,8 @@                                                                                                                      
        struct pci_attach_args *pa = aux;                                                                                              
        if (PCI_VENDOR(pa->pa_id) == PCI_VENDOR_VIATECH &&                                                                             
-           PCI_PRODUCT(pa->pa_id) == PCI_PRODUCT_VIATECH_VT82C686A_SMB)                                                               
+           (PCI_PRODUCT(pa->pa_id) == PCI_PRODUCT_VIATECH_VT82C686A_SMB ||                                                            
+             PCI_PRODUCT(pa->pa_id) == PCI_PRODUCT_VIATECH_VT8231_PWR))                                                               
                return 1;                                                                                                              
        return 0;                                                                                                                      
----- viapm.c -----                                                                                                                    
Also, I'm starting to figure out on how get SSE working on this (f***ing)                                                              
laptop, because it seems like my bios is quit broken (as many other amd                                                                
K7 systems) and it doesn't set the needed bit.                                                                                         
I'm looking on linux kernel sources because they've got a workaround on                                                                
this. The main problem is that I've ever tried to work at kernel level so                                                              
I am extremely newbie and I'd like some advices.                                                                                       
I'm wondering if identcpu.c is the proper place to work with this and                                                                  
also I've seen the "amd_family6_probe" function...well I'm really asking                                                               
about some points on where to start :)                                                                                                 
As you could see here, SSE feature is not set:                                                                                         
cpu0: AMD Athlon XP 1600+  (686-class), 1400.13 MHz, id 0x680                                                                          
cpu0: features c1cbf9ff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,SEP,MTRR>                                                                   
cpu0: features c1cbf9ff<PGE,MCA,CMOV,PAT,PSE36,MPC,MMXX,MMX>                                                                           
cpu0: features c1cbf9ff<FXSR,3DNOW2,3DNOW>                                                                                             
Thanks in advance for any help :)