tree: https://gitee.com/openeuler/kernel.git OLK-6.6 head: 628e30bc9a3c48a6ab38868cb77fc6497d6ebaa5 commit: 3053668e6b211924bb67c19d791a5a532eca2ad8 [1817/1817] arm64: Introduce Xint software solution config: arm64-randconfig-r123-20250111 (https://download.01.org/0day-ci/archive/20250111/202501111013.pP2ro5fl-lkp@i...) compiler: aarch64-linux-gcc (GCC) 14.2.0 reproduce: (https://download.01.org/0day-ci/archive/20250111/202501111013.pP2ro5fl-lkp@i...)
If you fix the issue in a separate patch/commit (i.e. not just a new version of the same patch/commit), kindly add following tags | Reported-by: kernel test robot lkp@intel.com | Closes: https://lore.kernel.org/oe-kbuild-all/202501111013.pP2ro5fl-lkp@intel.com/
All error/warnings (new ones prefixed by >>):
drivers/irqchip/irq-gic-v3.c: In function 'xint_proc_write':
drivers/irqchip/irq-gic-v3.c:1036:30: error: implicit declaration of function 'pde_data' [-Wimplicit-function-declaration]
1036 | int irq = (int)(long)pde_data(file_inode(file)); | ^~~~~~~~ drivers/irqchip/irq-gic-v3.c: In function 'xint_proc_show': drivers/irqchip/irq-gic-v3.c:1074:9: error: implicit declaration of function 'seq_printf'; did you mean 'bstr_printf'? [-Wimplicit-function-declaration] 1074 | seq_printf(m, "%d\n", xint_transform((long)m->private, XINT_SET_CHECK)); | ^~~~~~~~~~ | bstr_printf drivers/irqchip/irq-gic-v3.c:1074:53: error: invalid use of undefined type 'struct seq_file' 1074 | seq_printf(m, "%d\n", xint_transform((long)m->private, XINT_SET_CHECK)); | ^~ drivers/irqchip/irq-gic-v3.c: In function 'xint_proc_open': drivers/irqchip/irq-gic-v3.c:1080:16: error: implicit declaration of function 'single_open'; did you mean 'simple_open'? [-Wimplicit-function-declaration] 1080 | return single_open(file, xint_proc_show, pde_data(inode)); | ^~~~~~~~~~~ | simple_open drivers/irqchip/irq-gic-v3.c: At top level:
drivers/irqchip/irq-gic-v3.c:1083:21: error: variable 'xint_proc_ops' has initializer but incomplete type
1083 | static const struct proc_ops xint_proc_ops = { | ^~~~~~~~
drivers/irqchip/irq-gic-v3.c:1084:10: error: 'const struct proc_ops' has no member named 'proc_open'
1084 | .proc_open = xint_proc_open, | ^~~~~~~~~
drivers/irqchip/irq-gic-v3.c:1084:27: warning: excess elements in struct initializer
1084 | .proc_open = xint_proc_open, | ^~~~~~~~~~~~~~ drivers/irqchip/irq-gic-v3.c:1084:27: note: (near initialization for 'xint_proc_ops')
drivers/irqchip/irq-gic-v3.c:1085:10: error: 'const struct proc_ops' has no member named 'proc_read'
1085 | .proc_read = seq_read, | ^~~~~~~~~ drivers/irqchip/irq-gic-v3.c:1085:27: error: 'seq_read' undeclared here (not in a function) 1085 | .proc_read = seq_read, | ^~~~~~~~ drivers/irqchip/irq-gic-v3.c:1085:27: warning: excess elements in struct initializer drivers/irqchip/irq-gic-v3.c:1085:27: note: (near initialization for 'xint_proc_ops')
drivers/irqchip/irq-gic-v3.c:1086:10: error: 'const struct proc_ops' has no member named 'proc_lseek'
1086 | .proc_lseek = seq_lseek, | ^~~~~~~~~~ drivers/irqchip/irq-gic-v3.c:1086:27: error: 'seq_lseek' undeclared here (not in a function) 1086 | .proc_lseek = seq_lseek, | ^~~~~~~~~ drivers/irqchip/irq-gic-v3.c:1086:27: warning: excess elements in struct initializer drivers/irqchip/irq-gic-v3.c:1086:27: note: (near initialization for 'xint_proc_ops')
drivers/irqchip/irq-gic-v3.c:1087:10: error: 'const struct proc_ops' has no member named 'proc_release'
1087 | .proc_release = single_release, | ^~~~~~~~~~~~ drivers/irqchip/irq-gic-v3.c:1087:27: error: 'single_release' undeclared here (not in a function); did you mean 'spin_release'? 1087 | .proc_release = single_release, | ^~~~~~~~~~~~~~ | spin_release drivers/irqchip/irq-gic-v3.c:1087:27: warning: excess elements in struct initializer drivers/irqchip/irq-gic-v3.c:1087:27: note: (near initialization for 'xint_proc_ops')
drivers/irqchip/irq-gic-v3.c:1088:10: error: 'const struct proc_ops' has no member named 'proc_write'
1088 | .proc_write = xint_proc_write, | ^~~~~~~~~~ drivers/irqchip/irq-gic-v3.c:1088:27: warning: excess elements in struct initializer 1088 | .proc_write = xint_proc_write, | ^~~~~~~~~~~~~~~ drivers/irqchip/irq-gic-v3.c:1088:27: note: (near initialization for 'xint_proc_ops') drivers/irqchip/irq-gic-v3.c: In function 'register_irqchip_proc':
drivers/irqchip/irq-gic-v3.c:1097:9: error: implicit declaration of function 'proc_create_data' [-Wimplicit-function-declaration]
1097 | proc_create_data("xint", 0644, desc->dir, &xint_proc_ops, irqp); | ^~~~~~~~~~~~~~~~
drivers/irqchip/irq-gic-v3.c:1097:44: error: 'struct irq_desc' has no member named 'dir'
1097 | proc_create_data("xint", 0644, desc->dir, &xint_proc_ops, irqp); | ^~ drivers/irqchip/irq-gic-v3.c: In function 'unregister_irqchip_proc':
drivers/irqchip/irq-gic-v3.c:1105:9: error: implicit declaration of function 'remove_proc_entry' [-Wimplicit-function-declaration]
1105 | remove_proc_entry("xint", desc->dir); | ^~~~~~~~~~~~~~~~~ drivers/irqchip/irq-gic-v3.c:1105:39: error: 'struct irq_desc' has no member named 'dir' 1105 | remove_proc_entry("xint", desc->dir); | ^~ drivers/irqchip/irq-gic-v3.c: At top level:
drivers/irqchip/irq-gic-v3.c:1083:30: error: storage size of 'xint_proc_ops' isn't known
1083 | static const struct proc_ops xint_proc_ops = { | ^~~~~~~~~~~~~
vim +/pde_data +1036 drivers/irqchip/irq-gic-v3.c
1032 1033 static ssize_t xint_proc_write(struct file *file, 1034 const char __user *buffer, size_t count, loff_t *pos) 1035 {
1036 int irq = (int)(long)pde_data(file_inode(file));
1037 bool xint_state = false; 1038 unsigned long val; 1039 char *buf = NULL; 1040 1041 if (!xint_transform(irq, XINT_RANGE_CHECK)) 1042 return -EPERM; 1043 1044 buf = memdup_user_nul(buffer, count); 1045 if (IS_ERR(buf)) 1046 return PTR_ERR(buf); 1047 1048 if (kstrtoul(buf, 0, &val) || (val != 0 && val != 1)) { 1049 kfree(buf); 1050 return -EINVAL; 1051 } 1052 1053 xint_state = xint_transform(irq, XINT_SET_CHECK); 1054 if (xint_state == val) { 1055 kfree(buf); 1056 return -EBUSY; 1057 } 1058 1059 local_irq_disable(); 1060 disable_irq(irq); 1061 1062 xint_transform(irq, xint_state ? XINT_TO_IRQ : IRQ_TO_XINT); 1063 1064 enable_irq(irq); 1065 local_irq_enable(); 1066 1067 kfree(buf); 1068 1069 return count; 1070 } 1071 1072 static int xint_proc_show(struct seq_file *m, void *v) 1073 { 1074 seq_printf(m, "%d\n", xint_transform((long)m->private, XINT_SET_CHECK)); 1075 return 0; 1076 } 1077 1078 static int xint_proc_open(struct inode *inode, struct file *file) 1079 { 1080 return single_open(file, xint_proc_show, pde_data(inode)); 1081 } 1082
1083 static const struct proc_ops xint_proc_ops = { 1084 .proc_open = xint_proc_open, 1085 .proc_read = seq_read, 1086 .proc_lseek = seq_lseek, 1087 .proc_release = single_release, 1088 .proc_write = xint_proc_write,
1089 }; 1090 1091 void register_irqchip_proc(struct irq_desc *desc, void *irqp) 1092 { 1093 if (!is_xint_support) 1094 return; 1095 1096 /* create /proc/irq/<irq>/xint */
1097 proc_create_data("xint", 0644, desc->dir, &xint_proc_ops, irqp);
1098 } 1099 1100 void unregister_irqchip_proc(struct irq_desc *desc) 1101 { 1102 if (!is_xint_support) 1103 return; 1104
1105 remove_proc_entry("xint", desc->dir);
1106 } 1107 #endif /* CONFIG_FAST_IRQ */ 1108