diff --git a/Documentation/testing/ntfc.rst b/Documentation/testing/ntfc.rst index c593bb3e11d96..b948798c26152 100644 --- a/Documentation/testing/ntfc.rst +++ b/Documentation/testing/ntfc.rst @@ -22,6 +22,7 @@ CI migration to NTFC is in progress. Configurations currently using NTFC: - :doc:`arm/imx6 `: ``sabre-6quad/citest`` - :doc:`arm64/qemu `: ``qemu-armv8a/citest`` - :doc:`arm64/qemu `: ``qemu-armv8a/citest_smp`` +- :doc:`x86_64/qemu `: ``qemu-intel64/citest_smp`` NTFC exports test logs as CI artifacts. This allows test logs (including :doc:`ostest ` output) to be downloaded diff --git a/arch/x86_64/src/intel64/intel64_oneshot.c b/arch/x86_64/src/intel64/intel64_oneshot.c index a98b8cea55502..eb907eaed17ee 100644 --- a/arch/x86_64/src/intel64/intel64_oneshot.c +++ b/arch/x86_64/src/intel64/intel64_oneshot.c @@ -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 */ diff --git a/boards/x86_64/qemu/qemu-intel64/configs/citest_smp/config.yaml b/boards/x86_64/qemu/qemu-intel64/configs/citest_smp/config.yaml new file mode 100644 index 0000000000000..cfce28d938844 --- /dev/null +++ b/boards/x86_64/qemu/qemu-intel64/configs/citest_smp/config.yaml @@ -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' diff --git a/boards/x86_64/qemu/qemu-intel64/configs/citest_smp/defconfig b/boards/x86_64/qemu/qemu-intel64/configs/citest_smp/defconfig new file mode 100644 index 0000000000000..dc82866832392 --- /dev/null +++ b/boards/x86_64/qemu/qemu-intel64/configs/citest_smp/defconfig @@ -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 diff --git a/boards/x86_64/qemu/qemu-intel64/configs/citest_smp/run.sh b/boards/x86_64/qemu/qemu-intel64/configs/citest_smp/run.sh new file mode 100755 index 0000000000000..320ce801b5241 --- /dev/null +++ b/boards/x86_64/qemu/qemu-intel64/configs/citest_smp/run.sh @@ -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 diff --git a/boards/x86_64/qemu/qemu-intel64/configs/citest_smp/session.json b/boards/x86_64/qemu/qemu-intel64/configs/citest_smp/session.json new file mode 100644 index 0000000000000..2a8c05d05daae --- /dev/null +++ b/boards/x86_64/qemu/qemu-intel64/configs/citest_smp/session.json @@ -0,0 +1,13 @@ +{ + "module": { + "include_module": [], + "exclude_module": + [ + "Nuttx_System_Fs_Fs" + ], + "order": [] + }, + "args": { + "kv": [] + } +}