Hi, I'm sorry, this is going to be a long email. I manage several OpenBSD servers most of them 3.4, a couple 3.9 and one 3.7. This particular question is about an OpenBSD 3.4-stable server that has been running for years without needing a single reboot. It runs postfix+amavis+clamav, mysql and apache and some other custom made services to integrate a Webhosting Control Panel which controls all servers. This 3.4-stable server has been working flawlessly with a generic kernel since it was first installed and i always thank the OpenBSD team very much for such stability.
The thing now is that this machine is on a common computer case, and i need to put it in a rackable case to save space on the Datacenter. But the actual motherboard won't fit in a rackable case. So we had to go with a new motherboard and what i got is an Intel D915GAV, which seems to be well supported on 3.9 , i've been testing this new hardware with a 3.9 and had no problems, but i had some issues when trying it with 3.4. Particularly the problem is recognizing the ethernet, which is an Intel PRO 10/100. This ethernet card is recognized by 3.4 on other motherboards, so i know the driver must be in the kernel source. Besides that, i think that there should be an easy way and process to add new hardware features to old OpenBSD versions. I consider that needing to upgrade just to add a NIC is just too 'bill gatish' , like having to reinstall a Windows 2003 server just when needing to change the serial number. I know that if i upgrade to 3.9, or make a 3.9 fresh install that would solve the issue. But i would really hate doing that just because of this hardware change, as i said before, this 3.4 has been running perfectly, never had a single crash or problem, so i would really like to find a way to recognize this ethernet on this 3.4,and other important devices i might need. When i switched the disks to this new machine with the new mother, i encountered some errors while booting, several devices where not recognized, most of them USB devices which i don't need so i don't care about those, but i care about the ethernet device, and in doubt with others. I am not a programmer, so this might be dangerous to me to do, but i've seen this: According to the dmesg with the new hardware , i've seen this line (i will paste full dmesg at bottom): pci6 at ppb5 bus 6 vendor "Intel", unknown product 0x1064 (class network subclass ethernet, rev 0x01) at pci6 dev 8 function 0 not configured So i figure out that this ethernet device is using 0x1064. Then i grep for 0x1064 into src/sys/dev/pci/ from a -current source: corsair:/u/system/cvs-sync/src/sys/dev/pci{58}# grep 0x1064 * pcidevs,v:product INTEL 82801FB_LAN_2 0x1064 82801FB LAN pcidevs,v:product LINKSYS EG1064 0x1064 EG1064 pcidevs,v:product INTEL 82801FB_LAN 0x1064 82801FB LAN pcidevs,v:product INTEL PRO_100_VE_7 0x1064 PRO/100 VE (82562EZ) pcidevs,v:product LINKSYS EG1064 0x1064 EG1064 pcidevs,v:vendor ALCATEL 0x1064 Alcatel CIT pcidevs,v:product LINKSYS EG1064 0x1064 EG1064 pcidevs.h,v:#define PCI_PRODUCT_INTEL_82801FB_LAN_2 0x1064 /* 82801FB LAN */ pcidevs.h,v:#define PCI_PRODUCT_LINKSYS_EG1064 0x1064 /* EG1064 */ pcidevs.h,v:#define PCI_PRODUCT_INTEL_82801FB_LAN 0x1064 /* 82801FB LAN */ pcidevs.h,v:#define PCI_PRODUCT_INTEL_PRO_100_VE_7 0x1064 /* PRO/100 VE (82562EZ) */ pcidevs.h,v:#define PCI_VENDOR_ALCATEL 0x1064 /* Alcatel CIT */ pcidevs.h,v:#define PCI_PRODUCT_LINKSYS_EG1064 0x1064 /* EG1064 */ corsair:/u/system/cvs-sync/src/sys/dev/pci{59}# The ethernet must be INTEL PRO_100_VE_7 for the OpenBSD kernel then. So i think i should add in a 3.4 kernel src this in src/sys/dev/pci/pcidevs: product INTEL PRO_100_VE_7 0x1064 PRO/100 VE And add this in pcidevs.h: #define PCI_PRODUCT_INTEL_PRO_100_VE_7 0x1064 /* PRO/100 VE (82562EZ) */ After that i grep for 100_VE_7 in the -current kernel src , inside src/sys/dev/pci: corsair:/u/system/cvs-sync/src/sys/dev/pci{60}# grep 100_VE_7 * if_fxp_pci.c,v: { PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_PRO_100_VE_7 }, if_fxp_pci.c,v: { PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_PRO_100_VE_7 }, if_fxp_pci.c,v: { PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_PRO_100_VE_7 }, pcidevs,v:product INTEL PRO_100_VE_7 0x106a PRO/100 VE pcidevs,v:product INTEL PRO_100_VE_7 0x1065 PRO/100 VE pcidevs,v:product INTEL PRO_100_VE_7 0x1064 PRO/100 VE (82562EZ) pcidevs.h,v:#define PCI_PRODUCT_INTEL_PRO_100_VE_7 0x106a /* PRO/100 VE */ pcidevs.h,v:#define PCI_PRODUCT_INTEL_PRO_100_VE_7 0x1065 /* PRO/100 VE */ pcidevs.h,v:#define PCI_PRODUCT_INTEL_PRO_100_VE_7 0x1064 /* PRO/100 VE (82562EZ) */ pcidevs_data.h,v: PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_PRO_100_VE_7, pcidevs_data.h,v: PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_PRO_100_VE_7, pcidevs_data.h,v: PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_PRO_100_VE_7, corsair:/u/system/cvs-sync/src/sys/dev/pci{61}# so i figure out that i should add this in the 3.4 kernel src in pcidevs_data.h { PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_PRO_100_VE_7, "PRO/100 VE", }, And should add this in if_fxp_pci.c , the _VE_7 line: { PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_PRO_100_VE_7 }, After that i think i'm ready to compile the kernel and try it. If going this way, should i consider something else, maybe i am missing to touch any other file? Is this too risky or dangerous? Some other devices where not recognized or unknown, or not configured, like pchb0 or SMBus. Is this going to be an issue if i get to make the ethernet work? Please i would like to know your thoughts and recommendations. My full dmesg with the new motherboard is: OpenBSD 3.4-stable (GENERIC) #1: Mon Jun 14 00:35:17 ART 2004 [EMAIL PROTECTED]:/u/system/src/sys/arch/i386/compile/GENERIC cpu0: Intel Pentium 4 ("GenuineIntel" 686-class) 3 GHz cpu0: FPU,V86,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLU SH,ACPI,MMX,FXSR,SIMD,SIMD2,SS,HTT,TM,SBF,E ST,CNXT-ID real mem = 1064083456 (1039144K) avail mem = 983080960 (960040K) using 4278 buffers containing 53305344 bytes (52056K) of memory mainbus0 (root) bios0 at mainbus0: AT/286+(00) BIOS, date 04/29/05 apm0 at bios0: Power Management spec V1.2 apm0: AC on, battery charge unknown pcibios at bios0 function 0x1a not configured bios0: ROM list: 0xc0000/0xaa00! pci0 at mainbus0 bus 0: configuration mode 1 (no bios) pchb0 at pci0 dev 0 function 0 vendor "Intel", unknown product 0x2580 rev 0x04 ppb0 at pci0 dev 1 function 0 vendor "Intel", unknown product 0x2581 rev 0x04 pci1 at ppb0 bus 1 vga1 at pci0 dev 2 function 0 vendor "Intel", unknown product 0x2582 rev 0x04: aperture at 0xff480000, size 0x8000000 wsdisplay0 at vga1: console (80x25, vt100 emulation) wsdisplay0: screen 1-5 added (80x25, vt100 emulation) ppb1 at pci0 dev 28 function 0 vendor "Intel", unknown product 0x2660 rev 0x03 pci2 at ppb1 bus 5 ppb2 at pci0 dev 28 function 1 vendor "Intel", unknown product 0x2662 rev 0x03 pci3 at ppb2 bus 4 ppb3 at pci0 dev 28 function 2 vendor "Intel", unknown product 0x2664 rev 0x03 pci4 at ppb3 bus 3 ppb4 at pci0 dev 28 function 3 vendor "Intel", unknown product 0x2666 rev 0x03 pci5 at ppb4 bus 2 vendor "Intel", unknown product 0x2658 (class serial bus subclass USB, rev 0x03) at pci0 dev 29 function 0 not configured vendor "Intel", unknown product 0x2659 (class serial bus subclass USB, rev 0x03) at pci0 dev 29 function 1 not configured vendor "Intel", unknown product 0x265a (class serial bus subclass USB, rev 0x03) at pci0 dev 29 function 2 not configured vendor "Intel", unknown product 0x265b (class serial bus subclass USB, rev 0x03) at pci0 dev 29 function 3 not configured ppb5 at pci0 dev 30 function 0 "Intel 82801BA AGP" rev 0xd3 pci6 at ppb5 bus 6 vendor "Intel", unknown product 0x1064 (class network subclass ethernet, rev 0x01) at pci6 dev 8 function 0 not configured pcib0 at pci0 dev 31 function 0 vendor "Intel", unknown product 0x2640 rev 0x03 pciide0 at pci0 dev 31 function 2 vendor "Intel", unknown product 0x2651 rev 0x03: DMA (unsupported), channel 0 configured to compatibility, channel 1 configured to compatibility wd0 at pciide0 channel 0 drive 0: <ST380013AS> wd0: 16-sector PIO, LBA48, 76319MB, 16383 cyl, 16 head, 63 sec, 156301488 sectors wd1 at pciide0 channel 1 drive 0: <WDC WD800JD-00JNC0> wd1: 16-sector PIO, LBA, 76319MB, 16383 cyl, 16 head, 63 sec, 156301488 sectors vendor "Intel", unknown product 0x266a (class serial bus subclass SMBus, rev 0x03) at pci0 dev 31 function 3 not configured isa0 at pcib0 isadma0 at isa0 pckbc0 at isa0 port 0x60/5 pckbd0 at pckbc0 (kbd slot) pckbc0: using irq 1 for kbd slot wskbd0 at pckbd0: console keyboard, using wsdisplay0 pcppi0 at isa0 port 0x61 npx0 at isa0 port 0xf0/16: using exception 16 biomask c000 netmask c000 ttymask c002 pctr: user-level cycle counter enabled dkcsum: wd0 matched BIOS disk 80 dkcsum: wd1 matched BIOS disk 81 root on wd0a rootdev=0x0 rrootdev=0x300 rawdev=0x302 Best Regards, Marcos Laufer