Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add LoongArch support #7531

Merged
merged 1 commit into from Aug 30, 2023
Merged

Add LoongArch support #7531

merged 1 commit into from Aug 30, 2023

Conversation

lixing-star
Copy link

Hi,I'd like to add one new architecture support for LoongArch.
The document and code we've already supported list as follow:
https://loongson.github.io/LoongArch-Documentation/README-EN.html
https://github.com/loongson

Waiting for your reply, thanks

@AlexPeshkoff AlexPeshkoff self-assigned this Mar 31, 2023
@AlexPeshkoff
Copy link
Member

Did you check for correct operation of CDS on your HW? I ask because that library is HW-dependent (not surprise for non-blocking shared data access) and in a case of something wrong firebird will not work correctly, specially under highload one may expect crashes or even DB corruption.
If CDS was not checked please pay attention at ~/extern/libcds/test.

@lixing-star
Copy link
Author

Sorry for not check the test yet. Thanks for your attention. I will check the test and then push the pr again.

@AlexPeshkoff
Copy link
Member

Just sent notification about test results here - no need in new PR.

@asfernandes
Copy link
Member

Also please post here link for PR to https://github.com/khizmax/libcds as it don't make sense for Firebird to maintain the library port forever.

Copy link

@loongson-zn loongson-zn left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ty

@glaubitz
Copy link
Contributor

@loongson-zn Can you post a version for Firebird 3.0 so I can patch the Debian package locally for the time being?

@loongson-zn
Copy link

Can you post a version for Firebird 3.0 so I can patch the Debian package locally for the time being?

Of course, I will notify my friends to submit patches for Debian.

@AlexPeshkoff AlexPeshkoff merged commit fcc471e into FirebirdSQL:master Aug 30, 2023
22 of 23 checks passed
@lixing-star
Copy link
Author

lixing-star commented Sep 1, 2023

sorry for the long time no response for the libcds result, because we were analysis the libcds failed problem whe testing basketqueue, and we found the same address read sequence not guarrented in 3A5000, and the 3A6000 fix the problem.
the 3A6000 result as follow

loongson@loongson-pc:~/cds-release$ make test
Running tests...
Test project /home/loongson/cds-release
Start 1: unit-deque
1/66 Test #1: unit-deque ....................... Passed 0.01 sec
Start 2: unit-ilist-michael
2/66 Test #2: unit-ilist-michael ............... Passed 0.04 sec
Start 3: unit-ilist-lazy
3/66 Test #3: unit-ilist-lazy .................. Passed 0.03 sec
Start 4: unit-ilist-iterable
4/66 Test #4: unit-ilist-iterable .............. Passed 0.02 sec
Start 5: unit-list-iterable
5/66 Test #5: unit-list-iterable ............... Passed 0.02 sec
Start 6: unit-list-lazy
6/66 Test #6: unit-list-lazy ................... Passed 0.03 sec
Start 7: unit-list-michael
7/66 Test #7: unit-list-michael ................ Passed 0.03 sec
Start 8: unit-map-feldman
8/66 Test #8: unit-map-feldman ................. Passed 0.43 sec
Start 9: unit-map-michael
9/66 Test #9: unit-map-michael ................. Passed 0.33 sec
Start 10: unit-map-michael-iterable
10/66 Test #10: unit-map-michael-iterable ........ Passed 0.23 sec
Start 11: unit-map-michael-lazy
11/66 Test #11: unit-map-michael-lazy ............ Passed 0.38 sec
Start 12: unit-map-skip
12/66 Test #12: unit-map-skip .................... Passed 2.77 sec
Start 13: unit-map-split-michael
13/66 Test #13: unit-map-split-michael ........... Passed 0.83 sec
Start 14: unit-map-split-iterable
14/66 Test #14: unit-map-split-iterable .......... Passed 0.25 sec
Start 15: unit-map-split-lazy
15/66 Test #15: unit-map-split-lazy .............. Passed 0.57 sec
Start 16: unit-misc
16/66 Test #16: unit-misc ........................ Passed 0.27 sec
Start 17: unit-pqueue
17/66 Test #17: unit-pqueue ...................... Passed 0.06 sec
Start 18: unit-queue
18/66 Test #18: unit-queue ....................... Passed 0.06 sec
Start 19: unit-iset-feldman
19/66 Test #19: unit-iset-feldman ................ Passed 0.16 sec
Start 20: unit-iset-michael-michael
20/66 Test #20: unit-iset-michael-michael ........ Passed 0.03 sec
Start 21: unit-iset-michael-lazy
21/66 Test #21: unit-iset-michael-lazy ........... Passed 0.04 sec
Start 22: unit-iset-michael-iterable
22/66 Test #22: unit-iset-michael-iterable ....... Passed 0.01 sec
Start 23: unit-iset-skip
23/66 Test #23: unit-iset-skip ................... Passed 0.27 sec
Start 24: unit-iset-split-michael
24/66 Test #24: unit-iset-split-michael .......... Passed 0.09 sec
Start 25: unit-iset-split-lazy
25/66 Test #25: unit-iset-split-lazy ............. Passed 0.06 sec
Start 26: unit-iset-split-iterable
26/66 Test #26: unit-iset-split-iterable ......... Passed 0.02 sec
Start 27: unit-set-feldman
27/66 Test #27: unit-set-feldman ................. Passed 0.32 sec
Start 28: unit-set-michael-michael
28/66 Test #28: unit-set-michael-michael ......... Passed 0.24 sec
Start 29: unit-set-michael-iterable
29/66 Test #29: unit-set-michael-iterable ........ Passed 0.19 sec
Start 30: unit-set-michael-lazy
30/66 Test #30: unit-set-michael-lazy ............ Passed 0.29 sec
Start 31: unit-set-skip
31/66 Test #31: unit-set-skip .................... Passed 2.37 sec
Start 32: unit-set-split-michael
32/66 Test #32: unit-set-split-michael ........... Passed 0.64 sec
Start 33: unit-set-split-lazy
33/66 Test #33: unit-set-split-lazy .............. Passed 0.40 sec
Start 34: unit-set-split-iterable
34/66 Test #34: unit-set-split-iterable .......... Passed 0.27 sec
Start 35: unit-striped-map
35/66 Test #35: unit-striped-map ................. Passed 0.93 sec
Start 36: unit-striped-set
36/66 Test #36: unit-striped-set ................. Passed 1.35 sec
Start 37: unit-stack
37/66 Test #37: unit-stack ....................... Passed 0.00 sec
Start 38: unit-tree
38/66 Test #38: unit-tree ........................ Passed 15.34 sec
Start 39: stress-freelist
39/66 Test #39: stress-freelist .................. Passed 53.16 sec
Start 40: stress-map-delodd
40/66 Test #40: stress-map-delodd ................ Passed 343.36 sec
Start 41: stress-map-del3
41/66 Test #41: stress-map-del3 .................. Passed 526.98 sec
Start 42: stress-map-find-string
42/66 Test #42: stress-map-find-string ........... Passed 46.82 sec
Start 43: stress-map-insdel-func
43/66 Test #43: stress-map-insdel-func ........... Passed 172.39 sec
Start 44: stress-map-insdel-string
44/66 Test #44: stress-map-insdel-string ......... Passed 28.78 sec
Start 45: stress-map-insdel-item-int
45/66 Test #45: stress-map-insdel-item-int ....... Passed 84.59 sec
Start 46: stress-map-insdelfind-hp
46/66 Test #46: stress-map-insdelfind-hp ......... Passed 829.09 sec
Start 47: stress-map-insdelfind-rcu
47/66 Test #47: stress-map-insdelfind-rcu ........ Passed 558.77 sec
Start 48: stress-map-minmax
48/66 Test #48: stress-map-minmax ................ Passed 9.72 sec
Start 49: stress-map-iter-erase
49/66 Test #49: stress-map-iter-erase ............ Passed 19.16 sec
Start 50: stress-pqueue
50/66 Test #50: stress-pqueue .................... Passed 874.44 sec
Start 51: stress-queue-pop
51/66 Test #51: stress-queue-pop ................. Passed 191.90 sec
Start 52: stress-queue-push
52/66 Test #52: stress-queue-push ................ Passed 203.72 sec
Start 53: stress-queue-push-pop
53/66 Test #53: stress-queue-push-pop ............ Passed 538.51 sec
Start 54: stress-queue-random
54/66 Test #54: stress-queue-random .............. Passed 311.97 sec
Start 55: stress-queue-bounded
55/66 Test #55: stress-queue-bounded ............. Passed 1.63 sec
Start 56: stress-spsc-queue
56/66 Test #56: stress-spsc-queue ................ Passed 25.64 sec
Start 57: stress-set-delodd
57/66 Test #57: stress-set-delodd ................ Passed 544.86 sec
Start 58: stress-set-del3
58/66 Test #58: stress-set-del3 .................. Passed 894.43 sec
Start 59: stress-set-insdelfind-hp
59/66 Test #59: stress-set-insdelfind-hp ......... Passed 598.22 sec
Start 60: stress-set-insdelfind-rcu
60/66 Test #60: stress-set-insdelfind-rcu ........ Passed 618.11 sec
Start 61: stress-set-insdelfind-lock
61/66 Test #61: stress-set-insdelfind-lock ....... Passed 381.70 sec
Start 62: stress-set-insdel-func
62/66 Test #62: stress-set-insdel-func ........... Passed 185.51 sec
Start 63: stress-set-insdel-string
63/66 Test #63: stress-set-insdel-string ......... Passed 126.73 sec
Start 64: stress-set-iteration
64/66 Test #64: stress-set-iteration ............. Passed 5.95 sec
Start 65: stress-set-iter-erase
65/66 Test #65: stress-set-iter-erase ............ Passed 19.77 sec
Start 66: stress-stack
66/66 Test #66: stress-stack ..................... Passed 400.18 sec

100% tests passed, 0 tests failed out of 66

Total Test time (real) = 8625.49 sec

@loongson-zn
Copy link

3A6000 cpu information:

 loongson@loongson-pc:~/cds-release$ lscpu
Architecture:          loongarch64
  Byte Order:          Little Endian
CPU(s):                8
  On-line CPU(s) list: 0-7
Model name:            Loongson-3A6000
  CPU family:          Loongson-64bit
  Thread(s) per core:  1
  Core(s) per socket:  8
  Socket(s):           1
  BogoMIPS:            5000.00
  Flags:               cpucfg lam ual fpu lsx lasx crc32 complex crypto lvz lbt_x86 lbt_arm lbt_mips
Caches (sum of all):   
  L1d:                 512 KiB (8 instances)
  L1i:                 512 KiB (8 instances)
  L2:                  2 MiB (8 instances)
  L3:                  16 MiB (1 instance)
NUMA:                  
  NUMA node(s):        1
  NUMA node0 CPU(s):   0-7

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

5 participants