Padlock unter Freebsd 7.0 aktivieren

karmek

Member
Hallo,
ich versuche seit knapp 2 Stunden leider erfolglos padlock für geli unter FreeBSD 7.0 zu aktivieren. Mit openssl speed -evp usw. erhalte ich Padlock- ähnliche Werte, auch wenn die Performance mich hier grade nicht vom Hocker haut.
Mit geli bekomme ich den Hinweis, dass er per Software verschlüsselt.

kldload padlock wirft folgenden Fehler:
padlock0: No ACE support.

Ich benutze ein Via Epia SN Board (weiß leider nicht ob der C7 dort Esther oder Eden Serie ist). Unter BSD bekomme ich den Typ auch nicht gescheit ausgelesen.
Hat jemand Vorschläge wie ich weiter vorgehen könnte?

Grüße
Karmek
 
Moin,

ich habe das Epia EN Board mit Freebsd 6.3.

In der /boot/loader.conf habe ich folgende Module stehen:

geom_eli_load="YES"
padlock_load="YES"
cpufreq_load="YES"

dmesg bringt hier folgendes:
CPU: VIA C7 Esther+RNG+AES+AES-CTR+SHA1+SHA256+RSA (1197.01-MHz 686-class CPU)
Origin = "CentaurHauls" Id = 0x6a9 Stepping = 9
Features=0xa7c9bbff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,CMOV,PAT,CLFLUSH,ACPI,MMX,FXSR,SSE,SSE2,TM,PBE>
Features2=0x181<SSE3,EST,TM2>

Das Padlock ist hier aktiv und bringt erheblich Geschwindigkeit.
Vielleicht hilft dir das ja.
 
Scheint wohl bekannt zu sein. Schau mal hier und hier, evtl. kannst Du Deine CPU-ID einfach nachträglich einfügen.

Bei mir läufts unter 7.0 ohne patch problemlos:
CPU: VIA Esther processor 1000MHz (997.51-MHz 686-class CPU)
Origin = "CentaurHauls" Id = 0x6a9 Stepping = 9
Features=0xa7c9bbff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,CMOV,P
AT,CLFLUSH,ACPI,MMX,FXSR,SSE,SSE2,TM,PBE>
Features2=0x181<SSE3,EST,TM2>
VIA Padlock Features=0x3fcc<RNG,AES,AES-CTR,SHA1,SHA256,RSA>
 
Das die ID nicht erkannt wird, habe ich auch schon gelesen.
Leider sind die beschriebenen Vorgehensweisen recht "grob", sodass ich als FreeBSD Anfänger dabei etwas ins schwimmen gerate.
Ich weiß zum beispiel nicht, wie ich meine CPU ID auslese. Welchem Befehl verwendet man dazu?

Folgendes habe ich versucht:
dmesg | grep CPU
CPU: VIA/IDT Unknown (1795.51-MHz 686-class CPU)
cpu0: <ACPI CPU> on acpi0
p4tcc0: <CPU Frequency Thermal Control> on cpu0

Danke und Grüße
Karmek
 
Zuletzt bearbeitet:
Ah, grep scheint nicht so geeignet zu sein... Wenn ich dmesg | less verwende, erhalte ich folgendes:
CPU: VIA/IDT Unknown /1795.51-MHz 686-class CPU)
Origin = "CentaurHauls" Id= 0x6d0 Stepping = 0
Features=0xa7c9bbff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,CMOV,PAT,CLFLUSH,ACPI,MMX,FXSR,SSE,SSE2,TM,TBE>
Features2=0x4181<SSE3,EST,TM2,xTPR>
Mal sehen ob ich mit den verlinkten Posts weiter komme.
 
Huhu,
habe die Änderungen gemäß Posts bei den verlinkten Seiten eingebaut.
Mein CPU wird leider immernoch nicht erkannt. Wahrscheinlich muss ich den Kernel noch updaten? Bin nicht ganz sicher wie das alles zusammen hängt.
Kann mir jemand beim weiteren Vorgehen helfen?

Meine loader.conf habe ich übrigens nach obiger Empfehlung angepasst. Nach Anpassung der Files /usr/src/sys/i386/i386/identcpu.c und /usr/src/sys/i386/i386/initcpu.c habe ich kldunload / load probiert, sowie neugestartet.

Grüße
Karmek
 
Nachdem du die Sourcen angepasst hast, musst du das System "neu übersetzen", damit diese Änderungen wirksam werden. Das ist mehr oder weniger aufwändig. Eine Anleitung kann ich dir nicht geben, glaube aber, dass es im Freebsd-Handbuch auf freebsd.org steht.

HTH
 
Danke für den Verweis aufs Handbuch, dort steht ja wirklich alles herrlich erklärt :)
Derzeit backt ein neuer Kernel, ich hoffe das (ähnlich wie bei Linux) dabei die Module aktualisiert werden und ich dann funktionsfähiges Padlock habe.
Nun muss ich noch rausfinden wie ich meinen Custom Kernel laden kann. Schätze mal da muss ich wie bei Debian den Bootloader anpassen und das wars? Oder genügt es evtl. schon make installkernel zu benutzen?

Grüße
Karmek
 
Gut, hab alles soweit hinbekommen. Leider klappt es immernoch nicht. Offenbar wurden meine Änderungen gar nicht berücksichtigt, zumindest kommt jedoch der gleiche Fehler wie voher. Evtl. ein Problem mit der Prozessorarchitektur? Die Änderungen hab ich im i386 Tree gemacht, dmesg zeigt jedoch den CPU als 686er.
Werde dem mal weiter auf den Grund gehen.

Grüße und danke
Karmek
 
funktioniert die Anleitung bzw. zeigt es die richtige IDT an....,

hab das gleiche probs und suche eine lösung.
 
jemand eine Idee

System ist 6.3,Board ein jetway J7f2we-1g mit Via c7 NanoBGA,

sourcen hab ich aktualisiert und in der identcpu.c ist C7 Esther auch eingetragen aber ein Neubau des Kernels bringt nix. IDT Unkown

Probs gelöst:

die Source mit csup auf den aktuellen Stand gebracht, nach Kernelbau wird zwar keine IDT richtig zugewiesen ber die CPU richtig erkannt als 0x6d0, leider sind die Manuals von Via und Jetway nicht sehr aussagekräftig und Wiki hat nicht geholfen...egal.

cd sys/i386/i386

dort die identcpu.c geöffnet und unter den Abschnitt (ungefähr Zeile 585) 0x6a0 die zwei Zeilen
wie ersten link beschrieben
case 0x6a0:
strcpy(cpu_model, "VIA C7 Esther");
zugefügt: case 0x6d0:
zugefügt strcpy(cpu_model, "VIA C7 Esther");
via_common:
do_cpuid(0xc0000000, regs);
i = regs[0];

und fertig, Kernel neu gebaut und funzt. Bei aktualisieren der sourcen muß wenn nicht vorhanden die zwei Zeilen wieder eingefügt werden.

CPU wird angezeigt:
CPU: VIA C7 Esther+RNG+AES+AES-CTR+SHA1+SHA256+RSA (1000.01MHz 686-Class CPU)
Origin = "CentaurHauls" Id = 0x06d0 Stepping = 0
und die 2 Zeilen mit allen Features und Feature2 wie SSE...naja der kram eben (kann man auf den unteren Link vergleichen und sollte vorhanden sein.

so Board funzt alles falls es jemand interessiert.System ist FreeBSD 6.3 auf Stand p2

hier ein Link für Release 7.0 und Via C7:
http://www.freebsd.org/cgi/query-pr.cgi?pr=119491

die identcpu.c ist von 6.3 zu 7.0 verschieden und hat eigene Anleitung.

viel Spaß


schönes Wochenende!
 
Zuletzt bearbeitet:
Hi,
danke für deine Antwort.
Beim ersten mal kompilieren habe ich den Vorgang im Hintergrund ablaufen lassen und so offenbar nicht mitbekommen, dass make buildkernel mit einem Fehler ausgestiegen ist.

Hier die letzten Zeilen des Buildvorgangs:
Code:
cc -c -O -pipe  -std=c99 -g -Wall -Wredundant-decls -Wnested-externs -Wstrict-prototypes  -Wmissing-prototypes -Wpointer-arith -Winline -Wcast-qual  -Wundef -Wno-pointer-sign -fformat-extensions -nostdinc  -I. -I/usr/src/sys -I/usr/src/sys/contrib/altq -D_KERNEL -DHAVE_KERNEL_OPTION_HEADERS -include opt_global.h -fno-common -finline-limit=8000 --param inline-unit-growth=100 --param large-function-growth=1000  -mno-align-long-strings -mpreferred-stack-boundary=2  -mno-mmx -mno-3dnow -mno-sse -mno-sse2 -mno-sse3 -ffreestanding -Werror  /usr/src/sys/i386/i386/initcpu.c
/usr/src/sys/i386/i386/initcpu.c:2: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'x'
*** Error code 1

Offenbar habe ich einen Syntaxfehler produziert *grml*.
Ich kann ihn aber irgendwie nicht finden, würdet Ihr mal einen Blick darüber werfen?
Die case Einträge für case 0x6d0: sind von mir.

/usr/src/sys/i386/i386/initcpu.c
Code:
#endif
                } else if (strcmp(cpu_vendor, "CentaurHauls") == 0) {
                        switch (cpu_id & 0xff0) {
                        case 0x690:
                                if ((cpu_id & 0xf) < 3)
                                        break;
                                /* fall through. */
                        case 0x6a0:
                                init_via();
                                break;
                        case 0x6d0:
                                init_via();
                                break;
                        default:
                                break;
                        }
                }

und hier /usr/src/sys/i386/i386/identcpu.c
Code:
                case 0x690:
                        strcpy(cpu_model, "VIA C3 Nehemiah");
                        if ((cpu_id & 0xf) < 3)
                                break;
                        goto via_common;
                case 0x6a0:
                        strcpy(cpu_model, "VIA C7 Esther");
                case 0x6d0:
                        strcpy(cpu_model, "VIA C7 Esther");

Danke für eure Hilfe

Edit:
Ach ja, kann ich meinen angefangenen Buildvorgang so fortsetzen, dass bereits erfolgreich übersetzte Teile nicht erneut angefasst werden? Auf meinem System dauert das nämlich immer weigkeiten, bis er zur Fehlerstelle kommt. make -j2 -k buildkernel habe ich bereits versucht, schien aber nicht den gewünschten Erfolg zu bringen.

Grüße
Karmek
 
Zuletzt bearbeitet:
deine initcpu.c hat einen Fehler:
initcpu.c von:

case 0x6a0:
init_via();
break;
case 0x6d0:
init_via();
break;
default:

ändern nach:
case 0x6a0
case 0x6d0:
init_via();
break;
default:

und fertig.

Wird deine CPU beim booten mit ID erkannt .

falls du die Sourcen aktualisierst, die beiden dateien identcpu und initcpu werden überschrieben und alles muß neu eingefügt werden..., hatte ich beim update auf 6.3-p3 vergessen und mußte nochmal den kernel mit angepaßter identcpu übersetzen. Anpassung der initcpu gibts ja bei 6.3 nicht.

Buildvorgang kannst du fortsetzen, bei Probs eben ein "make clean" unter /usr/src machen.
 
Zuletzt bearbeitet:
Hallo Flex6,
habe die Anpassungen nach deinem Vorschlag durchgeführt. Hoffe nun läuft alles ohne Probleme durch.
beim erneuten ausführen von make buildkernel löscht er mir leider alles bereits compilierte weg. Welches flag muß ich setzen, damit er das nicht tut?

Ansonsten läuft grade der nächste Buildversuch. Ich melde mich in einigen Stunden wieder =)

Grüße
Karmek
 
haha :P
Hab den Hinweis gelesen und in meiner make.conf ergänzt, danke dafür!
Leider läuft der Buildvorgang immernoch, daher konnte ich noch nichts neues melden ;)
Seltsamerweise hat mein Epia SN Board unter Freebsd 7.0 eine stetige Interruptlast von ~40% was die Buildprozesse nicht unbedingt begünstigt...

Grüße
Karmek
 
eventuell haben sich paar Geräte in der Quere,mal im Bios nachschauen
bei mir dauert mit 1Ghz buildkernel 45 bis 50min...,

hast du cpufeq mit im kernel, 7.0 soll das bei C7 unterstützen....habs aber nur gelesen
 
Habe an der Generic Konfiguration nichts geändert. Soweit ich weiß ist cpufreq dort mit dabei.
Die Last kommt offenbar über den SATAII onbard Controller. Dort hängen einige Platten dran und das scheint er nicht zu mögen.

Grüße Karmek
 
So nun kann ich (stolz?) berichten:
Code:
awk -f /usr/src/sys/modules/zyd/../../conf/kmod_syms.awk if_zyd.kld  export_syms | xargs -J% objcopy % if_zyd.kld
ld -Bshareable  -d -warn-common -o if_zyd.ko.debug if_zyd.kld
objcopy --only-keep-debug if_zyd.ko.debug if_zyd.ko.symbols
objcopy --strip-debug --add-gnu-debuglink=if_zyd.ko.symbols if_zyd.ko.debug if_zyd.ko
1 error
*** Error code 2
1 error
*** Error code 2
1 error

Aus dem Fehler werde ich zumindest net schlau :(
Das passiert übrigens bei Stage 3.2: building everything

Grüße
Karmek
 
Zuletzt bearbeitet:
Okay also warum der voherige Fehler aufgetreten ist weiß ich nicht.
Habe den Buildvorgang einfach erneut angeworfen und fliege nun wieder an dieser Stelle raus:
Code:
cc -c -O -pipe  -std=c99 -g -Wall -Wredundant-decls -Wnested-externs -Wstrict-prototypes  -Wmissing-prototypes -Wpointer-arith -Winline -Wcast-qual  -Wundef -Wno-pointer-sign -fformat-extensions -nostdinc  -I. -I/usr/src/sys -I/usr/src/sys/contrib/altq -D_KERNEL -DHAVE_KERNEL_OPTION_HEADERS -include opt_global.h -fno-common -finline-limit=8000 --param inline-unit-growth=100 --param large-function-growth=1000  -mno-align-long-strings -mpreferred-stack-boundary=2  -mno-mmx -mno-3dnow -mno-sse -mno-sse2 -mno-sse3 -ffreestanding -Werror  /usr/src/sys/i386/i386/initcpu.c
/usr/src/sys/i386/i386/initcpu.c:2: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'x'
/usr/src/sys/i386/i386/initcpu.c: In function 'initializecpu':
/usr/src/sys/i386/i386/initcpu.c:689: error: expected ':' or '...' before 'case'
*** Error code 1

Stop in /usr/obj/usr/src/sys/GENERIC.
*** Error code 1

Stop in /usr/src.
*** Error code 1

Stop in /usr/src.

Dabei habe ich die empfohlene Anpassung durchgeführt. Meine identcpu.c sieht so aus:
Code:
#endif
                } else if (strcmp(cpu_vendor, "CentaurHauls") == 0) {
                        switch (cpu_id & 0xff0) {
                        case 0x690:
                                if ((cpu_id & 0xf) < 3)
                                        break;
                                /* fall through. */
                        case 0x6a0
                        case 0x6d0:
                                init_via();
                                break;
                        default:
                                break;
                        }
                }

Hat noch jemand einen Vorschlag?

Grüße
Karmek
 
also nach Anleitung ist die initcpu.c in Ordnung

einfach mal eine make clean machen und make buildkernel, -j2 weglassen...für den Anfang. Das ist jetzt natürlich ärgerlich.

mach mal noch ein make cleanworld unter /usr/src eventuell alles unter /usr/obj löschen
 
Zurück
Oben