14-STABLE not working on an old CPU?

I've tried to upgrade 13-STABLE to 14-STABLE on an old CORE2 CPU. Made a sequence of build (
Code:
git pull ; make buildworld ; make buildkernel ; make installkernel ; reboot ; make installworld
)from Handbook, but when it rebooted with the new world and the new kernel almost nothing works! "Illegal instruction" core files on clang or pkg executables etc.
Is it not supported already? Or what could be wrong? And what steps to solve the problem you can suggest?
STABLE/14-n26804-bb7b0eb7cf in the question
 
What cpu exactly? And do you do run a 32 bit or 64 bit system?
Core 2 Duo E4600 (Allendale, pre SSE-4, but with SSSE-3).
64bit system.
Code:
CPU microcode: updated from 0xa3 to 0xa4
CPU: Intel(R) Core(TM)2 Duo CPU     E4600  @ 2.40GHz (2467.41-MHz K8-class CPU)
  Origin="GenuineIntel"  Id=0x6fd  Family=0x6  Model=0xf  Stepping=13
  Features=0xbfebfbff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CLFLUSH,DTS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE>
  Features2=0xe39d<SSE3,DTES64,MON,DS_CPL,EST,TM2,SSSE3,CX16,xTPR,PDCM>
  AMD Features=0x20100800<SYSCALL,NX,LM>
  AMD Features2=0x1<LAHF>
  TSC: P-state invariant, performance statistics
 
From simd(7):
Code:
If ARCHLEVEL is
	       unset, not recognised, or not supported by the  processor,  the
	       highest	level  of SIMD enhancements supported by the processor
	       is used.

That seems to suggest it won't use those instructions if they're not supported by the CPU. So I'm wondering why it apparently still used them.

What's in /etc/make.conf?

14th version is not mentioned
Yes, it does, 14.1-RELEASE, which means it had to have been added to 14-STABLE before 14.1-RELEASE.
 
From simd(7):
Code:
If ARCHLEVEL is
           unset, not recognised, or not supported by the  processor,  the
           highest    level  of SIMD enhancements supported by the processor
           is used.

That seems to suggest it won't use those instructions if they're not supported by the CPU. So I'm wondering why it apparently still used them.

What's in /etc/make.conf?


Yes, it does, 14.1-RELEASE, which means it had to have been added to 14-STABLE before 14.1-RELEASE.
Yes, I've changed post.
Code:
CPUTYPE=?core2
in make.conf
No ARCHLEVEL is set.
 
From simd(7):
Code:
If ARCHLEVEL is
           unset, not recognised, or not supported by the  processor,  the
           highest    level  of SIMD enhancements supported by the processor
           is used.

That seems to suggest it won't use those instructions if they're not supported by the CPU. So I'm wondering why it apparently still used them.

What's in /etc/make.conf?


Yes, it does, 14.1-RELEASE, which means it had to have been added to 14-STABLE before 14.1-RELEASE.
(According to MAN, this CPU is able of "baseline" ARCHLEVEL.)

By the way, clang from 14.1 live dvd1 release works without illegal instruction.
 
This is my oldest CPU:
Code:
CPU: Intel(R) Core(TM) i5-3470 CPU @ 3.20GHz (3192.87-MHz K8-class CPU)
  Origin="GenuineIntel"  Id=0x306a9  Family=0x6  Model=0x3a  Stepping=9
  Features=0xbfebfbff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CLFLUSH,DTS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE>
  Features2=0x7fbae3ff<SSE3,PCLMULQDQ,DTES64,MON,DS_CPL,VMX,SMX,EST,TM2,SSSE3,CX16,xTPR,PDCM,PCID,SSE4.1,SSE4.2,x2APIC,POPCNT,TSCDLT,AESNI,XSAVE,OSXSAVE,AVX,F16C,RDRAND>
  AMD Features=0x28100800<SYSCALL,NX,RDTSCP,LM>
  AMD Features2=0x1<LAHF>
  Structured Extended Features=0x281<FSGSBASE,SMEP,ERMS>
  XSAVE Features=0x1<XSAVEOPT>
  VT-x: PAT,HLT,MTF,PAUSE,EPT,UG,VPID
  TSC: P-state invariant, performance statistics
It's running 14-STABLE. But it does have SSE4.2 and AVX. Don't have anything older to test.
 
Is this ZFS? Did you create a boot environment before the upgrade? If you did I would revert back to 13-STABLE. At least until we figure out what happened.
 
For program X failing
gdb `which X` X.core
disassemble

This should give you the instruction which failed. If gdb does work, or lldb. If those fail you might need to take them from the base distribution.
 
I've tried to upgrade 13-STABLE to 14-STABLE on an old CORE2 CPU. Made a sequence of build (
Code:
git pull ; make buildworld ; make buildkernel ; make installkernel ; reboot ; make installworld
)from Handbook, but when it rebooted with the new world and the new kernel almost nothing works! "Illegal instruction" core files on clang or pkg executables etc.
Is it not supported already? Or what could be wrong? And what steps to solve the problem you can suggest?
STABLE/14-n26804-bb7b0eb7cf in the question

The way you chain your commands with ";" you wouldn't notice when one fails. It is better to do "make buildworld && ..." so that an error aborts the chain and the error message stays visible.

Maybe you kernel and userland went out of sync because of that.
 
in make.conf
Quick correction: should be in /etc/src.conf
For reference dmesg from an E6600 (which is a year older than an E4600) on which I run 14.1-RELEASE built from source (with custom options). CPUTYPE is set to core2, but leaving it empty shouldn't be an issue. I have not built 14-STABLE, so there's always a very small chance something is different there. You can always try out 14.1-RELEASE just to be sure (after restoring clang from either a boot environment/zfs snapshot or an installation image).
Code:
CPU: Intel(R) Core(TM)2 CPU          6600  @ 2.40GHz (2404.14-MHz K8-class CPU)
  Origin="GenuineIntel"  Id=0x6f6  Family=0x6  Model=0xf  Stepping=6
  Features=0xbfebfbff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CLFLUSH,DTS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE>
  Features2=0xe3bd<SSE3,DTES64,MON,DS_CPL,VMX,EST,TM2,SSSE3,CX16,xTPR,PDCM>
  AMD Features=0x20100800<SYSCALL,NX,LM>
  AMD Features2=0x1<LAHF>
  VT-x: HLT,PAUSE
  TSC: P-state invariant, performance statistics
 
The way you chain your commands with ";" you wouldn't notice when one fails. It is better to do "make buildworld && ..." so that an error aborts the chain and the error message stays visible.
This ^^. I also do a full clean before building, but if you're using meta mode that's probably not a good idea. I prefer a clean environment.
So basically I first make clean; make cleanworld, check if /usr/obj is indeed empty and only then do I start a build:
make -jxx buildworld && make -jxx kernel && make installworld. Note that I choose to live dangerously and update my entire world before rebooting, rebooting is safer.
Also check freebsd-update -kru after building, although I do not know what that will tell for 14-STABLE.
 
The way you chain your commands with ";" you wouldn't notice when one fails. It is better to do "make buildworld && ..." so that an error aborts the chain and the error message stays visible.

Maybe you kernel and userland went out of sync because of that.
I didn't chain it actually. I did steps one be one. And only after the last reboot I've got the problem.
 
This ^^. I also do a full clean before building, but if you're using meta mode that's probably not a good idea. I prefer a clean environment.
So basically I first make clean; make cleanworld, check if /usr/obj is indeed empty and only then do I start a build:
make -jxx buildworld && make -jxx kernel && make installworld. Note that I choose to live dangerously and update my entire world before rebooting, rebooting is safer.
Also check freebsd-update -kru after building, although I do not know what that will tell for 14-STABLE.
Also it was a clean build. With make cleanworld after a new git clone
 
Back
Top