mirror of
git://nv-tegra.nvidia.com/linux-nvgpu.git
synced 2025-12-25 11:04:51 +03:00
gpu: nvgpu: assume 1:1 IPA to PA mapping for syncpt
Currently, hyp_read_ipa_pa_info() only translates IPA for RAM mappings. It fails for MMIO mappings. In particular, it will fail when attempting to translate addresses in the syncpoint shim aperture. As a workaround, assume 1:1 IPA to PA mapping when hyp_read_ipa_pa_info fails, and address is in syncpt shim aperture. Bug 2096877 Change-Id: I5267f0a8febf065157910ad3408374cacd398731 Signed-off-by: Thomas Fleury <tfleury@nvidia.com> Reviewed-on: https://git-master.nvidia.com/r/1687796 Reviewed-by: svc-mobile-coverity <svc-mobile-coverity@nvidia.com> GVS: Gerrit_Virtual_Submit Reviewed-by: Richard Zhao <rizhao@nvidia.com> Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com> Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com> Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
This commit is contained in:
committed by
mobile promotions
parent
5ab3524f91
commit
86bb766e16
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2017, NVIDIA CORPORATION. All rights reserved.
|
||||
* Copyright (c) 2017-2018, NVIDIA CORPORATION. All rights reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms and conditions of the GNU General Public License,
|
||||
@@ -67,8 +67,21 @@ static u64 nvgpu_tegra_hv_ipa_pa(struct gk20a *g, u64 ipa)
|
||||
|
||||
err = hyp_read_ipa_pa_info(&info, platform->vmid, ipa);
|
||||
if (err < 0) {
|
||||
nvgpu_err(g, "ipa=%llx translation failed vmid=%u err=%d",
|
||||
/* WAR for bug 2096877
|
||||
* hyp_read_ipa_pa_info only looks up RAM mappings.
|
||||
* assume one to one IPA:PA mapping for syncpt aperture
|
||||
*/
|
||||
u64 start = g->syncpt_unit_base;
|
||||
u64 end = g->syncpt_unit_base + g->syncpt_unit_size;
|
||||
if ((ipa >= start) && (ipa < end)) {
|
||||
pa = ipa;
|
||||
nvgpu_log(g, gpu_dbg_map_v,
|
||||
"ipa=%llx vmid=%d -> pa=%llx (SYNCPT)\n",
|
||||
ipa, platform->vmid, pa);
|
||||
} else {
|
||||
nvgpu_err(g, "ipa=%llx translation failed vmid=%u err=%d",
|
||||
ipa, platform->vmid, err);
|
||||
}
|
||||
} else {
|
||||
pa = info.base + info.offset;
|
||||
nvgpu_log(g, gpu_dbg_map_v,
|
||||
|
||||
Reference in New Issue
Block a user