aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c28
1 files changed, 25 insertions, 3 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c
index 882a33e134d8..d41a0664aa27 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c
@@ -2765,9 +2765,10 @@ int amdgpu_ras_add_bad_pages(struct amdgpu_device *adev,
struct ras_err_handler_data *data;
struct ras_err_data err_data;
struct eeprom_table_record *err_rec;
+ enum amdgpu_memory_partition nps = AMDGPU_NPS1_PARTITION_MODE;
int ret = 0;
uint32_t i, j, loop_cnt = 1;
- bool is_mca_add = true;
+ bool is_mca_add = true, find_pages_per_pa = false;
if (!con || !con->eh_data || !bps || pages <= 0)
return 0;
@@ -2797,12 +2798,33 @@ int amdgpu_ras_add_bad_pages(struct amdgpu_device *adev,
}
loop_cnt = adev->umc.retire_unit;
+ if (adev->gmc.gmc_funcs->query_mem_partition_mode)
+ nps = adev->gmc.gmc_funcs->query_mem_partition_mode(adev);
}
for (i = 0; i < pages; i++) {
if (is_mca_add) {
- if (amdgpu_ras_mca2pa(adev, &bps[i], &err_data))
- goto free;
+ if (!find_pages_per_pa) {
+ if (amdgpu_ras_mca2pa(adev, &bps[i], &err_data)) {
+ if (!i && nps == AMDGPU_NPS1_PARTITION_MODE) {
+ /* may use old RAS TA, use PA to find pages in
+ * one row
+ */
+ if (amdgpu_umc_pages_in_a_row(adev, &err_data,
+ bps[i].retired_page << AMDGPU_GPU_PAGE_SHIFT))
+ goto free;
+ else
+ find_pages_per_pa = true;
+ } else {
+ /* unsupported cases */
+ goto free;
+ }
+ }
+ } else {
+ if (amdgpu_umc_pages_in_a_row(adev, &err_data,
+ bps[i].retired_page << AMDGPU_GPU_PAGE_SHIFT))
+ goto free;
+ }
err_rec = err_data.err_addr;
} else {
7245182a200e3ac69bb86a0e60cc34c34dc9&follow=1'>nfp: pass packet pointer to nfp_net_parse_meta()Jakub Kicinski1-10/+8 2019-12-19nfp: flower: update flow merge code to support IPv6 tunnelsJohn Hurley1-5/+23 2019-12-19nfp: flower: support ipv6 tunnel keep-alive messages from fwJohn Hurley4-0/+67 2019-12-19nfp: flower: handle notifiers for ipv6 route changesJohn Hurley2-68/+181 2019-12-19nfp: flower: handle ipv6 tunnel no neigh requestJohn Hurley4-8/+116 2019-12-19nfp: flower: modify pre-tunnel and set tunnel action for ipv6John Hurley3-30/+62 2019-12-19nfp: flower: offload list of IPv6 tunnel endpoint addressesJohn Hurley5-1/+141 2019-12-19nfp: flower: compile match for IPv6 tunnelsJohn Hurley4-51/+246 2019-12-19nfp: flower: move udp tunnel key match compilation to helper functionJohn Hurley1-22/+35 2019-12-19nfp: flower: pass flow rule pointer directly to match functionsJohn Hurley1-49/+27 2019-12-19hdlcdrv: replace unnecessary assertion in hdlcdrv_registerAditya Pakki1-2/+0 2019-12-19net: mvpp2: cycle comphy to power it downRussell King1-0/+10 2019-12-19net: sfp: report error on failure to read sfp soft statusRussell King1-2/+9 2019-12-19net: phy: marvell: use genphy_check_and_restart_aneg()Russell King1-20/+1 2019-12-19net: phy: marvell: use phy_modify_changed()Russell King1-16/+10 2019-12-19net: phy: marvell: use existing clause 37 definitionsRussell King1-18/+8 2019-12-19net: phy: marvell: consolidate phy status readingRussell King1-43/+17 2019-12-19net: phy: marvell: use positive logic for link stateRussell King1-4/+3 2019-12-19net: phy: marvell: initialise link partner state earlierRussell King1-20/+5 2019-12-19net: phy: marvell: rearrange to use genphy_read_lpa()Russell King1-34/+32 2019-12-19net: phy: provide and use genphy_read_status_fixed()Russell King4-47/+41 2019-12-19net: phy: add genphy_check_and_restart_aneg()Russell King2-17/+32 2019-12-19net: phy: use phy_resolve_aneg_pause()Russell King3-14/+3 2019-12-19net: phy: remove redundant .aneg_done initialisersRussell King2-7/+0 2019-12-18net: stmmac: tc: Fix TAPRIO division operationJose Abreu1-2/+4