mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-07 13:53:24 +00:00
tools/testing/nvdimm: force nfit_test to depend on instrumented modules
The libnvdimm unit tests will fail when they are run against the production / in-tree version of libnvdimm.ko or nfit.ko due to symbols not being mocked per nfit_test's expectation. For example, nfit_test expects acpi_evaluate_dsm() to be replaced by __wrap_acpi_evaluate_dsm() to test how acpi_nfit_ctl() responds to different stimuli. Create a test-only symbol name that nfit_test links against to cause module load failures when the wrong module is present. For example, with this change, attempts to use the wrong module will report: nfit_test: Unknown symbol libnvdimm_test (err 0) Reported-by: Dave Jiang <dave.jiang@intel.com> Reported-by: Vishal Verma <vishal.l.verma@intel.com> Signed-off-by: Dan Williams <dan.j.williams@intel.com>
This commit is contained in:
parent
674d8bdec7
commit
0fb5c8df60
@ -37,10 +37,12 @@ obj-$(CONFIG_DEV_DAX_PMEM) += dax_pmem.o
|
|||||||
|
|
||||||
nfit-y := $(ACPI_SRC)/core.o
|
nfit-y := $(ACPI_SRC)/core.o
|
||||||
nfit-$(CONFIG_X86_MCE) += $(ACPI_SRC)/mce.o
|
nfit-$(CONFIG_X86_MCE) += $(ACPI_SRC)/mce.o
|
||||||
|
nfit-y += acpi_nfit_test.o
|
||||||
nfit-y += config_check.o
|
nfit-y += config_check.o
|
||||||
|
|
||||||
nd_pmem-y := $(NVDIMM_SRC)/pmem.o
|
nd_pmem-y := $(NVDIMM_SRC)/pmem.o
|
||||||
nd_pmem-y += pmem-dax.o
|
nd_pmem-y += pmem-dax.o
|
||||||
|
nd_pmem-y += pmem_test.o
|
||||||
nd_pmem-y += config_check.o
|
nd_pmem-y += config_check.o
|
||||||
|
|
||||||
nd_btt-y := $(NVDIMM_SRC)/btt.o
|
nd_btt-y := $(NVDIMM_SRC)/btt.o
|
||||||
@ -57,6 +59,7 @@ dax-y += config_check.o
|
|||||||
|
|
||||||
device_dax-y := $(DAX_SRC)/device.o
|
device_dax-y := $(DAX_SRC)/device.o
|
||||||
device_dax-y += dax-dev.o
|
device_dax-y += dax-dev.o
|
||||||
|
device_dax-y += device_dax_test.o
|
||||||
device_dax-y += config_check.o
|
device_dax-y += config_check.o
|
||||||
|
|
||||||
dax_pmem-y := $(DAX_SRC)/pmem.o
|
dax_pmem-y := $(DAX_SRC)/pmem.o
|
||||||
@ -75,6 +78,7 @@ libnvdimm-$(CONFIG_ND_CLAIM) += $(NVDIMM_SRC)/claim.o
|
|||||||
libnvdimm-$(CONFIG_BTT) += $(NVDIMM_SRC)/btt_devs.o
|
libnvdimm-$(CONFIG_BTT) += $(NVDIMM_SRC)/btt_devs.o
|
||||||
libnvdimm-$(CONFIG_NVDIMM_PFN) += $(NVDIMM_SRC)/pfn_devs.o
|
libnvdimm-$(CONFIG_NVDIMM_PFN) += $(NVDIMM_SRC)/pfn_devs.o
|
||||||
libnvdimm-$(CONFIG_NVDIMM_DAX) += $(NVDIMM_SRC)/dax_devs.o
|
libnvdimm-$(CONFIG_NVDIMM_DAX) += $(NVDIMM_SRC)/dax_devs.o
|
||||||
|
libnvdimm-y += libnvdimm_test.o
|
||||||
libnvdimm-y += config_check.o
|
libnvdimm-y += config_check.o
|
||||||
|
|
||||||
obj-m += test/
|
obj-m += test/
|
||||||
|
8
tools/testing/nvdimm/acpi_nfit_test.c
Normal file
8
tools/testing/nvdimm/acpi_nfit_test.c
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
// SPDX-License-Identifier: GPL-2.0
|
||||||
|
// Copyright(c) 2018 Intel Corporation. All rights reserved.
|
||||||
|
|
||||||
|
#include <linux/module.h>
|
||||||
|
#include <linux/printk.h>
|
||||||
|
#include "watermark.h"
|
||||||
|
|
||||||
|
nfit_test_watermark(acpi_nfit);
|
8
tools/testing/nvdimm/device_dax_test.c
Normal file
8
tools/testing/nvdimm/device_dax_test.c
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
// SPDX-License-Identifier: GPL-2.0
|
||||||
|
// Copyright(c) 2018 Intel Corporation. All rights reserved.
|
||||||
|
|
||||||
|
#include <linux/module.h>
|
||||||
|
#include <linux/printk.h>
|
||||||
|
#include "watermark.h"
|
||||||
|
|
||||||
|
nfit_test_watermark(device_dax);
|
8
tools/testing/nvdimm/libnvdimm_test.c
Normal file
8
tools/testing/nvdimm/libnvdimm_test.c
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
// SPDX-License-Identifier: GPL-2.0
|
||||||
|
// Copyright(c) 2018 Intel Corporation. All rights reserved.
|
||||||
|
|
||||||
|
#include <linux/module.h>
|
||||||
|
#include <linux/printk.h>
|
||||||
|
#include "watermark.h"
|
||||||
|
|
||||||
|
nfit_test_watermark(libnvdimm);
|
8
tools/testing/nvdimm/pmem_test.c
Normal file
8
tools/testing/nvdimm/pmem_test.c
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
// SPDX-License-Identifier: GPL-2.0
|
||||||
|
// Copyright(c) 2018 Intel Corporation. All rights reserved.
|
||||||
|
|
||||||
|
#include <linux/module.h>
|
||||||
|
#include <linux/printk.h>
|
||||||
|
#include "watermark.h"
|
||||||
|
|
||||||
|
nfit_test_watermark(pmem);
|
@ -27,6 +27,7 @@
|
|||||||
#include <nfit.h>
|
#include <nfit.h>
|
||||||
#include <nd.h>
|
#include <nd.h>
|
||||||
#include "nfit_test.h"
|
#include "nfit_test.h"
|
||||||
|
#include "../watermark.h"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Generate an NFIT table to describe the following topology:
|
* Generate an NFIT table to describe the following topology:
|
||||||
@ -2545,6 +2546,11 @@ static __init int nfit_test_init(void)
|
|||||||
{
|
{
|
||||||
int rc, i;
|
int rc, i;
|
||||||
|
|
||||||
|
pmem_test();
|
||||||
|
libnvdimm_test();
|
||||||
|
acpi_nfit_test();
|
||||||
|
device_dax_test();
|
||||||
|
|
||||||
nfit_test_setup(nfit_test_lookup, nfit_test_evaluate_dsm);
|
nfit_test_setup(nfit_test_lookup, nfit_test_evaluate_dsm);
|
||||||
|
|
||||||
nfit_wq = create_singlethread_workqueue("nfit");
|
nfit_wq = create_singlethread_workqueue("nfit");
|
||||||
|
21
tools/testing/nvdimm/watermark.h
Normal file
21
tools/testing/nvdimm/watermark.h
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
// SPDX-License-Identifier: GPL-2.0
|
||||||
|
// Copyright(c) 2018 Intel Corporation. All rights reserved.
|
||||||
|
#ifndef _TEST_NVDIMM_WATERMARK_H_
|
||||||
|
#define _TEST_NVDIMM_WATERMARK_H_
|
||||||
|
int pmem_test(void);
|
||||||
|
int libnvdimm_test(void);
|
||||||
|
int acpi_nfit_test(void);
|
||||||
|
int device_dax_test(void);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* dummy routine for nfit_test to validate it is linking to the properly
|
||||||
|
* mocked module and not the standard one from the base tree.
|
||||||
|
*/
|
||||||
|
#define nfit_test_watermark(x) \
|
||||||
|
int x##_test(void) \
|
||||||
|
{ \
|
||||||
|
pr_debug("%s for nfit_test\n", KBUILD_MODNAME); \
|
||||||
|
return 0; \
|
||||||
|
} \
|
||||||
|
EXPORT_SYMBOL(x##_test)
|
||||||
|
#endif /* _TEST_NVDIMM_WATERMARK_H_ */
|
Loading…
Reference in New Issue
Block a user