卡奥斯:

卡奥斯:

Ubuntu 专家,

我拥有一套罕见的 2016 款 MacPro6,1 配置,配备两张 AMD Radeon R9 280X Tahiti 显卡,以及三台通过 DisplayPort/Thunderbolt 端口连接的 4K 显示器。

系统安装成功,但 LiveCD(用于安装)和已安装的系统都需要“nomodeset”选项,否则启动过程会挂起并出现黑屏。

使用“nomodeset”系统只能检测并通过 HDMI 连接的一台显示器并运行。通过 DisplayPort 连接的所有显示器均保持空白。

我尝试了不同版本的 Ubuntu(14.04.4、14.04.5、15.10、16.04、16.04.1、16.10),都存在此问题,还尝试了多个版本的 Linux Mint,结果相同。我还在 Ubuntu 16.04.1 上尝试了较新的上游内核(4.6、4.7.3、4.8),结果都相同。

但是我发现了一个 Linux 发行版,叫做 KaOS(https://kaosx.us/) 在我的硬件上运行良好。对接后不久,它成功检测并打开通过显示端口连接的所有三个显示器,然后在所有三个显示器上显示正常的宽 KDE 桌面。

我比较了 Ubuntu 和 KaOS 启动时的日志条目,看来 KaOS 成功检测并激活了两个 AMD 卡,然后继续正常启动。它使用开源“radeon”驱动程序。

另一方面,Ubuntu(上面列出的所有版本和内核)使用相同的“radeon”驱动程序仅检测到第一张卡,而第二张卡出现故障,导致“radeon”驱动程序立即关闭,之后启动过程挂起。

以下是日志中的相关信息。完整日志记录可在附件中找到。

卡奥斯:

第一张牌:

[drm] radeon kernel modesetting enabled.
[drm] initializing kernel modesetting (TAHITI 0x1002:0x6798 0x106B:0x0128 0x00).
[drm] register mmio base: 0xA0700000
[drm] register mmio size: 262144
[drm] ACPI VFCT contains a BIOS for 02:00.0 1002:6798, size 65536
[drm:radeon_get_bios] ATOMBIOS detected
ATOM BIOS: Tahiti
[drm] Loading tahiti Microcode
[drm] Initialized radeon 2.45.0 20080528 for 0000:02:00.0 on minor 0
fb: switching to radeondrmfb from EFI VGA
.....

第二张牌:

[drm] ACPI VFCT contains a BIOS for 02:00.0 1002:6798, size 65536
[drm] ACPI VFCT table is not for this card
radeon 0000:06:00.0: Invalid PCI ROM header signature: expecting 0xaa55, got 0x0000
radeon 0000:06:00.0: Invalid PCI ROM header signature: expecting 0xaa55, got 0x0000
[drm:radeon_get_bios] ATOMBIOS detected
ATOM BIOS: Tahiti
[drm] Loading tahiti Microcode
[drm] radeon: dpm initialized
[drm] Initialized radeon 2.45.0 20080528 for 0000:06:00.0 on minor 1

(请注意这些“无效的 PCI ROM 标头签名”错误,但尽管如此,卡仍成功初始化,并且 KaOS 开发人员确认这些错误对于 ATI 卡来说是正常现象,并且是无害的)

乌本图:

第一张牌:

[drm] radeon kernel modesetting enabled.
[drm] initializing kernel modesetting (TAHITI 0x1002:0x6798 0x106B:0x0128).
[drm] register mmio base: 0xA0700000
[drm] register mmio size: 262144
[drm] ACPI VFCT contains a BIOS for 02:00.0 1002:6798, size 65536
[drm:radeon_get_bios] ATOMBIOS detected
ATOM BIOS: Tahiti
[drm] Loading tahiti Microcode
[drm] radeon: dpm initialized
[drm] Initialized radeon 2.43.0 20080528 for 0000:02:00.0 on minor 0
fb: switching to radeondrmfb from EFI VGA

第二张牌:

[drm] initializing kernel modesetting (TAHITI 0x1002:0x6798 0x106B:0x0127).
[drm] register mmio base: 0xA0600000
[drm] register mmio size: 262144
[drm] ACPI VFCT contains a BIOS for 02:00.0 1002:6798, size 65536
[drm] ACPI VFCT table is not for this card
radeon 0000:06:00.0: Invalid ROM contents
radeon 0000:06:00.0: Invalid ROM contents
[drm:radeon_get_bios [radeon]] *ERROR* Unable to locate a BIOS ROM
radeon 0000:06:00.0: Fatal error during GPU init
[drm] radeon: finishing device.
radeon: probe of 0000:06:00.0 failed with error -22

注意同样的错误“无效的 ROM 内容”(略有不同的消息,但我已检查来源,它们意味着相同 - 意外的 ROM 签名)这些错误之后,radeon/drm 驱动程序失败,错误无法找到 BIOS ROM,然后“完成设备”。

KaOS 使用较新的内核 4.7.3-1,但我在 Ubuntu 上尝试了 4.6、4.7.3、4.8,但没有成功。

我从日志中注意到的另一件事:在 KaOS 上,udev 规则在内核模式设置之前加载,但在 Ubuntu 上 - 在模式设置之后加载。这可能是原因吗?

显卡信息:

lspci | grep VGA
02:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Tahiti XT [Radeon HD 7970/8970 OEM / R9 280X]
06:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Tahiti XT [Radeon HD 7970/8970 OEM / R9 280X]

为了完整性,还附上了完整的“lspci -vvv”和“lshw”输出。

我确实需要让这个工作站在 Linux 下工作,不想满足于 MacOS。

如果有能力的人能看看这个并给出一些建议,我将不胜感激。

谢谢,Heigh

2016年11月8日更新:

嗨,Nick,

谢谢您的回复,我将尝试 radeon.pm=0 选项。

但我找到了一种对我有用的解决方法或解决方案,也可能对您有用。

系统需要使用 systemd-boot 引导程序(或者任何其他支持 UEFI 引导的引导程序)进行引导

当我在 MacPro 上使用安装 grub2 期间安装的标准版本启动 Ubuntu 时,radeon 驱动程序无法检测到通过显示端口连接的外部显示器。

但是,当我使用 Arch Linux(或 KaOS)安装的 systemd-boot 启动系统时,它可以正常检测显示器并正常工作,并按预期支持所有外部显示器。

我认为这与硬件的某些方面在 BIOS 启动模式下未暴露,而在 EFI/UEFI 启动模式下暴露有关。

如果可能的话,首选的解决方案是在 BIOS 模式下运行 radeon 驱动程序,或者,如果不可能,则在系统日志中显示一些有意义的消息,解释某些功能(例如通过显示端口的外部显示器)将不受支持,除非系统在 EFI/UEFI 模式下启动。

我向 radeon bugzilla 提交了一个错误:https://bugs.freedesktop.org/show_bug.cgi?id=98523

希望这个问题能被修复,并能在未来某个时候实现开箱即用。

谢谢你,Heigh

答案1

我看到报告的一个问题是 radeon 电源管理(您可以使用 在 grub 中将其关闭radeon.pm=0),它会在启动时关闭第二个 gpu。

我正在使用两个 D700 运行基本 Radeon 驱动程序。它仅适用于一个显示端口显示器。

我正在尝试让我的两台 D700 与多个显示器一起工作,但目前还没有成功。

相关内容