alibaba / alibaba/system-register-tools

Conflict with Asahi Ubuntu ARM

Open
#5 1 comment 0 reactions 0 assignees View on GitHub
Dominant language
C
Stars
32
Forks
14
PR merge metrics
No merged PRs in 30d

Description

I am trying to install the module in Asahi Ubuntu ARM however I am encountering issues while making the module

`EXTRA_CFLAGS="-O0 -g"
make -C /lib/modules/`uname -r`/build M=/home/ubuntu/Desktop/system-register-tools/msr-arm modules
make[1]: Entering directory '/usr/src/linux-headers-6.8.0-1008-apple-arm'
warning: the compiler differs from the one used to build the kernel
The kernel was built by: aarch64-linux-gnu-gcc-13 (Ubuntu 13.2.0-23ubuntu4) 13.2.0
You are using: gcc-13 (Ubuntu 13.2.0-23ubuntu4) 13.2.0
CC [M] /home/ubuntu/Desktop/system-register-tools/msr-arm/msr_insn.o
In file included from /home/ubuntu/Desktop/system-register-tools/msr-arm/msr_insn.c:6:
/home/ubuntu/Desktop/system-register-tools/msr-arm/msr_arm.h:104:37: warning: ‘struct undef_hook’ declared inside parameter list will not be visible outside of this definition or declaration
104 | void register_undef_hook_el1(struct undef_hook *hook);
| ^~~~~~~~~~
/home/ubuntu/Desktop/system-register-tools/msr-arm/msr_arm.h:105:39: warning: ‘struct undef_hook’ declared inside parameter list will not be visible outside of this definition or declaration
105 | void unregister_undef_hook_el1(struct undef_hook *hook);
| ^~~~~~~~~~
CC [M] /home/ubuntu/Desktop/system-register-tools/msr-arm/msr_arm.o
In file included from /home/ubuntu/Desktop/system-register-tools/msr-arm/msr_arm.c:37:
/home/ubuntu/Desktop/system-register-tools/msr-arm/msr_arm.h:104:37: warning: ‘struct undef_hook’ declared inside parameter list will not be visible outside of this definition or declaration
104 | void register_undef_hook_el1(struct undef_hook *hook);
| ^~~~~~~~~~
/home/ubuntu/Desktop/system-register-tools/msr-arm/msr_arm.h:105:39: warning: ‘struct undef_hook’ declared inside parameter list will not be visible outside of this definition or declaration
105 | void unregister_undef_hook_el1(struct undef_hook *hook);
| ^~~~~~~~~~
/home/ubuntu/Desktop/system-register-tools/msr-arm/msr_arm.c:78:15: error: variable ‘mrs_hook’ has initializer but incomplete type
78 | static struct undef_hook mrs_hook = {
| ^~~~~~~~~~
/home/ubuntu/Desktop/system-register-tools/msr-arm/msr_arm.c:79:10: error: ‘struct undef_hook’ has no member named ‘instr_mask’
79 | .instr_mask = 0xfff00000,
| ^~~~~~~~~~
/home/ubuntu/Desktop/system-register-tools/msr-arm/msr_arm.c:79:23: warning: excess elements in struct initializer
79 | .instr_mask = 0xfff00000,
| ^~~~~~~~~~
/home/ubuntu/Desktop/system-register-tools/msr-arm/msr_arm.c:79:23: note: (near initialization for ‘mrs_hook’)
/home/ubuntu/Desktop/system-register-tools/msr-arm/msr_arm.c:80:10: error: ‘struct undef_hook’ has no member named ‘instr_val’
80 | .instr_val = 0xd5300000,
| ^~~~~~~~~
/home/ubuntu/Desktop/system-register-tools/msr-arm/msr_arm.c:80:23: warning: excess elements in struct initializer
80 | .instr_val = 0xd5300000,
| ^~~~~~~~~~
/home/ubuntu/Desktop/system-register-tools/msr-arm/msr_arm.c:80:23: note: (near initialization for ‘mrs_hook’)
/home/ubuntu/Desktop/system-register-tools/msr-arm/msr_arm.c:81:10: error: ‘struct undef_hook’ has no member named ‘pstate_mask’
81 | .pstate_mask = PSR_MODE_MASK_ALL,
| ^~~~~~~~~~~
/home/ubuntu/Desktop/system-register-tools/msr-arm/msr_arm.h:35:27: warning: excess elements in struct initializer
35 | #define PSR_MODE_MASK_ALL (0x0)
| ^
/home/ubuntu/Desktop/system-register-tools/msr-arm/msr_arm.c:81:24: note: in expansion of macro ‘PSR_MODE_MASK_ALL’
81 | .pstate_mask = PSR_MODE_MASK_ALL,
| ^~~~~~~~~~~~~~~~~
/home/ubuntu/Desktop/system-register-tools/msr-arm/msr_arm.h:35:27: note: (near initialization for ‘mrs_hook’)
35 | #define PSR_MODE_MASK_ALL (0x0)
| ^
/home/ubuntu/Desktop/system-register-tools/msr-arm/msr_arm.c:81:24: note: in expansion of macro ‘PSR_MODE_MASK_ALL’
81 | .pstate_mask = PSR_MODE_MASK_ALL,
| ^~~~~~~~~~~~~~~~~
/home/ubuntu/Desktop/system-register-tools/msr-arm/msr_arm.c:82:10: error: ‘struct undef_hook’ has no member named ‘pstate_val’
82 | .pstate_val = PSR_MODE_ALL_EL,
| ^~~~~~~~~~
/home/ubuntu/Desktop/system-register-tools/msr-arm/msr_arm.h:36:25: warning: excess elements in struct initializer
36 | #define PSR_MODE_ALL_EL (0x0)
| ^
/home/ubuntu/Desktop/system-register-tools/msr-arm/msr_arm.c:82:23: note: in expansion of macro ‘PSR_MODE_ALL_EL’
82 | .pstate_val = PSR_MODE_ALL_EL,
| ^~~~~~~~~~~~~~~
/home/ubuntu/Desktop/system-register-tools/msr-arm/msr_arm.h:36:25: note: (near initialization for ‘mrs_hook’)
36 | #define PSR_MODE_ALL_EL (0x0)
| ^
/home/ubuntu/Desktop/system-register-tools/msr-arm/msr_arm.c:82:23: note: in expansion of macro ‘PSR_MODE_ALL_EL’
82 | .pstate_val = PSR_MODE_ALL_EL,
| ^~~~~~~~~~~~~~~
/home/ubuntu/Desktop/system-register-tools/msr-arm/msr_arm.c:83:10: error: ‘struct undef_hook’ has no member named ‘fn’
83 | .fn = hookers_mrs,
| ^~
/home/ubuntu/Desktop/system-register-tools/msr-arm/msr_arm.c:83:15: warning: excess elements in struct initializer
83 | .fn = hookers_mrs,
| ^~~~~~~~~~~
/home/ubuntu/Desktop/system-register-tools/msr-arm/msr_arm.c:83:15: note: (near initialization for ‘mrs_hook’)
/home/ubuntu/Desktop/system-register-tools/msr-arm/msr_arm.c:86:15: error: variable ‘msr_hook’ has initializer but incomplete type
86 | static struct undef_hook msr_hook = {
| ^~~~~~~~~~
/home/ubuntu/Desktop/system-register-tools/msr-arm/msr_arm.c:87:10: error: ‘struct undef_hook’ has no member named ‘instr_mask’
87 | .instr_mask = 0xfff00000,
| ^~~~~~~~~~
/home/ubuntu/Desktop/system-register-tools/msr-arm/msr_arm.c:87:23: warning: excess elements in struct initializer
87 | .instr_mask = 0xfff00000,
| ^~~~~~~~~~
/home/ubuntu/Desktop/system-register-tools/msr-arm/msr_arm.c:87:23: note: (near initialization for ‘msr_hook’)
/home/ubuntu/Desktop/system-register-tools/msr-arm/msr_arm.c:88:10: error: ‘struct undef_hook’ has no member named ‘instr_val’
88 | .instr_val = 0xd5100000,
| ^~~~~~~~~
/home/ubuntu/Desktop/system-register-tools/msr-arm/msr_arm.c:88:23: warning: excess elements in struct initializer
88 | .instr_val = 0xd5100000,
| ^~~~~~~~~~
/home/ubuntu/Desktop/system-register-tools/msr-arm/msr_arm.c:88:23: note: (near initialization for ‘msr_hook’)
/home/ubuntu/Desktop/system-register-tools/msr-arm/msr_arm.c:89:10: error: ‘struct undef_hook’ has no member named ‘pstate_mask’
89 | .pstate_mask = PSR_MODE_MASK_ALL,
| ^~~~~~~~~~~
/home/ubuntu/Desktop/system-register-tools/msr-arm/msr_arm.h:35:27: warning: excess elements in struct initializer
35 | #define PSR_MODE_MASK_ALL (0x0)
| ^
/home/ubuntu/Desktop/system-register-tools/msr-arm/msr_arm.c:89:24: note: in expansion of macro ‘PSR_MODE_MASK_ALL’
89 | .pstate_mask = PSR_MODE_MASK_ALL,
| ^~~~~~~~~~~~~~~~~
/home/ubuntu/Desktop/system-register-tools/msr-arm/msr_arm.h:35:27: note: (near initialization for ‘msr_hook’)
35 | #define PSR_MODE_MASK_ALL (0x0)
| ^
/home/ubuntu/Desktop/system-register-tools/msr-arm/msr_arm.c:89:24: note: in expansion of macro ‘PSR_MODE_MASK_ALL’
89 | .pstate_mask = PSR_MODE_MASK_ALL,
| ^~~~~~~~~~~~~~~~~
/home/ubuntu/Desktop/system-register-tools/msr-arm/msr_arm.c:90:10: error: ‘struct undef_hook’ has no member named ‘pstate_val’
90 | .pstate_val = PSR_MODE_ALL_EL,
| ^~~~~~~~~~
/home/ubuntu/Desktop/system-register-tools/msr-arm/msr_arm.h:36:25: warning: excess elements in struct initializer
36 | #define PSR_MODE_ALL_EL (0x0)
| ^
/home/ubuntu/Desktop/system-register-tools/msr-arm/msr_arm.c:90:23: note: in expansion of macro ‘PSR_MODE_ALL_EL’
90 | .pstate_val = PSR_MODE_ALL_EL,
| ^~~~~~~~~~~~~~~
/home/ubuntu/Desktop/system-register-tools/msr-arm/msr_arm.h:36:25: note: (near initialization for ‘msr_hook’)
36 | #define PSR_MODE_ALL_EL (0x0)
| ^
/home/ubuntu/Desktop/system-register-tools/msr-arm/msr_arm.c:90:23: note: in expansion of macro ‘PSR_MODE_ALL_EL’
90 | .pstate_val = PSR_MODE_ALL_EL,
| ^~~~~~~~~~~~~~~
/home/ubuntu/Desktop/system-register-tools/msr-arm/msr_arm.c:91:10: error: ‘struct undef_hook’ has no member named ‘fn’
91 | .fn = hookers_msr,
| ^~
/home/ubuntu/Desktop/system-register-tools/msr-arm/msr_arm.c:91:15: warning: excess elements in struct initializer
91 | .fn = hookers_msr,
| ^~~~~~~~~~~
/home/ubuntu/Desktop/system-register-tools/msr-arm/msr_arm.c:91:15: note: (near initialization for ‘msr_hook’)
In file included from ./arch/arm64/include/asm/alternative.h:9,
from ./arch/arm64/include/asm/lse.h:14,
from ./arch/arm64/include/asm/cmpxchg.h:14,
from ./arch/arm64/include/asm/atomic.h:16,
from ./include/linux/atomic.h:7,
from ./include/asm-generic/bitops/atomic.h:5,
from ./arch/arm64/include/asm/bitops.h:25,
from ./include/linux/bitops.h:68,
from ./arch/arm64/include/asm/cache.h:40,
from ./include/linux/cache.h:6,
from ./include/linux/time.h:5,
from ./arch/arm64/include/asm/stat.h:12,
from ./include/linux/stat.h:6,
from ./include/linux/module.h:13,
from /home/ubuntu/Desktop/system-register-tools/msr-arm/msr_arm.c:15:
/home/ubuntu/Desktop/system-register-tools/msr-arm/msr_arm.c: In function ‘msr_init’:
./include/linux/init.h:184:22: error: passing argument 1 of ‘class_create’ from incompatible pointer type [-Werror=incompatible-pointer-types]
184 | #define THIS_MODULE (&__this_module)
| ~^~~~~~~~~~~~~~~
| |
| struct module *
/home/ubuntu/Desktop/system-register-tools/msr-arm/msr_arm.c:325:34: note: in expansion of macro ‘THIS_MODULE’
325 | msr_class = class_create(THIS_MODULE, "msr");
| ^~~~~~~~~~~
In file included from ./include/linux/device.h:31,
from /home/ubuntu/Desktop/system-register-tools/msr-arm/msr_arm.c:23:
./include/linux/device/class.h:228:54: note: expected ‘const char *’ but argument is of type ‘struct module *’
228 | struct class * __must_check class_create(const char *name);
| ~~~~~~~~~~~~^~~~
/home/ubuntu/Desktop/system-register-tools/msr-arm/msr_arm.c:325:21: error: too many arguments to function ‘class_create’
325 | msr_class = class_create(THIS_MODULE, "msr");
| ^~~~~~~~~~~~
./include/linux/device/class.h:228:29: note: declared here
228 | struct class * __must_check class_create(const char *name);
| ^~~~~~~~~~~~
/home/ubuntu/Desktop/system-register-tools/msr-arm/msr_arm.c:330:28: error: assignment to ‘char * (*)(const struct device *, umode_t *)’ {aka ‘char * (*)(const struct device *, short unsigned int *)’} from incompatible pointer type ‘char * (*)(struct device *, umode_t *)’ {aka ‘char * (*)(struct device *, short unsigned int *)’} [-Werror=incompatible-pointer-types]
330 | msr_class->devnode = msr_devnode;
| ^
/home/ubuntu/Desktop/system-register-tools/msr-arm/msr_arm.c:343:33: error: passing argument 1 of ‘register_undef_hook_el1’ from incompatible pointer type [-Werror=incompatible-pointer-types]
343 | register_undef_hook_el1(&mrs_hook);
| ^~~~~~~~~
| |
| struct undef_hook *
/home/ubuntu/Desktop/system-register-tools/msr-arm/msr_arm.h:104:49: note: expected ‘struct undef_hook *’ but argument is of type ‘struct undef_hook *’
104 | void register_undef_hook_el1(struct undef_hook *hook);
| ~~~~~~~~~~~~~~~~~~~^~~~
/home/ubuntu/Desktop/system-register-tools/msr-arm/msr_arm.c:344:33: error: passing argument 1 of ‘register_undef_hook_el1’ from incompatible pointer type [-Werror=incompatible-pointer-types]
344 | register_undef_hook_el1(&msr_hook);
| ^~~~~~~~~
| |
| struct undef_hook *
/home/ubuntu/Desktop/system-register-tools/msr-arm/msr_arm.h:104:49: note: expected ‘struct undef_hook *’ but argument is of type ‘struct undef_hook *’
104 | void register_undef_hook_el1(struct undef_hook *hook);
| ~~~~~~~~~~~~~~~~~~~^~~~
/home/ubuntu/Desktop/system-register-tools/msr-arm/msr_arm.c: In function ‘msr_exit’:
/home/ubuntu/Desktop/system-register-tools/msr-arm/msr_arm.c:365:35: error: passing argument 1 of ‘unregister_undef_hook_el1’ from incompatible pointer type [-Werror=incompatible-pointer-types]
365 | unregister_undef_hook_el1(&mrs_hook);
| ^~~~~~~~~
| |
| struct undef_hook *
/home/ubuntu/Desktop/system-register-tools/msr-arm/msr_arm.h:105:51: note: expected ‘struct undef_hook *’ but argument is of type ‘struct undef_hook *’
105 | void unregister_undef_hook_el1(struct undef_hook *hook);
| ~~~~~~~~~~~~~~~~~~~^~~~
/home/ubuntu/Desktop/system-register-tools/msr-arm/msr_arm.c:366:35: error: passing argument 1 of ‘unregister_undef_hook_el1’ from incompatible pointer type [-Werror=incompatible-pointer-types]
366 | unregister_undef_hook_el1(&msr_hook);
| ^~~~~~~~~
| |
| struct undef_hook *
/home/ubuntu/Desktop/system-register-tools/msr-arm/msr_arm.h:105:51: note: expected ‘struct undef_hook *’ but argument is of type ‘struct undef_hook *’
105 | void unregister_undef_hook_el1(struct undef_hook *hook);
| ~~~~~~~~~~~~~~~~~~~^~~~
/home/ubuntu/Desktop/system-register-tools/msr-arm/msr_arm.c: At top level:
/home/ubuntu/Desktop/system-register-tools/msr-arm/msr_arm.c:78:26: error: storage size of ‘mrs_hook’ isn’t known
78 | static struct undef_hook mrs_hook = {
| ^~~~~~~~
/home/ubuntu/Desktop/system-register-tools/msr-arm/msr_arm.c:86:26: error: storage size of ‘msr_hook’ isn’t known
86 | static struct undef_hook msr_hook = {
| ^~~~~~~~
cc1: some warnings being treated as errors
make[3]: *** [scripts/Makefile.build:243: /home/ubuntu/Desktop/system-register-tools/msr-arm/msr_arm.o] Error 1
make[2]: *** [/usr/src/linux-headers-6.8.0-1008-apple-arm/Makefile:1925: /home/ubuntu/Desktop/system-register-tools/msr-arm] Error 2
make[1]: *** [Makefile:240: __sub-make] Error 2
make[1]: Leaving directory '/usr/src/linux-headers-6.8.0-1008-apple-arm'
make: *** [Makefile:10: all] Error 2
`

Contributor guide

No contributing guide indexed for this repository

Research direction

Start by reproducing the reported make command against the Asahi Ubuntu ARM kernel headers, then read msr-arm/msr_arm.c and msr-arm/msr_arm.h around the undef_hook declarations and class_create call. Done means the msr-arm module builds successfully in that environment without the reported API errors.

Written by the indexing model from the issue text.

Assessment

Tech stack
c, linux, ubuntu
Domain
operating-systems
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.