Current-Users archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: VIA Padlock on AMD64

I created a patch to show the intention. It builds and "padlock"
attaches to the CPU. On another hand, I failed to find any application
which would be taking advantage of padlock (including i386). Neither
openssl (tried speed tests), nor openssh (some commands I found in
internet)  showed any difference with padlock module or without it.
Maybe some patching is needed but it seems hardware acceleration is
ignored with these apps. If somebody know a good way to test it on
NetBSD, I would be glad to hear it.

On the side note, same goes to viadrmums module (it's i386 only now)
but at least on VX900 I ended up with the crash, so I guess it may be
incompatible with amd64 (though it builds successfully). Will try to
test VX800 later on.

diff --git a/distrib/sets/lists/modules/md.amd64
index 1ab3209f278..bd4752d4a53 100644
--- a/distrib/sets/lists/modules/md.amd64
+++ b/distrib/sets/lists/modules/md.amd64
@@ -193,6 +193,8 @@
 ./@MODULEDIR@/odcm/odcm.kmod                   modules-base-kernel     kmod
 ./@MODULEDIR@/pad                              modules-base-kernel     kmod
 ./@MODULEDIR@/pad/pad.kmod                     modules-base-kernel     kmod
+./@MODULEDIR@/padlock                          modules-base-kernel     kmod
+./@MODULEDIR@/padlock/padlock.kmod             modules-base-kernel     kmod
 ./@MODULEDIR@/powernow                         modules-base-kernel     kmod
 ./@MODULEDIR@/powernow/powernow.kmod           modules-base-kernel     kmod
 ./@MODULEDIR@/pwdog                            modules-base-kernel     kmod
diff --git a/sys/arch/amd64/conf/GENERIC b/sys/arch/amd64/conf/GENERIC
index 44a0d35b400..c556feb5618 100644
--- a/sys/arch/amd64/conf/GENERIC
+++ b/sys/arch/amd64/conf/GENERIC
@@ -86,6 +86,7 @@ coretemp*     at cpu?         # Intel on-die thermal sensor
 est0           at cpu0         # Intel Enhanced SpeedStep (non-ACPI)
 hyperv0        at cpu0         # Microsoft Hyper-V
 #odcm0         at cpu0         # On-demand clock modulation
+padlock0               at cpu0         # VIA Padlock
 powernow0      at cpu0         # AMD PowerNow! and Cool'n'Quiet (non-ACPI)
 vmt0           at cpu0         # VMware Tools

diff --git a/sys/arch/x86/x86/via_padlock.c b/sys/arch/x86/x86/via_padlock.c
index f23f891a642..e9d5f812f17 100644
--- a/sys/arch/x86/x86/via_padlock.c
+++ b/sys/arch/x86/x86/via_padlock.c
@@ -341,7 +341,7 @@ via_padlock_cbc(void *cw, void *src, void *dst,
void *key, int rep,
        lcr0(cr0 & ~(CR0_EM|CR0_TS));

        /* Do the deed */
-       __asm __volatile("pushfl; popfl");      /* force key reload */
+       __asm __volatile("pushf; popf");        /* force key reload */
        __asm __volatile(".byte 0xf3, 0x0f, 0xa7, 0xd0" : /* rep xcrypt-cbc */
                        : "a" (iv), "b" (key), "c" (rep), "d" (cw),
"S" (src), "D" (dst)
                        : "memory", "cc");

diff --git a/sys/modules/Makefile b/sys/modules/Makefile
index 4a29a4a23cd..3595b37f246 100644
--- a/sys/modules/Makefile
+++ b/sys/modules/Makefile
@@ -321,7 +321,6 @@ SUBDIR+=    compat_freebsd
 SUBDIR+=       mach64drm
 SUBDIR+=       mgadrm
 SUBDIR+=       nsclpcsio
-SUBDIR+=       padlock
 SUBDIR+=       r128drm
 SUBDIR+=       radeondrm
 SUBDIR+=       savagedrm
@@ -342,6 +341,7 @@ SUBDIR+=    drmkms_pci
 SUBDIR+=       i915drm
 SUBDIR+=       i915drmkms
 SUBDIR+=       pad
+SUBDIR+=       padlock
 # ISA modules

On Tue, Mar 24, 2020 at 10:57 AM Andrius V <> wrote:
> Hi,
> I accidentally noticed that padlock engine is not included on AMD64
> port (neither as module or built-in). Is there any reason it excluded
> from it? The build currently fails because inline asm code is using
> pushl, popl instructions in the code in via_padlock_cbc method, but
> replacing them with pushf, popf seemingly fixes the build and padlock
> attaches. Since VIA has x86-64 based CPUs and all of them has the
> engine, probably it makes sense to include it?
> Regards,
> Andrius V

Home | Main Index | Thread Index | Old Index