Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
ycai
simbricks
Commits
edae92bd
Commit
edae92bd
authored
Sep 22, 2022
by
Antoine Kaufmann
Browse files
images: add farmem driver for adding memory region to kernel
parent
096cbfd9
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
64 additions
and
4 deletions
+64
-4
images/farmem/Makefile
images/farmem/Makefile
+2
-0
images/farmem/farmem_main.c
images/farmem/farmem_main.c
+48
-0
images/rules.mk
images/rules.mk
+14
-4
No files found.
images/farmem/Makefile
0 → 100644
View file @
edae92bd
obj-m
+=
farmem.o
farmem-objs
+=
farmem_main.o
images/farmem/farmem_main.c
0 → 100644
View file @
edae92bd
#include<linux/module.h>
#include<linux/kernel.h>
#include <linux/memory_hotplug.h>
MODULE_LICENSE
(
"GPL"
);
MODULE_AUTHOR
(
"Antoine Kaufmann"
);
MODULE_DESCRIPTION
(
"Manually exposes specified memory region in the specified "
"numa node."
);
MODULE_VERSION
(
"0.1"
);
static
unsigned
long
base_addr
=
0
;
static
unsigned
long
size
=
0
;
static
int
nnid
=
1
;
module_param
(
base_addr
,
ulong
,
0
);
module_param
(
size
,
ulong
,
0
);
module_param
(
nnid
,
int
,
0
);
static
int
__init
farmem_mod_init
(
void
)
{
int
rc
;
printk
(
KERN_ALERT
"Loading farmem driver
\n
"
);
if
(
!
base_addr
||
!
size
)
{
panic
(
"base address and length must be set"
);
}
if
(
!
node_possible
(
nnid
))
{
panic
(
"invalid numa node spcified"
);
}
rc
=
add_memory_driver_managed
(
nnid
,
base_addr
,
size
,
"System RAM (farmem)"
,
MHP_NONE
);
if
(
rc
)
{
printk
(
KERN_ALERT
"adding memory failed: %d
\n
"
,
rc
);
}
node_set_online
(
nnid
);
return
0
;
}
static
void
__exit
farmem_mod_exit
(
void
)
{
printk
(
KERN_ALERT
"Unloading farmem driver, this is broken
\n
"
);
}
module_init
(
farmem_mod_init
);
module_exit
(
farmem_mod_exit
);
images/rules.mk
View file @
edae92bd
...
@@ -50,13 +50,16 @@ kheader_dir := $(d)kernel/kheaders
...
@@ -50,13 +50,16 @@ kheader_dir := $(d)kernel/kheaders
kheader_tar
:=
$(d)
kheaders.tar.bz2
kheader_tar
:=
$(d)
kheaders.tar.bz2
mqnic_dir
:=
$(d)
mqnic
mqnic_dir
:=
$(d)
mqnic
mqnic_mod
:=
$(mqnic_dir)
/mqnic.ko
mqnic_mod
:=
$(mqnic_dir)
/mqnic.ko
farmem_dir
:=
$(d)
farmem
farmem_mod
:=
$(farmem_dir)
/farmem.ko
m5_bin
:=
$(d)
m5
m5_bin
:=
$(d)
m5
guest_init
:=
$(d)
/scripts/guestinit.sh
guest_init
:=
$(d)
/scripts/guestinit.sh
build-images
:
$(IMAGES) $(RAW_IMAGES) $(vmlinux) $(bz_image) $(mqnic_mod)
build-images
:
$(IMAGES) $(RAW_IMAGES) $(vmlinux) $(bz_image) $(mqnic_mod)
\
$(farmem_mod)
build-images-min
:
$(IMAGES_MIN) $(RAW_IMAGES_MIN) $(vmlinux) $(bz_image)
\
build-images-min
:
$(IMAGES_MIN) $(RAW_IMAGES_MIN) $(vmlinux) $(bz_image)
\
$(mqnic_mod)
$(mqnic_mod)
$(farmem_mod)
# only converts existing images to raw
# only converts existing images to raw
convert-images-raw
:
convert-images-raw
:
...
@@ -180,10 +183,17 @@ $(mqnic_mod): $(vmlinux)
...
@@ -180,10 +183,17 @@ $(mqnic_mod): $(vmlinux)
$(MAKE)
-C
$(kernel_dir)
M
=
$(
abspath
$(mqnic_dir)
)
modules
$(MAKE)
-C
$(kernel_dir)
M
=
$(
abspath
$(mqnic_dir)
)
modules
touch
$@
touch
$@
################################################
# farmem kernel module
CLEAN
:=
$(
addprefix
$(d)
, mqnic/mqnic.ko mqnic/
*
.o mqnic/.
*
.cmd mqnic/
*
.mod
\
$(farmem_mod)
:
$(vmlinux)
mqnic/mqnic.mod.c mqnic/Module.symvers mqnic/modules.order
)
$(MAKE)
-C
$(kernel_dir)
M
=
$(
abspath
$(farmem_dir)
)
modules
touch
$@
CLEAN
:=
$(
addprefix
$(d)
, mqnic/mqnic.ko mqnic/
*
.o mqnic/.
*
.cmd mqnic/
*
.mod
\
mqnic/mqnic.mod.c mqnic/Module.symvers mqnic/modules.order
\
farmem/farmem.ko farmem/
*
.o farmem/.
*
.cmd farmem/
*
.mod
\
farmem/farmem.mod.c farmem/Module.symvers farmem/modules.order
)
DISTCLEAN
:=
$(kernel_dir)
$(packer)
$(bz_image)
$(vmlinux)
$(kheader_dir)
\
DISTCLEAN
:=
$(kernel_dir)
$(packer)
$(bz_image)
$(vmlinux)
$(kheader_dir)
\
$(
foreach
i,
$(IMAGES)
,
$(
dir
$(i)
)
$(
subst
output-,input-,
$(
dir
$(i)
)))
\
$(
foreach
i,
$(IMAGES)
,
$(
dir
$(i)
)
$(
subst
output-,input-,
$(
dir
$(i)
)))
\
$(d)
packer_cache
$(d)
kheaders.tar.bz2
$(d)
packer_cache
$(d)
kheaders.tar.bz2
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment