Applied with a small tweak to fix a warning. Thanks, Alex On Mon, Mar 3, 2025 at 7:55 AM Marek Olšák <maraeo@xxxxxxxxx> wrote: > > Reviewed-by: Marek Olšák <marek.olsak@xxxxxxx> > > On Tue, Jun 18, 2019 at 3:19 AM Richard Thier <u9vata@xxxxxxxxx> wrote: >> >> num_gb_pipes was set to a wrong value using r420_pipe_config >> >> This have lead to HyperZ glitches on fast Z clearing. >> >> See: https://bugs.freedesktop.org/show_bug.cgi?id=110897 >> >> Signed-off-by: Richard Thier <u9vata@xxxxxxxxx> >> --- >> drivers/gpu/drm/radeon/r300.c | 3 ++- >> drivers/gpu/drm/radeon/rs400.c | 21 +++++++++++++++++++-- >> 2 files changed, 21 insertions(+), 3 deletions(-) >> >> diff --git a/drivers/gpu/drm/radeon/r300.c b/drivers/gpu/drm/radeon/r300.c >> index 652126f..6724c15 100644 >> --- a/drivers/gpu/drm/radeon/r300.c >> +++ b/drivers/gpu/drm/radeon/r300.c >> @@ -355,7 +355,8 @@ int r300_mc_wait_for_idle(struct radeon_device *rdev) >> return -1; >> } >> >> -static void r300_gpu_init(struct radeon_device *rdev) >> +/* rs400_gpu_init also calls this! */ >> +void r300_gpu_init(struct radeon_device *rdev) >> { >> uint32_t gb_tile_config, tmp; >> >> diff --git a/drivers/gpu/drm/radeon/rs400.c b/drivers/gpu/drm/radeon/rs400.c >> index 4121209..4117572 100644 >> --- a/drivers/gpu/drm/radeon/rs400.c >> +++ b/drivers/gpu/drm/radeon/rs400.c >> @@ -32,6 +32,9 @@ >> #include "radeon_asic.h" >> #include "rs400d.h" >> >> +/* Needed for rs400_gpu_init that forwards to the r300 one */ >> +void r300_gpu_init(struct radeon_device *rdev); >> + >> /* This files gather functions specifics to : rs400,rs480 */ >> static int rs400_debugfs_pcie_gart_info_init(struct radeon_device *rdev); >> >> @@ -252,8 +255,22 @@ int rs400_mc_wait_for_idle(struct radeon_device *rdev) >> >> static void rs400_gpu_init(struct radeon_device *rdev) >> { >> - /* FIXME: is this correct ? */ >> - r420_pipes_init(rdev); >> + /* Earlier code was calling r420_pipes_init and then >> + * rs400_mc_wait_for_idle(rdev). The problem is that >> + * at least on my Mobility Radeon Xpress 200M RC410 card >> + * that ends up in this code path ends up num_gb_pipes == 3 >> + * while the card seems to have only one pipe. With the >> + * r420 pipe initialization method. >> + * >> + * Problems shown up as HyperZ glitches, see: >> + * https://bugs.freedesktop.org/show_bug.cgi?id=110897 >> + * >> + * Delegating initialization to r300 code seems to work >> + * and results in proper pipe numbers. The rs400 cards >> + * are said to be not r400, but r300 kind of cards. >> + */ >> + r300_gpu_init(rdev); >> + >> if (rs400_mc_wait_for_idle(rdev)) { >> pr_warn("rs400: Failed to wait MC idle while programming pipes. Bad things might happen. %08x\n", >> RREG32(RADEON_MC_STATUS)); >> -- >> 2.21.0 >> >> _______________________________________________ >> amd-gfx mailing list >> amd-gfx@xxxxxxxxxxxxxxxxxxxxx >> https://lists.freedesktop.org/mailman/listinfo/amd-gfx