What is Support Level Supplement (SLS) ptf9150h, the UnixWare 7 Definitive 2018 Supplement? Problems Fixed -------------- Note: By default, UnixWare 7 Definitive now halts if a panic is encountered. Please see the "Software Notes and Recommendations" section below for details. The following fixes were first provided with ptf9150a and are also contained in ptf9150h: 1. Fix an RD1000 panic. Systems using the AHCI device driver and an attached but empty Dell PowerVault RD1000 Removable Disk Storage device would panic on start up. To fix these panics requires both this escalation patch for the sd01 device driver and to use version 2.0a (or later) of the AHCI device driver. You can separately download that device driver or install it via patchck. The sd01 portion of the fix is to change a recursive loop to an iterative loop. The ahci portion of the fix is to resolve an event registration issue. OSR6-113 2. Fix a failure when configuring a Dell PowerVault RD1000 Removable Disk Storage hard disk. This error was encountered: ERROR: One or more of the DDB files are not present/corrupt/inaccessible. UX:ls:ERROR: Cannot access /dev/hba/hba*: no such file or directory. An incorrect data conversion was fixed. OSR6-124 The following fixes were first provided with ptf9150b and are also contained in ptf9150h: 3. Revise various header files to maintain the same behavior for the UDK compiled binaries while supporting definitions required by the new UnixWare 7 Definitive 2018 compiler. UW7-140 4. Avoid undefined WCHAR_MIN and WINT_MIN variables by setting defaults if these variables are not defined elsewhere. UW7-138 5. Add setenv and unsetenv declarations to stdlib.h. While undeclared functions default to int, modern compilers complain about the missing declarations. UW7-148 The following fixes were first provided with ptf9150c and are also contained in ptf9150h: 6. Add the ACPI reset command to avoid keyboard issues when using PS2_KEYBOARD=NO boot parameter. Previously the 8042 keyboard controller reset command was used in this scenario which resulted in a system hang. UW7-111 7. Update the mkdev.h header file to support different definitions for the UDK and the new development systems. UW7-155 The following fixes were first provided with ptf9150d and are also contained in ptf9150h: 8. Add support for installing UnixWare 7 Definitive 2018 under the KVM hypervisor on the Linux operating system. UW7-156 9. Provide a new boot parameter, PANICHALT. When set to Y the system halts on panic and requires hard reboot instead of automatically shutting down or rebooting. The default is Y. If set to N then the system behaves as per the PANICBOOT settings. OSR6-172 10. Fix a bug in the interpretation of ACPI configuration tables. fz536069:4 ptf9150e was used for Xinuos development of ptf9150f; ptf9150e was not publicly released. The following fixes were first provided with ptf9150f and are also contained in ptf9150h: 11. Added the -N option to the passwd command. This option disables password login on the account and allows logins via SSH public key(s). UW7-172 12. Fixed a UnixWare 7 Definitive 2018 NFS bug so that UnixWare now lists directory contents of mounted NFS shares that are larger than two terabytes. UW7-127 13. Additional revisions to header files and libraries to correct some of the stdio helper functions. These functions were provided in prior releases to aid in open source porting. This PTF modifies: __freadable() __fwritable() __fbufsiz() should have been __fbufsize() This fix is provided partially by this PTF and partially by an updated libc package (version 8.0.2g or later). Note that the libc package, once installed, cannot be back revved to an earlier version. Your applications will work correctly with just the new libc or just PTF9150f (or later). However, the development system will be out of sync. UW7-173 The following fixes were first provided with ptf9150g and its sibling libc package. The ptf9150g fixes are also contained in ptf9150h: 14. This PTF should be installed with the latest libc package. libc was updated in parallel with PTF 9150 version G to provide this additional fix: Corrected LD_PRELOAD so, when used, loads the libraries set by LD_PRELOAD prior to any other libraries, including libc.so.1. UW7-183 15. Updated the /usr/include/strings.h file to make visible some declarations that were previously hidden from the Xinuos gcc compiler. UW7-138 16. Fixed incorrect pkgadd warning messages that were displayed when adding packages that contain linked files. Also did minor source code consolidation to synchronize the UnixWare 7 Definitive and Open Server 6 Definitive packaging tools (pkg* commands). UW7-143 17. Added the nologin command. nologin provides a disabled shell security mechanism for UNIX daemon accounts. For more information, after installation run: man nologin UW7-193 18. Added the whereis command for locating binaries and manual pages. For more information, after installation run: man whereis UW7-193 19. Fixed an /sbin/rc0 typo where the _AUTOKILL variable was misspelled as AUTOKILL, if this line of the RC script was not already updated. The postinstall script checks for three tabs followed by AUTOKILL=true and, only if this is found, is this file updated. This typo is not restored upon package removal. UW7-184 20. Added IF_NAMESIZE to the /usr/include/net/if.h file, per the IEEE Standard 1003.1-2017, https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/net_if.h.html UW7-146 ptf9150h also provides the following fixes: 21. Provided in parallel with ptf9150h, avoid a system hang in version 2.0b of the AHCI device driver when running a virtual machine under KVM. UW7-161 22. Improved the hyper-visor detection code and updated the hw command to show if the instance is running as a virtual machine. UW7-162 23. Avoid null pointers which can otherwise cause hangs during ISL. UW7-164 24. Integrated Kernel Memory Debugging Tool (kmdt) and an updated crash utility. The kmdt is integrated into the kernel but must be enabled before use, as described in the Software Notes and Recommendations sction below. UW7-186 25. The getprogname and setprogname functions are now in libc. Also cleaned up typdef redeclaration error. UW7-146 26. Added missing data types to the types.h header file. UW7-208 27. Modified these utilities to be large-file aware: awk comm copy cut dd egrep ex fgrep fold grep hd head in.tftpd join nawk od paste pr sed sort split tail tftp uniq wc what UW7-178 28. Modified the dd command to accept arguments larger than 2147483647. UW7-178 29. Modified the tail command to handle more than 64K lines. UW7-178 30. Fix vi "Internal error: vredraw" on long lines error. Also added vi support for 300 x 300 screens and 32K line lengths. UW7-179 31. DHCP updates to facilitate DHCP functioning correctly when selected during ISL. UW7-191 32. Reset these kernel tunables if they were set to a lower value: MAXLINK to 32767 and FLCKREC to 16000. UW7-211 33. SSH host key fingerprints are now displayed on the console shortly after boot is complete. Run defadm ssh-host-key-fingerprints to see the configuration options. UW7-199 Contents -------- /etc/conf/interface.d/psm.2.3 /etc/conf/mdevice.d/psm_acpi /etc/conf/pack.d/acpi/Driver_atup.o /etc/conf/pack.d/acpi/Driver_mp.o /etc/conf/pack.d/atup/Driver_atup.o /etc/conf/pack.d/atup/Driver_mp.o /etc/conf/pack.d/inet/Driver_atup.o /etc/conf/pack.d/inet/Driver_mp.o /etc/conf/pack.d/kma/Driver_atup.o /etc/conf/pack.d/kma/Driver_mp.o /etc/conf/pack.d/kma/space.c /etc/conf/pack.d/mod/Driver_atup.o /etc/conf/pack.d/mod/Driver_mp.o /etc/conf/pack.d/mps/Driver_mp.o /etc/conf/pack.d/nfs/Driver_atup.o /etc/conf/pack.d/nfs/Driver_mp.o /etc/conf/pack.d/pci/Driver_atup.o /etc/conf/pack.d/pci/Driver_mp.o /etc/conf/pack.d/proc/Driver_atup.o /etc/conf/pack.d/proc/Driver_mp.o /etc/conf/pack.d/psm_acpi/Driver_atup.o /etc/conf/pack.d/psm_acpi/Driver_mp.o /etc/conf/pack.d/psm_apic/Driver_mp.o /etc/conf/pack.d/psm_cfgtables/Driver_atup.o /etc/conf/pack.d/psm_cfgtables/Driver_mp.o /etc/conf/pack.d/sc01/Driver.o /etc/conf/pack.d/sd01/Driver.o /etc/conf/pack.d/svc/Driver_atup.o /etc/conf/pack.d/svc/Driver_mp.o /etc/conf/pack.d/util/Driver_atup.o /etc/conf/pack.d/util/Driver_mp.o /etc/conf/sdevice.d/psm_acpi /etc/copyrights/z_ptf9150 /etc/default/ssh-host-key-fingerprints /etc/expirewarning /etc/hw /etc/inet/dhcpc/hosts /etc/inet/dhcpc/opt /etc/license/deutsch/eula.html /etc/license/deutsch/eula.txt /etc/license/english/eula.html /etc/license/english/eula.txt /etc/license/espanol/eula.html /etc/license/espanol/eula.txt /etc/license/francais/eula.html /etc/license/francais/eula.txt /etc/license/japanese/eula.mht /etc/license/japanese/eula.txt /etc/licenseMgr /etc/rc.d/ssh-host-key-fingerprints /etc/rc0 /etc/rc6 /sbin/dd /sbin/md5 /sbin/nologin /sbin/rc0 /stand/bootmsgs /usr/bin/awk /usr/bin/comm /usr/bin/copy /usr/bin/cut /usr/bin/dd /usr/bin/edit /usr/bin/egrep /usr/bin/ex /usr/bin/fgrep /usr/bin/fold /usr/bin/grep /usr/bin/hd /usr/bin/head /usr/bin/join /usr/bin/md5 /usr/bin/nawk /usr/bin/od /usr/bin/passwd /usr/bin/paste /usr/bin/pkginfo /usr/bin/pkgmk /usr/bin/pkgparam /usr/bin/pkgproto /usr/bin/pkgtrans /usr/bin/pr /usr/bin/sed /usr/bin/sort /usr/bin/split /usr/bin/tail /usr/bin/tftp /usr/bin/uniq /usr/bin/vedit /usr/bin/vi /usr/bin/view /usr/bin/wc /usr/bin/what /usr/bin/whereis /usr/ccs/bin/what /usr/ccs/lib/libc.a /usr/ccs/lib/libc.so /usr/ccs/lib/libp/libc.a /usr/ccs/lib/libp/libc.so /usr/ccs/lib/libp/libc.so.1 /usr/include/CC/cstdio /usr/include/CC/iostream.h /usr/include/CC/yvals.h /usr/include/ctype.h /usr/include/dirent.h /usr/include/fcntl.h /usr/include/float.h /usr/include/inttypes.h /usr/include/limits.h /usr/include/math.h /usr/include/net/bpf.h /usr/include/net/if.h /usr/include/pthread.h /usr/include/setjmp.h /usr/include/signal.h /usr/include/stdarg.h /usr/include/stdint.h /usr/include/stdio.h /usr/include/stdlib.h /usr/include/string.h /usr/include/strings.h /usr/include/sys/cdefs.h /usr/include/sys/kmem.h /usr/include/sys/mkdev.h /usr/include/sys/privilege.h /usr/include/sys/psm.h /usr/include/sys/resource.h /usr/include/sys/sockio.h /usr/include/sys/stat.h /usr/include/sys/time.h /usr/include/sys/types.h /usr/include/tcpd.h /usr/include/time.h /usr/include/unistd.h /usr/include/varargs.h /usr/include/vm/kma_p.h /usr/include/wchar.h /usr/lib/drf/conframdfs /usr/lib/drf/mini_kernel /usr/lib/expreserve /usr/lib/exrecover /usr/lib/libiaf.a /usr/lib/libiaf.so /usr/lib/locale/C/LC_MESSAGES/bootmsgs /usr/lib/locale/de/LC_MESSAGES/bootmsgs /usr/lib/locale/de/LC_MESSAGES/sa/licenseMgr.cat /usr/lib/locale/de/LC_MESSAGES/sco_pmd.cat /usr/lib/locale/de_AT/LC_MESSAGES/sco_pmd.cat /usr/lib/locale/de_CH/LC_MESSAGES/sco_pmd.cat /usr/lib/locale/de_DE/LC_MESSAGES/sco_pmd.cat /usr/lib/locale/es/LC_MESSAGES/bootmsgs /usr/lib/locale/es/LC_MESSAGES/sa/licenseMgr.cat /usr/lib/locale/es/LC_MESSAGES/sco_pmd.cat /usr/lib/locale/es_AR/LC_MESSAGES/sco_pmd.cat /usr/lib/locale/es_CL/LC_MESSAGES/sco_pmd.cat /usr/lib/locale/es_ES/LC_MESSAGES/sco_pmd.cat /usr/lib/locale/es_MX/LC_MESSAGES/sco_pmd.cat /usr/lib/locale/es_VE/LC_MESSAGES/sco_pmd.cat /usr/lib/locale/fr/LC_MESSAGES/bootmsgs /usr/lib/locale/fr/LC_MESSAGES/sa/licenseMgr.cat /usr/lib/locale/fr/LC_MESSAGES/sco_pmd.cat /usr/lib/locale/fr_BE/LC_MESSAGES/sco_pmd.cat /usr/lib/locale/fr_CA/LC_MESSAGES/sco_pmd.cat /usr/lib/locale/fr_CH/LC_MESSAGES/sco_pmd.cat /usr/lib/locale/fr_FR/LC_MESSAGES/sco_pmd.cat /usr/lib/locale/ja/LC_MESSAGES/sa/licenseMgr.cat /usr/lib/locale/ja/LC_MESSAGES/sco_pmd.cat /usr/lib/locale/ja_JP.EUC/LC_MESSAGES/sco_pmd.cat /usr/lib/locale/ja_JP/LC_MESSAGES/sco_pmd.cat /usr/lib/netcfg/init/tcp /usr/lib/scoadmin/license/licenseMgr /usr/lib/scoadmin/msg/de/licenseMgr.cat /usr/lib/scoadmin/msg/es/licenseMgr.cat /usr/lib/scoadmin/msg/fr/licenseMgr.cat /usr/lib/scoadmin/msg/ja/licenseMgr.cat /usr/lib/scoadmin/netosa/ncmOsa /usr/man/cat1/whereis.1 /usr/man/cat8/nologin.8 /usr/man/html.1/passwd.1.html /usr/man/man1/whereis.1 /usr/man/man8/nologin.8 /usr/sadm/install/bin/mergcont /usr/sadm/install/bin/pkginstall /usr/sadm/install/bin/pkgremove /usr/sbin/brand /usr/sbin/crash /usr/sbin/in.dhcpc /usr/sbin/in.tftpd /usr/sbin/installf /usr/sbin/nologin /usr/sbin/pkgadd /usr/sbin/pkgask /usr/sbin/pkgchk /usr/sbin/pkgrm /usr/sbin/removef /usr/sbin/sco_pmd Software Notes and Recommendations ---------------------------------- 1. ptf9150 should only be installed on: UnixWare 7 Definitive 2018 (D2M1) 2. If your system has an AHCI controller, you should also install the revised AHCI device driver (version 2.0b or later). 3. To use a Xinuos development system with this PTF, you also need to install an updated libc package (version 8.0.2g or later). Note that the libc package, once installed, cannot be back revved to an earlier version. Your applications will work correctly with just the new libc or just PTF9150f (or later). However, the development systems will be out of sync. 4. ptf9150h can be installed on UnixWare 7 Definitive 2018 with ptf9150 (any version) already installed. However, removal of ptf9150 (version h) will remove all prior versions and restore the original UnixWare 7 Definitive 2018 binaries. 5. If you participated in the UnixWare 7/OpenServer 6 Definitive 2018 Development System Update Alpha program, p600000 must be removed before applying this patch. 6. Starting with ptf9150d: By default, systems now halt on panic instead of shutting down or rebooting. If you prefer that the system either shuts down or reboots on panic, set the new PANICHALT variable to N and set PANICBOOT accordingly. 7. If you pkgadd and pkgrm this pakage, some language catalogs whose symlinks were previously broken have those symlinks restored. This means the correct catalog is now displayed. KMDT Notes ---------- 8. The new kmdt tool in the kma device driver supports the following levels of instrumentation (debugging levels): Level Instrumentation 0 Default (no instrumentation) 1 KMDT_STATS 2 KMDT_HIST|KMDT_STATS 3 KMDT_PARANOID|KMDT_HIST|KMDT_STATS 4 KMDT_POISON|KMDT_PARANOID|KMDT_HIST|KMDT_STATS 5 KMDT_EXTREME_PARANOID|KMDT_HIST|KMDT_STATS 6 KMDT_EXTREME_PARANOID|KMDT_POISON|KMDT_HIST|KMDT_STATS The instrumentation settings above are described in note #10 below. As the levels are increased, more compute (physical and virtual memory) resources are consumed. This may change the timing of the application or kernel conditions causing the panic. 9. To change the level of instrumentation, set KMDT_INSTR_LEVEL in /stand/boot file and reboot. Or reboot, press space at the splash screen, and set the instrumentation level like in this example: [boot] KMDT_INSTR_LEVEL=3 [boot] boot Remember, set to 0 for no instrumentation. 10. Each level above is a combination of a particular KMDT functionality to debug a certain type of memory related issues. As mentioned above, each increasing level is going to stress the system more in terms of resources. The KMDT functionality values in #8 are defined next: KMEM_STATS KMA statistical information is organized into two tables. The SIZES table holds the number of bytes "owned" (allocated but not freed) for each size. The INVOCATIONS table holds the number of invocations of kma_alloc or kma_free for each size and for each invocation point, where an invocation point is a return address from where kma_alloc or kma_free is called. Each entry in the SIZES table is linked to the chain of corresponding INVOCATIONS entries. KMEM_HIST KMA history information is gathered primarily for the purpose of finding undisciplined users of kmem_alloc/kmem_free. The last KMA_HIST_MAX calls to kmem_alloc/kmem_zalloc, and kmem_free are recorded in the kma_hist_buffer. KMDT_PARANOID This is the basic functionality to catch memory corruption. This writes MAGIC at the beginning of the freed memory and TMAGIC to the tail of allocated memory, and checks if the same has been corrupted at time of free or re-allocation. KMA_EXTREME_PARANOID, kma_xminbufsz, kma_xmaxbufsz The kma_xminbufsz controls the minimum (or start) buffer size and kma_xmaxbufsz controls the maximum (or end) buffer size to be tracked for memory corruption. Any buffer size requested within the range is allocated in unit of a page. The page is freed when the buffer is released. This enables us to track memory corruption within a buffer after it is released. If a fixed size buffer needs to be tracked, set kma_xminbufsz to kma_xmaxbufsz. The kma_xminbufsz and kma_xmaxbufsz should not be greater than MAXBUFSZ ; that is, 8192 bytes. Please note that the default value of kma_xminbufsz, k ma_xmaxbufsz is 0 which means KMA_EXTREME_PARANOID as no effect. So, if you want to enable KMA_EXTREME_PARANOID via level 5 or 6 then we need to set these two values. KMA_POISON As you can see from above instrumentation levels in #8, KMA_POISON is only enabled either with KMA_PARANOID or KMA_EXTREME_PARANOID. With KMA_PARANOID this will write MAGIC and TMAGIC to all memory except of few bytes, as in case if only kKMA_PARANOID is enabled. At the time of allocation or free, the unused buffer space is checked for MAGIC string. This considerably slows down memory allocation and frees and may disrupt timing of the problem being investigated. With KMA_EXTREME_PARANOID an extra virtual page is allocated to track out-of-bound memory access. 11. This patch also provides crash utility. Useful crash commands include kmastat and kmahist. 12. There are three new tuneables defined in /etc/conf/pack.d/kma/space.c : kma_sizes kma_hist_max kma_invocs Please note the default values for these tuneables in space.c is 0 because the kma driver code during initialization will allocate certain amount of memory for each of the tables/buffer. If you need to overwrite then please update these variables, rebuild the kernel, and reboot. The default sizes are: * 14983 entries for the size table; * 29989 entries for the invocation table; and * 100000 entries for the history log buffer. Installation Instructions ------------------------- Either use patchck to install this escalation fix or follow the following procedure: 1. Download the ptf9150h.image file to the /tmp directory on your machine. 2. As root, add the package to your system using these commands: $ su - Password: # pkgadd -d /tmp/ptf9150h.image Alternatively, this package may be installed in quiet mode by using these commands: $ su - Password: # pkgadd -qd /tmp/ptf9150h.image all 3. Reboot the system after installing this package. Removal Instructions -------------------- 1. As root, remove the package using these commands: $ su - Password: # pkgrm ptf9150 2. Reboot the system after removing this package. If you have questions regarding this supplement, or the product on which it is installed, please contact your software supplier. ----------------------------------------------------- (C) Copyright 2022 Xinuos, Inc. All rights reserved.