https://bugzilla.kernel.org/show_bug.cgi?id=63011 --- Comment #5 from Mikko Rapeli <mikko.rapeli@xxxxxx> --- This partial revert aka hack seems to fix the issue though I have no idea what it does :) --- a/drivers/gpu/drm/radeon/ni.c +++ b/drivers/gpu/drm/radeon/ni.c @@ -686,7 +686,6 @@ int ni_init_microcode(struct radeon_device *rdev) const char *chip_name; const char *rlc_chip_name; size_t pfp_req_size, me_req_size, rlc_req_size, mc_req_size; - size_t smc_req_size = 0; char fw_name[30]; int err; @@ -700,7 +699,6 @@ int ni_init_microcode(struct radeon_device *rdev) me_req_size = EVERGREEN_PM4_UCODE_SIZE * 4; rlc_req_size = EVERGREEN_RLC_UCODE_SIZE * 4; mc_req_size = BTC_MC_UCODE_SIZE * 4; - smc_req_size = ALIGN(BARTS_SMC_UCODE_SIZE, 4); break; case CHIP_TURKS: chip_name = "TURKS"; @@ -709,7 +707,6 @@ int ni_init_microcode(struct radeon_device *rdev) me_req_size = EVERGREEN_PM4_UCODE_SIZE * 4; rlc_req_size = EVERGREEN_RLC_UCODE_SIZE * 4; mc_req_size = BTC_MC_UCODE_SIZE * 4; - smc_req_size = ALIGN(TURKS_SMC_UCODE_SIZE, 4); break; case CHIP_CAICOS: chip_name = "CAICOS"; @@ -718,7 +715,6 @@ int ni_init_microcode(struct radeon_device *rdev) me_req_size = EVERGREEN_PM4_UCODE_SIZE * 4; rlc_req_size = EVERGREEN_RLC_UCODE_SIZE * 4; mc_req_size = BTC_MC_UCODE_SIZE * 4; - smc_req_size = ALIGN(CAICOS_SMC_UCODE_SIZE, 4); break; case CHIP_CAYMAN: chip_name = "CAYMAN"; @@ -727,7 +723,6 @@ int ni_init_microcode(struct radeon_device *rdev) me_req_size = CAYMAN_PM4_UCODE_SIZE * 4; rlc_req_size = CAYMAN_RLC_UCODE_SIZE * 4; mc_req_size = CAYMAN_MC_UCODE_SIZE * 4; - smc_req_size = ALIGN(CAYMAN_SMC_UCODE_SIZE, 4); break; case CHIP_ARUBA: chip_name = "ARUBA"; @@ -791,23 +786,6 @@ int ni_init_microcode(struct radeon_device *rdev) } } - if ((rdev->family >= CHIP_BARTS) && (rdev->family <= CHIP_CAYMAN)) { - snprintf(fw_name, sizeof(fw_name), "radeon/%s_smc.bin", chip_name); - err = request_firmware(&rdev->smc_fw, fw_name, rdev->dev); - if (err) { - printk(KERN_ERR - "smc: error loading firmware \"%s\"\n", - fw_name); - release_firmware(rdev->smc_fw); - rdev->smc_fw = NULL; - } else if (rdev->smc_fw->size != smc_req_size) { - printk(KERN_ERR - "ni_mc: Bogus length %zu in firmware \"%s\"\n", - rdev->mc_fw->size, fw_name); - err = -EINVAL; - } - } - out: if (err) { if (err != -EINVAL) diff --git a/drivers/gpu/drm/radeon/radeon_asic.c b/drivers/gpu/drm/radeon/radeon_asic.c index 8e5438e..8d81f59 100644 --- a/drivers/gpu/drm/radeon/radeon_asic.c +++ b/drivers/gpu/drm/radeon/radeon_asic.c @@ -1759,23 +1759,6 @@ static struct radeon_asic btc_asic = { .set_uvd_clocks = &evergreen_set_uvd_clocks, .get_temperature = &evergreen_get_temp, }, - .dpm = { - .init = &btc_dpm_init, - .setup_asic = &btc_dpm_setup_asic, - .enable = &btc_dpm_enable, - .disable = &btc_dpm_disable, - .pre_set_power_state = &btc_dpm_pre_set_power_state, - .set_power_state = &btc_dpm_set_power_state, - .post_set_power_state = &btc_dpm_post_set_power_state, - .display_configuration_changed = &cypress_dpm_display_configuration_changed, - .fini = &btc_dpm_fini, - .get_sclk = &btc_dpm_get_sclk, - .get_mclk = &btc_dpm_get_mclk, - .print_power_state = &rv770_dpm_print_power_state, - .debugfs_print_current_performance_level = &rv770_dpm_debugfs_print_current_performance_level, - .force_performance_level = &rv770_dpm_force_performance_level, - .vblank_too_short = &btc_dpm_vblank_too_short, - }, .pflip = { .pre_page_flip = &evergreen_pre_page_flip, .page_flip = &evergreen_page_flip, diff --git a/drivers/gpu/drm/radeon/radeon_asic.h b/drivers/gpu/drm/radeon/radeon_asic.h index ddbd2b8..6a54491 100644 --- a/drivers/gpu/drm/radeon/radeon_asic.h +++ b/drivers/gpu/drm/radeon/radeon_asic.h @@ -554,17 +554,6 @@ int cypress_dpm_set_power_state(struct radeon_device *rdev); void cypress_dpm_display_configuration_changed(struct radeon_device *rdev); void cypress_dpm_fini(struct radeon_device *rdev); bool cypress_dpm_vblank_too_short(struct radeon_device *rdev); -int btc_dpm_init(struct radeon_device *rdev); -void btc_dpm_setup_asic(struct radeon_device *rdev); -int btc_dpm_enable(struct radeon_device *rdev); -void btc_dpm_disable(struct radeon_device *rdev); -int btc_dpm_pre_set_power_state(struct radeon_device *rdev); -int btc_dpm_set_power_state(struct radeon_device *rdev); -void btc_dpm_post_set_power_state(struct radeon_device *rdev); -void btc_dpm_fini(struct radeon_device *rdev); -u32 btc_dpm_get_sclk(struct radeon_device *rdev, bool low); -u32 btc_dpm_get_mclk(struct radeon_device *rdev, bool low); -bool btc_dpm_vblank_too_short(struct radeon_device *rdev); int sumo_dpm_init(struct radeon_device *rdev); int sumo_dpm_enable(struct radeon_device *rdev); void sumo_dpm_disable(struct radeon_device *rdev); -- You are receiving this mail because: You are watching the assignee of the bug. _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/dri-devel