Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions Documentation/testing/ntfc.rst
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ CI migration to NTFC is in progress. Configurations currently using NTFC:
- :doc:`arm/imx6 </platforms/arm/imx6/index>`: ``sabre-6quad/citest``
- :doc:`arm64/qemu </platforms/arm64/qemu/boards/qemu-armv8a/index>`: ``qemu-armv8a/citest``
- :doc:`arm64/qemu </platforms/arm64/qemu/boards/qemu-armv8a/index>`: ``qemu-armv8a/citest_smp``
- :doc:`x86_64/qemu </platforms/x86_64/intel64/boards/qemu-intel64/index>`: ``qemu-intel64/citest_smp``

NTFC exports test logs as CI artifacts. This allows test logs (including
:doc:`ostest </applications/testing/ostest/index>` output) to be downloaded
Expand Down
15 changes: 13 additions & 2 deletions arch/x86_64/src/intel64/intel64_oneshot.c
Original file line number Diff line number Diff line change
Expand Up @@ -301,10 +301,21 @@ int intel64_oneshot_start(struct intel64_oneshot_s *oneshot,
flags = spin_lock_irqsave(&g_oneshot_spin);
if (oneshot->running)
{
/* Yes.. then cancel it */
/* Yes.. then stop it. Do NOT call intel64_oneshot_cancel() here:
* it takes g_oneshot_spin, which we already hold, and spinlocks are
* not recursive, so that deadlocks the CPU. Everything else that
* cancel would do (ISR, comparator, interrupt enable) is
* reprogrammed below anyway.
*/

tmrinfo("Already running... cancelling\n");
intel64_oneshot_cancel(oneshot, NULL);

#ifndef CONFIG_INTEL64_HPET_FSB
INTEL64_TIM_DISABLEINT(oneshot->tch, oneshot->chan);
INTEL64_TIM_SETISR(oneshot->tch, oneshot->chan, NULL, NULL, false);
#endif

oneshot->running = false;
}

/* Save the new handler and its argument */
Expand Down
14 changes: 14 additions & 0 deletions boards/x86_64/qemu/qemu-intel64/configs/citest_smp/config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
config:
cwd: './'

product:
name: "qemu-intel64"
cores:
core0:
name: 'main'
device: 'qemu'
exec_path: 'qemu-system-x86_64'
exec_args: '-m 2G -smp 4 -cpu max -nographic -serial mon:stdio'
uptime: 60
conf_path: './.config'
elf_path: './nuttx'
161 changes: 161 additions & 0 deletions boards/x86_64/qemu/qemu-intel64/configs/citest_smp/defconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,161 @@
#
# This file is autogenerated: PLEASE DO NOT EDIT IT.
#
# You can use "make menuconfig" to make any modifications to the installed .config file.
# You can then do "make savedefconfig" to generate a new defconfig file that includes your
# modifications.
#
# CONFIG_ARCH_INTEL64_HAVE_PCID is not set
# CONFIG_ARCH_X86_64_X2APIC is not set
CONFIG_16550_ADDRWIDTH=16
CONFIG_16550_PCI_UART1=y
CONFIG_16550_PCI_UART1_CLOCK=1843200
CONFIG_16550_PCI_UART1_DEVICE=0x0002
CONFIG_16550_PCI_UART1_VENDOR=0x1b36
CONFIG_16550_PCI_UART=y
CONFIG_16550_UART0=y
CONFIG_16550_UART0_BASE=0x3f8
CONFIG_16550_UART0_CLOCK=1843200
CONFIG_16550_UART0_IRQ=36
CONFIG_16550_UART0_RXBUFSIZE=16
CONFIG_16550_UART0_SERIAL_CONSOLE=y
CONFIG_16550_UART0_TXBUFSIZE=16
CONFIG_ALLOW_MIT_COMPONENTS=y
CONFIG_ARCH="x86_64"
CONFIG_ARCH_BOARD="qemu-intel64"
CONFIG_ARCH_BOARD_INTEL64_QEMU=y
CONFIG_ARCH_CHIP="qemu"
CONFIG_ARCH_CHIP_INTEL64_QEMU=y
CONFIG_ARCH_INTEL64_HPET_ALARM=y
CONFIG_ARCH_INTERRUPTSTACK=8192
CONFIG_ARCH_SETJMP_H=y
CONFIG_ARCH_SIZET_LONG=y
CONFIG_ARCH_X86_64=y
CONFIG_ARCH_X86_64_SSE3=y
CONFIG_ARCH_X86_64_SSE41=y
CONFIG_ARCH_X86_64_SSE42=y
CONFIG_ARCH_X86_64_SSE4A=y
CONFIG_ARCH_X86_64_SSSE3=y
CONFIG_BOARD_LOOPSPERMSEC=999
CONFIG_BOOT_RUNFROMEXTSRAM=y
CONFIG_BUILTIN=y
CONFIG_CM_MM_TEST=y
CONFIG_CM_MUTEX_TEST=y
CONFIG_CM_PTHREAD_TEST=y
CONFIG_CM_SCHED_TEST=y
CONFIG_CM_SOCKET_TEST=y
CONFIG_CM_TIME_TEST=y
CONFIG_CONSOLE_SYSLOG=y
CONFIG_DEBUG_FEATURES=y
CONFIG_DEBUG_PCI=y
CONFIG_DEBUG_PCI_ERROR=y
CONFIG_DEBUG_PCI_INFO=y
CONFIG_DEBUG_PCI_WARN=y
CONFIG_DEBUG_SYMBOLS=y
CONFIG_DEFAULT_TASK_STACKSIZE=4194304
CONFIG_DEV_SIMPLE_ADDRENV=y
CONFIG_EVENT_FD=y
CONFIG_EXAMPLES_HELLO=y
CONFIG_EXAMPLES_HIDKBD=y
CONFIG_EXAMPLES_PIPE=y
CONFIG_EXAMPLES_POPEN=y
CONFIG_FS_AIO=y
CONFIG_FS_FAT=y
CONFIG_FS_NAMED_SEMAPHORES=y
CONFIG_FS_NOTIFY=y
CONFIG_FS_PROCFS=y
CONFIG_FS_SHMFS=y
CONFIG_FS_TMPFS=y
CONFIG_HIDKBD_STACKSIZE=10240
CONFIG_HIDMOUSE_STACKSIZE=10240
CONFIG_IDLETHREAD_STACKSIZE=4194304
CONFIG_INIT_ENTRYPOINT="nsh_main"
CONFIG_IOB_ALIGNMENT=64
CONFIG_IOB_BUFSIZE=2048
CONFIG_IOB_NBUFFERS=1024
CONFIG_IOB_NCHAINS=255
CONFIG_LIBC_LOCALE=y
CONFIG_LIBC_MEMFD_ERROR=y
CONFIG_LIBM=y
CONFIG_NET=y
CONFIG_NETDB_DNSCLIENT=y
CONFIG_NETDEV_LATEINIT=y
CONFIG_NETINIT_DRIPADDR=0xc0a80801
CONFIG_NETINIT_IPADDR=0x0a000102
CONFIG_NETUTILS_CODECS=y
CONFIG_NETUTILS_IPERF=y
CONFIG_NETUTILS_TELNETD=y
CONFIG_NETUTILS_TFTPC=y
CONFIG_NETUTILS_WEBCLIENT=y
CONFIG_NET_BROADCAST=y
CONFIG_NET_E1000=y
CONFIG_NET_ETH_PKTSIZE=1514
CONFIG_NET_ICMP_SOCKET=y
CONFIG_NET_IGC=y
CONFIG_NET_LL_GUARDSIZE=32
CONFIG_NET_MAX_LISTENPORTS=8
CONFIG_NET_PKT=y
CONFIG_NET_STATISTICS=y
CONFIG_NET_TCP=y
CONFIG_NET_UDP=y
CONFIG_NSH_BUILTIN_APPS=y
CONFIG_NSH_READLINE=y
CONFIG_PCI=y
CONFIG_PCI_MSIX=y
CONFIG_PCI_QEMU_EDU=y
CONFIG_PCI_QEMU_TEST=y
CONFIG_PIPES=y
CONFIG_PREALLOC_CHILDSTATUS=16
CONFIG_PRIORITY_INHERITANCE=y
CONFIG_PSEUDOFS_ATTRIBUTES=y
CONFIG_PSEUDOFS_FILE=y
CONFIG_PTHREAD_MUTEX_TYPES=y
CONFIG_PTHREAD_STACK_MIN=4194304
CONFIG_RAM_SIZE=268435456
CONFIG_SCHED_CHILD_STATUS=y
CONFIG_SCHED_HAVE_PARENT=y
CONFIG_SCHED_HPWORK=y
CONFIG_SCHED_IRQMONITOR=y
CONFIG_SCHED_LPNTHREADS=1
CONFIG_SCHED_LPWORK=y
CONFIG_SCHED_THREAD_LOCAL=y
CONFIG_SCHED_TICKLESS=y
CONFIG_SIGNAL_FD=y
CONFIG_SIG_DEFAULT=y
CONFIG_SIG_EVTHREAD=y
CONFIG_SMP=y
CONFIG_START_DAY=3
CONFIG_START_MONTH=3
CONFIG_START_YEAR=2011
CONFIG_SYSTEM_CLE=y
CONFIG_SYSTEM_NSH=y
CONFIG_SYSTEM_POPEN=y
CONFIG_SYSTEM_SETLOGMASK=y
CONFIG_TESTING_ATOMIC=y
CONFIG_TESTING_CACHETEST=y
CONFIG_TESTING_CMOCKA=y
CONFIG_TESTING_CRYPTO=y
CONFIG_TESTING_DRIVER_TEST=y
CONFIG_TESTING_FFF=y
CONFIG_TESTING_FSTEST=y
CONFIG_TESTING_GETPRIME=y
CONFIG_TESTING_HEAP=y
CONFIG_TESTING_LTP=y
CONFIG_TESTING_MEMORY_STRESS=y
CONFIG_TESTING_OSTEST=y
CONFIG_TESTING_OSTEST_STACKSIZE=4194304
CONFIG_TESTING_RAMTEST=y
CONFIG_TESTING_SMP=y
CONFIG_TESTING_TIMERJITTER=y
CONFIG_TESTS_TESTSUITES=y
CONFIG_TESTS_TESTSUITES_MOUNT_DIR="/tmp"
CONFIG_TIMER_FD=y
CONFIG_USBHOST=y
CONFIG_USBHOST_COMPOSITE=y
CONFIG_USBHOST_FT232R=y
CONFIG_USBHOST_HIDKBD=y
CONFIG_USBHOST_HIDMOUSE=y
CONFIG_USBHOST_MSC=y
CONFIG_USBHOST_WAITER=y
CONFIG_USBHOST_XHCI_PCI=y
CONFIG_USEC_PER_TICK=1
49 changes: 49 additions & 0 deletions boards/x86_64/qemu/qemu-intel64/configs/citest_smp/run.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
#!/usr/bin/env bash
############################################################################
# boards/x86_64/qemu/qemu-intel64/configs/citest_smp/run.sh
#
# SPDX-License-Identifier: Apache-2.0
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership. The
# ASF licenses this file to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance with the
# License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
############################################################################

set -o xtrace

# start from nuttx dir
olddir=$(pwd)
nuttdir=${CURRENTCONFDIR}/../../../../../../
cd ${nuttdir}

# run NTFC
confpath=${CURRENTCONFDIR}/config.yaml
jsonconf=${CURRENTCONFDIR}/session.json
testpath=${NTFCDIR}/external/nuttx-testing
ntfc test --testpath=${testpath} --confpath=${confpath} --jsonconf=${jsonconf}

ret="$?"
echo $ret

# export test results
artifacts=${ARTIFACTCONFDIR}/ntfc
mkdir -p ${artifacts}
mv pytest.debug.log ${artifacts}
mv result ${artifacts}

# restore old dir
cd ${olddir}

exit $ret
13 changes: 13 additions & 0 deletions boards/x86_64/qemu/qemu-intel64/configs/citest_smp/session.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
{
"module": {
"include_module": [],
"exclude_module":
[
"Nuttx_System_Fs_Fs"
],
"order": []
},
"args": {
"kv": []
}
}