이 오래된 scsi 컨트롤러를 가상 머신에 전달할 방법이 없나요?

이 오래된 scsi 컨트롤러를 가상 머신에 전달할 방법이 없나요?

vm pci-e 및 pci 순수 장치에 성공적으로 전달되었습니다. scsi 컨트롤러를 가상 머신에 전달하고 싶습니다.

운영 체제는 컨트롤러를 볼 수 있습니다

06:06.0 SCSI storage controller [0100]: BusLogic BT-946C (BA80C30) [MultiMaster 10] [104b:1040]
    Kernel driver in use: vfio-pci
    Kernel modules: BusLogic

컨트롤러를 제거했어요

virsh nodedev-detach pci_0000_06_06_0

가상 머신을 시작합니다

qemu-system-i386 -boot a -fda boot_install.img -m 128 -no-fd-bootchk --enable-kvm -device pcnet,netdev=network0 -netdev tap,id=network0,ifname=tap1,script=no,downscript=no -device vfio-pci,host=06:06.0

그리고...

qemu-system-i386: -device vfio-pci,host=06:06.0: VFIO_MAP_DMA failed: Cannot allocate memory
qemu-system-i386: -device vfio-pci,host=06:06.0: VFIO_MAP_DMA failed: Cannot allocate memory
qemu-system-i386: -device vfio-pci,host=06:06.0: vfio 0000:06:06.0: failed to setup container for group 12: memory listener initialization failed: Region pc.ram: vfio_dma_map(0x7fadc1bccc00, 0x0, 0xa0000, 0x7fadb5200000) = -12 (Cannot allocate memory)

그것을 처리하는 방법? 감사해요

답변1

udev사용자에게 전달하려는 장치의 소유권을 변경하려면 규칙을 사용해야 합니다 . 이 메모리 오류를 방지하려면 사용자가 할당할 수 있는 메모리 제한도 늘려야 합니다.

저는 Arch Linux를 사용하므로 이러한 파일은 배포판의 다른 위치에 있을 수 있습니다.

  • 그룹이 kvm아직 없으면 생성하고 사용자의 보조 그룹에 추가합니다. 다른 사용자로 가상 머신을 실행할 계획이 없다면 자신의 사용자 그룹을 사용할 수도 있습니다.

  • Udev 규칙:

    파일 만들기/etc/udev/rules.d/99-vm.rules

    SUBSYSTEM=="vfio", OWNER="root", GROUP="kvm"
    SUBSYSTEM=="***", ATTR{idVendor}=="***", ATTR{idProduct}=="***" OWNER="root", GROUP="kvm"
    

    두 번째 줄을 편집하고 통과하려는 각 장치에 대해 유사한 줄을 추가합니다 vfio. 이 예에서는 장치와 일치하도록 공급업체 및 제품 ID를 사용했습니다.

  • 메모리 한도:

    파일에 다음 줄을 추가하십시오./etc/security/limits.conf

    @kvm     soft    memlock        150000
    @kvm     hard    memlock        150000
    

    여기서는 그룹 제한을 kvm150000KB로 설정했습니다. 이는 128MB VM에 충분하지만 VM의 메모리 할당을 늘리면 증가해야 합니다.

원천: https://www.evonide.com/non-root-gpu-passthrough-setup/(가상 머신에 별도의 사용자를 사용하기 때문에 설정이 약간 다릅니다)

답변2

해결책을 찾기. 루트가 유효하므로 권한 문제일 수 있습니다.

관련 정보