if (boot_cpu_data.x86_vendor == X86_VENDOR_AMD &&
            boot_cpu_data.x86 >= 0xf)
                return 1;
+
+       /* Hygon systems use modern APIC */
+       if (boot_cpu_data.x86_vendor == X86_VENDOR_HYGON)
+               return 1;
+
        return lapic_get_version() >= 0x14;
 }
 
                    (boot_cpu_data.x86 >= 15))
                        break;
                goto no_apic;
+       case X86_VENDOR_HYGON:
+               break;
        case X86_VENDOR_INTEL:
                if (boot_cpu_data.x86 == 6 || boot_cpu_data.x86 == 15 ||
                    (boot_cpu_data.x86 == 5 && boot_cpu_has(X86_FEATURE_APIC)))
 
                                break;
                        }
                        /* If P4 and above fall through */
+               case X86_VENDOR_HYGON:
                case X86_VENDOR_AMD:
                        def_to_bigsmp = 1;
                }