[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v3 4/4] tests/tcg/aarch64: Extend MTE gdbstub tests to system
|
From: |
Gustavo Romero |
|
Subject: |
Re: [PATCH v3 4/4] tests/tcg/aarch64: Extend MTE gdbstub tests to system mode |
|
Date: |
Thu, 29 Aug 2024 17:13:14 -0300 |
|
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.6.0 |
Hi Richard,
On 8/28/24 9:43 PM, Richard Henderson wrote:
On 8/28/24 04:01, Gustavo Romero wrote:
SECTIONS
{
- /* virt machine, RAM starts at 1gb */
+ /* Skip first 1 GiB on virt machine: RAM starts at 1 GiB. */
. = (1 << 30);
Better is to use
MEMORY {
RAM (rwx) : ORIGIN = 1 << 30, LENGTH = 16M
}
(or whatever minimum length seems reasonable).
Since there is only one memory region, it will be used by default and no
further markup is required.
+ /* Align text to first 2 MiB. */
+ . = ALIGN(0 * 2M);
This is pointless, of course: ALIGN(0) does nothing.
@@ -19,12 +21,12 @@ SECTIONS
*(.bss)
}
/*
- * Align the MTE page to the next 2mb boundary (i.e., the third 2mb chunk
- * starting from 1gb) by setting the address for symbol 'mte_page', which
is
- * used in boot.S to setup the PTE and in the mte.S test as the address
that
- * the MTE instructions operate on.
+ * Align the MTE page to the next 2 MiB boundary (i.e., the third 2 MiB
+ * chunk starting from 1 GiB) by setting the address for symbol 'mte_page',
+ * which is used in boot.S to setup the PTE and in the mte.S test as the
+ * address that the MTE instructions operate on.
*/
- mte_page = ALIGN(1 << 22);
+ mte_page = ALIGN(2 * 2M);
This does not do what you think it does.
It aligns to the next 4M boundary, not the next 2M boundary.
I see now. This works because by chance ALIGN(2M) == ALIGN(4M).
So, using the 'M' suffix, I understand this is correct (and works):
(diff against the my patch)
index 46f1092522..823d47f7e7 100644
--- a/tests/tcg/aarch64/system/kernel.ld
+++ b/tests/tcg/aarch64/system/kernel.ld
@@ -11,7 +11,7 @@ SECTIONS
*(.rodata)
}
/* align r/w section to next 2mb */
- . = ALIGN(1 << 21);
+ . = ALIGN(2M);
.data : {
*(.data)
}
@@ -24,7 +24,7 @@ SECTIONS
* used in boot.S to setup the PTE and in the mte.S test as the address
that
* the MTE instructions operate on.
*/
- mte_page = ALIGN(1 << 22);
+ mte_page = ALIGN(2M);
/DISCARD/ : {
*(.ARM.attributes)
}
1 .text 00001e60 0000000040001000 0000000040001000 00011000 2**12
4 .data 00012000 0000000040200000 0000000040200000 00020000 2**12
0000000040400000 g .data 0000000000000000 mte_page
I was not able to make the MEMORY command work. I tried:
index 46f1092522..dc39518a16 100644
--- a/tests/tcg/aarch64/system/kernel.ld
+++ b/tests/tcg/aarch64/system/kernel.ld
@@ -1,9 +1,13 @@
ENTRY(__start)
+MEMORY
+{
+ ram (rwx) : ORIGIN = 1 << 30, LENGTH = 16M
+}
+
SECTIONS
{
/* virt machine, RAM starts at 1gb */
- . = (1 << 30);
.text : {
*(.text)
}
@@ -11,7 +15,7 @@ SECTIONS
*(.rodata)
}
/* align r/w section to next 2mb */
- . = ALIGN(1 << 21);
+ . = ALIGN(2M);
.data : {
*(.data)
}
@@ -24,7 +28,7 @@ SECTIONS
* used in boot.S to setup the PTE and in the mte.S test as the address
that
* the MTE instructions operate on.
*/
- mte_page = ALIGN(1 << 22);
+ mte_page = ((1 << 30) + 4M);
/DISCARD/ : {
*(.ARM.attributes)
}
But it didn't work because data section is placed in the wrong place:
1 .text 00001e60 0000000040001000 0000000040001000 00011000 2**12
4 .data 00012000 0000000040003000 0000000040003000 00013000 2**12
0000000040400000 g *ABS* 0000000000000000 mte_page
Do you know why?
I also had to use 'mte_page = ((1 << 30) + 4M);' for the mte_page symbol because
the current location (.) seems to reset to zero for the sections, hence if I do:
+ mte_page = ALIGN(2M);
I get:
0000000040200000 g .data 0000000000000000 mte_page
Cheers,
Gustavo
- [PATCH v3 0/4] gdbstub: Add support for MTE in system mode, Gustavo Romero, 2024/08/25
- [PATCH v3 1/4] gdbstub: Use specific MMU index when probing MTE addresses, Gustavo Romero, 2024/08/25
- [PATCH v3 2/4] gdbstub: Add support for MTE in system mode, Gustavo Romero, 2024/08/25
- [PATCH v3 3/4] tests/guest-debug: Support passing arguments to the GDB test script, Gustavo Romero, 2024/08/25
- [PATCH v3 4/4] tests/tcg/aarch64: Extend MTE gdbstub tests to system mode, Gustavo Romero, 2024/08/25
- Re: [PATCH v3 4/4] tests/tcg/aarch64: Extend MTE gdbstub tests to system mode, Philippe Mathieu-Daudé, 2024/08/26
- Re: [PATCH v3 4/4] tests/tcg/aarch64: Extend MTE gdbstub tests to system mode, Gustavo Romero, 2024/08/27
- Re: [PATCH v3 4/4] tests/tcg/aarch64: Extend MTE gdbstub tests to system mode, Gustavo Romero, 2024/08/27
- Re: [PATCH v3 4/4] tests/tcg/aarch64: Extend MTE gdbstub tests to system mode, Richard Henderson, 2024/08/28
- Re: [PATCH v3 4/4] tests/tcg/aarch64: Extend MTE gdbstub tests to system mode,
Gustavo Romero <=
- Re: [PATCH v3 4/4] tests/tcg/aarch64: Extend MTE gdbstub tests to system mode, Richard Henderson, 2024/08/29
- Re: [PATCH v3 4/4] tests/tcg/aarch64: Extend MTE gdbstub tests to system mode, Gustavo Romero, 2024/08/30