Commit edae92bd authored by Antoine Kaufmann's avatar Antoine Kaufmann
Browse files

images: add farmem driver for adding memory region to kernel

parent 096cbfd9
obj-m += farmem.o
farmem-objs += farmem_main.o
#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);
...@@ -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
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment