AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 1198528
Accepted
strike2901
strike2901
Asked: 2019-12-26 09:14:08 +0800 CST2019-12-26 09:14:08 +0800 CST 2019-12-26 09:14:08 +0800 CST

黑名单 xhci_hcd

  • 772

我需要为 qemu 下的 VM 通过 USB 3.0 控制器。

我的 lspci -nnk 是:

...
02:00.0 USB controller [0c03]: Renesas Technology Corp. uPD720201 USB 3.0 Host Controller [1912:0014] (rev 03)
    Kernel driver in use: xhci_hcd
03:00.0 USB controller [0c03]: VIA Technologies, Inc. VL805 USB 3.0 Host Controller [1106:3483] (rev 01)
    Subsystem: Gigabyte Technology Co., Ltd VL805 USB 3.0 Host Controller [1458:5007]
    Kernel driver in use: xhci_hcd
...

我想通过的是uPD720201,它在它的IOMMU组中是孤独的。

我的 vfio.conf 是:

options vfio-pci ids=1002:68f9,1002:aa68,1912:0014 disable_vga=1
#Note : the 1002:68f9 and 1002:aa68 are the gpu card, which is correctly pass trough

但现在问题似乎是 xhci_hcd 驱动程序覆盖了 vfio 驱动程序,因为它似乎在启动时正确加载:

$ dmesg | grep "vfio"
[    4.475492] vfio: unknown parameter 'vfio_iommu_type1' ignored
[    4.476319] vfio: unknown parameter 'vfio_virqfd' ignored
[    4.477177] vfio: unknown parameter 'vfio_pci' ignored
[    4.478023] vfio: unknown parameter 'ids' ignored
[   21.546903] vfio-pci 0000:05:00.0: vgaarb: changed VGA decodes: olddecodes=io+mem,decodes=none:owns=none
[   21.568068] vfio_pci: add [1002:68f9[ffff:ffff]] class 0x000000/00000000
[   21.588151] vfio_pci: add [1002:aa68[ffff:ffff]] class 0x000000/00000000
[   21.588824] vfio_pci: add [1912:0014[ffff:ffff]] class 0x000000/00000000
[   27.296307] vfio-pci 0000:05:00.0: vgaarb: changed VGA decodes: olddecodes=none,decodes=none:owns=none

我已经尝试在 blacklist.conf 和 grub 中将 xhci_hcd 列入黑名单:

/etc/modprobe.d/blacklist.conf
...
blacklist xhci_hcd
...

/etc/default/grub
...
GRUB_CMDLINE_LINUX_DEFAULT="amd_iommu=on iommu=pt kvm_amd.npt=1 modprobe.blacklist=xhci_hcd"
...

在这些修改之后,我当然做了一个 update-initramfs -u 和一个 update-grub2 。在所有情况下它都没有效果,我总是有“使用中的内核驱动程序:xhci_hcd”我发现禁用 xhci_hcd 的唯一方法是通过以下方式取消绑定我的卡:

$ echo '0000:02:00.0' | tee /sys/bus/pci/devices/0000:02:00.0/driver/unbind

但我不知道如何在启动时执行它(可能在 vfio 分配之前)。

您知道禁用 xhci_hcd (或其他方法)以使其工作的解决方案吗?


我试过了,我有这个:

grub_cmd_blacklist

该命令已经出现,但都在一行上,所以我只是在它们之间放置了回车符。

现在我的板载 USB3 控制器已禁用(我尝试在其上放置一个 USB 设备,但它确实已禁用)但不是我添加的。

我的 lspci -nnk 是:

...
02:00.0 USB controller [0c03]: Renesas Technology Corp. uPD720201 USB 3.0 Host Controller [1912:0014] (rev 03)
    Kernel driver in use: xhci_hcd
03:00.0 USB controller [0c03]: VIA Technologies, Inc. VL805 USB 3.0 Host Controller [1106:3483] (rev 01)
    Subsystem: Gigabyte Technology Co., Ltd VL805 USB 3.0 Host Controller [1458:5007]
...

注意:现在我的 grub 文件是(它使我在上面描述的内容持久化):

/etc/default/grub
...
GRUB_CMDLINE_LINUX="amd_iommu=on iommu=pt kvm_amd.npt=1"
GRUB_CMDLINE_LINUX="modprobe.blacklist=xhci_hcd"
...
drivers virtualization blacklist
  • 2 2 个回答
  • 5138 Views

2 个回答

  • Voted
  1. Best Answer
    strike2901
    2019-12-29T17:45:42+08:002019-12-29T17:45:42+08:00

    我最终选择从 kernel.org 源代码完全重建内核,并将 xhci_hcd 作为加载模块而不是内置模块。现在我可以通过以下方式禁用 xhci_hcd :

    modprobe -r xhci_pci
    modprobe -r xhci_hcd
    

    其次是:

    modprobe vfio
    modprobe vfio_pci
    

    现在我可以将控制器附加到 VM 并获得:

    lspci -nnk
    ...
    02:00.0 USB controller [0c03]: Renesas Technology Corp. uPD720201 USB 3.0 Host Controller [1912:0014] (rev 03)
        Kernel driver in use: vfio-pci
        Kernel modules: xhci_pci
    03:00.0 USB controller [0c03]: VIA Technologies, Inc. VL805 USB 3.0 Host Controller [1106:3483] (rev 01)
        Subsystem: Gigabyte Technology Co., Ltd VL805 USB 3.0 Host Controller [1458:5007]
        Kernel modules: xhci_pci
    ...
    

    但不幸的是,我的板载 USB 3.0 控制器(VL805)被禁用,所以我只做一个:

    ...
    modprobe xhci_pci
    modprobe xhci_hcd
    ...
    

    所以现在两个控制器都可以在好的机器上工作,但是有点复杂

    注意:grub 和 blacklist.conf 中的所有配置都是无用的。

    • 1
  2. David West
    2019-12-26T10:18:20+08:002019-12-26T10:18:20+08:00

    你能调出 GRUB 引导菜单并编辑类似于@matsuzaki 在这篇文章中所做的命令行选项吗?

    如果是这样,那么您可以将黑名单添加modprobe.blacklist=xhci_hcd为参数。

    根据这篇文章,您可能想尝试F1调出启动菜单:askubuntu.com/questions/1014626/how-to-access-grub-menu

    • 0

相关问题

  • 如何在 Windows 7 中运行 Ubuntu?

  • 哪个更好:Win7 主机运行 VMware 和 Ubuntu 来宾,反之亦然?

  • 类似于 Eyefinity 的东西?

  • 如何在 Ubuntu 中运行 Windows XP

  • 在哪里可以找到 Brother HL-2170W 64 位打印机驱动程序?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve