Re: [PATCH v4 2/2] acpi: apei: Add SEI notification type support for ARMv8

From: kbuild test robot
Date: Tue Oct 17 2017 - 06:21:38 EST


Hi Dongjiu,

[auto build test ERROR on pm/linux-next]
[also build test ERROR on v4.14-rc5 next-20171016]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]

url: https://github.com/0day-ci/linux/commits/Dongjiu-Geng/acpi-apei-remove-the-unused-dead-code-for-SEA-NMI-notification-type/20171017-141237
base: https://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm.git linux-next
config: x86_64-kexec (attached as .config)
compiler: gcc-6 (Debian 6.2.0-3) 6.2.0 20160901
reproduce:
# save the attached .config to linux build tree
make ARCH=x86_64

All errors (new ones prefixed by >>):

drivers/acpi/apei/ghes.c: In function 'ghes_probe':
>> drivers/acpi/apei/ghes.c:1191:3: error: implicit declaration of function 'ghes_abort_add' [-Werror=implicit-function-declaration]
ghes_abort_add(ghes);
^~~~~~~~~~~~~~
drivers/acpi/apei/ghes.c: In function 'ghes_remove':
>> drivers/acpi/apei/ghes.c:1245:3: error: implicit declaration of function 'ghes_abort_remove' [-Werror=implicit-function-declaration]
ghes_abort_remove(ghes);
^~~~~~~~~~~~~~~~~
cc1: some warnings being treated as errors

vim +/ghes_abort_add +1191 drivers/acpi/apei/ghes.c

1085
1086 static int ghes_probe(struct platform_device *ghes_dev)
1087 {
1088 struct acpi_hest_generic *generic;
1089 struct ghes *ghes = NULL;
1090
1091 int rc = -EINVAL;
1092
1093 generic = *(struct acpi_hest_generic **)ghes_dev->dev.platform_data;
1094 if (!generic->enabled)
1095 return -ENODEV;
1096
1097 switch (generic->notify.type) {
1098 case ACPI_HEST_NOTIFY_POLLED:
1099 case ACPI_HEST_NOTIFY_EXTERNAL:
1100 case ACPI_HEST_NOTIFY_SCI:
1101 case ACPI_HEST_NOTIFY_GSIV:
1102 case ACPI_HEST_NOTIFY_GPIO:
1103 break;
1104
1105 case ACPI_HEST_NOTIFY_SEA:
1106 if (!IS_ENABLED(CONFIG_ACPI_APEI_SEA)) {
1107 pr_warn(GHES_PFX "Generic hardware error source: %d notified via SEA is not supported\n",
1108 generic->header.source_id);
1109 rc = -ENOTSUPP;
1110 goto err;
1111 }
1112 break;
1113 case ACPI_HEST_NOTIFY_SEI:
1114 if (!IS_ENABLED(CONFIG_ACPI_APEI_SEI)) {
1115 pr_warn(GHES_PFX "Generic hardware error source: %d notified via SEI is not supported!\n",
1116 generic->header.source_id);
1117 goto err;
1118 }
1119 break;
1120 case ACPI_HEST_NOTIFY_NMI:
1121 if (!IS_ENABLED(CONFIG_HAVE_ACPI_APEI_NMI)) {
1122 pr_warn(GHES_PFX "Generic hardware error source: %d notified via NMI interrupt is not supported!\n",
1123 generic->header.source_id);
1124 goto err;
1125 }
1126 break;
1127 case ACPI_HEST_NOTIFY_LOCAL:
1128 pr_warning(GHES_PFX "Generic hardware error source: %d notified via local interrupt is not supported!\n",
1129 generic->header.source_id);
1130 goto err;
1131 default:
1132 pr_warning(FW_WARN GHES_PFX "Unknown notification type: %u for generic hardware error source: %d\n",
1133 generic->notify.type, generic->header.source_id);
1134 goto err;
1135 }
1136
1137 rc = -EIO;
1138 if (generic->error_block_length <
1139 sizeof(struct acpi_hest_generic_status)) {
1140 pr_warning(FW_BUG GHES_PFX "Invalid error block length: %u for generic hardware error source: %d\n",
1141 generic->error_block_length,
1142 generic->header.source_id);
1143 goto err;
1144 }
1145 ghes = ghes_new(generic);
1146 if (IS_ERR(ghes)) {
1147 rc = PTR_ERR(ghes);
1148 ghes = NULL;
1149 goto err;
1150 }
1151
1152 rc = ghes_edac_register(ghes, &ghes_dev->dev);
1153 if (rc < 0)
1154 goto err;
1155
1156 switch (generic->notify.type) {
1157 case ACPI_HEST_NOTIFY_POLLED:
1158 setup_deferrable_timer(&ghes->timer, ghes_poll_func,
1159 (unsigned long)ghes);
1160 ghes_add_timer(ghes);
1161 break;
1162 case ACPI_HEST_NOTIFY_EXTERNAL:
1163 /* External interrupt vector is GSI */
1164 rc = acpi_gsi_to_irq(generic->notify.vector, &ghes->irq);
1165 if (rc) {
1166 pr_err(GHES_PFX "Failed to map GSI to IRQ for generic hardware error source: %d\n",
1167 generic->header.source_id);
1168 goto err_edac_unreg;
1169 }
1170 rc = request_irq(ghes->irq, ghes_irq_func, IRQF_SHARED,
1171 "GHES IRQ", ghes);
1172 if (rc) {
1173 pr_err(GHES_PFX "Failed to register IRQ for generic hardware error source: %d\n",
1174 generic->header.source_id);
1175 goto err_edac_unreg;
1176 }
1177 break;
1178
1179 case ACPI_HEST_NOTIFY_SCI:
1180 case ACPI_HEST_NOTIFY_GSIV:
1181 case ACPI_HEST_NOTIFY_GPIO:
1182 mutex_lock(&ghes_list_mutex);
1183 if (list_empty(&ghes_hed))
1184 register_acpi_hed_notifier(&ghes_notifier_hed);
1185 list_add_rcu(&ghes->list, &ghes_hed);
1186 mutex_unlock(&ghes_list_mutex);
1187 break;
1188
1189 case ACPI_HEST_NOTIFY_SEA:
1190 case ACPI_HEST_NOTIFY_SEI:
> 1191 ghes_abort_add(ghes);
1192 break;
1193 case ACPI_HEST_NOTIFY_NMI:
1194 ghes_nmi_add(ghes);
1195 break;
1196 default:
1197 BUG();
1198 }
1199 platform_set_drvdata(ghes_dev, ghes);
1200
1201 /* Handle any pending errors right away */
1202 ghes_proc(ghes);
1203
1204 return 0;
1205 err_edac_unreg:
1206 ghes_edac_unregister(ghes);
1207 err:
1208 if (ghes) {
1209 ghes_fini(ghes);
1210 kfree(ghes);
1211 }
1212 return rc;
1213 }
1214
1215 static int ghes_remove(struct platform_device *ghes_dev)
1216 {
1217 struct ghes *ghes;
1218 struct acpi_hest_generic *generic;
1219
1220 ghes = platform_get_drvdata(ghes_dev);
1221 generic = ghes->generic;
1222
1223 ghes->flags |= GHES_EXITING;
1224 switch (generic->notify.type) {
1225 case ACPI_HEST_NOTIFY_POLLED:
1226 del_timer_sync(&ghes->timer);
1227 break;
1228 case ACPI_HEST_NOTIFY_EXTERNAL:
1229 free_irq(ghes->irq, ghes);
1230 break;
1231
1232 case ACPI_HEST_NOTIFY_SCI:
1233 case ACPI_HEST_NOTIFY_GSIV:
1234 case ACPI_HEST_NOTIFY_GPIO:
1235 mutex_lock(&ghes_list_mutex);
1236 list_del_rcu(&ghes->list);
1237 if (list_empty(&ghes_hed))
1238 unregister_acpi_hed_notifier(&ghes_notifier_hed);
1239 mutex_unlock(&ghes_list_mutex);
1240 synchronize_rcu();
1241 break;
1242
1243 case ACPI_HEST_NOTIFY_SEA:
1244 case ACPI_HEST_NOTIFY_SEI:
> 1245 ghes_abort_remove(ghes);
1246 break;
1247 case ACPI_HEST_NOTIFY_NMI:
1248 ghes_nmi_remove(ghes);
1249 break;
1250 default:
1251 BUG();
1252 break;
1253 }
1254
1255 ghes_fini(ghes);
1256
1257 ghes_edac_unregister(ghes);
1258
1259 kfree(ghes);
1260
1261 platform_set_drvdata(ghes_dev, NULL);
1262
1263 return 0;
1264 }
1265

---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation

Attachment: .config.gz
Description: application/gzip