kernel-tests master: Add rcutorture to stress tests (e3ca1f8)
by Justin Forbes
Repository : http://git.fedorahosted.org/cgit/kernel-tests.git
On branch : master
>---------------------------------------------------------------
commit e3ca1f81398a10a45bc5c4d8158da7ef9871232f
Author: Justin M. Forbes <jforbes(a)redhat.com>
Date: Mon Feb 23 09:57:07 2015 -0600
Add rcutorture to stress tests
>---------------------------------------------------------------
stress/rcutorture/runtest.sh | 48 ++++++++++++++++++++++++++++++++++++++++++
1 files changed, 48 insertions(+), 0 deletions(-)
diff --git a/stress/rcutorture/runtest.sh b/stress/rcutorture/runtest.sh
new file mode 100755
index 0000000..045192d
--- /dev/null
+++ b/stress/rcutorture/runtest.sh
@@ -0,0 +1,48 @@
+#!/bin/sh
+#
+# Licensed under the terms of the GNU GPL License version 2
+
+# RCU Torture test for 10 minutes
+
+# Test paramaters
+if [ -z "$TORTURE_FOR" ]; then
+ TORTURE_FOR=600
+fi
+
+# any extra kernel module parameters
+if [ -z "$TORTURE_PARAMS" ]; then
+ TORTURE_PARAMS=""
+fi
+
+# Make sure the rcutorture module is available to test
+insmod rcutorture $TORTURE_PARAMS
+if [ $? -eq 0 ]; then
+ echo "insmod rcutorture $TORTURE_PARAMS passed"
+else
+ echo "insmod rcutorture $TORTURE_PARAMS failed"
+ exit 3
+fi
+
+source ../../utils/mod-check.sh
+module=rcutorture
+check_mod
+has_mod=$?
+
+if [ "$has_mod" -ne "0" ]; then
+ exit 3
+fi
+
+# Test for $TORTURE_FOR time
+sleep $TORTURE_FOR
+rmmod rcutorture
+if [ $? -eq 0 ]; then
+ echo "rmmod rcutorture $TORTURE_PARAMS passed"
+else
+ echo "rmmod rcutorture $TORTURE_PARAMS failed"
+fi
+
+# Check Results
+dmesg | grep -i rcu | grep -i end | grep -i success > /dev/null
+if [ $? -ne 0 ]; then
+ exit -1
+fi
9 years, 2 months
kernel 4.0-rc1
by Josh Boyer
Hi All,
The upstream kernel bumped the major version to 4.0-rc1 yesterday.
Barring any unforeseen local test failures, the 4.0-rc1 build should
land in the f22/rawhide composes tomorrow. The koji builds will be
available a bit later today.
Most of the userspace issues around the major version number changing
should have been sorted out with the 3.x change 3 years ago. However,
one can never underestimate the short-sightedness of humans so some
things might still pop up. If you are using out of tree drivers
(vbox, nvidia) you might want to pay extra attention. This is just a
heads up in case you have weird issues arise.
If you have a userspace issue that you think is due to the version
number (not a normal kernel crash or driver problem), please be sure
to indicate that in any bugs you may file by including "kernel 4.x" in
the subject. Please also test with the last 3.20 kernel build before
declaring this a 4.x version issue, and indicate that in the bug as
well. Hopefully these bugs will be few and far between.
josh
9 years, 2 months
what's the "futex" thread doing when create a kvm guest ?
by Hu Jun
Hi guys:
env:
[root@cloudf ~]# uname -a
Linux cloudf.fedora.com 3.18.7-100.fc20.x86_64 #1 SMP Wed Feb 11
19:01:50 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
[root@cloudf ~]# rpm -q qemu-kvm
qemu-kvm-1.6.2-13.fc20.x86_64
I found there is a "futex" thead after creating a kvm guest by the
command:"/usr/bin/qemu-system-x86_64 -machine accel=kvm -hda
/opt/todaygoods_SLES_11_SP3_JeOS.x86_64-0.0.2.raw -vnc 192.168.0.110:6"
root@cloudf task]# ps aux | grep qemu
root 13111 0.3 2.8 546760 227340 pts/3 S+ 18:26 0:12 gdb
qemu-system-x86_64
root 14379 85.2 2.0 699004 165496 pts/3 tl 18:49 31:12
/usr/bin/qemu-system-x86_64 -machine accel=kvm -hda
/opt/todaygoods_SLES_11_SP3_JeOS.x86_64-0.0.2.raw -vnc 192.168.0.110:6
the process 14379 has three threads, I'm familiar with the two of them
except the third thread (lwp :14418)
[root@cloudf 14379]# cd /proc/14379/
[root@cloudf 14379]# cat task/14
14379/ 14416/ 14418/
[root@cloudf 14379]# cat task/14379/stack
[<ffffffff8121d1e9>] poll_schedule_timeout+0x49/0x70
[<ffffffff8121e8e4>] do_sys_poll+0x484/0x5c0
[<ffffffff8121eb24>] SyS_poll+0x74/0x110
[<ffffffff8174cfa9>] system_call_fastpath+0x12/0x17
[<ffffffffffffffff>] 0xffffffffffffffff
[root@cloudf 14379]# cat task/14416/stack
[<ffffffffa05cf92d>] kvm_arch_vcpu_ioctl_run+0xb0d/0x1280 [kvm]
[<ffffffffa05b7bb2>] kvm_vcpu_ioctl+0x292/0x5c0 [kvm]
[<ffffffff8121c710>] do_vfs_ioctl+0x2e0/0x4a0
[<ffffffff8121c951>] SyS_ioctl+0x81/0xa0
[<ffffffff8174cfa9>] system_call_fastpath+0x12/0x17
[<ffffffffffffffff>] 0xffffffffffffffff
[root@cloudf 14379]# cat task/14418/stack
[<ffffffff8110b6e0>] futex_wait_queue_me+0xd0/0x130
[<ffffffff8110b9e6>] futex_wait+0x176/0x270
[<ffffffff8110dc7e>] do_futex+0x10e/0xac0
[<ffffffff8110e6b0>] SyS_futex+0x80/0x180
[<ffffffff8174cfa9>] system_call_fastpath+0x12/0x17
[<ffffffffffffffff>] 0xffffffffffffffff
what's the "futex" thread doing when create a kvm guest ? I deeped
into the qemu code , but I failed to find where call "futex" system call.
can you help me ?
--
-----------------------------------------------
Jun Hu
mobile:186 8035 6499
email :jhu_com@163.com
-------------------------------------------------
9 years, 2 months
[PATCH] enable transactional memory support in ppc64 kernels
by Dan Horák
---
config-powerpc64 | 2 +-
config-powerpc64p7 | 1 +
2 files changed, 2 insertions(+), 1 deletion(-)
diff --git a/config-powerpc64 b/config-powerpc64
index 5d9d29b..10bdd0b 100644
--- a/config-powerpc64
+++ b/config-powerpc64
@@ -180,8 +180,8 @@ CONFIG_CXL=m
# CONFIG_PPC_ICSWX_PID is not set
# CONFIG_PPC_ICSWX_USE_SIGILL is not set
# CONFIG_PCIEPORTBUS is not set
-# CONFIG_PPC_TRANSACTIONAL_MEM is not set
# CONFIG_SND_HDA_INTEL is not set
CONFIG_BLK_DEV_RSXX=m
+CONFIG_PPC_TRANSACTIONAL_MEM=y
# CONFIG_CARL9170 is not set
diff --git a/config-powerpc64p7 b/config-powerpc64p7
index eabb28c..1c733eb 100644
--- a/config-powerpc64p7
+++ b/config-powerpc64p7
@@ -172,3 +172,4 @@ CONFIG_CXL=m
# CONFIG_PCIEPORTBUS is not set
# CONFIG_SND_HDA_INTEL is not set
CONFIG_BLK_DEV_RSXX=m
+CONFIG_PPC_TRANSACTIONAL_MEM=y
--
1.9.3
9 years, 2 months
rpmbuild of rawhide kernel fails.
by Steve Dickson
Hello,
I'm trying to build a rawhide kernel
(kernel-3.20.0-0.rc0.git7.1.fc23.src.rpm)
with rpmbuild -bb --target x86_64 kernel.spec
and I'm getting the following error
+ '[' '!' -f /data/src/rawhide/build/SOURCES/patch-3.19-git7.xz ']'
+ case "$patch" in
+ unxz
+ patch -p1 -F1 -s
symbolic link target '../../../../../arch/powerpc/lib/memcmp_64.S' is invalid
error: Bad exit status from /var/tmp/rpm-tmp.EsUbKg (%prep)
RPM build errors:
Bad exit status from /var/tmp/rpm-tmp.EsUbKg (%prep)
All the output is at http://ur1.ca/jqwao
Any ideas why this is happening?
tia!
steved.
9 years, 2 months
kernel-tests master: Add leap second test and mq memory corruption tests (eba7baf)
by Justin Forbes
Repository : http://git.fedorahosted.org/cgit/kernel-tests.git
On branch : master
>---------------------------------------------------------------
commit eba7bafd9275f10799f0dd4e62496b28ad608b91
Author: Justin M. Forbes <jforbes(a)redhat.com>
Date: Tue Feb 17 10:02:58 2015 -0600
Add leap second test and mq memory corruption tests
>---------------------------------------------------------------
default/insert_leap_second/leap-a-day.c | 307 ++++++++++++++++++++++++++
default/insert_leap_second/runtest.sh | 40 ++++
default/mq-memory-corruption/mq_notify-5.1.c | 128 +++++++++++
default/mq-memory-corruption/runtest.sh | 23 ++
4 files changed, 498 insertions(+), 0 deletions(-)
diff --git a/default/insert_leap_second/leap-a-day.c b/default/insert_leap_second/leap-a-day.c
new file mode 100644
index 0000000..628aa47
--- /dev/null
+++ b/default/insert_leap_second/leap-a-day.c
@@ -0,0 +1,307 @@
+/* Leap second stress test
+ * by: John Stultz (john.stultz(a)linaro.org)
+ * (C) Copyright IBM 2012
+ * (C) Copyright 2013, 2015 Linaro Limited
+ * Licensed under the GPLv2
+ *
+ * This test signals the kernel to insert a leap second
+ * every day at midnight GMT. This allows for stessing the
+ * kernel's leap-second behavior, as well as how well applications
+ * handle the leap-second discontinuity.
+ *
+ * Usage: leap-a-day [-s] [-i <num>]
+ *
+ * Options:
+ * -s: Each iteration, set the date to 10 seconds before midnight GMT.
+ * This speeds up the number of leapsecond transitions tested,
+ * but because it calls settimeofday frequently, advancing the
+ * time by 24 hours every ~16 seconds, it may cause application
+ * disruption.
+ *
+ * -i: Number of iterations to run (default: infinite)
+ *
+ * Other notes: Disabling NTP prior to running this is advised, as the two
+ * may conflict in thier commands to the kernel.
+ *
+ * To build:
+ * $ gcc leap-a-day.c -o leap-a-day -lrt
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <time.h>
+#include <sys/time.h>
+#include <sys/timex.h>
+#include <string.h>
+#include <signal.h>
+#include <unistd.h>
+
+extern char *optarg;
+
+#define NSEC_PER_SEC 1000000000ULL
+#define CLOCK_TAI 11
+
+/* returns 1 if a <= b, 0 otherwise */
+static inline int in_order(struct timespec a, struct timespec b)
+{
+ if(a.tv_sec < b.tv_sec)
+ return 1;
+ if(a.tv_sec > b.tv_sec)
+ return 0;
+ if(a.tv_nsec > b.tv_nsec)
+ return 0;
+ return 1;
+}
+
+struct timespec timespec_add(struct timespec ts, unsigned long long ns)
+{
+ ts.tv_nsec += ns;
+ while(ts.tv_nsec >= NSEC_PER_SEC) {
+ ts.tv_nsec -= NSEC_PER_SEC;
+ ts.tv_sec++;
+ }
+ return ts;
+}
+
+char* time_state_str(int state)
+{
+ switch (state) {
+ case TIME_OK: return "TIME_OK";
+ case TIME_INS: return "TIME_INS";
+ case TIME_DEL: return "TIME_DEL";
+ case TIME_OOP: return "TIME_OOP";
+ case TIME_WAIT: return "TIME_WAIT";
+ case TIME_BAD: return "TIME_BAD";
+ }
+ return "ERROR";
+}
+
+/* clear NTP time_status & time_state */
+void clear_time_state(void)
+{
+ struct timex tx;
+ int ret;
+
+ /*
+ * We have to call adjtime twice here, as kernels
+ * prior to 6b1859dba01c7 (included in 3.5 and
+ * -stable), had an issue with the state machine
+ * and wouldn't clear the STA_INS/DEL flag directly.
+ */
+ tx.modes = ADJ_STATUS;
+ tx.status = STA_PLL;
+ ret = adjtimex(&tx);
+
+ /* Clear maxerror, as it can cause UNSYNC to be set */
+ tx.modes = ADJ_MAXERROR;
+ tx.maxerror = 0;
+ ret = adjtimex(&tx);
+
+ /* Clear the status */
+ tx.modes = ADJ_STATUS;
+ tx.status = 0;
+ ret = adjtimex(&tx);
+}
+
+/* Make sure we cleanup on ctrl-c */
+void handler(int unused)
+{
+ clear_time_state();
+ exit(0);
+}
+
+/* Test for known hrtimer failure */
+void test_hrtimer_failure(void)
+{
+ struct timespec now, target;
+
+ clock_gettime(CLOCK_REALTIME, &now);
+ target = timespec_add(now, NSEC_PER_SEC/2);
+ clock_nanosleep(CLOCK_REALTIME, TIMER_ABSTIME, &target, NULL);
+ clock_gettime(CLOCK_REALTIME, &now);
+
+ if (!in_order(target, now)) {
+ printf("ERROR: hrtimer early expiration failure observed.\n");
+ }
+
+}
+
+int main(int argc, char** argv)
+{
+ int settime = 0;
+ int tai_time = 0;
+ int insert = 1;
+ int iterations = -1;
+ int opt;
+
+ /* Process arguments */
+ while ((opt = getopt(argc, argv, "sti:"))!=-1) {
+ switch(opt) {
+ case 's':
+ printf("Setting time to speed up testing\n");
+ settime = 1;
+ break;
+ case 'i':
+ iterations = atoi(optarg);
+ break;
+ case 't':
+ tai_time = 1;
+ break;
+ default:
+ printf("Usage: %s [-s] [-i <iterations>]\n", argv[0]);
+ printf(" -s: Set time to right before leap second each iteration\n");
+ printf(" -i: Number of iterations\n");
+ printf(" -t: Print TAI time\n");
+ exit(-1);
+ }
+ }
+
+ /* Make sure TAI support is present if -t was used */
+ if (tai_time) {
+ struct timespec ts;
+ if (clock_gettime(CLOCK_TAI, &ts)) {
+ printf("System doesn't support CLOCK_TAI\n");
+ exit(-1);
+ }
+ }
+
+ signal(SIGINT, handler);
+ signal(SIGKILL, handler);
+
+ if (iterations < 0)
+ printf("This runs continuously. Press ctrl-c to stop\n");
+ else
+ printf("Running for %i iterations. Press ctrl-c to stop\n", iterations);
+
+ printf("\n");
+ while (1) {
+ int ret;
+ struct timespec ts;
+ struct timex tx;
+ time_t now, next_leap;
+
+ /* Get the current time */
+ clock_gettime(CLOCK_REALTIME, &ts);
+
+ /* Calculate the next possible leap second 23:59:60 GMT */
+ next_leap = ts.tv_sec;
+ next_leap += 86400 - (next_leap % 86400);
+
+ if (settime) {
+ struct timeval tv;
+ tv.tv_sec = next_leap - 10;
+ tv.tv_usec = 0;
+ settimeofday(&tv, NULL);
+ printf("Setting time to %s", ctime(&tv.tv_sec));
+ }
+
+ /* Reset NTP time state */
+ clear_time_state();
+
+ /* Set the leap second insert flag */
+ tx.modes = ADJ_STATUS;
+ if (insert)
+ tx.status = STA_INS;
+ else
+ tx.status = STA_DEL;
+ ret = adjtimex(&tx);
+ if (ret < 0 ) {
+ printf("Error: Problem setting STA_INS/STA_DEL!: %s\n",
+ time_state_str(ret));
+ return -1;
+ }
+
+ /* Validate STA_INS was set */
+ tx.modes = 0;
+ ret = adjtimex(&tx);
+ if (tx.status != STA_INS && tx.status != STA_DEL) {
+ printf("Error: STA_INS/STA_DEL not set!: %s\n",
+ time_state_str(ret));
+ return -1;
+ }
+
+ if (tai_time) {
+ printf("Using TAI time,"
+ " no inconsistencies should be seen!\n");
+ }
+
+ printf("Scheduling leap second for %s", ctime(&next_leap));
+
+ /* Wake up 3 seconds before leap */
+ ts.tv_sec = next_leap - 3;
+ ts.tv_nsec = 0;
+
+ while(clock_nanosleep(CLOCK_REALTIME, TIMER_ABSTIME, &ts, NULL))
+ printf("Something woke us up, returning to sleep\n");
+
+ /* Validate STA_INS is still set */
+ tx.modes = 0;
+ ret = adjtimex(&tx);
+ if (tx.status != STA_INS && tx.status != STA_DEL) {
+ printf("Something cleared STA_INS/STA_DEL, setting it again.\n");
+ tx.modes = ADJ_STATUS;
+ if (insert)
+ tx.status = STA_INS;
+ else
+ tx.status = STA_DEL;
+ ret = adjtimex(&tx);
+ }
+
+ /* Check adjtimex output every half second */
+ now = tx.time.tv_sec;
+ while (now < next_leap+2) {
+ char buf[26];
+ struct timespec tai;
+
+ tx.modes = 0;
+ ret = adjtimex(&tx);
+
+ if (tai_time) {
+ clock_gettime(CLOCK_TAI, &tai);
+ printf("%ld sec, %9ld ns\t%s\n",
+ tai.tv_sec,
+ tai.tv_nsec,
+ time_state_str(ret));
+ } else {
+ ctime_r(&tx.time.tv_sec, buf);
+ buf[strlen(buf)-1] = 0; /*remove trailing\n */
+
+ printf("%s + %6ld us (%i)\t%s\n",
+ buf,
+ tx.time.tv_usec,
+ tx.tai,
+ time_state_str(ret));
+ }
+ now = tx.time.tv_sec;
+ /* Sleep for another half second */
+ ts.tv_sec = 0;
+ ts.tv_nsec = NSEC_PER_SEC/2;
+ clock_nanosleep(CLOCK_MONOTONIC, 0, &ts, NULL);
+ }
+ /* Switch to using other mode */
+ insert = !insert;
+
+ /* Note if kernel has known hrtimer failure */
+ test_hrtimer_failure();
+
+ printf("Leap complete\n\n");
+
+ if ((iterations != -1) && !(--iterations))
+ break;
+ }
+
+ clear_time_state();
+ return 0;
+}
diff --git a/default/insert_leap_second/runtest.sh b/default/insert_leap_second/runtest.sh
new file mode 100755
index 0000000..54403ac
--- /dev/null
+++ b/default/insert_leap_second/runtest.sh
@@ -0,0 +1,40 @@
+#!/bin/sh
+#
+# Licensed under the terms of the GNU GPL License version 2
+
+# Test inserting a leap second
+
+# Make sure we can run this test successfully
+source ../../utils/root-check.sh
+check_root
+is_root=$?
+if [ "$is_root" -ne "0" ]; then
+ exit 3
+fi
+
+# build the test source (upstream is git://github.com/johnstultz-work/timetests.git)
+if [ ! -f ./leap-a-day ]; then
+ gcc -o leap-a-day leap-a-day.c
+ if [ "$?" -ne "0" ]; then
+ echo "leap-a-day build failed."
+ exit 3
+ fi
+fi
+
+# Check chronyd status and disable if enabled
+if ! /usr/bin/systemctl status chronyd | grep -q active; then
+ # We don't want to change the time without fixing it
+ exit 3
+else
+ /usr/bin/systemctl stop chronyd
+fi
+
+# Run the test
+# insert a leap second one time, and reset the time to within
+# 10 seconds of midnight UTC.
+./leap-a-day -s -i 1 | tee -a test.out
+# Restart chronyd
+/usr/bin/systemctl start chronyd
+if ! grep -q TIME_WAIT test.out; then
+ exit -1
+fi
diff --git a/default/mq-memory-corruption/mq_notify-5.1.c b/default/mq-memory-corruption/mq_notify-5.1.c
new file mode 100644
index 0000000..3ec1993
--- /dev/null
+++ b/default/mq-memory-corruption/mq_notify-5.1.c
@@ -0,0 +1,128 @@
+/*
+ * Copyright (c) 2003, Intel Corporation. All rights reserved.
+ * Created by: crystal.xiong REMOVE-THIS AT intel DOT com
+ * This file is licensed under the GPL license. For the full content
+ * of this license, see the COPYING file at the top level of this
+ * source tree.
+ */
+
+/*
+ * mq_notify() test plan:
+ * If a process has registered for notification of message arrival
+ * at a message queue, while some thread is blocked in mq_receive
+ * waiting to receive a message, the arriving message should satisfy
+ * the appropriate mq_receive(). In this case, no notification will
+ * be sent.
+ * NOTE: The test makes some assumptions and has some potential race
+ * conditions, but seems the best way to test for now.
+ *
+ * 3/28/2003 Fix a bug mentioned by Michal Wronski, pass mq_attr struct
+ * to the mq_open().
+ *
+ * 4/11/2003 change sa_flags from SA_RESTART to 0 to avoid compile
+ * error.
+ *
+ * 2/17/2004 call mq_close and mq_unlink before exit to release mq
+ * resources
+ */
+
+#include <sys/stat.h>
+#include <sys/types.h>
+#include <sys/wait.h>
+#include <fcntl.h>
+#include <mqueue.h>
+#include <stdio.h>
+#include <signal.h>
+#include <unistd.h>
+//#include "posixtest.h"
+
+#define PTS_PASS 0
+#define PTS_FAIL 1
+#define PTS_UNRESOLVED 2
+
+#define TEST "5-1"
+#define FUNCTION "mq_notify"
+#define ERROR_PREFIX "unexpected error: " FUNCTION " " TEST ": "
+
+#define NAMESIZE 50
+#define MSG_SIZE 40
+#define BUFFER 40
+
+int enter_handler = 0;
+
+void msg_handler()
+{
+ enter_handler = 1;
+}
+
+void mqclean(mqd_t queue, const char *qname)
+{
+ mq_close(queue);
+ mq_unlink(qname);
+}
+
+int main()
+{
+ char mqname[NAMESIZE];
+ mqd_t mqdes;
+ const char s_msg_ptr[MSG_SIZE] = "test message \n";
+ char r_msg_ptr[MSG_SIZE];
+ struct sigevent notification;
+ struct sigaction sa;
+ unsigned int prio = 1;
+ int pid;
+ struct mq_attr attr;
+
+ sprintf(mqname, "/" FUNCTION "_" TEST "_%d", getpid());
+ attr.mq_msgsize = BUFFER;
+ attr.mq_maxmsg = 10;//BUFFER;
+
+ mqdes = mq_open(mqname, O_CREAT | O_RDWR, S_IRUSR | S_IWUSR, &attr);
+ if (mqdes == (mqd_t)-1) {
+ perror(ERROR_PREFIX "mq_open");
+ mqclean(mqdes, mqname);
+ return PTS_UNRESOLVED;
+ }
+
+ pid = fork();
+ if (pid == -1) {
+ perror(ERROR_PREFIX "fork");
+ mqclean(mqdes, mqname);
+ return PTS_UNRESOLVED;
+ }
+ if (pid == 0) {
+ /* child process */
+ mq_receive(mqdes, r_msg_ptr, MSG_SIZE, NULL);
+ return 0;
+ }
+ else {
+ /* parent process */
+ sleep(2); /* after 2 seconds,
+ assume that child with block on mq_receive. */
+ notification.sigev_notify = SIGEV_SIGNAL;
+ notification.sigev_signo = SIGUSR1;
+ sa.sa_handler = msg_handler;
+ sa.sa_flags = 0;
+ sigaction(SIGUSR1, &sa, NULL);
+ if (mq_notify(mqdes, ¬ification) != 0) {
+ perror(ERROR_PREFIX "mq_notify");
+ return PTS_UNRESOLVED;
+ }
+ if (mq_send(mqdes, s_msg_ptr, MSG_SIZE, prio) == -1) {
+ perror(ERROR_PREFIX "mq_send");
+ return PTS_UNRESOLVED;
+ }
+ sleep(1);
+ if (mq_unlink(mqname) != 0) {
+ perror(ERROR_PREFIX "mq_unlink");
+ return PTS_UNRESOLVED;
+ }
+ if (enter_handler) {
+ printf("Test FAILED \n");
+ return PTS_FAIL;
+ }
+ printf("Test PASSED \n");
+ mqclean(mqdes, mqname);
+ return PTS_PASS;
+ }
+}
diff --git a/default/mq-memory-corruption/runtest.sh b/default/mq-memory-corruption/runtest.sh
new file mode 100755
index 0000000..75f0801
--- /dev/null
+++ b/default/mq-memory-corruption/runtest.sh
@@ -0,0 +1,23 @@
+#!/bin/sh
+#
+# Licensed under the terms of the GNU GPL License version 2
+
+# Running mq_notify/5-1 testcase from Open POSIX testsuite appears to lead to corrupted memory.
+# This is later followed by various kernel crash/BUG messages.
+
+if [ ! -f ./mq-notify ]; then
+ gcc mq_notify-5.1.c -lrt -o mq-notify
+ if [ "$?" -ne "0" ]; then
+ echo "mq-notify build failed."
+ exit 3
+ fi
+fi
+
+for i in {1..10}
+do
+ ./mq-notify
+ if [ "$?" -ne "0" ]; then
+ echo "mw-notify test failure."
+ exit -1
+ fi
+done
9 years, 2 months
no fsck for unmounted filesystems
by Reindl Harald
/dev/sda1 is a ordinary partition containing only /boot
why does the kernel report it is in use?
if that would be true it could not be unmounted
___________________________________________
[root@asterisk:~]$ /usr/sbin/fsck.ext4 -f /dev/sda1
e2fsck 1.42.12 (29-Aug-2014)
/dev/sda1 is in use.
e2fsck: Cannot continue, aborting.
___________________________________________
[root@asterisk:~]$ lsof | grep /dev/sda1
[root@asterisk:~]$
___________________________________________
[root@asterisk:~]$ /usr/sbin/fsck.ext4 -n /dev/sda1
e2fsck 1.42.12 (29-Aug-2014)
Warning! /dev/sda1 is in use.
boot was not cleanly unmounted, check forced.
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
Free blocks count wrong (454751, counted=469570).
Fix? no
Free inodes count wrong (130215, counted=130220).
Fix? no
boot: 345/130560 files (22.6% non-contiguous), 66464/521215 blocks
9 years, 2 months
Re: [kernel] Minor updates for ARMv7/ARM64
by Josh Boyer
Is this rawhide only? If not please do a 'git merge master' in your f22
branch and push there as well. Should be a simple fast forward.
josh
On Feb 16, 2015 12:01 PM, "Peter Robinson" <pbrobinson(a)fedoraproject.org>
wrote:
> commit 7e89ce359ca7a68b16aa3efd003f2e66e3d43938
> Author: Peter Robinson <pbrobinson(a)gmail.com>
> Date: Mon Feb 16 17:00:49 2015 +0000
>
> Minor updates for ARMv7/ARM64
>
> config-arm-generic | 27 +++++++++++++++++++++++++++
> config-arm64 | 1 -
> config-armv7 | 2 +-
> config-armv7-generic | 34 +++++++---------------------------
> config-generic | 2 --
> kernel.spec | 3 +++
> 6 files changed, 38 insertions(+), 31 deletions(-)
> ---
> diff --git a/config-arm-generic b/config-arm-generic
> index c47b3e9..47d524f 100644
> --- a/config-arm-generic
> +++ b/config-arm-generic
> @@ -114,6 +114,33 @@ CONFIG_USB_OHCI_HCD_PLATFORM=m
> CONFIG_USB_EHCI_HCD_PLATFORM=m
> CONFIG_USB_XHCI_PLATFORM=m
>
> +# MMC/SD
> +CONFIG_MMC_SPI=m
> +
> +# Designware (used by numerous devices)
> +CONFIG_MMC_DW=m
> +CONFIG_MMC_DW_PLTFM=m
> +CONFIG_MMC_DW_PCI=m
> +CONFIG_SPI_DW_MMIO=m
> +CONFIG_SPI_DW_PCI=m
> +# CONFIG_MMC_DW_IDMAC is not set
> +# CONFIG_MMC_DW_K3 is not set
> +# CONFIG_MMC_QCOM_DML is not set
> +CONFIG_USB_DWC2=m
> +CONFIG_USB_DWC2_DUAL_ROLE=y
> +CONFIG_USB_DWC2_PLATFORM=m
> +CONFIG_USB_DWC2_PCI=m
> +# CONFIG_USB_DWC2_DEBUG is not set
> +# CONFIG_USB_DWC2_TRACK_MISSED_SOFS is not set
> +CONFIG_USB_DWC3=m
> +CONFIG_USB_DWC3_DUAL_ROLE=y
> +CONFIG_USB_DWC3_PCI=m
> +# CONFIG_USB_DWC3_DEBUG is not set
> +# CONFIG_DWC3_HOST_USB3_LPM_ENABLE is not set
> +CONFIG_DW_WATCHDOG=m
> +CONFIG_PCIE_DW=y
> +# CONFIG_MMC_DW_EXYNOS is not set
> +
> # External Connectors
> CONFIG_EXTCON=m
> CONFIG_EXTCON_GPIO=m
> diff --git a/config-arm64 b/config-arm64
> index 45e9665..47f5419 100644
> --- a/config-arm64
> +++ b/config-arm64
> @@ -143,7 +143,6 @@ CONFIG_AMD_XGBE_PHY=m
> # CONFIG_AMD_XGBE_DCB is not set
>
> # CONFIG_IMX_THERMAL is not set
> -# CONFIG_MMC_DW is not set
>
> CONFIG_DMI=y
> CONFIG_DMIID=y
> diff --git a/config-armv7 b/config-armv7
> index 3792e70..81175c2 100644
> --- a/config-armv7
> +++ b/config-armv7
> @@ -41,6 +41,7 @@ CONFIG_RTC_DRV_S35390A=m
> CONFIG_RTC_DRV_88PM80X=m
> CONFIG_RTC_DRV_ISL12057=m
> CONFIG_RTC_DRV_MV=m
> +CONFIG_RTC_DRV_ARMADA38X=m
> CONFIG_MVNETA=m
> CONFIG_GPIO_MVEBU=y
> CONFIG_MVEBU_CLK_CORE=y
> @@ -586,7 +587,6 @@ CONFIG_SND_SOC_TEGRA_WM9712=m
> CONFIG_SND_SOC_TEGRA20_AC97=m
> CONFIG_SND_SOC_TEGRA20_DAS=m
> CONFIG_SND_SOC_TEGRA20_SPDIF=m
> -CONFIG_SND_SOC_TEGRA_RT5677=m
>
> # AC100 (PAZ00)
> CONFIG_MFD_NVEC=y
> diff --git a/config-armv7-generic b/config-armv7-generic
> index 3b62d1e..bce46b2 100644
> --- a/config-armv7-generic
> +++ b/config-armv7-generic
> @@ -34,6 +34,7 @@ CONFIG_ZBOOT_ROM_BSS=0x0
> CONFIG_XZ_DEC_ARMTHUMB=y
> CONFIG_ARCH_HAS_TICK_BROADCAST=y
> CONFIG_IRQ_CROSSBAR=y
> +CONFIG_IOMMU_IO_PGTABLE_LPAE=y
>
> # CONFIG_MCPM is not set
> # CONFIG_OABI_COMPAT is not set
> @@ -127,6 +128,11 @@ CONFIG_THERMAL=y
> CONFIG_CLOCK_THERMAL=y
> CONFIG_CPUFREQ_DT=y
> # CONFIG_ARM_BIG_LITTLE_CPUFREQ is not set
> +CONFIG_PM_DEVFREQ=y
> +CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND=y
> +CONFIG_DEVFREQ_GOV_PERFORMANCE=y
> +CONFIG_DEVFREQ_GOV_POWERSAVE=y
> +CONFIG_DEVFREQ_GOV_USERSPACE=y
>
> CONFIG_DEFAULT_MMAP_MIN_ADDR=32768
> CONFIG_LSM_MMAP_MIN_ADDR=32768
> @@ -222,6 +228,7 @@ CONFIG_ARM_EXYNOS5250_CPUFREQ=y
> CONFIG_ARM_EXYNOS5440_CPUFREQ=y
> CONFIG_ARM_EXYNOS_CPU_FREQ_BOOST_SW=y
> CONFIG_ARM_EXYNOS_CPUIDLE=y
> +CONFIG_ARM_EXYNOS5_BUS_DEVFREQ=m
> # CONFIG_EXYNOS5420_MCPM not set
>
> CONFIG_I2C_EXYNOS5=m
> @@ -296,7 +303,6 @@ CONFIG_SND_SOC_ODROIDX2=m
> # CONFIG_EXYNOS_IOMMU_DEBUG is not set
> # CONFIG_SAMSUNG_PM_DEBUG is not set
> # CONFIG_SAMSUNG_PM_CHECK is not set
> -# CONFIG_ARM_EXYNOS5_BUS_DEVFREQ is not set
>
> # Arndale/Origen
> CONFIG_MFD_MAX8997=y
> @@ -593,32 +599,6 @@ CONFIG_MTD_ST_SPI_FSM=m
> CONFIG_EEPROM_AT25=m
> CONFIG_EEPROM_93XX46=m
>
> -# MMC/SD
> -CONFIG_MMC_SPI=m
> -
> -# Designware (used by numerous devices)
> -CONFIG_MMC_DW=m
> -CONFIG_MMC_DW_PLTFM=m
> -CONFIG_MMC_DW_PCI=m
> -CONFIG_SPI_DW_MMIO=m
> -CONFIG_SPI_DW_PCI=m
> -# CONFIG_MMC_DW_IDMAC is not set
> -# CONFIG_MMC_DW_K3 is not set
> -# CONFIG_MMC_QCOM_DML is not set
> -CONFIG_USB_DWC2=m
> -CONFIG_USB_DWC2_DUAL_ROLE=y
> -CONFIG_USB_DWC2_PLATFORM=m
> -CONFIG_USB_DWC2_PCI=m
> -# CONFIG_USB_DWC2_DEBUG is not set
> -# CONFIG_USB_DWC2_TRACK_MISSED_SOFS is not set
> -CONFIG_USB_DWC3=m
> -CONFIG_USB_DWC3_DUAL_ROLE=y
> -CONFIG_USB_DWC3_PCI=m
> -# CONFIG_USB_DWC3_DEBUG is not set
> -# CONFIG_DWC3_HOST_USB3_LPM_ENABLE is not set
> -CONFIG_DW_WATCHDOG=m
> -CONFIG_PCIE_DW=y
> -
> # Sound
> CONFIG_SND_ARM=y
> CONFIG_SND_SOC_AC97_BUS=y
> diff --git a/config-generic b/config-generic
> index f368aeb..c2ed9b8 100644
> --- a/config-generic
> +++ b/config-generic
> @@ -148,8 +148,6 @@ CONFIG_MMC_REALTEK_USB=m
> CONFIG_MMC_VUB300=m
> CONFIG_MMC_TOSHIBA_PCI=m
> # CONFIG_MMC_SPI is not set
> -# CONFIG_MMC_SDHCI_PXAV2 is not set
> -# CONFIG_MMC_SDHCI_PXAV3 is not set
> # CONFIG_MMC_SDHCI_OF_ARASAN is not set
> # CONFIG_MMC_SDHCI_F_SDH30 is not set
> # CONFIG_MMC_USDHI6ROL0 is not set
> diff --git a/kernel.spec b/kernel.spec
> index 5917403..b36b1e1 100644
> --- a/kernel.spec
> +++ b/kernel.spec
> @@ -2209,6 +2209,9 @@ fi
> # ||----w |
> # || ||
> %changelog
> +* Mon Feb 16 2015 Peter Robinson <pbrobinson(a)fedoraproject.org>
> +- Minor updates for ARMv7/ARM64
> +
> * Mon Feb 16 2015 Josh Boyer <jwboyer(a)fedoraproject.org> -
> 3.20.0-0.rc0.git6.1
> - Linux v3.19-6676-g1fa185ebcbce
>
>
9 years, 2 months
Re: no fsck for unmounted filesystems
by Reindl Harald
Am 16.02.2015 um 12:47 schrieb Michael D. Setzer II:
> On 16 Feb 2015 at 11:30, Reindl Harald wrote:
>> /dev/sda1 is a ordinary partition containing only /boot
>> why does the kernel report it is in use?
>
> The kernel reports it as being mount
but why
> since it normally is as part of the boot process.
looks like you missed thed "for unmounted filesystems" in the subject
> /dev/sda1 is mount as /boot
> You can usually umount it if no one is in it , or actually using it
> umount /boot
>
> df will show the mounted partitions.
>
> umount /boot
> fsck /dev/sda1
i know that all *but* i did "umount /boot" and hence i expect to be able
doing a fsck instead once again "touch /forcefsck" and reboot
otherwise the message would not be "/dev/sda1 is in use"
if it is mounted it's "/dev/sda1 is mounted"
so it is in use by whom and why after unmount?
>> if that would be true it could not be unmounted
>> ___________________________________________
>>
>> [root@asterisk:~]$ /usr/sbin/fsck.ext4 -f /dev/sda1
>> e2fsck 1.42.12 (29-Aug-2014)
>> /dev/sda1 is in use.
>> e2fsck: Cannot continue, aborting.
>> ___________________________________________
>>
>> [root@asterisk:~]$ lsof | grep /dev/sda1
>> [root@asterisk:~]$
>> ___________________________________________
>>
>> [root@asterisk:~]$ /usr/sbin/fsck.ext4 -n /dev/sda1
>> e2fsck 1.42.12 (29-Aug-2014)
>> Warning! /dev/sda1 is in use.
>> boot was not cleanly unmounted, check forced.
>> Pass 1: Checking inodes, blocks, and sizes
>> Pass 2: Checking directory structure
>> Pass 3: Checking directory connectivity
>> Pass 4: Checking reference counts
>> Pass 5: Checking group summary information
>> Free blocks count wrong (454751, counted=469570).
>> Fix? no
>>
>> Free inodes count wrong (130215, counted=130220).
>> Fix? no
>>
>> boot: 345/130560 files (22.6% non-contiguous), 66464/521215 blocks
9 years, 2 months
Linux v3.20 plans
by Josh Boyer
Hi All,
If you've been watching rawhide the past couple of days, you've seen
that the kernel has started moving to the 3.20 merge window kernels.
At the moment, rawhide and the f22 branch will remain in-sync. Things
have, so far, gone fairly smoothly in local testing. Feedback from
others would be appreciated.
Looking at the Fedora 22 release schedule, it is most likely that we
will wind up shipping with a stable release of the 3.20 series. That
means the more testing we get on the kernel now, the better shape it
should theoretically be in when we ship. Barring any delays on the
Fedora side of things (because those never happen), that will be the
plan going forward.
Rawhide and the f22 branch will diverge when the v3.21 window opens up.
If you have any questions/comments, let us know.
josh
9 years, 2 months