84 KiB
| title | source | category | pages | extracted |
|---|---|---|---|---|
| Releasenotes Bsp 5.0.3 | docs/releasenotes/releasenotes-bsp-5.0.3.pdf | releasenotes | 23 | 2026-07-06T23:05:50.983658 |
Releasenotes Bsp 5.0.3
Extracted from
docs/releasenotes/releasenotes-bsp-5.0.3.pdf(23 pages). Figures, diagrams, and tables may not render accurately in plain text.
Release Notes
1 Product Release Information Product Name: BSPs for UniversalisOS 5.0
Release and Build Number: 5.0.3/D5879
Release Date: 20.08.2019
2 Introduction This document contains the release notes for BSPs for UniversalisOS 5.0, build D5879. The following sections describe the release in detail and provide information that supplements the main documentation.
3 Changes since last Release 3.1 Enhancements introduced by this Release
Issue P00101-12862, [8250] Added support for clock manager The 8250 UART driver can read its input clock via clock manager. This option is used by default on LS104x BSPs.
Issue P00101-15028, BSP QEMU ARM v8hf SMP support QEMU command line argument ’-smp N’ is set according to UK_NUM_CPU settings in the integration project.
Issue P00101-16061, LEON3 GR-XC6S-LX75 support UniversalisOS now supports GR-XC6S-LX75 board, implementing a BSP with a serial driver and an Ethernet driver.
Issue P00101-16062, LEON4 N2X Support UniversalisOS supports the Gaisler LEON4 N2X board, implementing a BSP with a serial driver and an Ethernet driver.
Issue P00101-16276, x86: PSP IDT vector allocation is now static Previously the IDT vectors used by UniversalisOS interrupt vectors were dynamically allocated. This has been changed and each UniversalisOS interrupt has a corresponding IDT entry available.
Issue P00101-17791, Adding the base address of the GIC redistributor as a parameter in PSP A new parameter was added in PSP in order to be able to configure GIC (V3 or V4) redistributor base address.
3.2 Problems fixed with this Release
Issue P00101-15535, Block drivers do not return size of device in stat functions The block drivers now return the size of underlying device or partition when calling vm_stat() and vm_fstat() in the output parameter vm_file_stat_t::size.
Issue P00101-16271, dpaa_fp blocks lower priority threads The dpaa_fp driver now avoids blocking other threads when accessing the PHY.
Issue P00101-16905, The driver GRETH can configure the PHY in autoneg mode only The driver GRETH now forces the PHY link with the value defined in the integration project if it is not set to autoneg.
Issue P00101-17573, [DPAA] Resetting statistics does not work Resetting of the driver statistics via ioctl command DRV_NET_IOCTL_CLR_STATS is now working for DPAA driver.
c Copyright 2019 1 All rights reserved. Portugal Futurista GmbH Release Notes
3.3 Known Problems
Issue P00101-7115, alt_tse_fp (4sgx230 network driver) does not work in 10/100 Mbit ethernet networks The network driver used in the 4sgx230 PSP is only capable of Gigabit Ethernet networking. If used in a 10/100Mbit switched network (or directly connected to a 10/100Mbit card) it won’t communicate.
Issue P00101-9149, rtl_fp network driver uses multicast addresses for virtual channels The rtl_fp network driver achieves its virtual channel functionality by using multicast MAC address filter programming. This means that for the virtual channels at index 1 and higher a multicast MAC address must be used which breaks IEEE 802.3 compliance. In dependece on a connected network infrastructure the outgoing traffic may be subsequently dropped.
Issue P00101-10834, [DPAA, T4240QDS, T2080QDS] Support SGMII Neither SGMII nor QSGMII is supported on the following boards: T4240QDS and T2080QDS. There are special cards available which only have the PHY chips on it; i.e. no MACs. These network cards are plugged into the PCI slot which use the SGMII protocol instead of the PCI protocol. These cards are not supported. It is recommended to disable SGMII and QSGMII in the RCW.
Issue P00101-10967, DPAA: reinitialization of dpaa_fp driver/Freescale NetComm SW is not supported The dpaa_fp driver/Freescale NetComm Software does not support reinitialization of an already set up hardware. Restarting the partition containing the dpaa_fp is therefore not supported.
Issue P00101-12333, Fixed drivers pl011_fp and kctrl_fp write timeout behaviour If a write call to one of the file providers timed out, P4_E_TIMEOUT was returned - thus discarding the number of bytes actually written out.
Issue P00101-12877, Cyclone V SoC Development Kit network not working after restart When the board is restarted the autonegotiation doesn’t work properly. This causes the boot loader to fail. This issue is out of scope of UniversalisOS. It is most like hardware or boot loader issue.
Issue P00101-12888, Zynq ZED: Dropped data when receiving from serial ser0:0 When receiving on Zynq ZED board UART some of the data might be lost. As to root cause of this problem was identified USB to UART on-board convertor.
Issue P00101-12988, vm_target_reset(VM_TARGET_REBOOT) does not work on Renesas R-Car boards After vm_target_reset(VM_TARGET_REBOOT) is issued, the board is not reseted. On these boards the reset is done via I2C bus and this is not supported by the current version of BSP.
Issue P00101-14625, DPAA cache stashing The DPAA DDK driver issues cache cache stashing in the first 128KB on ARM.
Issue P00101-15280, x86: split lock condition may stall the execution on other processors A split lock condition occurs if atomic operation is executed on memory which spans two cachelines (unaligned atomic operation). This is not usually the case under normal system operation as the atomic types are naturally aligned in the memory and thus they would never cross the cacheline boundary. However the malicious actor capable of unprivileged code execution can trigger this condition. This condition will cause the processor to completely lock the memory bus and cache. As the consequence other processors won’t be able to access memory bus or shared caches. Note that this condition is mentioned in the UniversalisOS Safety manual since version 3.4, but it must be stressed that this is a problem also for processors which are not executing the split lock operation. Similar condition, with lower performance impact, can be triggered if atomic operation is executed on uncached memory (RAM region). Suggested workaround: New Intel CPUs will provide a mechanism that a split lock will cause alignment exception. Older Intel CPUs might contain a MSR which can alter the processor behavior and executing the split lock operation without taking a bus lock. The suggested workaround for the second problem is to disallow remapping the RAM as uncached region (UniversalisOS has a capability to do that).
c Copyright 2019 2 All rights reserved. Portugal Futurista GmbH Release Notes
Issue P00101-16025, ppc_oea: qemu-ppc no longer supports dynamic ticker with SMP kernel If dynamic ticker is configured in an integration project for board qemu-ppc with SMP kernel, the boot will fail with message ’SMP PSP does not support dynamic ticker mode’.
Issue P00101-16648, XEMACPS Ethernet driver can’t address memory above 4GB Known issue: The driver is limited to 32-bit physical memory for DMA buffers and does not work with higher memory. Workaround: The integrator should only assign physical memory below 4 GiB to the partition the driver runs in.
4 Frequently Asked Questions Answers to frequently asked questions (FAQ) and resolutions to known issues are updated on a regular basis. These are available online at http://www.portugalfuturista.org/support/
5 Updates and Support Updates will be provided on https://www.portugalfuturista.org/downloadserver/. Please login using your account as stated on the delivery document. Product support is available online at http://www.portugalfuturista.org/support/
c Copyright 2019 3 All rights reserved. Portugal Futurista GmbH Release Notes
A Previous Release 5.0.2 S5804 A.1 Enhancements introduced by this Release
Issue P00101-9390, [x86] PSP configurable option for Machine Check Exception handling New PSP option has been added that controls the behavior of Machine Check Exception (MCE) generation. The MCE can be set to enabled, disabled or inherited from the BIOS settings. If MCE is disabled, the system will perform system shutdown which may result in system reset. If MCE is set to enabled, the MCE will be generated based on events programmed by the BIOS.
Issue P00101-10974, x86_amd64: New boot strategy diskimage The new boot strategy called ’diskimage’ is available. This boot strategy produces an image that can be directly copied to the hard drive such as USB flash drive or burned on the optical media. The image format is compatible with legacy and UEFI BIOSes. It supersedes the ’isoboot’ boot strategy.
Issue P00101-11518, x86: Intel ACPICA updated to version acpica-20180531 x86: Intel ACPICA updated to version acpica-20180531
Issue P00101-12256, x86: PSP early panics enhancements The x86 PSP will use the UniversalisOS panic infrastructure if panic occurs after the early kernel infrastructure is initialized. As such, it provides regular register dump / panic information as if the panic would occur during run-time.
Issue P00101-12291, [ARMv7] L2 Cache Parity and Prefetch Enabled When L2 cache is enabled then is always enabled parity, instruction and data prefetch on platforms based on Zynq- 7000, i.MX6 and Cyclone V SoCs.
Issue P00101-12298, The PSP api.init() hook moved The PSP api.init() hook was moved before ASP initialization to make further PSP memory mappings possible.
Issue P00101-12439, x86_amd64: AVX support The support for AVX instruction set and corresponding P4_regs_t context has been added.
Issue P00101-12526, ZCU102 BSP: Added SD card driver The extended BSP for ZCU102 board has included ZCU102 driver.
Issue P00101-12764, Support for LEON4 L2 cache LEON4 Level 2 cache is implemented.
Issue P00101-13777, Xilinx Ultrascale: added clock manager driver The clock manager is now available for Xilinx Ultrascale+ based platforms.
Issue P00101-13899, x86: The Frame Buffer Can Be Set in QEMU The x86 QEMU is now started using the diskimage provided as CD-ROM to the QEMU system. This means that the frame buffer resolutions settings can be provided to the UniversalisOS same way as for the diskimage boot strategy.
Issue P00101-14199, SMMU driver does not manage correctly partition reboot. SMMU driver free correctly page tables if partition is shutdown and tables are reallocate when the partition is restarted. SMMU transactions are disabled during partition reboot.
Issue P00101-14347, x86_amd64: new AMD processors do not need the FPU error state leak workaround New AMD processors do not need the FPU error state leak workaround, detection of such processors is now supported and workaround is not applied.
Issue P00101-14425, Usage of PSP ’cookies’ has been deprecated The usage of the PSP ’cookies’ in the PSP callback services has been deprecated and will be removed in future versions. Please consider the usage of KDEV drivers instead.
c Copyright 2019 4 All rights reserved. Portugal Futurista GmbH Release Notes
Issue P00101-14430, Reserved kernel virtual address space In the kernel virtual address, the area from P4_MEM_KERN_RSVD to P4_MEM_KERN_END is reserved for kernel purposes and must not be used by PSPs for I/O mappings. The symbol P4_MEM_KERN_RSVD is provided on all architectures.
Issue P00101-14671, The QEMU BSPs have different default memory sizes The default memory size for QEMU BSPs was unified to 512 MiB.
Issue P00101-14837, Update IRQ SMP affinity documentation Description of IRQ affinity was improved in the UniversalisOS User Manual, the Kernel Reference Manual and the Platform Manuals.
Issue P00101-14850, SATA bus speed can be limited by the driver. Some AHCI controller and disk combinations are not reliable on the maximum supported SATA speed. Added a configuration option that allows the AHCI driver to restrict the maximum SATA bus speed.
Issue P00101-15000, x86: SMI watchdog and C1E promotion support in new Intel CPUs Intel CPUs with code names Gemini Lake, Goldmont and Xeon Phi are now supported in the SMI watchdog feature. The Cannon Lake core now has the C1E promotion disabled by the PSP.
Issue P00101-15138, PCI Manager SE has been removed Support for the PCI Manager as a System Extension has been removed from the UniversalisOS. Only the KDEV version of the PCI manager is available.
Issue P00101-15171, ARM 32-bit: detection of VFP FPU moved to PSP On 32-bit ARM systems, the PSP is now responsible to detect a VFP FPU and report this to the kernel. Based on the configuration property ’psp/core/fpu_mode’, the function psp_arm_fpu_detect() performs automatic detection of the VFP if the value is set to 3. Values 0, 1, and 2 relate to no VFP, VFP-D16 and VFP-D32 modes, with similar meaning than the’has_fpu’ value in the architecture specific part of the kernel info page.
Issue P00101-15188, x86: IOMMU System Extension documentation updated The explanation how the assignment of devices to partitions has been extended in the Platform Manual.
Issue P00101-15242, x86: CPU and alternative features interface update The CPU and Alternative features are now available through the KINFO page. For further details, consult the ’Hardware Dependent Features’ and ’Architecture specific KINFO page’ chapters in the platform manual.
Issue P00101-15288, Changes in PSP API for SMP TLB invalidation IPIs In the PSP API, the .ipi_single() callback has been removed, and the .ipi_multi() callback was changed to psp.api.ipi_tlb_inval() to clarify the meaning of the API. Also, in the PSPs, IPI handlers and the .ipi_poll() callback should call p4arch_tlb_inval_handler() of the ASP for TLB invalidation.
Issue P00101-15380, PCI Layerscape: Improved link detection mechanism to be more generic The PCIe Layerscape driver now includes new parameters to make the link detection mechanism more generic to address various SoCs with different register layouts (LS1021A, LS1043A, LS1046A, LS2085A, ...).
Issue P00101-15407, x86: microcode update loader available for the PSP The x86 PSP contains a microcode loader which allows to update the CPU microcode during the PSP boot. Consult the platform manual for details.
Issue P00101-15448, x86: PSP prints human readable CPUID & CPU name information PSP prints human readable CPUID and human readable CPU name information, if boot verbosity is set sufficiently high.
Issue P00101-15471, x86: Changes to the x86 boot strategies New boot strategy ’diskimage’ for boot from CD-ROM or USB FLASH drive was introduced. Boot strategy ’isoboot’ and ’grub’ were removed. In case of ’isoboot’ please use the ’diskimage’ boot strategy. To replace ’grub’ use ’grub2’ or ’multiboot1’ depending on your bootloader capabilities. The ’raw’ boot strategy was removed too. If raw binary is needed it it stored in the integration project directory as universalisos.boot file. Please consult the x86_amd64 Platform Manual for the available boot strategies descriptions.
c Copyright 2019 5 All rights reserved. Portugal Futurista GmbH Release Notes
Issue P00101-15474, x86: support for custom APCI DSDT table and table dumping Two new features has been added to x86 PSP. The ACPI tables dumping feature allows to print the current ACPI tables to the console in the same format as acpidump utility. Second feature allows to use custom DSDT table instead of a table provided by the BIOS. Both features are described in the x86 platform manual.
Issue P00101-15482, Kernel boot stages The boot stages of the kernel were updated. P4_BOOT_STAGE_BALLOC was removed and P4_BOOT_STAGE_LATE was added. See the definition of the boot stages for further information.
Issue P00101-15487, x86:P SP Entry point validation Check The x86 PSP performs an entry point validation check to assure it was started from the expected address.
Issue P00101-15533, x86: initialization of hardware debugging registers The x86 PSP clears the DR7 hardware debug register, thus disabling any prior hardware breakpoints or debug events which could have been setup by the BIOS or bootloader. The DR7 is not cleared in the assert build.
Issue P00101-15588, MFCC-8558 Board Support Added BSP for the MFCC-8558 board. Architectures: PowerPC e500mc and e500mc-4g . Supported devices: UART and DPAA.
Issue P00101-15606, x86_amd64: Change of mitigation for CVE-2017-5715 (Branch Target Injection) The mitigation of Spectre Variant 2 -CVE-2017-5715 (Branch Target Injection) for user space components has been changed from the ’retpoline’ to the invocation of an IBPB barrier on address space switches. The previous mitigation method used ’retpolines’, which was a compile time decision with a severe performance impact, even on systems which do not need any Spectre mitigations. The main benefit of using the IBPB barrier is that the code does not need to be (re-)compiled with retpolines and that third party, such as P4Linux, will be also protected. The IBPB feature may require a microcode update. Please consult the x86_amd64 Platform Manual for further details. Note that this change does not affect how UniversalisOS kernel code, i.e. the kernel, kernel space drivers and the PSP, is protected. The ’retpoline’ mitigation still applies to all kernel components.
Issue P00101-15618, x86: IOMMU System Extension documentation updated The Platform manual now contains section explaining how size of memory pools required for IOMMU System Exten- sion can be calculated.
Issue P00101-15637, PowerPC Book-E: configurable base address of kernel cross-copy mapping page PSP developers can change the base address of the kernel’s cross-copy mapping page via the ’psp/xmap_base’ property. The property is of type P4_PROP_T_UINT32 or P4_PROP_T_UINT64, depending if the system is 32-bit or 64-bit.
Issue P00101-15703, x86: PSP options regrouped The x86 PSP specific options were moved from a flat list to a separate groups. They can be reached by expanding the PSP component in the CODEO Project structure navigator.
Issue P00101-15799, Increase number of tasks for e6500 Support 1023 tasks on PowerPC e6500.
Issue P00101-15815, x86: IOMMU_IOCTL_GET_HW_IOMMU_FAULT can’t be used if fault polling enabled The IOMMU System Extension provides two ways of handling IOMMU hardware faults. One is the fault polling thread that raises Health Monitor events in case it retrieves a fault from the HW. The other one is the IOMMU_IOCTL_GET_HW_IOMMU_FAULT call that retrieves the oldest recorded fault from the HW and provides its details to the caller. Only one of these ways can be used at the same time. Using them together rendered both ways unreliable. In order to avoid that, the IOCTL call now returns P4_E_STATE if called when the fault polling thread is enabled.
c Copyright 2019 6 All rights reserved. Portugal Futurista GmbH Release Notes
Issue P00101-15821, Dyntick PSP callbacks: split dyntick_expire() in a local-only variant and a remote one to program timers on remote CPUs The PSP callback dyntick_expire() has been divided in a local-CPU only variant (dyntick_expire() now only accepts a P4_time_t parameter) and in a remote-CPU variant: dyntick_remote(). The split ensures that when dyntick_expire() is called, the CPU where the callback is invoked is the current one. Instead, the invocation of dyntick_remote() requests to send an IPI to the remote CPU specified as parameter and to invoke the kernel ticker handler on that CPU to request a local timer reprogramming on that CPU. This pattern simplifies PSP locking activities related to dynamic ticker reprogramming.
Issue P00101-15838, x86: masking of CMCI, performance and thermal LVT entries The PSP did rely on the BIOS that CMCI, performance and thermal LVT entries were masked. The PSP will now mask the CMCI perf and thermal LVT entries in the local APIC on its own.
Issue P00101-15948, PSP: publishing of additional ROM images In previous UniversalisOS versions, PSPs could publish additional ROM images in the kernel info page by P4_MRT_ROM entries in the memory list. This functionality has been replaced by explicit calls to p4_kernel_rom_publish().
Issue P00101-16039, PowerPC OEA: PSP I/O mappings via prop_memmap removed On PowerPC OEA systems, PSP I/O mappings via prop_memmap have been removed. PSPs should create PSP I/O mappings via BAT mappings instead.
Issue P00101-16048, PSP: psp_hm_panic() is used in case of fatal errors All PSPs are using consistently psp_hm_panic() to report boot time and run time errors.
Issue P00101-16191, x86: reduce legacy PSP I/O and IRQ properties The x86 legacy interrupt I/O resources properties have been removed except for RTC, COM1 and COM2 resources.
Issue P00101-16255, Switch to non-secure mode is performed too late. Switch to non-secure mode is performed by a reset of the PSP. This reset shall be performed before any initialization of kernel features in order to avoid twice initialization. The new implementation of the switch is done at the very beginning of the PSP code (in assembly code) and without MMU. The switch can be enabled as before with a dedicated property.
Issue P00101-16257, Removal of the P4_mem_region_t interface In the kernel’s PSP API, the P4_mem_region_t to specify memory regions was replaced by two new interfaces. One interface handles system memory, the other one handles I/O resources. The previous memory regions and the P4_MRT_XXX definitions were removed and replaced with:
• P4_MRT_URW: p4_kernel_assign_mem() or psp_free_list_assign_kernel()
• P4_MRT_TMP: p4_kernel_assign_tmp()
• P4_MRT_IRW: not longer used
• P4_MRT_IRO: not longer used
• P4_MRT_ROM: p4_kernel_rom_publish()
• P4_MRT_IO: psp_io_list_add()
See the PSP developers guide for further examples.
Issue P00101-16259, Handling of memory fragmentation in PSP start up PSPs should use the psp_free_list API to handle memory fragmentation at boot time, e.g. holes in physical mem- ory. A PSP can add physical memory regions with psp_free_list_add() and reserve parts of the memory with psp_free_list_reserve() before assigning the memory to the kernel with psp_free_list_assign_kernel().
Issue P00101-16343, PSP/Console: use char for put/get, use unsigned int for poll The cnsput(), cnsget(), and cnspoll() API has been updated to use char and unsigned int types instead of int. This simplify the implementation of most default PSPs.
c Copyright 2019 7 All rights reserved. Portugal Futurista GmbH Release Notes
Issue P00101-16353, Kernel/PSP: api.panic() renamed into api.hm_panic(), improved calling semantics for SMP systems The panic() PSP callback has been renamed to hm_panic() and its SMP calling semantics has been improved. Specifically, hm_panic() is now called only from the CPU triggering the panic, after having called all registered drivers callbacks, and after having invoked the hm_notify() PSP callback. Other CPUs concurrently triggering a panic will invoke the board_halt(PSP_STOP). When the callback is not implemented, the kernel will print information on the panic on the system console. When the callback is implemented, the kernel will not print any information on the console.
Issue P00101-16392, Tracking of I/O mappings in PSPs with psp_io_list As a replacement for P4_MRT_IO memory region entries, use the new psp_io_list to track I/O mappings in PSPs. After a list has been initialized and registered with psp_io_list_init(), new I/O mappings can be added to the list via psp_io_list_add(). The function psp_io_list_phys_to_kernel() provides an implementation of the io_phys_to_kernel() interface expected by the PSP API.
Issue P00101-16418, PSP: new interface to map I/O resources In the PSP API, a new api.io_map_kernel() callback was added to dynamically create mappings of I/O resources in the kernel address space at boot time. The existing api.io_phys_to_kernel() callback was changed to only return addresses of already mapped I/O resources.
Issue P00101-16434, x86_amd64: Switch to the PSP to the early kernel memory allocator The x86_amd64 PSP has been switched to the early kernel memory allocator. The previously used static heap used to allocate the paging structures is now reclaimed as a free memory.
Issue P00101-16459, psp_valloc_init() The LIBPSP function psp_valloc_init() was changed to use the end address of free virtual address space, rather than using a size parameter.
Issue P00101-16494, PSP development option to dump I/O mappings The ’PSP_DUMP_IO_LIST’ development option lets a PSP print the list of known I/O mappings at boot time.
Issue P00101-16531, Deprecation of PSP-level device drivers PSP level device drivers and their associated API services (e.g., ’p4_dev’, ’vm_prop_dev’, etc. calls) are deprecated and will be removed in future UniversalisOS versions.
Issue P00101-16533, Changes to PSP interrupt callback API The ’priv’ parameter in the PSP interrupt callbacks of type the P4_inthandler_t is deprecated and will be removed in future UniversalisOS versions.
Issue P00101-16534, PSP API: Replace api.start_mode with a startmode integer, similar to haltmode The P4_psp_descriptor_t already has a ’haltmode’ integer that tells the kernel (if set) the previous halt-mode. Similarly replace the api.start_mode() with an integer ’startmode’ that can be queried with drv_start_mode(). PSPs implement- ing this can simply pass the right value to the kernel at boot.
Issue P00101-16555, DPAA driver: Added Support for PHYless mode Added support for ports without connected PHY.
Issue P00101-16607, Use kdev printing API also from PSP code Use kdev printing API also from PSP code. The previous use of ’psp_put_’ function has been deprecated in favor of ’drv_put_’.
Issue P00101-16609, x86_i686: architecture removed The UniversalisOS target ’x86_i686’ (32-bit x86) was removed. Only the Intel / AMD x86 processors with 64-bit architecture extensions (x86-64, x64, amd64) are now supported. The UniversalisOS target name is ’x86_amd64’. Old code needs to be ported to 64-bit (LP64). Alternatively, the legacy 32-bit code can be still executed in the SYSEMU environment, but without invoking the UniversalisOS system calls.
c Copyright 2019 8 All rights reserved. Portugal Futurista GmbH Release Notes
Issue P00101-16717, Increase the number of Extra I/O regions to 10 on cortex-a5x PSP The number of Extra I/O regions that the user can specify on cortex-a5x PSP has been increased from four to ten. This allows a larger number of I/O regions for use in KDEV drivers etc.
Issue P00101-16742, x86: Make Machine Check Exception non-recoverable The PSP api.machinecheck() is designed to forward the reserved vectors, Non-Maskable Interrupt and Machine Check Exception to the PSP. The PSP may recover the exception and attempt to continue if it is implemented. The ASP was modified to always panic on Machine Check Exception even if the PSP indicates successful recovery. This change removes problematic corner cases which could have arised if NMI handler got interrupted with MCE which got successfully recovered and then other NMI occurred. The second problematic use case was in the scenario that PSP would clear the MCIP bit (as a part of the recovery routine) and another MCE would occur before the handler returned.
Issue P00101-16813, Refactor i.mx6 serial PSP code Refactor i.mx6 serial PSP code: Excessive code repetition has been replaced by a table-based lookup. No functional change.
Issue P00101-16883, [rtl] Provide DOM with 4 virtual channels Additionally to the DOM file where only one channel is provided, there is provided a DOM file with four virtual channels as for the other drivers. Due to hardware limitations the driver runs in promiscuous mode.
Issue P00101-16962, qemu-ppc: map at most 512MiB of RAM The qemu-ppc PSP maps either 256MiB (if system memory is <= 256MiB) or 512MiB (otherwise) using BATs. More RAM cannot be mapped.
Issue P00101-16984, x86: PSP descriptor was reworked The PSP descriptor structure was reworked. Please refer to the documentation (PSP developer guide or AX86- AMD64-IF) for further details.
Issue P00101-17077, Added support for LS1046A-RDB Added BSP for LS1046A-RDB.
Issue P00101-17110, MFCC-8558 memory size Changed default memory size for MFCC-8558 to 4GB.
Issue P00101-17131, PCI Manager print devices improvements The PCI manager print devices functionality has been improved and the IRQ pin information is now included in the listing.
A.2 Problems fixed with this Release
Issue P00101-11515, SPARC: board reset not supported On LEON boards (including the QEMU SPARC platform), the system architecture does not define a way to reset the system. Therefore, UniversalisOS now simply halts the system instead of resetting.
Issue P00101-13329, zcu102: ethernet driver supports 1Gbit/s link speed only Ethernet driver on Ultrascale platforms (ZCU102) supports 10/100/1000Mbit/s modes.
Issue P00101-14064, Ethernet: ’Maximum number of threads limit reached’ error In their default configuration, several BSPs could, due to a thread count misconfiguration, fail to allow for opening the maximum number of Ethernet virtual channels. The issue has been fixed.
Issue P00101-14240, Missing PIKEOS_START_ADDRESS in Zynq BSP An issue was identified regarding the missing possibility to define PIKEOS_START_ADDRESS in Zynq BSP. The possibility to define that has been added to UniversalisOS 5.0.2. However, since UniversalisOS 4.2.2 (P00101-14445) all ARMv7 PSPs can be loaded to an arbitray address by the bootloader, so the missing configuration is not an issue there anyway.
c Copyright 2019 9 All rights reserved. Portugal Futurista GmbH Release Notes
Issue P00101-14373, Ethernet driver receive queue depth may vary from configured value The depth of the Ethernet driver receive queue now corresponds exactly to the value of the receive_queue_depth property.
Issue P00101-14767, A5X-PSP: PSCI checking protocol version on manual mode The PSCI module of the A5X ARMv8 PSP is not trying to check the PSCI version anymore in manual mode. This allows to run with minimalistic PSCI firmwares only implementing Core Start and target stop or reset (like on some I.MX boards).
Issue P00101-14885, Renesas R-Car H3 HWVIRT Direct-IO component updated The Renesas R-Car H3 Direct-IO component for hardware virtualized guest is now mapping the Soc ID registers. This is required by Linux to detect the board it is running on.
Issue P00101-14900, QEMU for arm_v7hf consumed CPU even when idle Even if UniversalisOS was in the idle thread QEMU for arm_v7hf consumed 100% CPU time.
Issue P00101-15012, Hardware timer inaccurate on some LSxxxx ARMv8 boards The Cortex A5X contains a parameter to activate a workaround for inaccurate timers on NXP boards (LS2085 or LS1043). When the parameter is activated in the configuration, the PSP will loop reading the timer until 2 consecutives reads give a different increasing value. The workaround is the same as the one used by NXP in the Linux kernel.
Issue P00101-15077, Cortex A5x spin driver protecting spin areas The spin driver is now automatically adding the memory area used to start secondary to the protected memory areas. This prevents the kernel to use this memory for something else and solves a problem when booting secondary cores.
Issue P00101-15134, Renesas R-CAR-H3/M3: timing issues when console is printing Due to a bug in the UART driver for Renesas R-CAR-H3 and M3 boards, the system’s timing was disturbed when a lot of characters were printed on the console. This issue has been fixed.
Issue P00101-15252, x86: IOMMU Invalid configuration error message fixed If the memory regions configuration of IOMMU System Extension contained invalid configuration the error message printed on console might be misleading. This is fixed now and the message writes clear reason why reading of the configuration failed.
Issue P00101-15286, x86: the memory mapping access is not enforced correctly by IOMMU SE If the access mode of a memory requirement was VM_MEM_ACCESS_WR only and required DMA access to this region was read only the IOMMU System Extension allowed the DMA access to the region instead of failing. This is fixed now and only DMA with access flags that are equal to (or subset of) the access flags of the memory region is allowed.
Issue P00101-15302, UniversalisOS ARMv8 on QEMU can freeze, especially with periodic ticker UniversalisOS ticker handling was fixed on QEMU.
Issue P00101-15343, dwc_gmac Ethernet driver: fixed reporting of an invalid MAC address In case the Ethernet controller’s MAC address was not set either by boot loader or by configuration, the dwc_gmac driver reported its MAC address to be FF:FF:FF:FF:FF:FF instead of an all-zeroes address.
Issue P00101-15345, x86: static IOMMU System Extension configuration and BIOS domain Some devices (like graphical controller) are programmed by the BIOS to perform DMA operations independently of the OS. In order to allow these devices to work properly the IOMMU hardware needs to be set up correctly. Support for these type of background DMA transfers was added. The IOMMU System Extension can now, depending on configuration, retrieve the information about these DMA operations either from properties or from RMRR ACPI table and setup the IOMMU units accordingly.
Issue P00101-15346, Multicast filtering does not work correctly on Renesas R-Car H3 The RAVB ethernet driver did not correctly filter multicast packets. Now RAVB ethernet driver supports correctly this feature.
c Copyright 2019 10 All rights reserved. Portugal Futurista GmbH Release Notes
Issue P00101-15364, Cortex A5X: End of reserved memory region cannot be equal to the memory block end There was a bug in the Cortex A5X PSP making that the end of reserved memory region cannot be equal to the memory block end. This issue has been fixed.
Issue P00101-15425, Mapping of PCI resources in KDEV drivers PCI-based KDEV drivers can now use drv_io_map_kernel() to dynamically create mappings to PCI device specific memory regions at boot time. The kernel initialization phase was changed to allow the creation of mappings by KDEV drivers at boot time.
Issue P00101-15560, SPARC: GRETH driver overwrites configured MAC addresses The GRETH driver modifies the hardware MAC address only if the driver configuration MAC address is not 00:00:00:00:00:00.
Issue P00101-15620, x86: IOMMU SE’s PCI manager interface opening from non SE application The IOMMU System Extension provides two files in UniversalisOS file system. One for monitoring (’monitor’) and one for PCI manager interfacing (’pci_device_register’). The latter one should be accessible only from the PCI manager System Extension, but it was accessible for every partition that had access to the IOMMU SE’s files. This is fixed now and the PCI manager interface file is now only accessible from System Extensions.
Issue P00101-15624, PPC SMP: discouraged TPS_STRONG_SYNC + periodic tick configuration might cause crashes The following issue has been fixed: The discouraged use of time partitioning’ strong synchronization in conjunction with periodic tick on PPC boards might cause misbehavior and / or userspace lockups. Issues have only been ob- served in heavily contended time-partition switching scenarios on SMP systems, and only in testing scenarios. No issues have been observed if dynamic ticker or no-strong synchronization is used.
Issue P00101-15663, x86: PSP system reset or poweroff via ACPI issue Due to the programming error in the PSP, system reset or poweroff request ignores ACPI information and if fallback method fails, reset or poweroff is not performed. This problem has been fixed.
Issue P00101-15725, x86_amd64: L1 Terminal Fault (CVE-2018-3620) UniversalisOS running on Intel Platforms might be susceptible to L1 Terminal Fault side channel attack CVE-2018-3620. This problem was mitigated.
Issue P00101-15731, x86: Wrong update of MSR_POWER_CTL MSR Due to the programming error, reserved bits 32-63 of MSR_POWER_CTL were cleared. This problem has been fixed.
Issue P00101-15766, Drivers support disabling of P4_AB_CACHE_CHANGE on PowerPC The drivers have now support for disabling of P4_AB_CACHE_CHANGE on PowerPC (except for SBUF on 4.2). When the component files for the DPAA drivers or the BSP has been copied to the custom pool or inlined, the cached settings for BM_PORTAL_CE and QM_PORTAL_CE have to be updated there (see files in UniversalisOS pool). Rebuilding of the integration project is also required.
Issue P00101-15773, p4_int_attach_syscall() may return incorrect value When pspp-zynq or psp-imx6 are used and GPIO interrupt is attached via p4_int_attach_syscall(), it may not return P4_E_MISMATCH in some cases where the requested interrupt mode is not supported by the PSP.
Issue P00101-15853, PSP IO Sequencer did not work on big-endian machines PSP IO Sequencer was fixed to properly read addresses from the configuration even on big endian machines.
Issue P00101-15930, ARM 32-bit: correct types for PSP boot map functions On 32-bit ARM, the PSP boot map functions psp_arm_boot_map_io() and psp_arm_boot_map_ram() now use the correct types. This allows to map I/O resources beyond the 4GB barrier on LPAE systems.
Issue P00101-15934, MSI interrupts IRQ routing might be incorrect or cause system crash Under certain conditions MSI IRQ affinity may not be correct or cause system to crash. It will only happen if all of following conditions are met:
• PCI or PCIe device has MSI capability
c Copyright 2019 11 All rights reserved. Portugal Futurista GmbH Release Notes
• More than 2 MSI interrupts are supported by the device
• More than 2 MSI interrupts are used by the driver
• Optional MSI interrupt masking feature is not supported by the device
MSI-X interrupts are unaffected by this problem. This problem has been fixed.
Issue P00101-16110, x86: undefined behavior after system halt if UK_NUM_CPU is non-zero This problem happens only if system integrator limited number of available CPUs to the UniversalisOS with the p4/kernel/num_cpu kernel configuration property. The problem exhibits itself only if UniversalisOS is halted or has pan- icked. In that case PSP will halt all CPUs using a NMI broadcast which will wakeup the CPUs which were never initialized by the PSP, resulting in undefined behavior or system reset. This problem has been fixed.
Issue P00101-16153, ravb: False-positive link up signalization Following the device file re-open the ravb Ethernet driver could signal link-up state through its DRV_NET_IOCTL_GET_LINK_STAT ioctl command regardless of the actual link state. The issue has been fixed.
Issue P00101-16283, AHCI block driver ignores VM_O_NONBLOCK flag The DDK based AHCI driver does not support non-blocking operations but the open call on files provided by this driver does not fail if VM_O_NONBLOCK flag is provided. If non-blocking mode is requested with VM_O_NONBLOCK flag the vm_open() call succeeds but the driver works in blocking mode. This issue has been fixed.
Issue P00101-16440, ARMv8: Fix boot problems on LS104xA-RDB board On LS1046A-RDB and LS1043A-RDB boards, the kernel accessed reserved memory which resulted in an exception and a failed boot of UniversalisOS. By omitting the reserved memory region from using in UniversalisOS, the problem was resolved and UniversalisOS boots successfully again. No customer action is required.
Issue P00101-16489, ARMv8 PSPs uses 1GiB pages if possible ARMv8 PSPs uses 1GiB pages for RAM kernel mappings whenever possible. This maximizes TLB coverage and therefore hitrate.
Issue P00101-16545, x86: Change in a forcing of PSP memory size The x86 PSP defines a configuration option, which can be used to lower the amount of available RAM to the system. In the previous versions of UniversalisOS (3.x or 4.x) the PSP_MEMSIZE tag had a slightly different meaning. It allowed to forcibly override the detected memory regions with a hardcoded memory map of given size. This has been changed and the current implementation will lower the amount of available memory to the requested value, taking into account existing RAM regions.
Issue P00101-16561, Fix various shortcomings in string handling function in PCI code on ARM Layerscape plat- forms A PSP-internal string handling function in PCI code on ARM Layerscape platforms may cause an out-of-bounds array write by one byte. The issue has been fixed.
Issue P00101-16665, Cadence console uses wrong input property The Cadence console took the incorrect property for determining whether to allow console input. This issue has been fixed.
Issue P00101-16836, x86_amd64: PSP panics if usable memory regions sizes are not 4kiB aligned If the memory regions sizes obtained from the bootloader or BIOS are not 4KiB aligned, the 64-bit x86 PSP will fail to boot with a panic message. This problem has been fixed.
Issue P00101-16909, Incorrect Instruction cache line size define on ARM Cortex-A7 Cortex-A7 uses the Cortex-A15 PSP, too, due to large similarities. However, the instruction cache line size differs between these two cores (A7: 32Bytes, A15: 64 Bytes) which resulted in incorrect instruction cache maintenance operations on A7. This has been fixed now. Note: Data cache line size is the same, so the problem never applied there.
c Copyright 2019 12 All rights reserved. Portugal Futurista GmbH Release Notes
Issue P00101-16912, x86: PSP compilation option dependencies The x86 PSP compilation options lacks dependencies which resulted in the compile or link failures if non-standard set of options was used. This problem has been fixed.
Issue P00101-17019, [PPC_E500MC-4G] P4_INVAL_DCACHE_RANGE not working Data cache invalidation (P4_INVAL_DCACHE_RANGE) of user space addresses has been fixed on ppc_e500mc-4g.
Issue P00101-17072, DRV_NET_IOCTL_GET_STATS is incomplete for some drivers The network statistics are now fully supported by e1000, rtl, xemacps and rtl drivers.
Issue P00101-17079, x86_amd64: large UniversalisOS kernel binary might not be able to boot The x86 PSP is capable of booting large kernel images . However due to the spectre v2 mitigations, it might happen that __x86_indirect_thunk_rbx is not present in the first 2 MiB of the image. If this happens, PSP will fail to boot (it produces invisible PSP early panic and halt itself). This problem has been fixed.
Issue P00101-17141, [E500MC, E5500, E6500] PCI Express interrupts don’t work External interrupts were changed to be level-negative sensitive.
Issue P00101-17145, stdcon read does not honor CANCEL notification The stdcon driver has no special handling of a thread cancellation event, so it will continue reading the console even if the thread was cancelled. This may cause unexpected, unnecessary delays in system behavior, e.g., delay a partition reboot when all threads of the partition are cancelled. This issue has been fixed. Note that this issue only affected reading. Writing is designed not to be cancellable, e.g., to avoid losing important diagnostic messages.
Issue P00101-17173, UART drivers interrupt statistics The drivers for 8250, scif and imx UARTs now set correctly drv_ser_get_stats_cmd_str ::interrupts in the DRV_SER_IOCTL_GET_STATS ioctl command.
Issue P00101-17195, scif driver does not work if rx queue is full When the receive queue is filled driver may endlessly block when vm_read() is called. This was fixed.
Issue P00101-17223, UART drivers for 8250 and pl011 do not have statistics All serial drivers have now implemented service DRV_SER_IOCTL_GET_STATS.
Issue P00101-17230, Build error when buiding qemu-arm PSP for ARM QEMU can now be built from PIKEOS_PREFIX/demo/psp/qemu-arm.
Issue P00101-17253, Boot checksumming fails for large boot images Boot checksumming fails on ARM v7 PSPs for boot images larger than 64MB. This issue has been fixed.
Issue P00101-17506, ARM: LS1046A: Clock manager issues Two issues have been identified in the Clock manager for LS1046A: The function to return the clock frequency returned the clockID instead; Secondly, the default value was set to 1 MHz instead of 100 MHz. Both issues have been fixed. No customer action is required.
A.3 Known Problems
Issue P00101-7115, alt_tse_fp (4sgx230 network driver) does not work in 10/100 Mbit ethernet networks The network driver used in the 4sgx230 PSP is only capable of Gigabit Ethernet networking. If used in a 10/100Mbit switched network (or directly connected to a 10/100Mbit card) it won’t communicate.
Issue P00101-9149, rtl_fp network driver uses multicast addresses for virtual channels The rtl_fp network driver achieves its virtual channel functionality by using multicast MAC address filter programming. This means that for the virtual channels at index 1 and higher a multicast MAC address must be used which breaks IEEE 802.3 compliance. In dependece on a connected network infrastructure the outgoing traffic may be subsequently dropped.
c Copyright 2019 13 All rights reserved. Portugal Futurista GmbH Release Notes
Issue P00101-10834, [DPAA, T4240QDS, T2080QDS] Support SGMII Neither SGMII nor QSGMII is supported on the following boards: T4240QDS and T2080QDS. There are special cards available which only have the PHY chips on it; i.e. no MACs. These network cards are plugged into the PCI slot which use the SGMII protocol instead of the PCI protocol. These cards are not supported. It is recommended to disable SGMII and QSGMII in the RCW.
Issue P00101-10967, DPAA: reinitialization of dpaa_fp driver/Freescale NetComm SW is not supported The dpaa_fp driver/Freescale NetComm Software does not support reinitialization of an already set up hardware. Restarting the partition containing the dpaa_fp is therefore not supported.
Issue P00101-12333, Fixed drivers pl011_fp and kctrl_fp write timeout behaviour If a write call to one of the file providers timed out, P4_E_TIMEOUT was returned - thus discarding the number of bytes actually written out.
Issue P00101-12877, Cyclone V SoC Development Kit network not working after restart When the board is restarted the autonegotiation doesn’t work properly. This causes the boot loader to fail. This issue is out of scope of UniversalisOS. It is most like hardware or boot loader issue.
Issue P00101-12888, Zynq ZED: Dropped data when receiving from serial ser0:0 When receiving on Zynq ZED board UART some of the data might be lost. As to root cause of this problem was identified USB to UART on-board convertor.
Issue P00101-12988, vm_target_reset(VM_TARGET_REBOOT) does not work on Renesas R-Car boards After vm_target_reset(VM_TARGET_REBOOT) is issued, the board is not reseted. On these boards the reset is done via I2C bus and this is not supported by the current version of BSP.
Issue P00101-13558, Network drivers return non-conforming blksize value The blksize reported by network drivers is not correct. The value reported in blksize (1522 in most cases) includes 8 bytes total for VLAN ID and frame checksum. The correct value for blksize should be: 1514 = 1500 + 12(MAC) + 2(type).
Issue P00101-14043, Multicast issues with felic and ravb network drivers Both felic and ravb network drivers might lose several frames (both multicast and unicast) if a multicast table is being updated.
Issue P00101-14058, NVIDIA Jetson Tegra K1 runs at low CPU frequency UniversalisOS does not switch the NVIDIA Jetson TK1 CPU to run at a higher frequency, thus the overall performance is less than the maximum capabilities of the system.
Issue P00101-14625, DPAA cache stashing The DPAA DDK driver issues cache cache stashing in the first 128KB on ARM.
Issue P00101-15762, PCI Manager allows INTx to be enabled at the same time as MSI(-X) Even if MSI(-X) interrupts are enabled, the PCI Manager does not prevent a driver enabling INTx interrupts at the same time by writing a 0 to bit 10 of the COMMAND register. If INTx interrupts are disabled by configuration, the problem does not occur.
Issue P00101-16025, ppc_oea: qemu-ppc no longer supports dynamic ticker with SMP kernel If dynamic ticker is configured in an integration project for board qemu-ppc with SMP kernel, the boot will fail with message ’SMP PSP does not support dynamic ticker mode’.
Issue P00101-16164, [SPARC] GRETH driver: ethernet connection loss on GR-XC6S-LX75 board GR-XC6S-LX75 board faces loss of Ethernet connection after few seconds. The problem appears when an interruption is catched while a critical section is being executed. This board implements an uni-processor LEON3 without the ’casa’ instruction.
Issue P00101-16648, XEMACPS Ethernet driver can’t address memory above 4GB Known issue: The driver is limited to 32-bit physical memory for DMA buffers and does not work with higher memory. Workaround: The integrator should only assign physical memory below 4 GiB to the partition the driver runs in.
c Copyright 2019 14 All rights reserved. Portugal Futurista GmbH Release Notes
B Previous Release 5.0.1.1 S5500 B.1 Enhancements introduced by this Release
Issue P00101-12298, The PSP api.init() hook moved The PSP api.init() hook was moved before ASP initialization to make further PSP memory mappings possible.
Issue P00101-15588, MFCC-8558 Board Support Added BSP for the MFCC-8558 board. Architectures: PowerPC e500mc and e500mc-4g . Supported devices: UART and DPAA.
B.2 Problems fixed with this Release
None.
B.3 Known Problems
Issue P00101-7115, alt_tse_fp (4sgx230 network driver) does not work in 10/100 Mbit ethernet networks The network driver used in the 4sgx230 PSP is only capable of Gigabit Ethernet networking. If used in a 10/100Mbit switched network (or directly connected to a 10/100Mbit card) it won’t communicate.
Issue P00101-8751, [PDK] P4080/E500MC - missing libfdt The source code of libfdt was missing in the psp-p4080 demo.
Issue P00101-9149, rtl_fp network driver uses multicast addresses for virtual channels The rtl_fp network driver achieves it’s virtual channel functionality by using multicast MAC address filter programming. This means that for the virtual channels at index 1 and higher a multicast MAC address must be used which breaks IEEE 802.3 compliance. In dependece on a connected network infrastructure the outgoing traffic may be subsequently dropped.
Issue P00101-10834, [DPAA, T4240QDS, T2080QDS] Support SGMII Neither SGMII nor QSGMII is supported on the following boards: T4240QDS and T2080QDS. There are special cards available which only have the PHY chips on it; i.e. no MACs. These network cards are plugged into the PCI slot which use the SGMII protocol instead of the PCI protocol. These cards are not supported. It is recommended to disable SGMII and QSGMII in the RCW.
Issue P00101-10967, DPAA: reinitialization of dpaa_fp driver/Freescale NetComm SW is not supported The dpaa_fp driver/Freescale NetComm Software does not support reinitialization of an already set up hardware. Restarting the partition containing the dpaa_fp is therefore not supported.
Issue P00101-12333, Fixed drivers pl011_fp and kctrl_fp write timeout behaviour If a write call to one of the file providers timed out, P4_E_TIMEOUT was returned - thus discarding the number of bytes actually written out.
Issue P00101-12877, Cyclone V SoC Development Kit network not working after restart When the board is restarted the autonegotiation doesn’t work properly. This causes the boot loader to fail. This issue is out of scope of UniversalisOS. It is most like hardware or boot loader issue.
Issue P00101-12888, Zynq ZED: Dropped data when receiving from serial ser0:0 When receiving on Zynq ZED board UART some of the data might be lost. As to root cause of this problem was identified USB to UART on-board convertor.
Issue P00101-12988, vm_target_reset(VM_TARGET_REBOOT) does not work on Renesas R-Car boards After vm_target_reset(VM_TARGET_REBOOT) is issued, the board is not reseted. On these boards the reset is done via I2C bus and this is not supported by the current version of BSP.
c Copyright 2019 15 All rights reserved. Portugal Futurista GmbH Release Notes
Issue P00101-13098, Autonegotiation fails on t2080rdb Autonegotiation fails sometimes on t2080rdb, 100Mbit/s is selected instead of 1000MBit/s.
Issue P00101-13329, zcu102: ethernet driver supports 1Gbit/s link speed only Ethernet driver on Ultrascale platforms (ZCU102) supports only 1Gbit/s link speed.
Issue P00101-13558, Network drivers return non-conforming blksize value The blksize reported by network driver is not correct. The value reported in blksize (1522 in the most cases) inlcudes 8 bytes total for VLAN ID and frame checksum. The correct value for blksize should be the 1514 = 1500 + 12(MAC) + 2(type).
Issue P00101-14043, Multicast issues with felic and ravb network drivers Both felic and ravb network drivers might lose several frames (both multicast and unicast) if a multicast table is being updated.
Issue P00101-14058, NVIDIA Jetson Tegra K1 runs at low CPU frequency UniversalisOS does not switch the NVIDIA Jetson TK1 CPU to run at a higher frequency, thus the overall performance is less than the maximum capabilities of the system.
Issue P00101-14625, DPAA cache stashing The DPAA DDK driver issues cache cache stashing in the first 128KB on ARM.
Issue P00101-15012, Hardware timer inaccurate on some LSxxxx ARMv8 boards On some NXP boards based on ARMv8 (LS2085 or LS1043 for example), the hardware timer might not be completely accurate and might go back in time. This can be worked around by masking the lower bits of the time (to only keep an accuracy around 100KHz).
Issue P00101-15182, x86_amd64: arm_v8hf: sparc_v8: CPU may disclose existence of kernel mappings The x86, ARM and Sparc CPUs will disclose the existence of the in kernel virtual memory mappings as part of the page fault information even if the access was a protection violation. This information is transformed by the UniversalisOS and the mapping existence is indicated with the P4_PF_NOMAP flag available in the exception handler.
Issue P00101-15624, PPC SMP: discouraged TPS_STRONG_SYNC + periodic tick configuration might cause crashes The discouraged use of time partitioning’ strong synchronization in conjunction with periodic tick on PPC boards might cause misbehavior and / or crashes. Issues have only been observed in heavily contended time-partition switch- ing scenarios on SMP systems, and only in testing scenarios. No issues have been observed if dynamic ticker or no-strong synchronization is used.
Issue P00101-15663, x86: PSP system reset or poweroff via ACPI issue Due to the programming error in the PSP, system reset or poweroff request ignores ACPI information and if fallback method fails, reset or poweroff is not performed.
c Copyright 2019 16 All rights reserved. Portugal Futurista GmbH Release Notes
C Previous Release 5.0.1 S5440 C.1 Enhancements introduced by this Release
Issue P00101-12764, Support for LEON4 L2 cache LEON4 Level 2 cache is implemented.
Issue P00101-12917, PSP/KDEV p4_kernel_get_mem_type() service to retrieve the type of a physical memory region PSPs and KDEV drivers can use the kernel service p4_kernel_get_mem_type() to retrieve the type (and associated resource partition) of the physical memory region associated with a physical address.
Issue P00101-13347, Removal of deprecated cache-related APIs The following cache-related APIs have been removed:
• p4_flush_icache_range (now p4_inval_icache_range)
• P4_FEATURE_CACHE_SYNC (now P4_NEED_ICACHE_COHERENCY)
• P4_CACHE_SYNC (now P4_ICACHE_COHERENCY)
• cache operations via p4_kernel_control
Issue P00101-13519, PSP callback: board_halt The board_halt PSP callback substitutes the previous multiple PSP callbacks halt, stop, power_off, reset, and hmreset.
Issue P00101-13613, x86: x86 topology information added The x86 PSP now prints a topology information during system startup.
Issue P00101-13665, rtl Ethernet driver: Support for new devices Added support for Realtek RTL8168GU and RTL8168H controllers.
Issue P00101-13688, per-CPU init PSP callback Contrary to the init callback, the api.init_cpu() callback is called on each CPU after the context of the idle thread of the CPU has already been setup. The call could be used as entry point for the PSP to provide per-CPU specific boot actions.
Issue P00101-13708, Read only access on ANATOP device not available Access type (read, read and write, no access) can be specified now in the direct I/O component for i.MX6 boards. By default, no accesses are allowed. P4Linux application requires at least read only rights in order to start without errors and warnings.
Issue P00101-13790, Support FIT images format for u-boot UniversalisOS uboot boot strategy can now generate boot images with FIT format for u-boot bootloader.
Issue P00101-13833, Changes in in-kernel spinlock API In the in-kernel spinlock API, p4_spin_lock_irqsave() was changed to return the previous interrupt state rather than having an ’out’ argument. Also, p4_spin_trylock_irqsave() was removed from the API.
Issue P00101-13888, Runtime QEMU Platforms Identification The BSPs for the QEMU platforms are identified in P4_kinfopage_t::psp_id by the ’QEMU’ string.
Issue P00101-14279, API change in property file system P4_PROP_T_BIN is now supplemented by more specific variants P4_PROP_T_MAC and P4_PROP_T_IPV4. These should be preferred by drivers. The universalisos-romdump will display these property values in the usual aa:bb:cc:dd:ee:ff (hexadecimal) or a.b.c.d (decimal) forms, respective while it uses a generic format for the BIN properties.
Issue P00101-14662, x86: 32-bit UEFI support The support for 32-bit UEFI BIOSes has been dropped. Use other bootloader such as GRUB2 and multiboot2 boot strategy to boot the system.
c Copyright 2019 17 All rights reserved. Portugal Futurista GmbH Release Notes
Issue P00101-14677, Changes in PSP machinecheck() API The machinecheck() PSP callback was changed to provide a fault address (physical or virtual, if any) and an architec- ture specific fault status (aux argument) to the PSP.
Issue P00101-14681, x86 64-bit: make LFENCE instruction dispatch serializing on AMD processors The LFENCE instruction is configured to be dispatch serializing on AMD processors.
Issue P00101-14686, Legacy Kernel Services Legacy kernel services have been substituted by equivalent services in the KDEV framework or by equivalent func- tionalities directly exported by the kernel for PSPs and KDEV drivers. Please refer to the PSP development guide for additional information. Additionally, the PSP notifications upon e.g., thread/task creation, deletion etc. have been substituted by appropriate drv_alarm_* callbacks in the KDEV framework. This affects the callbacks:
• void (*thr_create)
• void (*thr_prio_change)
• void (*thr_switch)
• void (*thr_delete)
• void (*task_activate)
• void (*task_terminate)
• void (*task_switch)
• void (*tps_interrupt)
Which have been substituted by an equivalent drv_alert_ service.
Issue P00101-14694, Mitigation for Spectre v1 ’Bounds Check Bypass’ processor vulnerability The kernel provides a speculation fence for bounded access to an array element: the macro P4_FENCE_INDEX(index, limit) creates an internal data dependency on the index value to prevent the CPU to speculatively load an array element which is beyond the array limit. If the index exceeds the array limit, the fence takes care to speculate to index zero of the array.
Issue P00101-14814, x86: mappable I/O region increased in the PSP The I/O region range in the PSP has been increased. The total size of the region is now 3 GiB.
Issue P00101-15186, Cross-CPU TLB invalidation now implemented in the ASP On x86 and PowerPC Book-E processors, cross-CPU TLB invalidation (TLB shootdown) is now implemented in the ASP instead of the PSP. The ’psp.ipi_multi()’ callback in the PSP must send a PSP-specific interrupt to the given set of processors. This interrupt is used exclusively for TLB invalidation. Its interrupt handler then calls p4arch_tlb_inval_handler() to perform TLB invalidation. The p4arch_tlb_inval_handler() callback is provided by the ASP and exported in the kernel binary on x86 and PPC Book-E processors.
C.2 Problems fixed with this Release
Issue P00101-13270, Second Ethernet port not functionnal on Vayu UVM board On the Vayu UVM board, the second ethernet port might not work on some boards. The link is found but no packets are transfered.
Issue P00101-13353, tsec network driver relies on PHY auto-configuration tsec network driver does not support Ethernet PHY configuration and the driver relies on auto-configuration, which is known to work at least on P1010RDB.
Issue P00101-14061, e1000 network driver: duplex changes not reported correctly ’Link is up ...’ messages printed by e1000 network driver on console might not report established duplex mode correctly.
c Copyright 2019 18 All rights reserved. Portugal Futurista GmbH Release Notes
Issue P00101-14120, Speed changes during the runtime is not supported With the autonegotiation is activated, If a speed change occurred during the runtime, the new speed value is not considered and the connection is lost. This use case is not supported by the driver.
Issue P00101-14438, Minor CPSW ethernet driver fixes The polling thread value was decreased to increase the responsiveness of the link change. PHY low levels functions were fixed to avoid bad management with a Fault detection. Some features has been optimized to minimize the use of slow MDIO functions. DMA interrupts has been fixed to properly mask and unmask flags during device startup and stop. A memory barrier has been added in initialization loops to fixed the bad reading status of some registers status.
Issue P00101-14455, VAYU board BSP: crossbar configuration The crossbar configuration has been added in the Vayu BSP configuration. This is required to have a functional network driver (CPSW) when the board is updated with the latest U-Boot versions.
Issue P00101-14472, Debug messages can unexpectedly appear on console The debug messages from PSPs may unexpectedly be printed on console, regardless on the UK_LOG_LEVEL tag value. The debug messages are properly controlled via UK_LOG_LEVEL tag now.
Issue P00101-14478, [arm][ppc e500mc, e5500, e6500] Robust mutex operations might cause a segmentation fault When a robust mutex is being accesses from several CPUs at once, a race condition might occur, causing segmenta- tion fault in the userspace library. The problem only occurs on architecture without a strong memory model.
Issue P00101-14505, x86: SMAP feature was not enabled on p4_cache() services The x86 SMAP feature was not enabled for p4_cache() services. The p4_cache() system call would return P4_E_PAGEFAULT if assert enabled kernel was used on the CPU with SMAP feature available. This issue has been fixed.
Issue P00101-14541, x86 32-bit: make var-help may contain extra PIKEOS_COMPILATION_LIBRARY help On i686 version of UniversalisOS, issuing make var-help on PSP/kernel/kernel driver project will print also help for PIKEOS_COMPILATION_LIBRARY variable which is wrong in this context. This problem has been fixed.
Issue P00101-14547, CVE-2017-5753, CVE-2017-5715, CVE-2017-5754 Spectre and Meltdown Depending on the architecture, UniversalisOS contains different mitigations against the following processor vulnerabilities: CVE-2017-5753 Spectre ’Bounds Check Bypass’ (Variant 1), CVE-2017-5715 Spectre ’Branch Target Injection’ (Vari- ant 2), and CVE-2017-5754 Meltdown ’Rogue Data Cache Load’. Please refer to the appropriate platform manual for a description of the mitigations provided on the architecture of interest. Please note that these mitigations have an performance impact on the system with respect to a system that does not implement these mitigations. Since the Spectre and Meltdown vulnerabilities only violate the confidentiality property of secure systems, a system not subject to this requirement may consider disabling the mitigations to re-gain CPU performance.
Issue P00101-14593, Update of libpsp files handling in PSP projects The files from libpsp are now linked inside the libpsp directory of PSP projects. If a file need to be modified, the link can be manually replaced by a copy of the original file. The make process will not touch any real file in the libpsp directory. Link are automatically created to the right file (custom or universalisos pool) and are removed automatically during ’make distclean’.
Issue P00101-14700, x86 PSPs: fix compilation issues if PSP_MSI and PSP_PCI/PSP_LIBACPICA are not defined If PSP_MSI or PSP_PCI/PSP_LIBACPICA are not defined, x86 PSPs may not compile correctly.
Issue P00101-14749, x86: uefi64/uefi32 boot file name changed The UniversalisOS supports uefi64 and uefi32 boot strategy. These boot strategies have had hardcoded .efi suffix in the resulting boot file name. This was removed and the boot strategy file name is controlled solely by the user (see integration project Makefile).
Issue P00101-15122, [psp-p4080] SRAM not enabled SRAM should be configured by the bootloader. A parameter was added to keep the L3 configuration from the bootloader in the p4080/t4240 psps.
c Copyright 2019 19 All rights reserved. Portugal Futurista GmbH Release Notes
Issue P00101-15131, Invalid PCI domain not handled on PowerPC The PCI driver in the kernel/psp can have a kernel panic when used with an invalid domain in the PCI address.
Issue P00101-15227, x86: unsafe PSP access to the lapic IPI register Due to interrupt unsafe access to lapic IPI registers, some inter-process interrupts might be lost or delivered to wrong CPUs.
C.3 Known Problems
Issue P00101-7115, alt_tse_fp (4sgx230 network driver) does not work in 10/100 Mbit ethernet networks The network driver used in the 4sgx230 PSP is only capable of Gigabit Ethernet networking. If used in a 10/100Mbit switched network (or directly connected to a 10/100Mbit card) it won’t communicate.
Issue P00101-8751, [PDK] P4080/E500MC - missing libfdt The source code of libfdt was missing in the psp-p4080 demo.
Issue P00101-9149, rtl_fp network driver uses multicast addresses for virtual channels The rtl_fp network driver achieves it’s virtual channel functionality by using multicast MAC address filter programming. This means that for the virtual channels at index 1 and higher a multicast MAC address must be used which breaks IEEE 802.3 compliance. In dependece on a connected network infrastructure the outgoing traffic may be subsequently dropped.
Issue P00101-10230, PCI: libpsp PCI detection code may overflow the PCI devices array The libpsp PCI detection code may cause a write after the end of PCI devices array under special circumstances. The issue is triggered only if both conditions are met: 1) The system has more than 64 PCI devices 2) The last PCI device which still fits is a multifunction device When the issue is triggered arbitrary memory after the device list array is overwritten during PSP system startup.
Issue P00101-10834, [DPAA, T4240QDS, T2080QDS] Support SGMII Neither SGMII nor QSGMII is supported on the following boards: T4240QDS and T2080QDS. There are special cards available which only have the PHY chips on it; i.e. no MACs. These network cards are plugged into the PCI slot which use the SGMII protocol instead of the PCI protocol. These cards are not supported. It is recommended to disable SGMII and QSGMII in the RCW.
Issue P00101-10967, DPAA: reinitialization of dpaa_fp driver/Freescale NetComm SW is not supported The dpaa_fp driver/Freescale NetComm Software does not support reinitialization of an already set up hardware. Restarting the partition containing the dpaa_fp is therefore not supported.
Issue P00101-12333, Fixed drivers pl011_fp and kctrl_fp write timeout behaviour If a write call to one of the file providers timed out, P4_E_TIMEOUT was returned - thus discarding the number of bytes actually written out.
Issue P00101-12877, Cyclone V SoC Development Kit network not working after restart When the board is restarted the autonegotiation doesn’t work properly. This causes the boot loader to fail. This issue is out of scope of UniversalisOS. It is most like hardware or boot loader issue.
Issue P00101-12888, Zynq ZED: Dropped data when receiving from serial ser0:0 When receiving on Zynq ZED board UART some of the data might be lost. As to root cause of this problem was identified USB to UART on-board convertor.
Issue P00101-12988, vm_target_reset(VM_TARGET_REBOOT) does not work on Renesas R-Car boards After vm_target_reset(VM_TARGET_REBOOT) is issued, the board is not reseted. On these boards the reset is done via I2C bus and this is not supported by the current version of BSP.
Issue P00101-13098, Autonegotiation fails on t2080rdb Autonegotiation fails sometimes on t2080rdb, 100Mbit/s is selected instead of 1000MBit/s.
c Copyright 2019 20 All rights reserved. Portugal Futurista GmbH Release Notes
Issue P00101-13329, zcu102: ethernet driver supports 1Gbit/s link speed only Ethernet driver on Ultrascale platforms (ZCU102) supports only 1Gbit/s link speed.
Issue P00101-13558, Network drivers return non-conforming blksize value The blksize reported by network driver is not correct. The value reported in blksize (1522 in the most cases) inlcudes 8 bytes total for VLAN ID and frame checksum. The correct value for blksize should be the 1514 = 1500 + 12(MAC) + 2(type).
Issue P00101-14043, Multicast issues with felic and ravb network drivers Both felic and ravb network drivers might lose several frames (both multicast and unicast) if a multicast table is being updated.
Issue P00101-14058, NVIDIA Jetson Tegra K1 runs at low CPU frequency UniversalisOS does not switch the NVIDIA Jetson TK1 CPU to run at a higher frequency, thus the overall performance is less than the maximum capabilities of the system.
Issue P00101-14103, i.MX6 CPU frequency set to 792MHz by default CPU frequency was set to 792MHz during clock manager initialization on i.MX6 boards. If a different frequency is used by the bootloader, time can run slower of faster than expected.
Issue P00101-14625, DPAA cache stashing The DPAA DDK driver issues cache cache stashing in the first 128KB on ARM.
Issue P00101-14890, p4_my_cpuid() returns invalid CPU ID during NMI handling During a short time in context switching, p4_my_cpuid() returns an invalid CPU ID. This can be observed during NMI handling.
Issue P00101-15012, Hardware timer inaccurate on some LSxxxx ARMv8 boards On some NXP boards based on ARMv8 (LS2085 or LS1043 for example), the hardware timer might not be completely accurate and might go back in time. This can be worked around by masking the lower bits of the time (to only keep an accuracy around 100KHz).
c Copyright 2019 21 All rights reserved. Portugal Futurista GmbH Release Notes
D Previous Release 5.0 S5319 D.1 Enhancements introduced by this release
Issue P00101-12894, Kernel/PSP interface: current_uid() and current_prio() services are deprecated The services have been substituted by p4_my_uid() and p4_my_prio().
Issue P00101-13905, Fixed leaks of kernel memory from kernel drivers to userspace Leakage of kernel memory to userspace was fixed in the driver for console, the PCI manager and high level modules of BLK, CAN, CLK, DIO and SERIAL. Most of the fixes were related to handling of IOCTL commands with exception of console driver that had issue in read operation.
D.2 Problems fixed with this release
None.
D.3 Known Problems
Issue P00101-7115, alt_tse_fp (4sgx230 network driver) does not work in 10/100 Mbit ethernet networks The network driver used in the 4sgx230 PSP is only capable of Gigabit Ethernet networking. If used in a 10/100Mbit switched network (or directly connected to a 10/100Mbit card) it won’t communicate.
Issue P00101-8751, [PDK] P4080/E500MC - missing libfdt The source code of libfdt was missing in the psp-p4080 demo.
Issue P00101-9149, rtl_fp network driver uses multicast addresses for virtual channels The rtl_fp network driver achieves it’s virtual channel functionality by using multicast MAC address filter programming. This means that for the virtual channels at index 1 and higher a multicast MAC address must be used which breaks IEEE 802.3 compliance. In dependece on a connected network infrastructure the outgoing traffic may be subsequently dropped.
Issue P00101-10230, PCI: libpsp PCI detection code may overflow the PCI devices array The libpsp PCI detection code may cause a write after the end of PCI devices array under special circumstances. The issue is triggered only if both conditions are met: 1) The system has more than 64 PCI devices 2) The last PCI device which still fits is a multifunction device When the issue is triggered arbitrary memory after the device list array is overwritten during PSP system startup.
Issue P00101-10834, [DPAA, T4240QDS, T2080QDS] Support SGMII Neither SGMII nor QSGMII is supported on the following boards: T4240QDS and T2080QDS. There are special cards available which only have the PHY chips on it; i.e. no MACs. These network cards are plugged into the PCI slot which use the SGMII protocol instead of the PCI protocol. These cards are not supported. It is recommended to disable SGMII and QSGMII in the RCW.
Issue P00101-10967, DPAA: reinitialization of dpaa_fp driver/Freescale NetComm SW is not supported The dpaa_fp driver/Freescale NetComm Software does not support reinitialization of an already set up hardware. Restarting the partition containing the dpaa_fp is therefore not supported.
Issue P00101-12333, Fixed drivers pl011_fp and kctrl_fp write timeout behaviour If a write call to one of the file providers timed out, P4_E_TIMEOUT was returned - thus discarding the number of bytes actually written out.
Issue P00101-12877, Cyclone V SoC Development Kit network not working after restart When the board is restarted the autonegotiation doesn’t work properly. This causes the boot loader to fail. This issue is out of scope of UniversalisOS. It is most like hardware or boot loader issue.
c Copyright 2019 22 All rights reserved. Portugal Futurista GmbH Release Notes
Issue P00101-12888, Zynq ZED: Dropped data when receiving from serial ser0:0 When receiving on Zynq ZED board UART some of the data might be lost. As to root cause of this problem was identified USB to UART on-board convertor.
Issue P00101-12988, vm_target_reset(VM_TARGET_REBOOT) does not work on Renesas R-Car boards After vm_target_reset(VM_TARGET_REBOOT) is issued, the board is not reseted. On these boards the reset is done via I2C bus and this is not supported by the current version of BSP.
Issue P00101-13329, zcu102: ethernet driver supports 1Gbit/s link speed only Ethernet driver on Ultrascale platforms (ZCU102) supports only 1Gbit/s link speed.
Issue P00101-13555, AHCI driver: P4_E_BUSY on concurrent access or invalid buffer The AHCI driver could reject the IO request by returning P4_E_BUSY error if more than MAX_REQUESTS were issued concurrently. This behavior has been changed to block concurrent request until previous one finishes. Additionally an AHCI device could be permanently blocked by issuing IO request with invalid IO memory buffer. This issue is fixed now too.
Issue P00101-14043, Multicast issues with felic and ravb network drivers Both felic and ravb network drivers might lose several frames (both multicast and unicast) if a multicast table is being updated.
Issue P00101-14061, e1000 network driver: duplex changes not reported correctly ’Link is up ...’ messages printed by e1000 network driver on console might not report established duplex mode correctly.
Issue P00101-14103, i.MX6 CPU frequency set to 792MHz by default CPU frequency was set to 792MHz during clock manager initialization on i.MX6 boards. If a different frequency is used by the bootloader, time can run slower of faster than expected.
Issue P00101-14215, SRAM size should be configued to 0 on e5500 and e6500. As the SRAM configured is not correct for T1040, T4240 and T2080, the SRAM size should be configured to 0.
c Copyright 2019 23 All rights reserved. Portugal Futurista GmbH