LoongArch: Libvtv add LoongArch support.

Message ID 20220926020010.779566-1-chenglulu@loongson.cn
State New
Headers
Series LoongArch: Libvtv add LoongArch support. |

Commit Message

Lulu Cheng Sept. 26, 2022, 2 a.m. UTC
  Co-Authored-By: qijingwen <qijingwen@rd.loongson.cn>

include/ChangeLog:

	* vtv-change-permission.h (defined):
	(VTV_PAGE_SIZE): 16k pages under loongarch64.

libvtv/ChangeLog:

	* configure.tgt: Add loongarch support.
---
 include/vtv-change-permission.h | 2 ++
 libvtv/configure.tgt            | 3 +++
 2 files changed, 5 insertions(+)
  

Comments

Xi Ruoyao Sept. 26, 2022, 5:38 a.m. UTC | #1
On Mon, 2022-09-26 at 10:00 +0800, Lulu Cheng wrote:
> Co-Authored-By: qijingwen <qijingwen@rd.loongson.cn>
> 
> include/ChangeLog:
> 
>         * vtv-change-permission.h (defined):
>         (VTV_PAGE_SIZE): 16k pages under loongarch64.

We have 4KB, 16KB, and 64KB page configurations, so is it possible to
support all of them without too much overhead?  If not, supporting only
16KB is OK as it's the default.
  
Lulu Cheng Sept. 27, 2022, 2:37 a.m. UTC | #2
I asked my colleagues in the kernel group, this page size may change.

That there is a macro BIG_PAGE_SIZE comment in vtv-change-permission.h

written like this:"Replace '4096' below with correct big page size."

I understand that this is to get the page size at runtime, but I don't 
see where this macro is used,

is there something wrong with my understanding?


在 2022/9/26 下午1:38, Xi Ruoyao 写道:
> On Mon, 2022-09-26 at 10:00 +0800, Lulu Cheng wrote:
>> Co-Authored-By: qijingwen <qijingwen@rd.loongson.cn>
>>
>> include/ChangeLog:
>>
>>          * vtv-change-permission.h (defined):
>>          (VTV_PAGE_SIZE): 16k pages under loongarch64.
> We have 4KB, 16KB, and 64KB page configurations, so is it possible to
> support all of them without too much overhead?  If not, supporting only
> 16KB is OK as it's the default.
>
  
Xi Ruoyao Sept. 27, 2022, 3:08 a.m. UTC | #3
+ Caroline (the author or libvtv, I hope the email address is still
active).

On Tue, 2022-09-27 at 10:37 +0800, Lulu Cheng wrote:
> I asked my colleagues in the kernel group, this page size may change.
> 
> That there is a macro BIG_PAGE_SIZE comment in vtv-change-permission.h
> 
> written like this:"Replace '4096' below with correct big page size."
> 
> I understand that this is to get the page size at runtime, but I don't
> see where this macro is used,
> 
> is there something wrong with my understanding?

Frankly, I've never used libvtv (Linux From Scratch does not --enable-
vtable-verify).  But if I understand correctly, we can set "65536" here
and *I guess* the result will be able to function on 4/16/64 KB pages
(but with some performance overhead on 4/16 KB).

"BIG_PAGE_SIZE" seems not defined anywhere in GCC...
  

Patch

diff --git a/include/vtv-change-permission.h b/include/vtv-change-permission.h
index 70bdad92bca..47bcdb8057a 100644
--- a/include/vtv-change-permission.h
+++ b/include/vtv-change-permission.h
@@ -48,6 +48,8 @@  extern void __VLTChangePermission (int);
 #else 
 #if defined(__sun__) && defined(__svr4__) && defined(__sparc__)
 #define VTV_PAGE_SIZE 8192
+#elif defined(__loongarch__)
+#define VTV_PAGE_SIZE 16384
 #else
 #define VTV_PAGE_SIZE 4096
 #endif
diff --git a/libvtv/configure.tgt b/libvtv/configure.tgt
index aa2a3f675b8..6cdd1e97ab1 100644
--- a/libvtv/configure.tgt
+++ b/libvtv/configure.tgt
@@ -50,6 +50,9 @@  case "${target}" in
 	;;
   x86_64-*-darwin[1]* | i?86-*-darwin[1]*)
 	;;
+  loongarch*-*-linux*)
+	VTV_SUPPORTED=yes
+	;;
   *)
 	;;
 esac