Merge branch 'master' of postpeta.pccluster.org:mckernel
This commit is contained in:
@ -44,7 +44,7 @@ void *get_x86_this_cpu_kstack(void);
|
||||
void init_processors_local(int max_id);
|
||||
void assign_processor_id(void);
|
||||
void arch_delay(int);
|
||||
void x86_set_warm_reset(void);
|
||||
void x86_set_warm_reset(unsigned long ip, char *first_page_va);
|
||||
void x86_init_perfctr(void);
|
||||
|
||||
extern int kprintf(const char *format, ...);
|
||||
@ -393,12 +393,7 @@ static void outb(uint8_t v, uint16_t port)
|
||||
|
||||
static void set_warm_reset_vector(unsigned long ip)
|
||||
{
|
||||
/* Write CMOS */
|
||||
x86_set_warm_reset();
|
||||
|
||||
/* Set vector */
|
||||
*(unsigned short *)(first_page_va + 0x469) = (ip >> 4);
|
||||
*(unsigned short *)(first_page_va + 0x467) = ip & 0xf;
|
||||
x86_set_warm_reset(ip, first_page_va);
|
||||
}
|
||||
|
||||
static void wait_icr_idle(void)
|
||||
|
||||
@ -200,7 +200,7 @@ static unsigned long attr_to_l2attr(enum ihk_mc_pt_attribute attr)
|
||||
static unsigned long attr_to_l1attr(enum ihk_mc_pt_attribute attr)
|
||||
{
|
||||
if (attr & PTATTR_UNCACHABLE) {
|
||||
return (attr & ATTR_MASK) | PFL1_PWT | PFL1_PWT;
|
||||
return (attr & ATTR_MASK) | PFL1_PCD | PFL1_PWT;
|
||||
} else {
|
||||
return (attr & ATTR_MASK);
|
||||
}
|
||||
@ -683,7 +683,7 @@ void ihk_mc_reserve_arch_pages(unsigned long start, unsigned long end,
|
||||
|
||||
void ihk_mc_set_page_allocator(struct ihk_mc_pa_ops *ops)
|
||||
{
|
||||
last_page = NULL;
|
||||
last_page = (void *)-1;
|
||||
pa_ops = ops;
|
||||
}
|
||||
|
||||
|
||||
@ -28,6 +28,8 @@ if test "X$WITH_TARGET" = Xyes -o "X$WITH_TARGET" = Xno; then
|
||||
WITH_TARGET=attached-mic
|
||||
fi
|
||||
|
||||
test "x$prefix" = xNONE && prefix="$ac_default_prefix"
|
||||
|
||||
case $WITH_TARGET in
|
||||
attached-mic)
|
||||
ARCH=`uname -m`
|
||||
|
||||
@ -1,19 +0,0 @@
|
||||
KDIR ?= /lib/modules/`uname -r `/build
|
||||
|
||||
obj-m += mcctrl.o
|
||||
|
||||
mcctrl-objs := driver.o control.o ikc.o syscall.o
|
||||
|
||||
IHK_BASE=$(src)/../../../ihk
|
||||
EXTRA_CFLAGS = -I$(IHK_BASE)/linux/include -I$(IHK_BASE)/ikc/include -I$(IHK_BASE)/include -I$(src)/../include
|
||||
KBUILD_EXTRA_SYMBOLS = $(IHK_BASE)/linux/core/Module.symvers
|
||||
|
||||
.PHONY: clean install
|
||||
|
||||
modules:
|
||||
$(MAKE) -C $(KDIR) M=$(PWD) modules
|
||||
|
||||
clean:
|
||||
$(RM) .*.cmd *.mod.c *.o *.ko* Module.symvers modules.order -r .tmp*
|
||||
|
||||
install:
|
||||
@ -1,16 +0,0 @@
|
||||
#CC=/usr/linux-k1om-4.7/bin/x86_64-k1om-linux-gcc
|
||||
CC=gcc
|
||||
CFLAGS=-Wall -O
|
||||
TARGET=mcexec
|
||||
|
||||
all: $(TARGET)
|
||||
|
||||
mcexec: mcexec.c
|
||||
$(CC) $(CFLAGS) $(EXTRA_CFLAGS) -pthread -o $@ $^ $(EXTRA_OBJS)
|
||||
|
||||
clean:
|
||||
$(RM) $(TARGET) *.o
|
||||
|
||||
.PHONY: all clean
|
||||
|
||||
|
||||
@ -6,7 +6,7 @@ TARGET=mcexec
|
||||
all: $(TARGET)
|
||||
|
||||
mcexec: mcexec.c
|
||||
$(CC) $(CFLAGS) -pthread -o $@ $^
|
||||
$(CC) $(CFLAGS) $(EXTRA_CFLAGS) -pthread -o $@ $^ $(EXTRA_OBJS)
|
||||
|
||||
clean:
|
||||
$(RM) $(TARGET) *.o
|
||||
|
||||
@ -549,6 +549,7 @@ int main_loop(int fd, int cpu, pthread_mutex_t *lock)
|
||||
{
|
||||
struct syscall_wait_desc w;
|
||||
long ret;
|
||||
char *fn;
|
||||
|
||||
w.cpu = cpu;
|
||||
|
||||
@ -573,7 +574,17 @@ int main_loop(int fd, int cpu, pthread_mutex_t *lock)
|
||||
|
||||
__dprintf("open: %s\n", dma_buf);
|
||||
|
||||
ret = open((char *)dma_buf, w.sr.args[1], w.sr.args[2]);
|
||||
fn = (char *)dma_buf;
|
||||
if(!strcmp(fn, "/proc/meminfo")){
|
||||
fn = "/admin/fs/attached/files/proc/meminfo";
|
||||
}
|
||||
else if(!strcmp(fn, "/proc/cpuinfo")){
|
||||
fn = "/admin/fs/attached/files/proc/cpuinfo";
|
||||
}
|
||||
else if(!strcmp(fn, "/sys/devices/system/cpu/online")){
|
||||
fn = "/admin/fs/attached/files/sys/devices/system/cpu/online";
|
||||
}
|
||||
ret = open(fn, w.sr.args[1], w.sr.args[2]);
|
||||
SET_ERR(ret);
|
||||
do_syscall_return(fd, cpu, ret, 0, 0, 0, 0);
|
||||
break;
|
||||
|
||||
@ -1,40 +0,0 @@
|
||||
#BUILD_TARGET = builtin-mic attached-mic
|
||||
BUILD_TARGET ?= attached-mic
|
||||
SRC = $(CURDIR)
|
||||
|
||||
IHKBASE ?= $(SRC)/../../ihk/cokernel
|
||||
O ?= $(KBUILD_OUTPUT)
|
||||
V ?= $(VERBOSE)
|
||||
|
||||
KERNEL = kernel.img
|
||||
KERNELS = $(addsuffix /$(KERNEL),$(addprefix $(O)/,$(BUILD_TARGET)))
|
||||
|
||||
SUBCMD_OPTS = V='$(V)'
|
||||
|
||||
$(if $(O),,$(error Specify the compilation target directory))
|
||||
#$(if $(shell ls $(IHKBASE)/Makefile),,\
|
||||
# $(error IHK is not found in $(IHKBASE)))
|
||||
|
||||
.PHONY: all clean depend
|
||||
|
||||
all: $(KERNELS)
|
||||
|
||||
%/kernel.img: %/Makefile
|
||||
@echo 'Building for' $(dir $@)
|
||||
@make --no-print-directory -C $(dir $@) $(SUBCMD_OPTS)
|
||||
|
||||
%/Makefile: Makefile.build FORCE
|
||||
@mkdir -p $(dir $@)
|
||||
@echo 'SRC = $(SRC)' > $@
|
||||
@echo 'IHKBASE = $(IHKBASE)' >> $@
|
||||
@echo 'TARGET = $(notdir $(patsubst %/,%,$(dir $@)))' >> $@
|
||||
@echo 'TARGETDIR = $$(shell echo $$(TARGET) | sed "s/-/\//")' >> $@
|
||||
@cat Makefile.build >> $@
|
||||
@rm -f $(dir $@)/Makefile.dep
|
||||
|
||||
clean: $(addsuffix .clean,$(BUILD_TARGET))
|
||||
|
||||
%.clean: $(O)/%/Makefile
|
||||
@make --no-print-directory -C $(O)/$(basename $@) $(SUBCMD_OPTS) clean
|
||||
|
||||
FORCE:
|
||||
@ -20,9 +20,12 @@ void kputs(char *buf)
|
||||
|
||||
if (len + kmsg_buf.tail > kmsg_buf.len) {
|
||||
kmsg_buf.tail = 0;
|
||||
if(len > kmsg_buf.len) {
|
||||
len = kmsg_buf.len;
|
||||
}
|
||||
}
|
||||
|
||||
strncpy(kmsg_buf.str + kmsg_buf.tail, buf, len);
|
||||
memcpy(kmsg_buf.str + kmsg_buf.tail, buf, len);
|
||||
kmsg_buf.tail += len;
|
||||
|
||||
ihk_mc_spinlock_unlock(&kmsg_lock, flags);
|
||||
|
||||
@ -49,7 +49,7 @@ static void process_msg_prepare_process(unsigned long rphys)
|
||||
|
||||
sz = sizeof(struct program_load_desc)
|
||||
+ sizeof(struct program_image_section) * 16;
|
||||
npages = (sz + PAGE_SIZE - 1) >> PAGE_SHIFT;
|
||||
npages = ((rphys + sz - 1) >> PAGE_SHIFT) - (rphys >> PAGE_SHIFT) + 1;
|
||||
|
||||
phys = ihk_mc_map_memory(NULL, rphys, sz);
|
||||
p = ihk_mc_map_virtual(phys, npages, PTATTR_WRITABLE);
|
||||
|
||||
@ -1055,7 +1055,7 @@ SYSCALL_DECLARE(sched_getaffinity)
|
||||
|
||||
CPU_ZERO_S(min_len, mask);
|
||||
for (cpu_id = 0; cpu_id < min_ncpus; ++cpu_id)
|
||||
CPU_SET_S(min_len, cpu_id, mask);
|
||||
CPU_SET_S(cpu_info->hw_ids[cpu_id], min_len, mask);
|
||||
|
||||
// dkprintf("sched_getaffinity returns full mask\n");
|
||||
|
||||
|
||||
@ -46,15 +46,15 @@ void *__ihk_pagealloc_init(unsigned long start, unsigned long size,
|
||||
} else {
|
||||
desc = (void *)allocate_pages(descsize, 0);
|
||||
}
|
||||
flag = descsize;
|
||||
memset(desc, 0, descsize * PAGE_SIZE);
|
||||
|
||||
if (!desc) {
|
||||
kprintf("IHK: failed to allocate page-allocator-desc "\
|
||||
"(%lx, %lx, %lx)\n", start, size, unit);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
flag = descsize;
|
||||
memset(desc, 0, descsize * PAGE_SIZE);
|
||||
|
||||
desc->start = start;
|
||||
desc->last = 0;
|
||||
desc->count = mapaligned >> 3;
|
||||
|
||||
104
make.sh
104
make.sh
@ -1,104 +0,0 @@
|
||||
#!/bin/sh
|
||||
MOPT=
|
||||
OPT=
|
||||
ihkdir=`pwd`/../ihk
|
||||
installdir=
|
||||
kerneldir=
|
||||
target=
|
||||
cleanflag=
|
||||
while [ "X$1" != X ]; do
|
||||
case "$1" in
|
||||
clean)
|
||||
cleanflag=1
|
||||
;;
|
||||
installdir=*)
|
||||
installdir="`echo $1 | sed 's/^installdir=//'`"
|
||||
;;
|
||||
ihkdir=*)
|
||||
ihkdir="`echo $1 | sed 's/^ihkdir=//'`"
|
||||
;;
|
||||
kerneldir=*)
|
||||
kerneldir="`echo $1 | sed 's/^kerneldir=//'`"
|
||||
;;
|
||||
target=*)
|
||||
target="`echo $1 | sed 's/^target=//'`"
|
||||
;;
|
||||
*)
|
||||
echo "unknown option $1" >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
if [ "X$cleanflag" != X ]; then
|
||||
(cd executer/kernel; make clean)
|
||||
(cd executer/user; make clean)
|
||||
rm -rf kernel/build
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if [ "X$target" = X ]; then
|
||||
if [ -f $ihkdir/target ]; then
|
||||
target="`cat $ihkdir/target`"
|
||||
fi
|
||||
fi
|
||||
if [ "X$target" = X ]; then
|
||||
target=attached-mic
|
||||
fi
|
||||
|
||||
if [ "X$kerneldir" = X ]; then
|
||||
if [ -f $ihkdir/kerneldir ]; then
|
||||
kerneldir="`cat $ihkdir/kerneldir`"
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "X$kerneldir" != X ]; then
|
||||
MOPT="KDIR=$kerneldir"
|
||||
fi
|
||||
if [ "X$target" = "Xbuiltin-mic" ]; then
|
||||
MOPT="$MOPT ARCH=k1om"
|
||||
OPT="CC=x86_64-k1om-linux-gcc"
|
||||
fi
|
||||
|
||||
if [ "X$installdir" != X ]; then
|
||||
mkdir -p "$installdir"
|
||||
fi
|
||||
(cd executer/kernel; make $MOPT)
|
||||
if [ -f executer/kernel/mcctrl.ko ]; then
|
||||
if [ "X$installdir" != X ]; then
|
||||
cp executer/kernel/mcctrl.ko "$installdir"
|
||||
fi
|
||||
else
|
||||
echo "executer/kernel/mcctrl.ko could not be built" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
case "$target" in
|
||||
attached-mic | builtin-x86 | builtin-mic)
|
||||
(cd kernel; mkdir -p build; make O=`pwd`/build BUILD_TARGET=$target)
|
||||
krn=kernel/build/$target/kernel.img
|
||||
;;
|
||||
*)
|
||||
echo "unknown target $target" >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
if [ -f $krn ]; then
|
||||
if [ "X$installdir" != X ]; then
|
||||
cp $krn "$installdir"
|
||||
fi
|
||||
else
|
||||
echo "$krn could not be built" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
(cd executer/user; make $OPT)
|
||||
if [ -f executer/user/mcexec ]; then
|
||||
if [ "X$installdir" != X ]; then
|
||||
cp executer/user/mcexec "$installdir"
|
||||
fi
|
||||
else
|
||||
echo "executer/user/mcexec could not be built" >&2
|
||||
exit 1
|
||||
fi
|
||||
Reference in New Issue
Block a user