mirror of
https://gitee.com/bianbu-linux/linux-6.6
synced 2025-07-01 23:53:16 -04:00
memblock: test suite and a small cleanup
* A small cleanup of unused variable in __next_mem_pfn_range_in_zone * Initial test suite to simulate memblock behaviour in userspace -----BEGIN PGP SIGNATURE----- iQFHBAABCAAxFiEEeOVYVaWZL5900a/pOQOGJssO/ZEFAmI9bD4THHJwcHRAbGlu dXguaWJtLmNvbQAKCRA5A4Ymyw79kXwhB/wNXR1wUb/eD3eKD+aNa2KMY5+8csjD ghJph8wQmM9U9hsLViv3/M/H5+bY/s0riZNulKYrcmzW2BgIzF2ebcoqgfQ89YGV bLx7lMJGxG/lCglur9m6KnOF89//Owq6Vfk7Jd6jR/F+43JO/3+5siCbTo6NrbVw 3DjT/WzvaICA646foyFTh8WotnIRbB2iYX1k/vIA3gwJ2C6n7WwoKzxU3ulKMUzg hVlhcuTVnaV4mjFBbl23wC7i4l9dgPO9M4ZrTtlEsNHeV6uoFYRObwy6/q/CsBqI avwgV0bQDch+QuCteUXcqIcnBpcUAfGxgiqp2PYX4lXA4gYTbo7plTna =IemP -----END PGP SIGNATURE----- Merge tag 'memblock-v5.18-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rppt/memblock Pull memblock updates from Mike Rapoport: "Test suite and a small cleanup: - A small cleanup of unused variable in __next_mem_pfn_range_in_zone - Initial test suite to simulate memblock behaviour in userspace" * tag 'memblock-v5.18-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rppt/memblock: (27 commits) memblock tests: Add TODO and README files memblock tests: Add memblock_alloc_try_nid tests for bottom up memblock tests: Add memblock_alloc_try_nid tests for top down memblock tests: Add memblock_alloc_from tests for bottom up memblock tests: Add memblock_alloc_from tests for top down memblock tests: Add memblock_alloc tests for bottom up memblock tests: Add memblock_alloc tests for top down memblock tests: Add simulation of physical memory memblock tests: Split up reset_memblock function memblock tests: Fix testing with 32-bit physical addresses memblock: __next_mem_pfn_range_in_zone: remove unneeded local variable nid memblock tests: Add memblock_free tests memblock tests: Add memblock_add_node test memblock tests: Add memblock_remove tests memblock tests: Add memblock_reserve tests memblock tests: Add memblock_add tests memblock tests: Add memblock reset function memblock tests: Add skeleton of the memblock simulator tools/include: Add debugfs.h stub tools/include: Add pfn.h stub ...
This commit is contained in:
commit
02f9a04d76
42 changed files with 3934 additions and 71 deletions
|
@ -4,6 +4,8 @@
|
|||
|
||||
#include <asm/atomic.h>
|
||||
|
||||
void atomic_long_set(atomic_long_t *v, long i);
|
||||
|
||||
/* atomic_cmpxchg_relaxed */
|
||||
#ifndef atomic_cmpxchg_relaxed
|
||||
#define atomic_cmpxchg_relaxed atomic_cmpxchg
|
||||
|
|
10
tools/include/linux/cache.h
Normal file
10
tools/include/linux/cache.h
Normal file
|
@ -0,0 +1,10 @@
|
|||
/* SPDX-License-Identifier: GPL-2.0 */
|
||||
#ifndef _TOOLS_LINUX_CACHE_H
|
||||
#define _TOOLS_LINUX_CACHE_H
|
||||
|
||||
#define L1_CACHE_SHIFT 5
|
||||
#define L1_CACHE_BYTES (1 << L1_CACHE_SHIFT)
|
||||
|
||||
#define SMP_CACHE_BYTES L1_CACHE_BYTES
|
||||
|
||||
#endif
|
5
tools/include/linux/debugfs.h
Normal file
5
tools/include/linux/debugfs.h
Normal file
|
@ -0,0 +1,5 @@
|
|||
/* SPDX-License-Identifier: GPL-2.0 */
|
||||
#ifndef _TOOLS_DEBUGFS_H
|
||||
#define _TOOLS_DEBUGFS_H
|
||||
|
||||
#endif
|
|
@ -1,4 +1,32 @@
|
|||
/* SPDX-License-Identifier: GPL-2.0 */
|
||||
#ifndef _TOOLS_INCLUDE_LINUX_GFP_H
|
||||
#define _TOOLS_INCLUDE_LINUX_GFP_H
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
#define __GFP_BITS_SHIFT 26
|
||||
#define __GFP_BITS_MASK ((gfp_t)((1 << __GFP_BITS_SHIFT) - 1))
|
||||
|
||||
#define __GFP_HIGH 0x20u
|
||||
#define __GFP_IO 0x40u
|
||||
#define __GFP_FS 0x80u
|
||||
#define __GFP_NOWARN 0x200u
|
||||
#define __GFP_ZERO 0x8000u
|
||||
#define __GFP_ATOMIC 0x80000u
|
||||
#define __GFP_ACCOUNT 0x100000u
|
||||
#define __GFP_DIRECT_RECLAIM 0x400000u
|
||||
#define __GFP_KSWAPD_RECLAIM 0x2000000u
|
||||
|
||||
#define __GFP_RECLAIM (__GFP_DIRECT_RECLAIM | __GFP_KSWAPD_RECLAIM)
|
||||
|
||||
#define GFP_ZONEMASK 0x0fu
|
||||
#define GFP_ATOMIC (__GFP_HIGH | __GFP_ATOMIC | __GFP_KSWAPD_RECLAIM)
|
||||
#define GFP_KERNEL (__GFP_RECLAIM | __GFP_IO | __GFP_FS)
|
||||
#define GFP_NOWAIT (__GFP_KSWAPD_RECLAIM)
|
||||
|
||||
static inline bool gfpflags_allow_blocking(const gfp_t gfp_flags)
|
||||
{
|
||||
return !!(gfp_flags & __GFP_DIRECT_RECLAIM);
|
||||
}
|
||||
|
||||
#endif /* _TOOLS_INCLUDE_LINUX_GFP_H */
|
||||
|
|
5
tools/include/linux/io.h
Normal file
5
tools/include/linux/io.h
Normal file
|
@ -0,0 +1,5 @@
|
|||
/* SPDX-License-Identifier: GPL-2.0 */
|
||||
#ifndef _TOOLS_IO_H
|
||||
#define _TOOLS_IO_H
|
||||
|
||||
#endif
|
|
@ -15,6 +15,8 @@
|
|||
#define UINT_MAX (~0U)
|
||||
#endif
|
||||
|
||||
#define _RET_IP_ ((unsigned long)__builtin_return_address(0))
|
||||
|
||||
#define PERF_ALIGN(x, a) __PERF_ALIGN_MASK(x, (typeof(x))(a)-1)
|
||||
#define __PERF_ALIGN_MASK(x, mask) (((x)+(mask))&~(mask))
|
||||
|
||||
|
@ -51,6 +53,10 @@
|
|||
_min1 < _min2 ? _min1 : _min2; })
|
||||
#endif
|
||||
|
||||
#define max_t(type, x, y) max((type)x, (type)y)
|
||||
#define min_t(type, x, y) min((type)x, (type)y)
|
||||
#define clamp(val, lo, hi) min((typeof(val))max(val, lo), hi)
|
||||
|
||||
#ifndef BUG_ON
|
||||
#ifdef NDEBUG
|
||||
#define BUG_ON(cond) do { if (cond) {} } while (0)
|
||||
|
|
42
tools/include/linux/mm.h
Normal file
42
tools/include/linux/mm.h
Normal file
|
@ -0,0 +1,42 @@
|
|||
/* SPDX-License-Identifier: GPL-2.0 */
|
||||
#ifndef _TOOLS_LINUX_MM_H
|
||||
#define _TOOLS_LINUX_MM_H
|
||||
|
||||
#include <linux/mmzone.h>
|
||||
#include <uapi/linux/const.h>
|
||||
|
||||
#define PAGE_SHIFT 12
|
||||
#define PAGE_SIZE (_AC(1, UL) << PAGE_SHIFT)
|
||||
#define PAGE_MASK (~(PAGE_SIZE - 1))
|
||||
|
||||
#define PHYS_ADDR_MAX (~(phys_addr_t)0)
|
||||
|
||||
#define __ALIGN_KERNEL(x, a) __ALIGN_KERNEL_MASK(x, (typeof(x))(a) - 1)
|
||||
#define __ALIGN_KERNEL_MASK(x, mask) (((x) + (mask)) & ~(mask))
|
||||
#define ALIGN(x, a) __ALIGN_KERNEL((x), (a))
|
||||
#define ALIGN_DOWN(x, a) __ALIGN_KERNEL((x) - ((a) - 1), (a))
|
||||
|
||||
#define PAGE_ALIGN(addr) ALIGN(addr, PAGE_SIZE)
|
||||
|
||||
#define __va(x) ((void *)((unsigned long)(x)))
|
||||
#define __pa(x) ((unsigned long)(x))
|
||||
|
||||
#define pfn_to_page(pfn) ((void *)((pfn) * PAGE_SIZE))
|
||||
|
||||
#define phys_to_virt phys_to_virt
|
||||
static inline void *phys_to_virt(unsigned long address)
|
||||
{
|
||||
return __va(address);
|
||||
}
|
||||
|
||||
void reserve_bootmem_region(phys_addr_t start, phys_addr_t end);
|
||||
|
||||
static inline void totalram_pages_inc(void)
|
||||
{
|
||||
}
|
||||
|
||||
static inline void totalram_pages_add(long count)
|
||||
{
|
||||
}
|
||||
|
||||
#endif
|
10
tools/include/linux/pfn.h
Normal file
10
tools/include/linux/pfn.h
Normal file
|
@ -0,0 +1,10 @@
|
|||
/* SPDX-License-Identifier: GPL-2.0 */
|
||||
#ifndef _TOOLS_LINUX_PFN_H_
|
||||
#define _TOOLS_LINUX_PFN_H_
|
||||
|
||||
#include <linux/mm.h>
|
||||
|
||||
#define PFN_UP(x) (((x) + PAGE_SIZE - 1) >> PAGE_SHIFT)
|
||||
#define PFN_DOWN(x) ((x) >> PAGE_SHIFT)
|
||||
#define PFN_PHYS(x) ((phys_addr_t)(x) << PAGE_SHIFT)
|
||||
#endif
|
38
tools/include/linux/slab.h
Normal file
38
tools/include/linux/slab.h
Normal file
|
@ -0,0 +1,38 @@
|
|||
/* SPDX-License-Identifier: GPL-2.0 */
|
||||
#ifndef _TOOLS_SLAB_H
|
||||
#define _TOOLS_SLAB_H
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <linux/gfp.h>
|
||||
|
||||
#define SLAB_PANIC 2
|
||||
#define SLAB_RECLAIM_ACCOUNT 0x00020000UL /* Objects are reclaimable */
|
||||
|
||||
#define kzalloc_node(size, flags, node) kmalloc(size, flags)
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
void *kmem_cache_alloc(struct kmem_cache *cachep, int flags);
|
||||
void kmem_cache_free(struct kmem_cache *cachep, void *objp);
|
||||
|
||||
struct kmem_cache *kmem_cache_create(const char *name, unsigned int size,
|
||||
unsigned int align, unsigned int flags,
|
||||
void (*ctor)(void *));
|
||||
|
||||
#endif /* _TOOLS_SLAB_H */
|
|
@ -63,10 +63,20 @@ typedef __u64 __bitwise __be64;
|
|||
typedef __u16 __bitwise __sum16;
|
||||
typedef __u32 __bitwise __wsum;
|
||||
|
||||
#ifdef CONFIG_PHYS_ADDR_T_64BIT
|
||||
typedef u64 phys_addr_t;
|
||||
#else
|
||||
typedef u32 phys_addr_t;
|
||||
#endif
|
||||
|
||||
typedef struct {
|
||||
int counter;
|
||||
} atomic_t;
|
||||
|
||||
typedef struct {
|
||||
long counter;
|
||||
} atomic_long_t;
|
||||
|
||||
#ifndef __aligned_u64
|
||||
# define __aligned_u64 __u64 __attribute__((aligned(8)))
|
||||
#endif
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue