ihk_os_create_pseudofs(): Add a function to prepare /proc and /sys
This commit is contained in:
@@ -50,6 +50,8 @@ install::
|
|||||||
mkdir -p -m 755 $(SBINDIR); \
|
mkdir -p -m 755 $(SBINDIR); \
|
||||||
install -m 755 arch/x86/tools/mcreboot-smp-x86.sh $(SBINDIR)/mcreboot.sh; \
|
install -m 755 arch/x86/tools/mcreboot-smp-x86.sh $(SBINDIR)/mcreboot.sh; \
|
||||||
install -m 755 arch/x86/tools/mcstop+release-smp-x86.sh $(SBINDIR)/mcstop+release.sh; \
|
install -m 755 arch/x86/tools/mcstop+release-smp-x86.sh $(SBINDIR)/mcstop+release.sh; \
|
||||||
|
install -m 600 arch/x86/tools/mcoverlay-destroy-smp-x86.sh $(SBINDIR)/mcoverlay-destroy.sh; \
|
||||||
|
install -m 600 arch/x86/tools/mcoverlay-create-smp-x86.sh $(SBINDIR)/mcoverlay-create.sh; \
|
||||||
install -m 755 arch/x86/tools/eclair-dump-backtrace.exp $(SBINDIR)/eclair-dump-backtrace.exp;\
|
install -m 755 arch/x86/tools/eclair-dump-backtrace.exp $(SBINDIR)/eclair-dump-backtrace.exp;\
|
||||||
mkdir -p -m 755 $(ETCDIR); \
|
mkdir -p -m 755 $(ETCDIR); \
|
||||||
install -m 644 arch/x86/tools/irqbalance_mck.service $(ETCDIR)/irqbalance_mck.service; \
|
install -m 644 arch/x86/tools/irqbalance_mck.service $(ETCDIR)/irqbalance_mck.service; \
|
||||||
|
|||||||
147
arch/x86/tools/mcoverlay-create-smp-x86.sh.in
Normal file
147
arch/x86/tools/mcoverlay-create-smp-x86.sh.in
Normal file
@@ -0,0 +1,147 @@
|
|||||||
|
# Overlay /proc, /sys with McKernel specific contents
|
||||||
|
|
||||||
|
#
|
||||||
|
# Revert any state that has been initialized before the error occured.
|
||||||
|
#
|
||||||
|
if [ -z "$(declare -f error_exit)" ]; then
|
||||||
|
error_exit() {
|
||||||
|
local status=$1
|
||||||
|
|
||||||
|
case $status in
|
||||||
|
mcos_sys_mounted)
|
||||||
|
if [ "$enable_mcoverlay" == "yes" ]; then
|
||||||
|
umount /tmp/mcos/mcos0_sys
|
||||||
|
fi
|
||||||
|
;&
|
||||||
|
mcos_proc_mounted)
|
||||||
|
if [ "$enable_mcoverlay" == "yes" ]; then
|
||||||
|
umount /tmp/mcos/mcos0_proc
|
||||||
|
fi
|
||||||
|
;&
|
||||||
|
mcoverlayfs_loaded)
|
||||||
|
if [ "$enable_mcoverlay" == "yes" ]; then
|
||||||
|
rmmod mcoverlay 2>/dev/null
|
||||||
|
fi
|
||||||
|
;&
|
||||||
|
linux_proc_bind_mounted)
|
||||||
|
if [ "$enable_mcoverlay" == "yes" ]; then
|
||||||
|
umount /tmp/mcos/linux_proc
|
||||||
|
fi
|
||||||
|
;&
|
||||||
|
tmp_mcos_mounted)
|
||||||
|
if [ "$enable_mcoverlay" == "yes" ]; then
|
||||||
|
umount /tmp/mcos
|
||||||
|
fi
|
||||||
|
;&
|
||||||
|
tmp_mcos_created)
|
||||||
|
if [ "$enable_mcoverlay" == "yes" ]; then
|
||||||
|
rm -rf /tmp/mcos
|
||||||
|
fi
|
||||||
|
;&
|
||||||
|
initial)
|
||||||
|
# Nothing more to revert
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -e /tmp/mcos ]; then
|
||||||
|
mkdir -p /tmp/mcos;
|
||||||
|
fi
|
||||||
|
if ! mount -t tmpfs tmpfs /tmp/mcos; then
|
||||||
|
echo "error: mount /tmp/mcos" >&2
|
||||||
|
error_exit "tmp_mcos_created"
|
||||||
|
fi
|
||||||
|
if [ ! -e /tmp/mcos/linux_proc ]; then
|
||||||
|
mkdir -p /tmp/mcos/linux_proc;
|
||||||
|
fi
|
||||||
|
if ! mount --bind /proc /tmp/mcos/linux_proc; then
|
||||||
|
echo "error: mount /tmp/mcos/linux_proc" >&2
|
||||||
|
error_exit "tmp_mcos_mounted"
|
||||||
|
fi
|
||||||
|
if ! taskset -c 0 insmod @KMODDIR@/mcoverlay.ko 2>/dev/null; then
|
||||||
|
echo "error: inserting mcoverlay.ko" >&2
|
||||||
|
error_exit "linux_proc_bind_mounted"
|
||||||
|
fi
|
||||||
|
while [ ! -e /proc/mcos0 ]
|
||||||
|
do
|
||||||
|
sleep 0.1
|
||||||
|
done
|
||||||
|
if [ ! -e /tmp/mcos/mcos0_proc ]; then
|
||||||
|
mkdir -p /tmp/mcos/mcos0_proc;
|
||||||
|
fi
|
||||||
|
if [ ! -e /tmp/mcos/mcos0_proc_upper ]; then
|
||||||
|
mkdir -p /tmp/mcos/mcos0_proc_upper;
|
||||||
|
fi
|
||||||
|
if [ ! -e /tmp/mcos/mcos0_proc_work ]; then
|
||||||
|
mkdir -p /tmp/mcos/mcos0_proc_work;
|
||||||
|
fi
|
||||||
|
if ! mount -t mcoverlay mcoverlay -o lowerdir=/proc/mcos0:/proc,upperdir=/tmp/mcos/mcos0_proc_upper,workdir=/tmp/mcos/mcos0_proc_work,nocopyupw,nofscheck /tmp/mcos/mcos0_proc; then
|
||||||
|
echo "error: mounting /tmp/mcos/mcos0_proc" >&2
|
||||||
|
error_exit "mcoverlayfs_loaded"
|
||||||
|
fi
|
||||||
|
# TODO: How de we revert this in case of failure??
|
||||||
|
mount --make-rprivate /proc
|
||||||
|
|
||||||
|
while [ ! -e /sys/devices/virtual/mcos/mcos0/sys/setup_complete ]
|
||||||
|
do
|
||||||
|
sleep 0.1
|
||||||
|
done
|
||||||
|
if [ ! -e /tmp/mcos/mcos0_sys ]; then
|
||||||
|
mkdir -p /tmp/mcos/mcos0_sys;
|
||||||
|
fi
|
||||||
|
if [ ! -e /tmp/mcos/mcos0_sys_upper ]; then
|
||||||
|
mkdir -p /tmp/mcos/mcos0_sys_upper;
|
||||||
|
fi
|
||||||
|
if [ ! -e /tmp/mcos/mcos0_sys_work ]; then
|
||||||
|
mkdir -p /tmp/mcos/mcos0_sys_work;
|
||||||
|
fi
|
||||||
|
if ! mount -t mcoverlay mcoverlay -o lowerdir=/sys/devices/virtual/mcos/mcos0/sys:/sys,upperdir=/tmp/mcos/mcos0_sys_upper,workdir=/tmp/mcos/mcos0_sys_work,nocopyupw,nofscheck /tmp/mcos/mcos0_sys; then
|
||||||
|
echo "error: mount /tmp/mcos/mcos0_sys" >&2
|
||||||
|
error_exit "mcos_proc_mounted"
|
||||||
|
fi
|
||||||
|
# TODO: How de we revert this in case of failure??
|
||||||
|
mount --make-rprivate /sys
|
||||||
|
|
||||||
|
touch /tmp/mcos/mcos0_proc/mckernel
|
||||||
|
|
||||||
|
rm -rf /tmp/mcos/mcos0_sys/setup_complete
|
||||||
|
|
||||||
|
# Hide NUMA related files which are outside the LWK partition
|
||||||
|
for cpuid in `find /sys/devices/system/cpu/* -maxdepth 0 -name "cpu[0123456789]*" -printf "%f "`; do
|
||||||
|
if [ ! -e "/sys/devices/virtual/mcos/mcos0/sys/devices/system/cpu/$cpuid" ]; then
|
||||||
|
rm -rf /tmp/mcos/mcos0_sys/devices/system/cpu/$cpuid
|
||||||
|
rm -rf /tmp/mcos/mcos0_sys/bus/cpu/devices/$cpuid
|
||||||
|
rm -rf /tmp/mcos/mcos0_sys/bus/cpu/drivers/processor/$cpuid
|
||||||
|
else
|
||||||
|
for nodeid in `find /sys/devices/system/cpu/$cpuid/* -maxdepth 0 -name "node[0123456789]*" -printf "%f "`; do
|
||||||
|
if [ ! -e "/sys/devices/virtual/mcos/mcos0/sys/devices/system/cpu/$cpuid/$nodeid" ]; then
|
||||||
|
rm -f /tmp/mcos/mcos0_sys/devices/system/cpu/$cpuid/$nodeid
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
for nodeid in `find /sys/devices/system/node/* -maxdepth 0 -name "node[0123456789]*" -printf "%f "`; do
|
||||||
|
if [ ! -e "/sys/devices/virtual/mcos/mcos0/sys/devices/system/node/$nodeid" ]; then
|
||||||
|
rm -rf /tmp/mcos/mcos0_sys/devices/system/node/$nodeid/*
|
||||||
|
rm -rf /tmp/mcos/mcos0_sys/bus/node/devices/$nodeid
|
||||||
|
else
|
||||||
|
# Delete non-existent symlinks
|
||||||
|
for cpuid in `find /sys/devices/system/node/$nodeid/* -maxdepth 0 -name "cpu[0123456789]*" -printf "%f "`; do
|
||||||
|
if [ ! -e "/sys/devices/virtual/mcos/mcos0/sys/devices/system/node/$nodeid/$cpuid" ]; then
|
||||||
|
rm -f /tmp/mcos/mcos0_sys/devices/system/node/$nodeid/$cpuid
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
rm -f /tmp/mcos/mcos0_sys/devices/system/node/$nodeid/memory*
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
rm -f /tmp/mcos/mcos0_sys/devices/system/node/has_*
|
||||||
|
for cpuid in `find /sys/bus/cpu/devices/* -maxdepth 0 -name "cpu[0123456789]*" -printf "%f "`; do
|
||||||
|
if [ ! -e "/sys/devices/virtual/mcos/mcos0/sys/bus/cpu/devices/$cpuid" ]; then
|
||||||
|
rm -rf /tmp/mcos/mcos0_sys/bus/cpu/devices/$cpuid
|
||||||
|
fi
|
||||||
|
done
|
||||||
13
arch/x86/tools/mcoverlay-destroy-smp-x86.sh.in
Normal file
13
arch/x86/tools/mcoverlay-destroy-smp-x86.sh.in
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
# Remove mcoverlay if loaded
|
||||||
|
|
||||||
|
if grep mcoverlay /proc/modules &>/dev/null; then
|
||||||
|
if [ "`cat /proc/mounts | grep /tmp/mcos/mcos0_sys`" != "" ]; then umount -l /tmp/mcos/mcos0_sys; fi
|
||||||
|
if [ "`cat /proc/mounts | grep /tmp/mcos/mcos0_proc`" != "" ]; then umount -l /tmp/mcos/mcos0_proc; fi
|
||||||
|
if [ "`cat /proc/mounts | grep /tmp/mcos/linux_proc`" != "" ]; then umount -l /tmp/mcos/linux_proc; fi
|
||||||
|
if [ "`cat /proc/mounts | grep /tmp/mcos`" != "" ]; then umount -l /tmp/mcos; fi
|
||||||
|
if [ -e /tmp/mcos ]; then rm -rf /tmp/mcos; fi
|
||||||
|
if ! rmmod mcoverlay 2>/dev/null; then
|
||||||
|
echo "error: removing mcoverlay" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
@@ -239,17 +239,7 @@ fi
|
|||||||
|
|
||||||
# Remove mcoverlay if loaded
|
# Remove mcoverlay if loaded
|
||||||
if [ "$enable_mcoverlay" == "yes" ]; then
|
if [ "$enable_mcoverlay" == "yes" ]; then
|
||||||
if grep mcoverlay /proc/modules &>/dev/null; then
|
. ${SBINDIR}/mcoverlay-destroy.sh
|
||||||
if [ "`cat /proc/mounts | grep /tmp/mcos/mcos0_sys`" != "" ]; then umount -l /tmp/mcos/mcos0_sys; fi
|
|
||||||
if [ "`cat /proc/mounts | grep /tmp/mcos/mcos0_proc`" != "" ]; then umount -l /tmp/mcos/mcos0_proc; fi
|
|
||||||
if [ "`cat /proc/mounts | grep /tmp/mcos/linux_proc`" != "" ]; then umount -l /tmp/mcos/linux_proc; fi
|
|
||||||
if [ "`cat /proc/mounts | grep /tmp/mcos`" != "" ]; then umount -l /tmp/mcos; fi
|
|
||||||
if [ -e /tmp/mcos ]; then rm -rf /tmp/mcos; fi
|
|
||||||
if ! rmmod mcoverlay 2>/dev/null; then
|
|
||||||
echo "error: removing mcoverlay" >&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Stop irqbalance
|
# Stop irqbalance
|
||||||
@@ -419,103 +409,7 @@ fi
|
|||||||
|
|
||||||
# Overlay /proc, /sys with McKernel specific contents
|
# Overlay /proc, /sys with McKernel specific contents
|
||||||
if [ "$enable_mcoverlay" == "yes" ]; then
|
if [ "$enable_mcoverlay" == "yes" ]; then
|
||||||
if [ ! -e /tmp/mcos ]; then
|
. ${SBINDIR}/mcoverlay-create.sh
|
||||||
mkdir -p /tmp/mcos;
|
|
||||||
fi
|
|
||||||
if ! mount -t tmpfs tmpfs /tmp/mcos; then
|
|
||||||
echo "error: mount /tmp/mcos" >&2
|
|
||||||
error_exit "tmp_mcos_created"
|
|
||||||
fi
|
|
||||||
if [ ! -e /tmp/mcos/linux_proc ]; then
|
|
||||||
mkdir -p /tmp/mcos/linux_proc;
|
|
||||||
fi
|
|
||||||
if ! mount --bind /proc /tmp/mcos/linux_proc; then
|
|
||||||
echo "error: mount /tmp/mcos/linux_proc" >&2
|
|
||||||
error_exit "tmp_mcos_mounted"
|
|
||||||
fi
|
|
||||||
if ! taskset -c 0 insmod ${KMODDIR}/mcoverlay.ko 2>/dev/null; then
|
|
||||||
echo "error: inserting mcoverlay.ko" >&2
|
|
||||||
error_exit "linux_proc_bind_mounted"
|
|
||||||
fi
|
|
||||||
while [ ! -e /proc/mcos0 ]
|
|
||||||
do
|
|
||||||
sleep 0.1
|
|
||||||
done
|
|
||||||
if [ ! -e /tmp/mcos/mcos0_proc ]; then
|
|
||||||
mkdir -p /tmp/mcos/mcos0_proc;
|
|
||||||
fi
|
|
||||||
if [ ! -e /tmp/mcos/mcos0_proc_upper ]; then
|
|
||||||
mkdir -p /tmp/mcos/mcos0_proc_upper;
|
|
||||||
fi
|
|
||||||
if [ ! -e /tmp/mcos/mcos0_proc_work ]; then
|
|
||||||
mkdir -p /tmp/mcos/mcos0_proc_work;
|
|
||||||
fi
|
|
||||||
if ! mount -t mcoverlay mcoverlay -o lowerdir=/proc/mcos0:/proc,upperdir=/tmp/mcos/mcos0_proc_upper,workdir=/tmp/mcos/mcos0_proc_work,nocopyupw,nofscheck /tmp/mcos/mcos0_proc; then
|
|
||||||
echo "error: mounting /tmp/mcos/mcos0_proc" >&2
|
|
||||||
error_exit "mcoverlayfs_loaded"
|
|
||||||
fi
|
|
||||||
# TODO: How de we revert this in case of failure??
|
|
||||||
mount --make-rprivate /proc
|
|
||||||
|
|
||||||
while [ ! -e /sys/devices/virtual/mcos/mcos0/sys/setup_complete ]
|
|
||||||
do
|
|
||||||
sleep 0.1
|
|
||||||
done
|
|
||||||
if [ ! -e /tmp/mcos/mcos0_sys ]; then
|
|
||||||
mkdir -p /tmp/mcos/mcos0_sys;
|
|
||||||
fi
|
|
||||||
if [ ! -e /tmp/mcos/mcos0_sys_upper ]; then
|
|
||||||
mkdir -p /tmp/mcos/mcos0_sys_upper;
|
|
||||||
fi
|
|
||||||
if [ ! -e /tmp/mcos/mcos0_sys_work ]; then
|
|
||||||
mkdir -p /tmp/mcos/mcos0_sys_work;
|
|
||||||
fi
|
|
||||||
if ! mount -t mcoverlay mcoverlay -o lowerdir=/sys/devices/virtual/mcos/mcos0/sys:/sys,upperdir=/tmp/mcos/mcos0_sys_upper,workdir=/tmp/mcos/mcos0_sys_work,nocopyupw,nofscheck /tmp/mcos/mcos0_sys; then
|
|
||||||
echo "error: mount /tmp/mcos/mcos0_sys" >&2
|
|
||||||
error_exit "mcos_proc_mounted"
|
|
||||||
fi
|
|
||||||
# TODO: How de we revert this in case of failure??
|
|
||||||
mount --make-rprivate /sys
|
|
||||||
|
|
||||||
touch /tmp/mcos/mcos0_proc/mckernel
|
|
||||||
|
|
||||||
rm -rf /tmp/mcos/mcos0_sys/setup_complete
|
|
||||||
|
|
||||||
# Hide NUMA related files which are outside the LWK partition
|
|
||||||
for cpuid in `find /sys/devices/system/cpu/* -maxdepth 0 -name "cpu[0123456789]*" -printf "%f "`; do
|
|
||||||
if [ ! -e "/sys/devices/virtual/mcos/mcos0/sys/devices/system/cpu/$cpuid" ]; then
|
|
||||||
rm -rf /tmp/mcos/mcos0_sys/devices/system/cpu/$cpuid
|
|
||||||
rm -rf /tmp/mcos/mcos0_sys/bus/cpu/devices/$cpuid
|
|
||||||
rm -rf /tmp/mcos/mcos0_sys/bus/cpu/drivers/processor/$cpuid
|
|
||||||
else
|
|
||||||
for nodeid in `find /sys/devices/system/cpu/$cpuid/* -maxdepth 0 -name "node[0123456789]*" -printf "%f "`; do
|
|
||||||
if [ ! -e "/sys/devices/virtual/mcos/mcos0/sys/devices/system/cpu/$cpuid/$nodeid" ]; then
|
|
||||||
rm -f /tmp/mcos/mcos0_sys/devices/system/cpu/$cpuid/$nodeid
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
for nodeid in `find /sys/devices/system/node/* -maxdepth 0 -name "node[0123456789]*" -printf "%f "`; do
|
|
||||||
if [ ! -e "/sys/devices/virtual/mcos/mcos0/sys/devices/system/node/$nodeid" ]; then
|
|
||||||
rm -rf /tmp/mcos/mcos0_sys/devices/system/node/$nodeid/*
|
|
||||||
rm -rf /tmp/mcos/mcos0_sys/bus/node/devices/$nodeid
|
|
||||||
else
|
|
||||||
# Delete non-existent symlinks
|
|
||||||
for cpuid in `find /sys/devices/system/node/$nodeid/* -maxdepth 0 -name "cpu[0123456789]*" -printf "%f "`; do
|
|
||||||
if [ ! -e "/sys/devices/virtual/mcos/mcos0/sys/devices/system/node/$nodeid/$cpuid" ]; then
|
|
||||||
rm -f /tmp/mcos/mcos0_sys/devices/system/node/$nodeid/$cpuid
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
rm -f /tmp/mcos/mcos0_sys/devices/system/node/$nodeid/memory*
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
rm -f /tmp/mcos/mcos0_sys/devices/system/node/has_*
|
|
||||||
for cpuid in `find /sys/bus/cpu/devices/* -maxdepth 0 -name "cpu[0123456789]*" -printf "%f "`; do
|
|
||||||
if [ ! -e "/sys/devices/virtual/mcos/mcos0/sys/bus/cpu/devices/$cpuid" ]; then
|
|
||||||
rm -rf /tmp/mcos/mcos0_sys/bus/cpu/devices/$cpuid
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Start irqbalance with CPUs and IRQ for McKernel banned
|
# Start irqbalance with CPUs and IRQ for McKernel banned
|
||||||
|
|||||||
@@ -84,16 +84,7 @@ if grep mcctrl /proc/modules &>/dev/null; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# Remove mcoverlay if loaded
|
# Remove mcoverlay if loaded
|
||||||
if grep mcoverlay /proc/modules &>/dev/null; then
|
. ${SBINDIR}/mcoverlay-destroy.sh
|
||||||
if [ "`cat /proc/mounts | grep /tmp/mcos/mcos0_sys`" != "" ]; then umount -l /tmp/mcos/mcos0_sys; fi
|
|
||||||
if [ "`cat /proc/mounts | grep /tmp/mcos/mcos0_proc`" != "" ]; then umount -l /tmp/mcos/mcos0_proc; fi
|
|
||||||
if [ "`cat /proc/mounts | grep /tmp/mcos/linux_proc`" != "" ]; then umount -l /tmp/mcos/linux_proc; fi
|
|
||||||
if [ "`cat /proc/mounts | grep /tmp/mcos`" != "" ]; then umount -l /tmp/mcos; fi
|
|
||||||
if [ -e /tmp/mcos ]; then rm -rf /tmp/mcos; fi
|
|
||||||
if ! rmmod mcoverlay 2>/dev/null; then
|
|
||||||
echo "warning: failed to remove mcoverlay" >&2
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Remove SMP module
|
# Remove SMP module
|
||||||
if grep ihk_smp_x86 /proc/modules &>/dev/null; then
|
if grep ihk_smp_x86 /proc/modules &>/dev/null; then
|
||||||
|
|||||||
@@ -539,6 +539,8 @@ AC_CONFIG_FILES([
|
|||||||
arch/x86/tools/mcreboot-builtin-x86.sh
|
arch/x86/tools/mcreboot-builtin-x86.sh
|
||||||
arch/x86/tools/mcreboot-smp-x86.sh
|
arch/x86/tools/mcreboot-smp-x86.sh
|
||||||
arch/x86/tools/mcstop+release-smp-x86.sh
|
arch/x86/tools/mcstop+release-smp-x86.sh
|
||||||
|
arch/x86/tools/mcoverlay-destroy-smp-x86.sh
|
||||||
|
arch/x86/tools/mcoverlay-create-smp-x86.sh
|
||||||
arch/x86/tools/eclair-dump-backtrace.exp
|
arch/x86/tools/eclair-dump-backtrace.exp
|
||||||
arch/x86/tools/mcshutdown-builtin-x86.sh
|
arch/x86/tools/mcshutdown-builtin-x86.sh
|
||||||
arch/x86/tools/mcreboot.1:arch/x86/tools/mcreboot.1in
|
arch/x86/tools/mcreboot.1:arch/x86/tools/mcreboot.1in
|
||||||
|
|||||||
Reference in New Issue
Block a user