Subject: RE: viapm && SSE on broken bioses
To: None <>
From: Sergio Jimenez <>
List: tech-kern
Date: 07/25/2004 08:37:42
	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_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 advanced for any help.


PS: Sorry about previous mail, some "invisible before sending" problems
with format.