2014-07-18 1 views
2

커널에서 AESNI x86 asm 관련 명령어를 사용하기 전에 irq_fpu_usable을 확인합니다. 해당 커널 코드. 파일 : 아치/86/암호화/aesni-intel_glue.cASENI 명령어를 사용하여 액세스하기 전에 irq_fpu_usable을 확인해야하는 이유

static int ablk_encrypt(struct ablkcipher_request *req) 
{ 
    ... 
    if (!irq_fpu_usable() { 
     Dont use AESNI instruction. 
    } else { 
     USe AESNI instruction. 
    } 
} 
  1. 왜 우리는 FPU가 AESNI의 지침을 사용하여 사용할 수 있습니다 확인해야?
  2. AESNI가 FPU를 사용합니까?

답변

3

AES-NI는 FPU 상태의 일부인 XMM 레지스터를 사용합니다.

+0

정답을 수락했습니다. –

+0

@ GuruswamyBasavaiah 그 답을 실제로 받아들이지 않았다는 것을 제외하고는 (그 옆의 회색 V 표시를 클릭하십시오.) –

2

일반적으로 커널은 상태가 저장되고 복원 될 때 커널과 사용자 공간 사이에서 튀어 나오기 때문에 게으르다. 이는 저장 될 상당한 수의 레지스터를 추가 할 수있는 최신 SIMD 유형 명령어에서 특히 그렇습니다. 결과적으로 사용자 공간에서 사용자 공간을 사용할 때이를 추적하므로 필요할 경우 상태를 저장/복원 할 수 있습니다.

irq_fpu_usable()의 경우 실제로 필요한 경우 저장 상태가 지연되는 인터럽트인지 여부를 확인합니다. 그러나 커널 공간에있는 동안 커널이 IRQ를 얻는다면, 커널이 FPU를 아직 사용하고 있지 않다면 안전하게 할 수 있습니다.

+0

커널 공간에서 커널이 IRQ를 얻고 FPU를 사용하면 어떻게됩니까? –