* [PATCH umr] Skip ahead if PDE entry is actually a PTE entry. (v2)
@ 2017-11-04 17:15 Tom St Denis
[not found] ` <20171104171535.6620-1-tom.stdenis-5C7GfCeVMHo@public.gmane.org>
0 siblings, 1 reply; 6+ messages in thread
From: Tom St Denis @ 2017-11-04 17:15 UTC (permalink / raw)
To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW; +Cc: Tom St Denis
Signed-off-by: Tom St Denis <tom.stdenis@amd.com>
(v2) Don't print out PDE entries with PTE bit set
---
src/lib/read_vram.c | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/src/lib/read_vram.c b/src/lib/read_vram.c
index 0df48dadec12..51823d71021e 100644
--- a/src/lib/read_vram.c
+++ b/src/lib/read_vram.c
@@ -509,7 +509,7 @@ static int umr_access_vram_ai(struct umr_asic *asic, uint32_t vmid,
pde_fields.system = (pde_entry >> 1) & 1;
pde_fields.cache = (pde_entry >> 2) & 1;
pde_fields.pte = (pde_entry >> 54) & 1;
- if (memcmp(&pde_fields, &pde_array[pde_cnt], sizeof pde_fields) && asic->options.verbose)
+ if (!pde_fields.pte && memcmp(&pde_fields, &pde_array[pde_cnt], sizeof pde_fields) && asic->options.verbose)
fprintf(stderr, "[VERBOSE]: %s PDE%d=0x%016llx, VA=0x%012llx, PBA==0x%012llx, V=%d, S=%d, C=%d, P=%d\n",
&indentation[12-pde_cnt*3],
pde_cnt,
@@ -522,6 +522,11 @@ static int umr_access_vram_ai(struct umr_asic *asic, uint32_t vmid,
(int)pde_fields.pte);
memcpy(&pde_array[pde_cnt++], &pde_fields, sizeof pde_fields);
+ if (pde_fields.pte) {
+ pte_entry = pde_entry;
+ goto pde_is_pte;
+ }
+
if (!pde_fields.system)
pde_fields.pte_base_addr -= vm_fb_offset;
@@ -539,6 +544,7 @@ static int umr_access_vram_ai(struct umr_asic *asic, uint32_t vmid,
return -1;
// decode PTE values
+pde_is_pte:
pte_fields.page_base_addr = pte_entry & 0xFFFFFFFFFF000ULL;
pte_fields.fragment = (pte_entry >> 7) & 0x1F;
pte_fields.system = (pte_entry >> 1) & 1;
--
2.12.0
_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx
^ permalink raw reply related [flat|nested] 6+ messages in thread[parent not found: <20171104171535.6620-1-tom.stdenis-5C7GfCeVMHo@public.gmane.org>]
* Re: [PATCH umr] Skip ahead if PDE entry is actually a PTE entry. (v2) [not found] ` <20171104171535.6620-1-tom.stdenis-5C7GfCeVMHo@public.gmane.org> @ 2017-11-06 10:01 ` Christian König [not found] ` <0b642f55-e810-c1a4-f6b5-4644eba2f967-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> 0 siblings, 1 reply; 6+ messages in thread From: Christian König @ 2017-11-06 10:01 UTC (permalink / raw) To: Tom St Denis, amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW Am 04.11.2017 um 18:15 schrieb Tom St Denis: > Signed-off-by: Tom St Denis <tom.stdenis@amd.com> Still not perfect, but good enough for now. Patch is Tested-by: Christian König <christian.koenig@amd.com>. I think you need to rework the VM walking a bit, cause we need to support the T bit as well in the future and your code make a few assumptions which doesn't allow that. Regards, Christian. > > (v2) Don't print out PDE entries with PTE bit set > --- > src/lib/read_vram.c | 8 +++++++- > 1 file changed, 7 insertions(+), 1 deletion(-) > > diff --git a/src/lib/read_vram.c b/src/lib/read_vram.c > index 0df48dadec12..51823d71021e 100644 > --- a/src/lib/read_vram.c > +++ b/src/lib/read_vram.c > @@ -509,7 +509,7 @@ static int umr_access_vram_ai(struct umr_asic *asic, uint32_t vmid, > pde_fields.system = (pde_entry >> 1) & 1; > pde_fields.cache = (pde_entry >> 2) & 1; > pde_fields.pte = (pde_entry >> 54) & 1; > - if (memcmp(&pde_fields, &pde_array[pde_cnt], sizeof pde_fields) && asic->options.verbose) > + if (!pde_fields.pte && memcmp(&pde_fields, &pde_array[pde_cnt], sizeof pde_fields) && asic->options.verbose) > fprintf(stderr, "[VERBOSE]: %s PDE%d=0x%016llx, VA=0x%012llx, PBA==0x%012llx, V=%d, S=%d, C=%d, P=%d\n", > &indentation[12-pde_cnt*3], > pde_cnt, > @@ -522,6 +522,11 @@ static int umr_access_vram_ai(struct umr_asic *asic, uint32_t vmid, > (int)pde_fields.pte); > memcpy(&pde_array[pde_cnt++], &pde_fields, sizeof pde_fields); > > + if (pde_fields.pte) { > + pte_entry = pde_entry; > + goto pde_is_pte; > + } > + > if (!pde_fields.system) > pde_fields.pte_base_addr -= vm_fb_offset; > > @@ -539,6 +544,7 @@ static int umr_access_vram_ai(struct umr_asic *asic, uint32_t vmid, > return -1; > > // decode PTE values > +pde_is_pte: > pte_fields.page_base_addr = pte_entry & 0xFFFFFFFFFF000ULL; > pte_fields.fragment = (pte_entry >> 7) & 0x1F; > pte_fields.system = (pte_entry >> 1) & 1; _______________________________________________ amd-gfx mailing list amd-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/amd-gfx ^ permalink raw reply [flat|nested] 6+ messages in thread
[parent not found: <0b642f55-e810-c1a4-f6b5-4644eba2f967-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>]
* Re: [PATCH umr] Skip ahead if PDE entry is actually a PTE entry. (v2) [not found] ` <0b642f55-e810-c1a4-f6b5-4644eba2f967-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> @ 2017-11-06 18:28 ` Tom St Denis [not found] ` <33d2fd4b-6645-e4f4-629a-40f48a339477-5C7GfCeVMHo@public.gmane.org> 0 siblings, 1 reply; 6+ messages in thread From: Tom St Denis @ 2017-11-06 18:28 UTC (permalink / raw) To: christian.koenig-5C7GfCeVMHo, amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW On 06/11/17 05:01 AM, Christian König wrote: > Am 04.11.2017 um 18:15 schrieb Tom St Denis: >> Signed-off-by: Tom St Denis <tom.stdenis@amd.com> > > Still not perfect, but good enough for now. Patch is Tested-by: > Christian König <christian.koenig@amd.com>. > > I think you need to rework the VM walking a bit, cause we need to > support the T bit as well in the future and your code make a few > assumptions which doesn't allow that. Doesn't the T bit imply V=0 which means the page isn't backed by memory. Not much umr could do about that other than to print out the T bit. Tom _______________________________________________ amd-gfx mailing list amd-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/amd-gfx ^ permalink raw reply [flat|nested] 6+ messages in thread
[parent not found: <33d2fd4b-6645-e4f4-629a-40f48a339477-5C7GfCeVMHo@public.gmane.org>]
* Re: [PATCH umr] Skip ahead if PDE entry is actually a PTE entry. (v2) [not found] ` <33d2fd4b-6645-e4f4-629a-40f48a339477-5C7GfCeVMHo@public.gmane.org> @ 2017-11-06 18:34 ` Christian König [not found] ` <a9059d35-db2e-b8e3-7e1b-ea829950dc42-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> 0 siblings, 1 reply; 6+ messages in thread From: Christian König @ 2017-11-06 18:34 UTC (permalink / raw) To: Tom St Denis, christian.koenig-5C7GfCeVMHo, amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW Am 06.11.2017 um 19:28 schrieb Tom St Denis: > On 06/11/17 05:01 AM, Christian König wrote: >> Am 04.11.2017 um 18:15 schrieb Tom St Denis: >>> Signed-off-by: Tom St Denis <tom.stdenis@amd.com> >> >> Still not perfect, but good enough for now. Patch is Tested-by: >> Christian König <christian.koenig@amd.com>. >> >> I think you need to rework the VM walking a bit, cause we need to >> support the T bit as well in the future and your code make a few >> assumptions which doesn't allow that. > > Doesn't the T bit imply V=0 which means the page isn't backed by > memory. Not much umr could do about that other than to print out the > T bit. No, the T bit means translate further. In other words it is the counter part of the P bit and means that a PTE should be handled as a PDE. But for this to have meaning you also need to handle the fragment size as well (Now I have you totally confused, haven't I? :). Cheers, Christian. > > Tom > _______________________________________________ > amd-gfx mailing list > amd-gfx@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/amd-gfx _______________________________________________ amd-gfx mailing list amd-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/amd-gfx ^ permalink raw reply [flat|nested] 6+ messages in thread
[parent not found: <a9059d35-db2e-b8e3-7e1b-ea829950dc42-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>]
* Re: [PATCH umr] Skip ahead if PDE entry is actually a PTE entry. (v2) [not found] ` <a9059d35-db2e-b8e3-7e1b-ea829950dc42-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> @ 2017-11-06 18:39 ` Tom St Denis [not found] ` <bff0ee92-e57d-ee07-e8a0-1bd54d81a04a-5C7GfCeVMHo@public.gmane.org> 0 siblings, 1 reply; 6+ messages in thread From: Tom St Denis @ 2017-11-06 18:39 UTC (permalink / raw) To: christian.koenig-5C7GfCeVMHo, amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW On 06/11/17 01:34 PM, Christian König wrote: > Am 06.11.2017 um 19:28 schrieb Tom St Denis: >> On 06/11/17 05:01 AM, Christian König wrote: >>> Am 04.11.2017 um 18:15 schrieb Tom St Denis: >>>> Signed-off-by: Tom St Denis <tom.stdenis@amd.com> >>> >>> Still not perfect, but good enough for now. Patch is Tested-by: >>> Christian König <christian.koenig@amd.com>. >>> >>> I think you need to rework the VM walking a bit, cause we need to >>> support the T bit as well in the future and your code make a few >>> assumptions which doesn't allow that. >> >> Doesn't the T bit imply V=0 which means the page isn't backed by >> memory. Not much umr could do about that other than to print out the >> T bit. > > No, the T bit means translate further. In other words it is the counter > part of the P bit and means that a PTE should be handled as a PDE. > > But for this to have meaning you also need to handle the fragment size > as well (Now I have you totally confused, haven't I? :). Yes :-) I thought fragment size was more for hinting to the cache controller and not actually part of the VM decoding. Also the PI docs say T => "Tiled (PRT)" and from what I gather that just means the page is valid but might not be backed so instead of raising a page fault you raise a new fault that the application (?) handles accordingly. There's an 'F' bit that is labeled "translate further". Reading section 8 of said document seems to indicate you're confusing bits F and T or my doc is wildly out of date (or we're talking about different IP revisions) Tom _______________________________________________ amd-gfx mailing list amd-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/amd-gfx ^ permalink raw reply [flat|nested] 6+ messages in thread
[parent not found: <bff0ee92-e57d-ee07-e8a0-1bd54d81a04a-5C7GfCeVMHo@public.gmane.org>]
* Re: [PATCH umr] Skip ahead if PDE entry is actually a PTE entry. (v2) [not found] ` <bff0ee92-e57d-ee07-e8a0-1bd54d81a04a-5C7GfCeVMHo@public.gmane.org> @ 2017-11-06 18:47 ` Christian König 0 siblings, 0 replies; 6+ messages in thread From: Christian König @ 2017-11-06 18:47 UTC (permalink / raw) To: Tom St Denis, amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW Am 06.11.2017 um 19:39 schrieb Tom St Denis: > On 06/11/17 01:34 PM, Christian König wrote: >> Am 06.11.2017 um 19:28 schrieb Tom St Denis: >>> On 06/11/17 05:01 AM, Christian König wrote: >>>> Am 04.11.2017 um 18:15 schrieb Tom St Denis: >>>>> Signed-off-by: Tom St Denis <tom.stdenis@amd.com> >>>> >>>> Still not perfect, but good enough for now. Patch is Tested-by: >>>> Christian König <christian.koenig@amd.com>. >>>> >>>> I think you need to rework the VM walking a bit, cause we need to >>>> support the T bit as well in the future and your code make a few >>>> assumptions which doesn't allow that. >>> >>> Doesn't the T bit imply V=0 which means the page isn't backed by >>> memory. Not much umr could do about that other than to print out >>> the T bit. >> >> No, the T bit means translate further. In other words it is the >> counter part of the P bit and means that a PTE should be handled as a >> PDE. >> >> But for this to have meaning you also need to handle the fragment >> size as well (Now I have you totally confused, haven't I? :). > > > Yes :-) > > I thought fragment size was more for hinting to the cache controller > and not actually part of the VM decoding. Correct, our hardware devs are unfortunately using the same name for two different things. The fragment size in the PTE means what you described above and controls the L1 TLB settings. The fragment size in the PDE controls how big the PTE entries will be. So with the default fragment size of zero in the PDE we have 512 PTEs resulting in a 4K page table. > Also the PI docs say T => "Tiled (PRT)" and from what I gather that > just means the page is valid but might not be backed so instead of > raising a page fault you raise a new fault that the application (?) > handles accordingly. > > There's an 'F' bit that is labeled "translate further". > > Reading section 8 of said document seems to indicate you're confusing > bits F and T or my doc is wildly out of date (or we're talking about > different IP revisions) Sorry my fault. I was just confusing the F and T bits. Christian. > > Tom _______________________________________________ amd-gfx mailing list amd-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/amd-gfx ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2017-11-06 18:47 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-11-04 17:15 [PATCH umr] Skip ahead if PDE entry is actually a PTE entry. (v2) Tom St Denis
[not found] ` <20171104171535.6620-1-tom.stdenis-5C7GfCeVMHo@public.gmane.org>
2017-11-06 10:01 ` Christian König
[not found] ` <0b642f55-e810-c1a4-f6b5-4644eba2f967-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2017-11-06 18:28 ` Tom St Denis
[not found] ` <33d2fd4b-6645-e4f4-629a-40f48a339477-5C7GfCeVMHo@public.gmane.org>
2017-11-06 18:34 ` Christian König
[not found] ` <a9059d35-db2e-b8e3-7e1b-ea829950dc42-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2017-11-06 18:39 ` Tom St Denis
[not found] ` <bff0ee92-e57d-ee07-e8a0-1bd54d81a04a-5C7GfCeVMHo@public.gmane.org>
2017-11-06 18:47 ` Christian König
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.