.. include:: ../disclaimer-zh_CN.rst :Original: :ref:`Documentation/arm64/amu.rst <amu_index>` Translator: Bailu Lin <bailu.lin@vivo.com> ================================== AArch64 Linux ä¸æ©å±çæ´»å¨çæ§åå ================================== ä½è : Ionela Voinescu <ionela.voinescu@arm.com> æ¥æ: 2019-09-10 æ¬ææ¡£ç®è¦æè¿°äº AArch64 Linux æ¯æçæ´»å¨çæ§åå çè§èã æ¶ææ»è¿° -------- æ´»å¨çæ§æ¯ ARMv8.4 CPU æ¶æå¼å ¥çä¸ä¸ªå¯éæ©å±ç¹æ§ã æ´»å¨çæ§åå (å¨æ¯ä¸ª CPU ä¸å®ç°)为系ç»ç®¡çæä¾äºæ§è½è®¡æ°å¨ãæ¢å¯ä»¥é è¿ç³»ç»å¯åå¨çæ¹å¼è®¿é®è®¡æ°å¨ï¼åæ¶ä¹æ¯æå¤é¨å åæ å°çæ¹å¼è®¿é®è®¡æ°å¨ã AMUv1 æ¶æå®ç°äºä¸ä¸ªç±4个åºå®ç64ä½äºä»¶è®¡æ°å¨ç»æç计æ°å¨ç»ã - CPU å¨æ计æ°å¨ï¼å CPU çé¢çå¢é¿ - 常é计æ°å¨ï¼ååºå®çç³»ç»æ¶éé¢çå¢é¿ - æ·æ±°æ令计æ°å¨: åæ¯æ¬¡æ¶ææ令æ§è¡å¢é¿ - å ååé¡¿å¨æ计æ°å¨ï¼è®¡ç®ç±å¨æ¶éåå çæåä¸çº§ç¼åä¸æªå½ä¸èå¼èµ· çæ令è°åº¦åé¡¿å¨ææ° å½å¤äº WFI æè WFE ç¶ææ¶ï¼è®¡æ°å¨ä¸ä¼å¢é¿ã AMU æ¶ææä¾äºä¸ä¸ªé«è¾¾16ä½çäºä»¶è®¡æ°å¨ç©ºé´ï¼æªæ¥æ°ç AMU çæ¬ä¸å¯è½ ç¨å®æ¥å®ç°æ°å¢çäºä»¶è®¡æ°å¨ã å¦å¤ï¼AMUv1 å®ç°äºä¸ä¸ªå¤è¾¾16个64ä½è¾ å©äºä»¶è®¡æ°å¨ç计æ°å¨ç»ã å·å¤ä½æ¶ææç计æ°å¨ä¼æ¸ é¶ã åºæ¬æ¯æ -------- å æ ¸å¯ä»¥å®å ¨å°è¿è¡å¨æ¯æ AMU åä¸æ¯æ AMU ç CPU ç»åä¸ã å æ¤ï¼å½é ç½® CONFIG_ARM64_AMU_EXTN åæ们æ æ¡ä»¶ä½¿è½åç» (secondary or hotplugged) CPU æ£æµå使ç¨è¿ä¸ªç¹æ§ã å½å¨ CPU ä¸æ£æµå°è¯¥ç¹æ§æ¶ï¼æ们ä¼æ 记为ç¹æ§å¯ç¨ä½æ¯ä¸è½ä¿è¯è®¡æ°å¨çåè½ï¼ ä» è¡¨æææ©å±å±æ§ã åºä»¶(代ç è¿è¡å¨é«å¼å¸¸çº§å«ï¼ä¾å¦ arm-tf )éæ¯æ以ä¸åè½ï¼ - æä¾ä½å¼å¸¸çº§å«(EL2 å EL1)è®¿é® AMU å¯åå¨çè½åã - 使è½è®¡æ°å¨ãå¦ææªä½¿è½ï¼å®çå¼åºä¸º 0ã - å¨ä»çµæºå ³éç¶æå¯å¨ CPU åæåä¿åæè æ¢å¤è®¡æ°å¨ã å½ä½¿ç¨ä½¿è½äºè¯¥ç¹æ§çå æ ¸å¯å¨ä½åºä»¶æåæ¶ï¼è®¿é®è®¡æ°å¨å¯åå¨å¯è½ä¼éé panic æè æ»éãå³ä½¿æªåç°è¿äºçç¶ï¼è®¡æ°å¨å¯åå¨è¿åçæ°æ®ç»æ并ä¸ä¸ å®è½åæ çå®æ åµãé常ï¼è®¡æ°å¨ä¼è¿å 0ï¼è¡¨æä»ä»¬æªè¢«ä½¿è½ã å¦æåºä»¶æ²¡ææä¾éå½çæ¯ææå¥½å ³é CONFIG_ARM64_AMU_EXTNã å¼å¾æ³¨æçæ¯ï¼åºäºå®å ¨åå ï¼ä¸è¦ç»è¿ AMUSERRENR_EL0 设置èæè·ä» EL0(ç¨æ·ç©ºé´) è®¿é® EL1(å æ ¸ç©ºé´)ã å æ¤ï¼åºä»¶åºè¯¥ç¡®ä¿è®¿é® AMUå¯åå¨ ä¸ä¼å°å¨ EL2æEL3ã AMUv1 çåºå®è®¡æ°å¨å¯ä»¥éè¿å¦ä¸ç³»ç»å¯åå¨è®¿é®ï¼ - SYS_AMEVCNTR0_CORE_EL0 - SYS_AMEVCNTR0_CONST_EL0 - SYS_AMEVCNTR0_INST_RET_EL0 - SYS_AMEVCNTR0_MEM_STALL_EL0 ç¹å®è¾ å©è®¡æ°å¨å¯ä»¥éè¿ SYS_AMEVCNTR1_EL0(n) 访é®ï¼å ¶ä¸nä»äº0å°15ã 详ç»ä¿¡æ¯å®ä¹å¨ç®å½ï¼arch/arm64/include/asm/sysreg.hã ç¨æ·ç©ºé´è®¿é® ------------ ç±äºä»¥ä¸åå ï¼å½åç¦æ¢ä»ç¨æ·ç©ºé´è®¿é® AMU çå¯åå¨ï¼ - å®å ¨å æ°ï¼å¯è½ä¼æ´é²å¤äºå®å ¨æ¨¡å¼æ§è¡ç代ç ä¿¡æ¯ã - ææ¿ï¼AMU æ¯ç¨äºç³»ç»ç®¡ççã åæ ·ï¼è¯¥åè½å¯¹ç¨æ·ç©ºé´ä¸å¯è§ã èæå ------ ç±äºä»¥ä¸åå ï¼å½åç¦æ¢ä» KVM 客æ·ç«¯çç¨æ·ç©ºé´(EL0)åå æ ¸ç©ºé´(EL1) è®¿é® AMU çå¯åå¨ï¼ - å®å ¨å æ°ï¼å¯è½ä¼æ´é²ç»å ¶ä»å®¢æ·ç«¯æ主æºç«¯æ§è¡ç代ç ä¿¡æ¯ã ä»»ä½è¯å¾è®¿é® AMU å¯åå¨çè¡ä¸ºé½ä¼è§¦åä¸ä¸ªæ³¨åå¨å®¢æ·ç«¯çæªå®ä¹å¼å¸¸ã