Re: fence_wait returned with error -512

Steve Kargl <[email protected]>
Newsgroups gmane.os.freebsd.devel.x11
Message-ID <[email protected]>
On Thu, Sep 27, 2018 at 05:48:35PM -0700, Johannes Lundberg wrote:
>
> I pushed a fix for firmware names. Please run git pull and try again.
> 

The semi-obvious diff to git code (see patch following .sig)
allows at least the loading of one module.

% kldstat | grep radeon
11    1 0xffffffff81622000    db810 radeonkms.ko
14    1 0xffffffff81748000     12f7 radeon_CAICOS_pfp_bin.ko

Upon trying to start Xorg, I now see

info: [drm] Loading CAICOS Microcode
error: [drm:pid919:ni_init_microcode] *ERROR* ni_cp: Failed to load firmware "radeon_CAICOS_pfp_bin"
error: [drm:pid919:evergreen_startup] *ERROR* Failed to load firmware!
drmn0: error: disabling GPU acceleration
drmn0: warning: 0xfffff800029ec400 unpin not necessary
drmn0: warning: 0xfffff800029ec400 unpin not necessary
error: [drm:pid919:evergreen_init] *ERROR* radeon: MC ucode required for NI+.
drmn0: error: Fatal error during GPU init
info: [drm] radeon: finishing device.
info: [drm] radeon: ttm finalized
device_attach: drmn0 attach returned 22

-- 
Steve


diff --git a/src/dev/drm2/radeon/ni.c b/src/dev/drm2/radeon/ni.c
index e254c83..09b63e7 100644
--- a/src/dev/drm2/radeon/ni.c
+++ b/src/dev/drm2/radeon/ni.c
@@ -63,23 +63,23 @@ extern int si_rlc_init(struct radeon_device *rdev);
 
 #ifdef __linux__
 /* Firmware Names */
-MODULE_FIRMWARE("radeon/BARTS_pfp.bin");
-MODULE_FIRMWARE("radeon/BARTS_me.bin");
-MODULE_FIRMWARE("radeon/BARTS_mc.bin");
-MODULE_FIRMWARE("radeon/BTC_rlc.bin");
-MODULE_FIRMWARE("radeon/TURKS_pfp.bin");
-MODULE_FIRMWARE("radeon/TURKS_me.bin");
-MODULE_FIRMWARE("radeon/TURKS_mc.bin");
-MODULE_FIRMWARE("radeon/CAICOS_pfp.bin");
-MODULE_FIRMWARE("radeon/CAICOS_me.bin");
-MODULE_FIRMWARE("radeon/CAICOS_mc.bin");
-MODULE_FIRMWARE("radeon/CAYMAN_pfp.bin");
-MODULE_FIRMWARE("radeon/CAYMAN_me.bin");
-MODULE_FIRMWARE("radeon/CAYMAN_mc.bin");
-MODULE_FIRMWARE("radeon/CAYMAN_rlc.bin");
-MODULE_FIRMWARE("radeon/ARUBA_pfp.bin");
-MODULE_FIRMWARE("radeon/ARUBA_me.bin");
-MODULE_FIRMWARE("radeon/ARUBA_rlc.bin");
+MODULE_FIRMWARE("radeon_BARTS_pfp_bin");
+MODULE_FIRMWARE("radeon_BARTS_me_bin");
+MODULE_FIRMWARE("radeon_BARTS_mc_bin");
+MODULE_FIRMWARE("radeon_BTC_rlc_bin");
+MODULE_FIRMWARE("radeon_TURKS_pfp_bin");
+MODULE_FIRMWARE("radeon_TURKS_me_bin");
+MODULE_FIRMWARE("radeon_TURKS_mc_bin");
+MODULE_FIRMWARE("radeon_CAICOS_pfp_bin");
+MODULE_FIRMWARE("radeon_CAICOS_me_bin");
+MODULE_FIRMWARE("radeon_CAICOS_mc_bin");
+MODULE_FIRMWARE("radeon_CAYMAN_pfp_bin");
+MODULE_FIRMWARE("radeon_CAYMAN_me_bin");
+MODULE_FIRMWARE("radeon_CAYMAN_mc_bin");
+MODULE_FIRMWARE("radeon_CAYMAN_rlc_bin");
+MODULE_FIRMWARE("radeon_ARUBA_pfp_bin");
+MODULE_FIRMWARE("radeon_ARUBA_me_bin");
+MODULE_FIRMWARE("radeon_ARUBA_rlc_bin");
 #endif
 
 #define BTC_IO_MC_REGS_SIZE 29
@@ -346,7 +346,7 @@ int ni_init_microcode(struct radeon_device *rdev)
 	DRM_INFO("Loading %s Microcode\n", chip_name);
 	err = 0;
 
-	snprintf(fw_name, sizeof(fw_name), "radeon/%s_pfp.bin", chip_name);
+	snprintf(fw_name, sizeof(fw_name), "radeon_%s_pfp_bin", chip_name);
 	rdev->pfp_fw = firmware_get(fw_name);
 	if (rdev->pfp_fw == NULL) {
 		err = -ENOENT;
@@ -360,7 +360,7 @@ int ni_init_microcode(struct radeon_device *rdev)
 		goto out;
 	}
 
-	snprintf(fw_name, sizeof(fw_name), "radeon/%s_me.bin", chip_name);
+	snprintf(fw_name, sizeof(fw_name), "radeon_%s_me_bin", chip_name);
 	rdev->me_fw = firmware_get(fw_name);
 	if (rdev->me_fw == NULL) {
 		err = -ENOENT;
@@ -373,7 +373,7 @@ int ni_init_microcode(struct radeon_device *rdev)
 		err = -EINVAL;
 	}
 
-	snprintf(fw_name, sizeof(fw_name), "radeon/%s_rlc.bin", rlc_chip_name);
+	snprintf(fw_name, sizeof(fw_name), "radeon_%s_rlc_bin", rlc_chip_name);
 	rdev->rlc_fw = firmware_get(fw_name);
 	if (rdev->rlc_fw == NULL) {
 		err = -ENOENT;
@@ -388,7 +388,7 @@ int ni_init_microcode(struct radeon_device *rdev)
 
 	/* no MC ucode on TN */
 	if (!(rdev->flags & RADEON_IS_IGP)) {
-		snprintf(fw_name, sizeof(fw_name), "radeon/%s_mc.bin", chip_name);
+		snprintf(fw_name, sizeof(fw_name), "radeon_%s_mc_bin", chip_name);
 		rdev->mc_fw = firmware_get(fw_name);
 		if (rdev->mc_fw == NULL) {
 			err = -ENOENT;
diff --git a/src/dev/drm2/radeon/r600.c b/src/dev/drm2/radeon/r600.c
index d9b0322..30a7aca 100644
--- a/src/dev/drm2/radeon/r600.c
+++ b/src/dev/drm2/radeon/r600.c
@@ -52,47 +52,47 @@ __FBSDID("$FreeBSD$");
 
 #ifdef __linux__
 /* Firmware Names */
-MODULE_FIRMWARE("radeon/R600_pfp.bin");
-MODULE_FIRMWARE("radeon/R600_me.bin");
-MODULE_FIRMWARE("radeon/RV610_pfp.bin");
-MODULE_FIRMWARE("radeon/RV610_me.bin");
-MODULE_FIRMWARE("radeon/RV630_pfp.bin");
-MODULE_FIRMWARE("radeon/RV630_me.bin");
-MODULE_FIRMWARE("radeon/RV620_pfp.bin");
-MODULE_FIRMWARE("radeon/RV620_me.bin");
-MODULE_FIRMWARE("radeon/RV635_pfp.bin");
-MODULE_FIRMWARE("radeon/RV635_me.bin");
-MODULE_FIRMWARE("radeon/RV670_pfp.bin");
-MODULE_FIRMWARE("radeon/RV670_me.bin");
-MODULE_FIRMWARE("radeon/RS780_pfp.bin");
-MODULE_FIRMWARE("radeon/RS780_me.bin");
-MODULE_FIRMWARE("radeon/RV770_pfp.bin");
-MODULE_FIRMWARE("radeon/RV770_me.bin");
-MODULE_FIRMWARE("radeon/RV730_pfp.bin");
-MODULE_FIRMWARE("radeon/RV730_me.bin");
-MODULE_FIRMWARE("radeon/RV710_pfp.bin");
-MODULE_FIRMWARE("radeon/RV710_me.bin");
-MODULE_FIRMWARE("radeon/R600_rlc.bin");
-MODULE_FIRMWARE("radeon/R700_rlc.bin");
-MODULE_FIRMWARE("radeon/CEDAR_pfp.bin");
-MODULE_FIRMWARE("radeon/CEDAR_me.bin");
-MODULE_FIRMWARE("radeon/CEDAR_rlc.bin");
-MODULE_FIRMWARE("radeon/REDWOOD_pfp.bin");
-MODULE_FIRMWARE("radeon/REDWOOD_me.bin");
-MODULE_FIRMWARE("radeon/REDWOOD_rlc.bin");
-MODULE_FIRMWARE("radeon/JUNIPER_pfp.bin");
-MODULE_FIRMWARE("radeon/JUNIPER_me.bin");
-MODULE_FIRMWARE("radeon/JUNIPER_rlc.bin");
-MODULE_FIRMWARE("radeon/CYPRESS_pfp.bin");
-MODULE_FIRMWARE("radeon/CYPRESS_me.bin");
-MODULE_FIRMWARE("radeon/CYPRESS_rlc.bin");
-MODULE_FIRMWARE("radeon/PALM_pfp.bin");
-MODULE_FIRMWARE("radeon/PALM_me.bin");
-MODULE_FIRMWARE("radeon/SUMO_rlc.bin");
-MODULE_FIRMWARE("radeon/SUMO_pfp.bin");
-MODULE_FIRMWARE("radeon/SUMO_me.bin");
-MODULE_FIRMWARE("radeon/SUMO2_pfp.bin");
-MODULE_FIRMWARE("radeon/SUMO2_me.bin");
+MODULE_FIRMWARE("radeon_R600_pfp_bin");
+MODULE_FIRMWARE("radeon_R600_me_bin");
+MODULE_FIRMWARE("radeon_RV610_pfp_bin");
+MODULE_FIRMWARE("radeon_RV610_me_bin");
+MODULE_FIRMWARE("radeon_RV630_pfp_bin");
+MODULE_FIRMWARE("radeon_RV630_me_bin");
+MODULE_FIRMWARE("radeon_RV620_pfp_bin");
+MODULE_FIRMWARE("radeon_RV620_me_bin");
+MODULE_FIRMWARE("radeon_RV635_pfp_bin");
+MODULE_FIRMWARE("radeon_RV635_me_bin");
+MODULE_FIRMWARE("radeon_RV670_pfp_bin");
+MODULE_FIRMWARE("radeon_RV670_me_bin");
+MODULE_FIRMWARE("radeon_RS780_pfp_bin");
+MODULE_FIRMWARE("radeon_RS780_me_bin");
+MODULE_FIRMWARE("radeon_RV770_pfp_bin");
+MODULE_FIRMWARE("radeon_RV770_me_bin");
+MODULE_FIRMWARE("radeon_RV730_pfp_bin");
+MODULE_FIRMWARE("radeon_RV730_me_bin");
+MODULE_FIRMWARE("radeon_RV710_pfp_bin");
+MODULE_FIRMWARE("radeon_RV710_me_bin");
+MODULE_FIRMWARE("radeon_R600_rlc_bin");
+MODULE_FIRMWARE("radeon_R700_rlc_bin");
+MODULE_FIRMWARE("radeon_CEDAR_pfp_bin");
+MODULE_FIRMWARE("radeon_CEDAR_me_bin");
+MODULE_FIRMWARE("radeon_CEDAR_rlc_bin");
+MODULE_FIRMWARE("radeon_REDWOOD_pfp_bin");
+MODULE_FIRMWARE("radeon_REDWOOD_me_bin");
+MODULE_FIRMWARE("radeon_REDWOOD_rlc_bin");
+MODULE_FIRMWARE("radeon_JUNIPER_pfp_bin");
+MODULE_FIRMWARE("radeon_JUNIPER_me_bin");
+MODULE_FIRMWARE("radeon_JUNIPER_rlc_bin");
+MODULE_FIRMWARE("radeon_CYPRESS_pfp_bin");
+MODULE_FIRMWARE("radeon_CYPRESS_me_bin");
+MODULE_FIRMWARE("radeon_CYPRESS_rlc_bin");
+MODULE_FIRMWARE("radeon_PALM_pfp_bin");
+MODULE_FIRMWARE("radeon_PALM_me_bin");
+MODULE_FIRMWARE("radeon_SUMO_rlc_bin");
+MODULE_FIRMWARE("radeon_SUMO_pfp_bin");
+MODULE_FIRMWARE("radeon_SUMO_me_bin");
+MODULE_FIRMWARE("radeon_SUMO2_pfp_bin");
+MODULE_FIRMWARE("radeon_SUMO2_me_bin");
 #endif
 
 int r600_debugfs_mc_info_init(struct radeon_device *rdev);
@@ -2066,7 +2066,7 @@ int r600_init_microcode(struct radeon_device *rdev)
 	DRM_INFO("Loading %s Microcode\n", chip_name);
 	err = 0;
 
-	snprintf(fw_name, sizeof(fw_name), "radeon/%s_pfp.bin", chip_name);
+	snprintf(fw_name, sizeof(fw_name), "radeon_%s_pfp_bin", chip_name);
 	rdev->pfp_fw = firmware_get(fw_name);
 	if (rdev->pfp_fw == NULL) {
 		err = -ENOENT;
@@ -2080,7 +2080,7 @@ int r600_init_microcode(struct radeon_device *rdev)
 		goto out;
 	}
 
-	snprintf(fw_name, sizeof(fw_name), "radeon/%s_me.bin", chip_name);
+	snprintf(fw_name, sizeof(fw_name), "radeon_%s_me_bin", chip_name);
 	rdev->me_fw = firmware_get(fw_name);
 	if (rdev->me_fw == NULL) {
 		err = -ENOENT;
@@ -2093,7 +2093,7 @@ int r600_init_microcode(struct radeon_device *rdev)
 		err = -EINVAL;
 	}
 
-	snprintf(fw_name, sizeof(fw_name), "radeon/%s_rlc.bin", rlc_chip_name);
+	snprintf(fw_name, sizeof(fw_name), "radeon_%s_rlc_bin", rlc_chip_name);
 	rdev->rlc_fw = firmware_get(fw_name);
 	if (rdev->rlc_fw == NULL) {
 		err = -ENOENT;
diff --git a/src/dev/drm2/radeon/r600_cp.c b/src/dev/drm2/radeon/r600_cp.c
index 3c6462e..9382cb5 100644
--- a/src/dev/drm2/radeon/r600_cp.c
+++ b/src/dev/drm2/radeon/r600_cp.c
@@ -46,26 +46,26 @@ __FBSDID("$FreeBSD$");
 
 #ifdef __linux__
 /* Firmware Names */
-MODULE_FIRMWARE("radeon/R600_pfp.bin");
-MODULE_FIRMWARE("radeon/R600_me.bin");
-MODULE_FIRMWARE("radeon/RV610_pfp.bin");
-MODULE_FIRMWARE("radeon/RV610_me.bin");
-MODULE_FIRMWARE("radeon/RV630_pfp.bin");
-MODULE_FIRMWARE("radeon/RV630_me.bin");
-MODULE_FIRMWARE("radeon/RV620_pfp.bin");
-MODULE_FIRMWARE("radeon/RV620_me.bin");
-MODULE_FIRMWARE("radeon/RV635_pfp.bin");
-MODULE_FIRMWARE("radeon/RV635_me.bin");
-MODULE_FIRMWARE("radeon/RV670_pfp.bin");
-MODULE_FIRMWARE("radeon/RV670_me.bin");
-MODULE_FIRMWARE("radeon/RS780_pfp.bin");
-MODULE_FIRMWARE("radeon/RS780_me.bin");
-MODULE_FIRMWARE("radeon/RV770_pfp.bin");
-MODULE_FIRMWARE("radeon/RV770_me.bin");
-MODULE_FIRMWARE("radeon/RV730_pfp.bin");
-MODULE_FIRMWARE("radeon/RV730_me.bin");
-MODULE_FIRMWARE("radeon/RV710_pfp.bin");
-MODULE_FIRMWARE("radeon/RV710_me.bin");
+MODULE_FIRMWARE("radeon_R600_pfp.bin");
+MODULE_FIRMWARE("radeon_R600_me.bin");
+MODULE_FIRMWARE("radeon_RV610_pfp.bin");
+MODULE_FIRMWARE("radeon_RV610_me.bin");
+MODULE_FIRMWARE("radeon_RV630_pfp.bin");
+MODULE_FIRMWARE("radeon_RV630_me.bin");
+MODULE_FIRMWARE("radeon_RV620_pfp.bin");
+MODULE_FIRMWARE("radeon_RV620_me.bin");
+MODULE_FIRMWARE("radeon_RV635_pfp.bin");
+MODULE_FIRMWARE("radeon_RV635_me.bin");
+MODULE_FIRMWARE("radeon_RV670_pfp.bin");
+MODULE_FIRMWARE("radeon_RV670_me.bin");
+MODULE_FIRMWARE("radeon_RS780_pfp.bin");
+MODULE_FIRMWARE("radeon_RS780_me.bin");
+MODULE_FIRMWARE("radeon_RV770_pfp.bin");
+MODULE_FIRMWARE("radeon_RV770_me.bin");
+MODULE_FIRMWARE("radeon_RV730_pfp.bin");
+MODULE_FIRMWARE("radeon_RV730_me.bin");
+MODULE_FIRMWARE("radeon_RV710_pfp.bin");
+MODULE_FIRMWARE("radeon_RV710_me.bin");
 #endif
 
 
@@ -359,7 +359,7 @@ static int r600_cp_init_microcode(drm_radeon_private_t *dev_priv)
 	DRM_INFO("Loading %s CP Microcode\n", chip_name);
 	err = 0;
 
-	snprintf(fw_name, sizeof(fw_name), "radeon/%s_pfp.bin", chip_name);
+	snprintf(fw_name, sizeof(fw_name), "radeon_%s_pfp.bin", chip_name);
 	dev_priv->pfp_fw = firmware_get(fw_name);
 	if (dev_priv->pfp_fw == NULL) {
 		err = -ENOENT;
@@ -373,7 +373,7 @@ static int r600_cp_init_microcode(drm_radeon_private_t *dev_priv)
 		goto out;
 	}
 
-	snprintf(fw_name, sizeof(fw_name), "radeon/%s_me.bin", chip_name);
+	snprintf(fw_name, sizeof(fw_name), "radeon_%s_me.bin", chip_name);
 	dev_priv->me_fw = firmware_get(fw_name);
 	if (dev_priv->me_fw == NULL) {
 		err = -ENOENT;
diff --git a/src/dev/drm2/radeon/si.c b/src/dev/drm2/radeon/si.c
index 394b93a..1ac5d78 100644
--- a/src/dev/drm2/radeon/si.c
+++ b/src/dev/drm2/radeon/si.c
@@ -41,21 +41,21 @@ __FBSDID("$FreeBSD$");
 #define SI_MC_UCODE_SIZE 7769
 
 #ifdef __linux__
-MODULE_FIRMWARE("radeon/TAHITI_pfp.bin");
-MODULE_FIRMWARE("radeon/TAHITI_me.bin");
-MODULE_FIRMWARE("radeon/TAHITI_ce.bin");
-MODULE_FIRMWARE("radeon/TAHITI_mc.bin");
-MODULE_FIRMWARE("radeon/TAHITI_rlc.bin");
-MODULE_FIRMWARE("radeon/PITCAIRN_pfp.bin");
-MODULE_FIRMWARE("radeon/PITCAIRN_me.bin");
-MODULE_FIRMWARE("radeon/PITCAIRN_ce.bin");
-MODULE_FIRMWARE("radeon/PITCAIRN_mc.bin");
-MODULE_FIRMWARE("radeon/PITCAIRN_rlc.bin");
-MODULE_FIRMWARE("radeon/VERDE_pfp.bin");
-MODULE_FIRMWARE("radeon/VERDE_me.bin");
-MODULE_FIRMWARE("radeon/VERDE_ce.bin");
-MODULE_FIRMWARE("radeon/VERDE_mc.bin");
-MODULE_FIRMWARE("radeon/VERDE_rlc.bin");
+MODULE_FIRMWARE("radeon_TAHITI_pfp_bin");
+MODULE_FIRMWARE("radeon_TAHITI_me_bin");
+MODULE_FIRMWARE("radeon_TAHITI_ce_bin");
+MODULE_FIRMWARE("radeon_TAHITI_mc_bin");
+MODULE_FIRMWARE("radeon_TAHITI_rlc_bin");
+MODULE_FIRMWARE("radeon_PITCAIRN_pfp_bin");
+MODULE_FIRMWARE("radeon_PITCAIRN_me_bin");
+MODULE_FIRMWARE("radeon_PITCAIRN_ce_bin");
+MODULE_FIRMWARE("radeon_PITCAIRN_mc_bin");
+MODULE_FIRMWARE("radeon_PITCAIRN_rlc_bin");
+MODULE_FIRMWARE("radeon_VERDE_pfp_bin");
+MODULE_FIRMWARE("radeon_VERDE_me_bin");
+MODULE_FIRMWARE("radeon_VERDE_ce_bin");
+MODULE_FIRMWARE("radeon_VERDE_mc_bin");
+MODULE_FIRMWARE("radeon_VERDE_rlc_bin");
 #endif
 
 #ifdef FREEBSD_WIP /* FreeBSD: to please GCC 4.2. */
@@ -325,7 +325,7 @@ static int si_init_microcode(struct radeon_device *rdev)
 	DRM_INFO("Loading %s Microcode\n", chip_name);
 	err = 0;
 
-	snprintf(fw_name, sizeof(fw_name), "radeon/%s_pfp.bin", chip_name);
+	snprintf(fw_name, sizeof(fw_name), "radeon_%s_pfp_bin", chip_name);
 	rdev->pfp_fw = drm_firmware_get(fw_name, rdev->dev);
 	if (rdev->pfp_fw == NULL) {
 		err = -ENOENT;
@@ -339,7 +339,7 @@ static int si_init_microcode(struct radeon_device *rdev)
 		goto out;
 	}
 
-	snprintf(fw_name, sizeof(fw_name), "radeon/%s_me.bin", chip_name);
+	snprintf(fw_name, sizeof(fw_name), "radeon_%s_me_bin", chip_name);
 	rdev->me_fw = drm_firmware_get(fw_name, rdev->dev);
 	if (rdev->me_fw == NULL) {
 		err = -ENOENT;
@@ -352,7 +352,7 @@ static int si_init_microcode(struct radeon_device *rdev)
 		err = -EINVAL;
 	}
 
-	snprintf(fw_name, sizeof(fw_name), "radeon/%s_ce.bin", chip_name);
+	snprintf(fw_name, sizeof(fw_name), "radeon_%s_ce_bin", chip_name);
 	rdev->ce_fw = drm_firmware_get(fw_name, rdev->dev);
 	if (rdev->ce_fw == NULL) {
 		err = -ENOENT;
@@ -365,7 +365,7 @@ static int si_init_microcode(struct radeon_device *rdev)
 		err = -EINVAL;
 	}
 
-	snprintf(fw_name, sizeof(fw_name), "radeon/%s_rlc.bin", rlc_chip_name);
+	snprintf(fw_name, sizeof(fw_name), "radeon_%s_rlc_bin", rlc_chip_name);
 	rdev->rlc_fw = drm_firmware_get(fw_name, rdev->dev);
 	if (rdev->rlc_fw == NULL) {
 		err = -ENOENT;
@@ -378,7 +378,7 @@ static int si_init_microcode(struct radeon_device *rdev)
 		err = -EINVAL;
 	}
 
-	snprintf(fw_name, sizeof(fw_name), "radeon/%s_mc.bin", chip_name);
+	snprintf(fw_name, sizeof(fw_name), "radeon_%s_mc_bin", chip_name);
 	rdev->mc_fw = drm_firmware_get(fw_name, rdev->dev);
 	if (rdev->mc_fw == NULL) {
 		err = -ENOENT;
_______________________________________________
[email protected] mailing list
https://lists.freebsd.org/mailman/listinfo/freebsd-x11
To unsubscribe, send any mail to "[email protected]"
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.