Ticket #17377: 0001-radeon_hd-Fix-memory-detection-on-newer-cards.patch

File 0001-radeon_hd-Fix-memory-detection-on-newer-cards.patch, 2.3 KB (added by kallisti5, 2 years ago)

fix patch v1

  • headers/private/graphics/radeon_hd/si_reg.h

    From c08c5a37b6e7fa17cb859d24283f35a47bbd41ca Mon Sep 17 00:00:00 2001
    From: Alexander von Gluck IV <kallisti5@unixzen.com>
    Date: Wed, 5 Jan 2022 19:25:31 -0600
    Subject: [PATCH] radeon_hd: Fix memory detection on newer cards
    
    Change-Id: Iac1b5870951d2f982002de65453959cfc38e79cc
    ---
     headers/private/graphics/radeon_hd/si_reg.h           |  1 +
     .../kernel/drivers/graphics/radeon_hd/radeon_hd.cpp   | 11 ++++++++---
     2 files changed, 9 insertions(+), 3 deletions(-)
    
    diff --git a/headers/private/graphics/radeon_hd/si_reg.h b/headers/private/graphics/radeon_hd/si_reg.h
    index adc6f08c5e..dd5ea7bd87 100644
    a b  
    218218#define     SI_MC_VMID(x)                       ((x) << 25)
    219219
    220220#define SI_CONFIG_MEMSIZE                       0x5428
     221#define SI_CONFIG_MEMSIZE_TAHITI                    0x0de3  // or 0x378c?
    221222
    222223#define SI_INTERRUPT_CNTL                       0x5468
    223224#define     SI_IH_DUMMY_RD_OVERRIDE             (1 << 0)
  • src/add-ons/kernel/drivers/graphics/radeon_hd/radeon_hd.cpp

    diff --git a/src/add-ons/kernel/drivers/graphics/radeon_hd/radeon_hd.cpp b/src/add-ons/kernel/drivers/graphics/radeon_hd/radeon_hd.cpp
    index d79e410ee0..2ed7687408 100644
    a b radeon_hd_init(radeon_info &info)  
    660660    mmioMapper.Detach();
    661661
    662662    // *** Populate frame buffer information
    663     if (info.chipsetID >= RADEON_CEDAR) {
     663    if (info.chipsetID == RADEON_TAHITI || info.dceMajor >= 6 && info.dceMinor >= 1) {
     664        // bytes I think?
     665        info.shared_info->graphics_memory_size
     666            = (uint32)(((uint64)read32(info.registers
     667                + SI_CONFIG_MEMSIZE_TAHITI) << 20) / 1024);
     668    } else if (info.chipsetID >= RADEON_CEDAR) {
    664669        if ((info.chipsetFlags & CHIP_APU) != 0
    665670            || (info.chipsetFlags & CHIP_IGP) != 0) {
    666671            // Evergreen+ fusion in bytes
    667672            info.shared_info->graphics_memory_size
    668                 = read32(info.registers + CONFIG_MEMSIZE) / 1024;
     673                = (uint32)((uint64)read32(info.registers + CONFIG_MEMSIZE) / 1024);
    669674        } else {
    670675            // Evergreen+ has memory stored in MB
    671676            info.shared_info->graphics_memory_size
    672                 = read32(info.registers + CONFIG_MEMSIZE) * 1024;
     677                = (uint32)((uint64)read32(info.registers + CONFIG_MEMSIZE) * 1024);
    673678        }
    674679    } else if (info.chipsetID >= RADEON_R600) {
    675680        // R600-R700 has memory stored in bytes