--- Comment #9 from mercuriete <> ---
my investigations ends in this macro:

#define amdgpu_set_pcie_lanes(adev, l)
(adev)->asic_funcs->set_pcie_lanes((adev), (l))

then if you see this file:

static const struct amdgpu_asic_funcs si_asic_funcs =
        .read_disabled_bios = &si_read_disabled_bios,
        .read_bios_from_rom = &si_read_bios_from_rom,
        .read_register = &si_read_register,
        .reset = &si_asic_reset,
        .set_vga_state = &si_vga_set_state,
        .get_xclk = &si_get_xclk,
        .set_uvd_clocks = &si_set_uvd_clocks,
        .set_vce_clocks = NULL,
        .get_config_memsize = &si_get_config_memsize,

There are no set_pcie_lanes in that struct

so in this file:

        if (new_lane_width != current_lane_width) {
                amdgpu_set_pcie_lanes(adev, new_lane_width);
                lane_width = amdgpu_get_pcie_lanes(adev);
SI_SMC_SOFT_REGISTER_non_ulv_pcie_link_width, lane_width);

You are jumping to null.

Please answer me soon to know if i am wrong or if i am right.

PS: in radeon the implementation of that functions is in this file:


static struct radeon_asic si_asic = { 
        .pm = {
                .misc = &evergreen_pm_misc,
                .prepare = &evergreen_pm_prepare,
                .finish = &evergreen_pm_finish,
                .init_profile = &sumo_pm_init_profile,
                .get_dynpm_state = &r600_pm_get_dynpm_state,
                .get_engine_clock = &radeon_atom_get_engine_clock,
                .set_engine_clock = &radeon_atom_set_engine_clock,
                .get_memory_clock = &radeon_atom_get_memory_clock,
                .set_memory_clock = &radeon_atom_set_memory_clock,
                .get_pcie_lanes = &r600_get_pcie_lanes,
                .set_pcie_lanes = &r600_set_pcie_lanes,
                .set_clock_gating = NULL,
                .set_uvd_clocks = &si_set_uvd_clocks,
                .set_vce_clocks = &si_set_vce_clocks,
                .get_temperature = &si_get_temp,

r600_set_pcie_lanes is in this file:
void r600_set_pcie_lanes(struct radeon_device *rdev, int lanes)

PS2: So sumarizing the problem is in the macro
that doesn't exists.

Thanks you very much

You are receiving this mail because:
You are the assignee for the bug.
dri-devel mailing list

Reply via email to