나는 x86 데비안 시스템을 게스트로 부팅하기 위해 x86 호스트에서 QEMU2.6.0을 사용하고 있습니다. 호스트는 RHEL7 및 KVM이 활성화된 상태로 부팅된 8코어, 2소켓 시스템입니다. 2개의 PCI 장치가 게스트에서 에뮬레이트되고 있습니다. -이 PCI 장치의 동시 작동을 확인해야 합니다. PCI 장치 A는 특정 BAR 오프셋 X에 액세스하면 고정된 기간 동안 장치에서 sleep()이 발생하도록 설계되었습니다. 이 절전 기간 동안 테스트 애플리케이션은 PCI 장치 B의 BAR에 액세스하고 여기에 데이터를 쓰려고 시도합니다.
- 두 개의 PCI 장치에 대한 메모리 영역을 생성하면 전역 잠금이 지워집니다.
- PCI A 및 B의 BAR에 액세스하려고 시도하는 테스트 애플리케이션을 시작하기 위해 시작되는 프로세스에 대한 작업 선호도를 설정합니다.
- -smp 4 옵션으로 QEMU를 시작하면 4개의 vcpu가 생성됩니다. 작업 선호도를 설정하여 스케줄러가 두 장치에 대한 액세스 작업을 별도의 vCPU로 예약하도록 합니다.
- 이 경우 PCI 장치 A가 vcpu0에서 절전 모드로 전환되더라도 PCI 장치 B BAR 액세스는 작업 세트를 사용하여 선택한 다른 vcpu 번호에서 예약되어야 합니다.
- 이 동작은 관찰되지 않았습니다. 장치 A가 절전 모드로 전환되면 장치 B의 R/W 작업이 중지되고 장치 A가 절전 모드를 종료할 때만 다시 시작됩니다.
이 동작이 관찰되는 이유에 대한 생각을 공유할 수 있는 사람이 있습니까?
현재 이 문제 디버깅에 대해 아는 바가 없으며 이 문제 디버깅을 시작하는 방법에 대한 지침이 필요합니다.
인사말LT