• SteveTech@programming.dev
    link
    fedilink
    English
    arrow-up
    5
    ·
    12 hours ago

    I couldn’t find a hard answer to whether this supports EPYC only, or Ryzen too; so I put together this script to read the CPUID to detect for INVLPGB support according to the AMD64 Programmer’s Manual, and my 7800X3D does not support INVLPGB.

    (Let me know if I’ve made an error though!)

    Code
    #include <stdio.h>
    #include <stdint.h>
    
    int main() {
        uint32_t eax, ebx, ecx, edx;
    
        eax = 0x80000008;
    
        __asm__ __volatile__ (
            "cpuid"
            : "=a" (eax), "=b" (ebx), "=c" (ecx), "=d" (edx)
            : "a" (eax)
        );
    
        printf("EBX: 0x%x\n", ebx);
    
        if (ebx & (1 << 3)) {
            printf("CPU supports INVLPGB\n");
        } else {
            printf("CPU does not support INVLPGB\n");
        }
    
        return 0;
    }
    
  • onlinepersona@programming.dev
    link
    fedilink
    arrow-up
    21
    arrow-down
    1
    ·
    edit-2
    12 hours ago

    More surprising is that it’s taken ~4 years for these Linux kernel patches to materialize with Zen 3 having first debuted in late 2020.

    Reminder: Linux kernel funding is 2% of the Linux foundation’s 200M$/year budget.

    Anti Commercial-AI license

    • grue@lemmy.world
      link
      fedilink
      English
      arrow-up
      22
      ·
      18 hours ago

      the Linux kernel hasn’t widely made use of INVLPGB… In part because Intel engineers typically carry out much of the new x86 instruction optimizations within the Linux kernel and Intel processors do not currently support INVLPGB.

      Sounds like AMD needs to fund more kernel development.