Re: [PATCH] drm/radeon: Fix rs400_gpu_init for ATI mobility radeon Xpress 200M

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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




[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux