Commit 16802e55 authored by Karolina Drobnik's avatar Karolina Drobnik Committed by Mike Rapoport
Browse files

memblock tests: Add skeleton of the memblock simulator



Add basic project files, together with local stubs of required headers.
Update tools/include/slab.h to include definitions used by memblock.

Signed-off-by: default avatarKarolina Drobnik <karolinadrobnik@gmail.com>
Signed-off-by: default avatarMike Rapoport <rppt@kernel.org>
Link: https://lore.kernel.org/r/d296fceb023a04b316a31fbff9acf1e76ac684e4.1643796665.git.karolinadrobnik@gmail.com
parent 62183279
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -12423,6 +12423,7 @@ S: Maintained
F:	Documentation/core-api/boot-time-mm.rst
F:	include/linux/memblock.h
F:	mm/memblock.c
F:	tools/testing/memblock/
MEMORY CONTROLLER DRIVERS
M:	Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
+10 −0
Original line number Diff line number Diff line
@@ -13,6 +13,16 @@
void *kmalloc(size_t size, gfp_t gfp);
void kfree(void *p);

bool slab_is_available(void);

enum slab_state {
	DOWN,
	PARTIAL,
	PARTIAL_NODE,
	UP,
	FULL
};

static inline void *kzalloc(size_t size, gfp_t gfp)
{
	return kmalloc(size, gfp | __GFP_ZERO);
+4 −0
Original line number Diff line number Diff line
main
memblock.c
linux/memblock.h
asm/cmpxchg.h
+52 −0
Original line number Diff line number Diff line
# SPDX-License-Identifier: GPL-2.0

# Memblock simulator requires AddressSanitizer (libasan) and liburcu development
# packages installed
CFLAGS += -I. -I../../include -Wall -O2 -fsanitize=address \
	  -fsanitize=undefined -D CONFIG_PHYS_ADDR_T_64BIT
LDFLAGS += -fsanitize=address -fsanitize=undefined
TARGETS = main
OFILES = main.o memblock.o lib/slab.o mmzone.o slab.o
EXTR_SRC = ../../../mm/memblock.c

ifeq ($(BUILD), 32)
	CFLAGS += -m32
	LDFLAGS += -m32
endif

# Process user parameters
include scripts/Makefile.include

main: $(OFILES)

$(OFILES): include

include: ../../../include/linux/memblock.h ../../include/linux/*.h \
	../../include/asm/*.h

	@mkdir -p linux
	test -L linux/memblock.h || ln -s ../../../../include/linux/memblock.h linux/memblock.h
	test -L asm/cmpxchg.h || ln -s ../../../arch/x86/include/asm/cmpxchg.h asm/cmpxchg.h

memblock.c: $(EXTR_SRC)
	test -L memblock.c || ln -s $(EXTR_SRC) memblock.c

clean:
	$(RM) $(TARGETS) $(OFILES) linux/memblock.h memblock.c asm/cmpxchg.h

help:
	@echo  'Memblock simulator'
	@echo  ''
	@echo  'Available targets:'
	@echo  '  main		  - Build the memblock simulator'
	@echo  '  clean		  - Remove generated files and symlinks in the directory'
	@echo  ''
	@echo  'Configuration:'
	@echo  '  make NUMA=1               - simulate enabled NUMA'
	@echo  '  make MOVABLE_NODE=1       - override `movable_node_is_enabled`'
	@echo  '                              definition to simulate movable NUMA nodes'
	@echo  '  make 32BIT_PHYS_ADDR_T=1  - Use 32 bit physical addresses'

vpath %.c ../../lib

.PHONY: clean include help
+5 −0
Original line number Diff line number Diff line
/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _TOOLS_DMA_H
#define _TOOLS_DMA_H

#endif
Loading