From nobody Wed Dec 17 04:16:47 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8CA06173359; Wed, 29 May 2024 09:51:38 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1716976298; cv=none; b=gLqTriNpcDtfbQm7isdIqYYE+MHSxqbE8l340PZg+qlkO6WkZx5JbHykVxHqozOawK88LT7vqHK9rjt9JLvEVjqevucQuiY++2Mn38ytG28kpzv/s+pZTIbBMpOOhVKcZ9px0nMsvUlFlLhlVCAiXWtXZXPqAsWoQF35ktMNy8g= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1716976298; c=relaxed/simple; bh=Vv+BaY4iMh9LAabSCIsXW40L4YUilFaxA1vyLO43b9c=; h=From:To:Cc:Subject:Date:Message-Id:MIME-Version; b=Z0IjHjvw5N4u6FyCL7jojxXB5Gd+ipbSHeb8yptfSyQXhM1RaWlJoU5YBq74LVSArkUD4XgDx7ADuiZo8GpT2n7gd+9V6zr9muul35VapoJXZlAEzsRQAa2GcwXJhgIwa53F8zL7hwIzI1SFI0sDH1FKV/HJapNi8g7rhi6XuKE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=BohEjhST; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="BohEjhST" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 97A2BC2BD10; Wed, 29 May 2024 09:51:35 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1716976298; bh=Vv+BaY4iMh9LAabSCIsXW40L4YUilFaxA1vyLO43b9c=; h=From:To:Cc:Subject:Date:From; b=BohEjhSTj6rXCsmdffpmVZc9z9Dmu5GHfH8Glr5ttRqeI8cVMkOelrQj33Rj4QHTw 1xpBtVTLpiW3aKnSo8fDieTMIhyL8VV+ER+HTm16Rm1I9ZsjFzLdrsE+cJeM7U9gUS 2/6NBalyAZgZgdJcTQ8uB6AElfSGnauc6+FMEvdOfSzC885pkE9PhHz8VLuI+xVmoR C4sayyd6nAr/UaFIxs24T9J++O7ViaivXB+5FXUCj0+z9W6z8fYjpKxBaituPpoX2X N2Q0HaomiKEk2NS4fR1gVa/2+3qbS1LGjIP3KTgCx2AZ65giVjJaQGNYw8Jfkv0GEf buodoqEBn+9CA== From: Arnd Bergmann To: Borislav Petkov , Tony Luck , Qiuxu Zhuo Cc: Arnd Bergmann , James Morse , Mauro Carvalho Chehab , Robert Richter , Marvin Lin , Shubhrajyoti Datta , Sai Krishna Potthuri , linux-edac@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH] EDAC, i10nm: make skx_common.o a separate module Date: Wed, 29 May 2024 11:51:11 +0200 Message-Id: <20240529095132.1929397-1-arnd@kernel.org> X-Mailer: git-send-email 2.39.2 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Arnd Bergmann Linking an object file into multiple modules causes a warning: scripts/Makefile.build:236: drivers/edac/Makefile: skx_common.o is added to= multiple modules: i10nm_edac skx_edac Make this a separate module instead. Fixes: d4dc89d069aa ("EDAC, i10nm: Add a driver for Intel 10nm server proce= ssors") Signed-off-by: Arnd Bergmann --- drivers/edac/Makefile | 10 ++++++---- drivers/edac/skx_common.c | 21 +++++++++++++++++++-- drivers/edac/skx_common.h | 4 ++-- 3 files changed, 27 insertions(+), 8 deletions(-) diff --git a/drivers/edac/Makefile b/drivers/edac/Makefile index 9c09893695b7..4edfb83ffbee 100644 --- a/drivers/edac/Makefile +++ b/drivers/edac/Makefile @@ -54,11 +54,13 @@ obj-$(CONFIG_EDAC_MPC85XX) +=3D mpc85xx_edac_mod.o layerscape_edac_mod-y :=3D fsl_ddr_edac.o layerscape_edac.o obj-$(CONFIG_EDAC_LAYERSCAPE) +=3D layerscape_edac_mod.o =20 -skx_edac-y :=3D skx_common.o skx_base.o -obj-$(CONFIG_EDAC_SKX) +=3D skx_edac.o +skx_edac_common-y :=3D skx_common.o =20 -i10nm_edac-y :=3D skx_common.o i10nm_base.o -obj-$(CONFIG_EDAC_I10NM) +=3D i10nm_edac.o +skx_edac-y :=3D skx_base.o +obj-$(CONFIG_EDAC_SKX) +=3D skx_edac.o skx_edac_common.o + +i10nm_edac-y :=3D i10nm_base.o +obj-$(CONFIG_EDAC_I10NM) +=3D i10nm_edac.o skx_edac_common.o =20 obj-$(CONFIG_EDAC_CELL) +=3D cell_edac.o obj-$(CONFIG_EDAC_PPC4XX) +=3D ppc4xx_edac.o diff --git a/drivers/edac/skx_common.c b/drivers/edac/skx_common.c index 27996b7924c8..8d18099fd528 100644 --- a/drivers/edac/skx_common.c +++ b/drivers/edac/skx_common.c @@ -48,7 +48,7 @@ static u64 skx_tolm, skx_tohm; static LIST_HEAD(dev_edac_list); static bool skx_mem_cfg_2lm; =20 -int __init skx_adxl_get(void) +int skx_adxl_get(void) { const char * const *names; int i, j; @@ -110,12 +110,14 @@ int __init skx_adxl_get(void) =20 return -ENODEV; } +EXPORT_SYMBOL_GPL(skx_adxl_get); =20 -void __exit skx_adxl_put(void) +void skx_adxl_put(void) { kfree(adxl_values); kfree(adxl_msg); } +EXPORT_SYMBOL_GPL(skx_adxl_put); =20 static bool skx_adxl_decode(struct decoded_addr *res, bool error_in_1st_le= vel_mem) { @@ -187,12 +189,14 @@ void skx_set_mem_cfg(bool mem_cfg_2lm) { skx_mem_cfg_2lm =3D mem_cfg_2lm; } +EXPORT_SYMBOL_GPL(skx_set_mem_cfg); =20 void skx_set_decode(skx_decode_f decode, skx_show_retry_log_f show_retry_l= og) { driver_decode =3D decode; skx_show_retry_rd_err_log =3D show_retry_log; } +EXPORT_SYMBOL_GPL(skx_set_decode); =20 int skx_get_src_id(struct skx_dev *d, int off, u8 *id) { @@ -206,6 +210,7 @@ int skx_get_src_id(struct skx_dev *d, int off, u8 *id) *id =3D GET_BITFIELD(reg, 12, 14); return 0; } +EXPORT_SYMBOL_GPL(skx_get_src_id); =20 int skx_get_node_id(struct skx_dev *d, u8 *id) { @@ -219,6 +224,7 @@ int skx_get_node_id(struct skx_dev *d, u8 *id) *id =3D GET_BITFIELD(reg, 0, 2); return 0; } +EXPORT_SYMBOL_GPL(skx_get_node_id); =20 static int get_width(u32 mtr) { @@ -284,6 +290,7 @@ int skx_get_all_bus_mappings(struct res_config *cfg, st= ruct list_head **list) *list =3D &dev_edac_list; return ndev; } +EXPORT_SYMBOL_GPL(skx_get_all_bus_mappings); =20 int skx_get_hi_lo(unsigned int did, int off[], u64 *tolm, u64 *tohm) { @@ -323,6 +330,7 @@ int skx_get_hi_lo(unsigned int did, int off[], u64 *tol= m, u64 *tohm) pci_dev_put(pdev); return -ENODEV; } +EXPORT_SYMBOL_GPL(skx_get_hi_lo); =20 static int skx_get_dimm_attr(u32 reg, int lobit, int hibit, int add, int minval, int maxval, const char *name) @@ -394,6 +402,7 @@ int skx_get_dimm_info(u32 mtr, u32 mcmtr, u32 amap, str= uct dimm_info *dimm, =20 return 1; } +EXPORT_SYMBOL_GPL(skx_get_dimm_info); =20 int skx_get_nvdimm_info(struct dimm_info *dimm, struct skx_imc *imc, int chan, int dimmno, const char *mod_str) @@ -442,6 +451,7 @@ int skx_get_nvdimm_info(struct dimm_info *dimm, struct = skx_imc *imc, =20 return (size =3D=3D 0 || size =3D=3D ~0ull) ? 0 : 1; } +EXPORT_SYMBOL_GPL(skx_get_nvdimm_info); =20 int skx_register_mci(struct skx_imc *imc, struct pci_dev *pdev, const char *ctl_name, const char *mod_str, @@ -512,6 +522,7 @@ int skx_register_mci(struct skx_imc *imc, struct pci_de= v *pdev, imc->mci =3D NULL; return rc; } +EXPORT_SYMBOL_GPL(skx_register_mci); =20 static void skx_unregister_mci(struct skx_imc *imc) { @@ -688,6 +699,7 @@ int skx_mce_check_error(struct notifier_block *nb, unsi= gned long val, mce->kflags |=3D MCE_HANDLED_EDAC; return NOTIFY_DONE; } +EXPORT_SYMBOL_GPL(skx_mce_check_error); =20 void skx_remove(void) { @@ -725,3 +737,8 @@ void skx_remove(void) kfree(d); } } +EXPORT_SYMBOL_GPL(skx_remove); + +MODULE_LICENSE("GPL v2"); +MODULE_AUTHOR("Tony Luck"); +MODULE_DESCRIPTION("MC Driver for Intel server processors"); diff --git a/drivers/edac/skx_common.h b/drivers/edac/skx_common.h index b6d3607dffe2..11faf1db4fa4 100644 --- a/drivers/edac/skx_common.h +++ b/drivers/edac/skx_common.h @@ -231,8 +231,8 @@ typedef int (*get_dimm_config_f)(struct mem_ctl_info *m= ci, typedef bool (*skx_decode_f)(struct decoded_addr *res); typedef void (*skx_show_retry_log_f)(struct decoded_addr *res, char *msg, = int len, bool scrub_err); =20 -int __init skx_adxl_get(void); -void __exit skx_adxl_put(void); +int skx_adxl_get(void); +void skx_adxl_put(void); void skx_set_decode(skx_decode_f decode, skx_show_retry_log_f show_retry_l= og); void skx_set_mem_cfg(bool mem_cfg_2lm); =20 --=20 2.39.2