From owner-svn-src-projects@freebsd.org Tue Jul 30 04:17:42 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id B7398C01FB for ; Tue, 30 Jul 2019 04:17:42 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id A2B3E8A470; Tue, 30 Jul 2019 04:17:42 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 63087B528; Tue, 30 Jul 2019 04:17:42 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x6U4Hg2b068698; Tue, 30 Jul 2019 04:17:42 GMT (envelope-from asomers@FreeBSD.org) Received: (from asomers@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x6U4Hbji068672; Tue, 30 Jul 2019 04:17:37 GMT (envelope-from asomers@FreeBSD.org) Message-Id: <201907300417.x6U4Hbji068672@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: asomers set sender to asomers@FreeBSD.org using -f From: Alan Somers Date: Tue, 30 Jul 2019 04:17:37 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r350435 - in projects/fuse2: include lib/libarchive/tests lib/libc/stdio sbin/camcontrol sbin/nvmecontrol share/man/man4 sys/arm/ti sys/arm/ti/cpsw sys/arm64/arm64 sys/arm64/conf sys/co... X-SVN-Group: projects X-SVN-Commit-Author: asomers X-SVN-Commit-Paths: in projects/fuse2: include lib/libarchive/tests lib/libc/stdio sbin/camcontrol sbin/nvmecontrol share/man/man4 sys/arm/ti sys/arm/ti/cpsw sys/arm64/arm64 sys/arm64/conf sys/compat/freebsd32 sys/conf s... X-SVN-Commit-Revision: 350435 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Rspamd-Queue-Id: A2B3E8A470 X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.98 / 15.00]; local_wl_from(0.00)[FreeBSD.org]; NEURAL_HAM_MEDIUM(-1.00)[-0.996,0]; NEURAL_HAM_SHORT(-0.98)[-0.982,0]; NEURAL_HAM_LONG(-1.00)[-1.000,0]; ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US] X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 30 Jul 2019 04:17:42 -0000 Author: asomers Date: Tue Jul 30 04:17:36 2019 New Revision: 350435 URL: https://svnweb.freebsd.org/changeset/base/350435 Log: MFHead @350426 Sponsored by: The FreeBSD Foundation Added: projects/fuse2/sys/dev/altera/dwc/ - copied from r350426, head/sys/dev/altera/dwc/ Modified: projects/fuse2/include/stdlib.h projects/fuse2/lib/libarchive/tests/Makefile projects/fuse2/lib/libc/stdio/Makefile.inc projects/fuse2/lib/libc/stdio/Symbol.map projects/fuse2/lib/libc/stdio/mktemp.3 projects/fuse2/lib/libc/stdio/mktemp.c projects/fuse2/sbin/camcontrol/camcontrol.c projects/fuse2/sbin/camcontrol/timestamp.c projects/fuse2/sbin/nvmecontrol/identify_ext.c projects/fuse2/share/man/man4/cc_dctcp.4 projects/fuse2/sys/arm/ti/cpsw/if_cpsw.c projects/fuse2/sys/arm/ti/ti_hwmods.c projects/fuse2/sys/arm64/arm64/pmap.c projects/fuse2/sys/arm64/conf/GENERIC projects/fuse2/sys/compat/freebsd32/freebsd32_capability.c projects/fuse2/sys/conf/files.arm64 projects/fuse2/sys/dev/bhnd/nvram/bhnd_nvram_data_tlv.c projects/fuse2/sys/dev/bhnd/nvram/bhnd_nvram_store.c projects/fuse2/sys/dev/bhnd/nvram/bhnd_nvram_value.c projects/fuse2/sys/dev/bhnd/nvram/bhnd_nvram_value_prf.c projects/fuse2/sys/dev/drm2/drmP.h projects/fuse2/sys/dev/mii/micphy.c projects/fuse2/sys/dev/nvme/nvme.h projects/fuse2/sys/dev/usb/net/if_urndis.c projects/fuse2/sys/fs/devfs/devfs_vnops.c projects/fuse2/sys/fs/ext2fs/ext2_vnops.c projects/fuse2/sys/fs/fuse/fuse_vnops.c projects/fuse2/sys/kern/kern_event.c projects/fuse2/sys/kern/kern_sendfile.c projects/fuse2/sys/kern/kern_sig.c projects/fuse2/sys/kern/sys_process.c projects/fuse2/sys/kern/uipc_shm.c projects/fuse2/sys/mips/broadcom/bhnd_nexus.c projects/fuse2/sys/netinet/cc/cc_dctcp.c projects/fuse2/sys/netpfil/ipfw/ip_fw2.c projects/fuse2/sys/netpfil/ipfw/ip_fw_eaction.c projects/fuse2/sys/netpfil/ipfw/ip_fw_nat.c projects/fuse2/sys/netpfil/ipfw/ip_fw_private.h projects/fuse2/sys/netpfil/ipfw/ip_fw_sockopt.c projects/fuse2/sys/netpfil/pf/pf.c projects/fuse2/sys/netpfil/pf/pf_norm.c projects/fuse2/sys/riscv/riscv/copyinout.S projects/fuse2/sys/rpc/svc_vc.c projects/fuse2/sys/sys/ata.h projects/fuse2/sys/vm/swap_pager.c projects/fuse2/usr.bin/nfsstat/nfsstat.c projects/fuse2/usr.bin/printf/printf.1 Directory Properties: projects/fuse2/ (props changed) Modified: projects/fuse2/include/stdlib.h ============================================================================== --- projects/fuse2/include/stdlib.h Tue Jul 30 03:32:39 2019 (r350434) +++ projects/fuse2/include/stdlib.h Tue Jul 30 04:17:36 2019 (r350435) @@ -297,6 +297,7 @@ int mergesort_b(void *, size_t, size_t, int (^)(const #endif int mkostemp(char *, int); int mkostemps(char *, int, int); +int mkostempsat(int, char *, int, int); void qsort_r(void *, size_t, size_t, void *, int (*)(void *, const void *, const void *)); int radixsort(const unsigned char **, int, const unsigned char *, Modified: projects/fuse2/lib/libarchive/tests/Makefile ============================================================================== --- projects/fuse2/lib/libarchive/tests/Makefile Tue Jul 30 03:32:39 2019 (r350434) +++ projects/fuse2/lib/libarchive/tests/Makefile Tue Jul 30 04:17:36 2019 (r350435) @@ -581,7 +581,6 @@ ${PACKAGE}FILES+= test_read_format_zip_jar.jar.uu ${PACKAGE}FILES+= test_read_format_zip_length_at_end.zip.uu ${PACKAGE}FILES+= test_read_format_zip_lzma_alone_leak.zipx.uu ${PACKAGE}FILES+= test_read_format_zip_lzma.zipx.uu -${PACKAGE}FILES+= test_read_format_zip_lzma.zipx.uu ${PACKAGE}FILES+= test_read_format_zip_lzma_multi.zipx.uu ${PACKAGE}FILES+= test_read_format_zip_mac_metadata.zip.uu ${PACKAGE}FILES+= test_read_format_zip_malformed1.zip.uu Modified: projects/fuse2/lib/libc/stdio/Makefile.inc ============================================================================== --- projects/fuse2/lib/libc/stdio/Makefile.inc Tue Jul 30 03:32:39 2019 (r350434) +++ projects/fuse2/lib/libc/stdio/Makefile.inc Tue Jul 30 04:17:36 2019 (r350435) @@ -63,7 +63,7 @@ MLINKS+=getc.3 fgetc.3 getc.3 getc_unlocked.3 getc.3 g MLINKS+=getline.3 getdelim.3 MLINKS+=getwc.3 fgetwc.3 getwc.3 getwchar.3 MLINKS+=mktemp.3 mkdtemp.3 mktemp.3 mkstemp.3 mktemp.3 mkstemps.3 \ - mktemp.3 mkostemp.3 mktemp.3 mkostemps.3 + mktemp.3 mkostemp.3 mktemp.3 mkostemps.3 mktemp.3 mkostempsat.3 MLINKS+=open_memstream.3 open_wmemstream.3 MLINKS+=printf.3 asprintf.3 printf.3 dprintf.3 printf.3 fprintf.3 \ printf.3 snprintf.3 printf.3 sprintf.3 \ Modified: projects/fuse2/lib/libc/stdio/Symbol.map ============================================================================== --- projects/fuse2/lib/libc/stdio/Symbol.map Tue Jul 30 03:32:39 2019 (r350434) +++ projects/fuse2/lib/libc/stdio/Symbol.map Tue Jul 30 04:17:36 2019 (r350435) @@ -171,6 +171,10 @@ FBSD_1.5 { gets_s; }; +FBSD_1.6 { + mkostempsat; +}; + FBSDprivate_1.0 { _flockfile; _flockfile_debug_stub; Modified: projects/fuse2/lib/libc/stdio/mktemp.3 ============================================================================== --- projects/fuse2/lib/libc/stdio/mktemp.3 Tue Jul 30 03:32:39 2019 (r350434) +++ projects/fuse2/lib/libc/stdio/mktemp.3 Tue Jul 30 04:17:36 2019 (r350435) @@ -28,7 +28,7 @@ .\" @(#)mktemp.3 8.1 (Berkeley) 6/4/93 .\" $FreeBSD$ .\" -.Dd August 8, 2013 +.Dd July 29, 2019 .Dt MKTEMP 3 .Os .Sh NAME @@ -46,6 +46,8 @@ .Fn mkostemp "char *template" "int oflags" .Ft int .Fn mkostemps "char *template" "int suffixlen" "int oflags" +.Ft int +.Fn mkostempsat "int dfd" "char *template" "int suffixlen" "int oflags" .Ft char * .Fn mkdtemp "char *template" .In unistd.h @@ -126,6 +128,21 @@ function are told the length of the suffix string. .Pp The +.Fn mkostempsat +function acts the same as +.Fn mkostemps +but takes an additional directory descriptor as a parameter. +The temporary file is created relative to the corresponding +directory, or to the current working directory if the special +value +.Dv AT_FDCWD +is specified. +If the template path is an absolute path, the +.Fa dfd +parameter is ignored and the behavior is identical to +.Fn mkostemps . +.Pp +The .Fn mkdtemp function makes the same replacement to the template as in .Fn mktemp @@ -262,9 +279,10 @@ and is not specified by .St -p1003.1-2008 . The .Fn mkostemp , -.Fn mkstemps -and +.Fn mkstemps , .Fn mkostemps +and +.Fn mkostempsat functions do not conform to any standard. .Sh HISTORY A @@ -293,6 +311,10 @@ and .Fn mkostemps functions appeared in .Fx 10.0 . +The +.Fn mkostempsat +function appeared in +.Fx 13.0 . .Sh BUGS This family of functions produces filenames which can be guessed, though the risk is minimized when large numbers of @@ -308,10 +330,11 @@ and opening it for use (later in the user application) particularly dangerous from a security perspective. Whenever it is possible, -.Fn mkstemp -or +.Fn mkstemp , .Fn mkostemp -should be used instead, since it does not have the race condition. +or +.Fn mkostempsat +should be used instead, since they do not have the race condition. If .Fn mkstemp cannot be used, the filename created by Modified: projects/fuse2/lib/libc/stdio/mktemp.c ============================================================================== --- projects/fuse2/lib/libc/stdio/mktemp.c Tue Jul 30 03:32:39 2019 (r350434) +++ projects/fuse2/lib/libc/stdio/mktemp.c Tue Jul 30 04:17:36 2019 (r350435) @@ -49,17 +49,25 @@ __FBSDID("$FreeBSD$"); char *_mktemp(char *); -static int _gettemp(char *, int *, int, int, int); +static int _gettemp(int, char *, int *, int, int, int); static const unsigned char padchar[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; int +mkostempsat(int dfd, char *path, int slen, int oflags) +{ + int fd; + + return (_gettemp(dfd, path, &fd, 0, slen, oflags) ? fd : -1); +} + +int mkostemps(char *path, int slen, int oflags) { int fd; - return (_gettemp(path, &fd, 0, slen, oflags) ? fd : -1); + return (_gettemp(AT_FDCWD, path, &fd, 0, slen, oflags) ? fd : -1); } int @@ -67,7 +75,7 @@ mkstemps(char *path, int slen) { int fd; - return (_gettemp(path, &fd, 0, slen, 0) ? fd : -1); + return (_gettemp(AT_FDCWD, path, &fd, 0, slen, 0) ? fd : -1); } int @@ -75,7 +83,7 @@ mkostemp(char *path, int oflags) { int fd; - return (_gettemp(path, &fd, 0, 0, oflags) ? fd : -1); + return (_gettemp(AT_FDCWD, path, &fd, 0, 0, oflags) ? fd : -1); } int @@ -83,19 +91,19 @@ mkstemp(char *path) { int fd; - return (_gettemp(path, &fd, 0, 0, 0) ? fd : -1); + return (_gettemp(AT_FDCWD, path, &fd, 0, 0, 0) ? fd : -1); } char * mkdtemp(char *path) { - return (_gettemp(path, (int *)NULL, 1, 0, 0) ? path : (char *)NULL); + return (_gettemp(AT_FDCWD, path, (int *)NULL, 1, 0, 0) ? path : (char *)NULL); } char * _mktemp(char *path) { - return (_gettemp(path, (int *)NULL, 0, 0, 0) ? path : (char *)NULL); + return (_gettemp(AT_FDCWD, path, (int *)NULL, 0, 0, 0) ? path : (char *)NULL); } __warn_references(mktemp, @@ -108,7 +116,7 @@ mktemp(char *path) } static int -_gettemp(char *path, int *doopen, int domkdir, int slen, int oflags) +_gettemp(int dfd, char *path, int *doopen, int domkdir, int slen, int oflags) { char *start, *trv, *suffp, *carryp; char *pad; @@ -155,7 +163,7 @@ _gettemp(char *path, int *doopen, int domkdir, int sle for (; trv > path; --trv) { if (*trv == '/') { *trv = '\0'; - rval = stat(path, &sbuf); + rval = fstatat(dfd, path, &sbuf, 0); *trv = '/'; if (rval != 0) return (0); @@ -168,11 +176,11 @@ _gettemp(char *path, int *doopen, int domkdir, int sle } } + oflags |= O_CREAT | O_EXCL | O_RDWR; for (;;) { if (doopen) { - if ((*doopen = - _open(path, O_CREAT|O_EXCL|O_RDWR|oflags, 0600)) >= - 0) + *doopen = _openat(dfd, path, oflags, 0600); + if (*doopen >= 0) return (1); if (errno != EEXIST) return (0); Modified: projects/fuse2/sbin/camcontrol/camcontrol.c ============================================================================== --- projects/fuse2/sbin/camcontrol/camcontrol.c Tue Jul 30 03:32:39 2019 (r350434) +++ projects/fuse2/sbin/camcontrol/camcontrol.c Tue Jul 30 04:17:36 2019 (r350435) @@ -1521,6 +1521,7 @@ atacapprint(struct ata_params *parm) printf("WWN %04x%04x%04x%04x\n", parm->wwn[0], parm->wwn[1], parm->wwn[2], parm->wwn[3]); } + printf("additional product id %.8s\n", parm->product_id); if (parm->enabled.extension & ATA_SUPPORT_MEDIASN) { printf("media serial number %.30s\n", parm->media_serial); @@ -1650,35 +1651,39 @@ atacapprint(struct ata_params *parm) } else printf("\n"); printf("Native Command Queuing (NCQ) "); - if (parm->satacapabilities != 0xffff && - (parm->satacapabilities & ATA_SUPPORT_NCQ)) { + if (atasata(parm) && (parm->satacapabilities & ATA_SUPPORT_NCQ)) { printf("yes %d tags\n", ATA_QUEUE_LEN(parm->queue) + 1); + printf("NCQ Priority Information %s\n", + parm->satacapabilities & ATA_SUPPORT_NCQ_PRIO ? + "yes" : "no"); + printf("NCQ Non-Data Command %s\n", + parm->satacapabilities2 & ATA_SUPPORT_NCQ_NON_DATA ? + "yes" : "no"); + printf("NCQ Streaming %s\n", + parm->satacapabilities2 & ATA_SUPPORT_NCQ_STREAM ? + "yes" : "no"); + printf("Receive & Send FPDMA Queued %s\n", + parm->satacapabilities2 & ATA_SUPPORT_RCVSND_FPDMA_QUEUED ? + "yes" : "no"); + printf("NCQ Autosense %s\n", + parm->satasupport & ATA_SUPPORT_NCQ_AUTOSENSE ? + "yes" : "no"); } else printf("no\n"); - printf("NCQ Queue Management %s\n", atasata(parm) && - parm->satacapabilities2 & ATA_SUPPORT_NCQ_QMANAGEMENT ? - "yes" : "no"); - printf("NCQ Streaming %s\n", atasata(parm) && - parm->satacapabilities2 & ATA_SUPPORT_NCQ_STREAM ? - "yes" : "no"); - printf("Receive & Send FPDMA Queued %s\n", atasata(parm) && - parm->satacapabilities2 & ATA_SUPPORT_RCVSND_FPDMA_QUEUED ? - "yes" : "no"); - printf("SMART %s %s\n", parm->support.command1 & ATA_SUPPORT_SMART ? "yes" : "no", parm->enabled.command1 & ATA_SUPPORT_SMART ? "yes" : "no"); - printf("microcode download %s %s\n", - parm->support.command2 & ATA_SUPPORT_MICROCODE ? "yes" : "no", - parm->enabled.command2 & ATA_SUPPORT_MICROCODE ? "yes" : "no"); printf("security %s %s\n", parm->support.command1 & ATA_SUPPORT_SECURITY ? "yes" : "no", parm->enabled.command1 & ATA_SUPPORT_SECURITY ? "yes" : "no"); printf("power management %s %s\n", parm->support.command1 & ATA_SUPPORT_POWERMGT ? "yes" : "no", parm->enabled.command1 & ATA_SUPPORT_POWERMGT ? "yes" : "no"); + printf("microcode download %s %s\n", + parm->support.command2 & ATA_SUPPORT_MICROCODE ? "yes" : "no", + parm->enabled.command2 & ATA_SUPPORT_MICROCODE ? "yes" : "no"); printf("advanced power management %s %s", parm->support.command2 & ATA_SUPPORT_APM ? "yes" : "no", parm->enabled.command2 & ATA_SUPPORT_APM ? "yes" : "no"); @@ -1721,6 +1726,15 @@ atacapprint(struct ata_params *parm) printf("free-fall %s %s\n", parm->support2 & ATA_SUPPORT_FREEFALL ? "yes" : "no", parm->enabled2 & ATA_SUPPORT_FREEFALL ? "yes" : "no"); + printf("sense data reporting %s %s\n", + parm->support2 & ATA_SUPPORT_SENSE_REPORT ? "yes" : "no", + parm->enabled2 & ATA_SUPPORT_SENSE_REPORT ? "yes" : "no"); + printf("extended power conditions %s %s\n", + parm->support2 & ATA_SUPPORT_EPC ? "yes" : "no", + parm->enabled2 & ATA_SUPPORT_EPC ? "yes" : "no"); + printf("device statistics notification %s %s\n", + parm->support2 & ATA_SUPPORT_DSN ? "yes" : "no", + parm->enabled2 & ATA_SUPPORT_DSN ? "yes" : "no"); printf("Data Set Management (DSM/TRIM) "); if (parm->support_dsm & ATA_SUPPORT_DSM_TRIM) { printf("yes\n"); @@ -1743,6 +1757,8 @@ atacapprint(struct ata_params *parm) } else { printf("no\n"); } + printf("encrypts all user data %s\n", + parm->support3 & ATA_ENCRYPTS_ALL_USER_DATA ? "yes" : "no"); printf("Sanitize "); if (parm->multi & ATA_SUPPORT_SANITIZE) { printf("yes\t\t%s%s%s\n", Modified: projects/fuse2/sbin/camcontrol/timestamp.c ============================================================================== --- projects/fuse2/sbin/camcontrol/timestamp.c Tue Jul 30 03:32:39 2019 (r350434) +++ projects/fuse2/sbin/camcontrol/timestamp.c Tue Jul 30 04:17:36 2019 (r350435) @@ -79,7 +79,6 @@ set_restore_flags(struct cam_device *device, uint8_t * int error = 0; struct scsi_control_ext_page *control_page = NULL; struct scsi_mode_header_10 *mode_hdr = NULL; - struct scsi_mode_sense_10 *cdb = NULL; union ccb *ccb = NULL; unsigned long mode_buf_size = sizeof(struct scsi_mode_header_10) + sizeof(struct scsi_mode_blk_desc) + @@ -96,25 +95,19 @@ set_restore_flags(struct cam_device *device, uint8_t * * Get the control extension subpage, we'll send it back modified to * enable SCSI control over the tape drive's timestamp */ - scsi_mode_sense_len(&ccb->csio, + scsi_mode_sense_subpage(&ccb->csio, /*retries*/ retry_count, /*cbfcnp*/ NULL, /*tag_action*/ task_attr, /*dbd*/ 0, /*page_control*/ SMS_PAGE_CTRL_CURRENT, /*page*/ SCEP_PAGE_CODE, + /*subpage*/ SCEP_SUBPAGE_CODE, /*param_buf*/ &mode_buf[0], /*param_len*/ mode_buf_size, /*minimum_cmd_size*/ 10, /*sense_len*/ SSD_FULL_SIZE, /*timeout*/ timeout ? timeout : 5000); - /* - * scsi_mode_sense_len does not have a subpage argument at the moment, - * so we have to manually set the subpage code before calling - * cam_send_ccb(). - */ - cdb = (struct scsi_mode_sense_10 *)ccb->csio.cdb_io.cdb_bytes; - cdb->subpage = SCEP_SUBPAGE_CODE; ccb->ccb_h.flags |= CAM_DEV_QFRZDIS; if (retry_count > 0) Modified: projects/fuse2/sbin/nvmecontrol/identify_ext.c ============================================================================== --- projects/fuse2/sbin/nvmecontrol/identify_ext.c Tue Jul 30 03:32:39 2019 (r350434) +++ projects/fuse2/sbin/nvmecontrol/identify_ext.c Tue Jul 30 04:17:36 2019 (r350435) @@ -49,7 +49,7 @@ nvme_print_controller(struct nvme_controller_data *cda uint8_t str[128]; char cbuf[UINT128_DIG + 1]; uint16_t oncs, oacs; - uint8_t compare, write_unc, dsm, vwc_present; + uint8_t compare, write_unc, dsm, t; uint8_t security, fmt, fw, nsmgmt; uint8_t fw_slot1_ro, fw_num_slots; uint8_t ns_smart; @@ -63,8 +63,6 @@ nvme_print_controller(struct nvme_controller_data *cda NVME_CTRLR_DATA_ONCS_WRITE_UNC_MASK; dsm = (oncs >> NVME_CTRLR_DATA_ONCS_DSM_SHIFT) & NVME_CTRLR_DATA_ONCS_DSM_MASK; - vwc_present = (cdata->vwc >> NVME_CTRLR_DATA_VWC_PRESENT_SHIFT) & - NVME_CTRLR_DATA_VWC_PRESENT_MASK; oacs = cdata->oacs; security = (oacs >> NVME_CTRLR_DATA_OACS_SECURITY_SHIFT) & @@ -107,8 +105,10 @@ nvme_print_controller(struct nvme_controller_data *cda printf("Recommended Arb Burst: %d\n", cdata->rab); printf("IEEE OUI Identifier: %02x %02x %02x\n", cdata->ieee[0], cdata->ieee[1], cdata->ieee[2]); - printf("Multi-Path I/O Capabilities: %s%s%s%s\n", + printf("Multi-Path I/O Capabilities: %s%s%s%s%s\n", (cdata->mic == 0) ? "Not Supported" : "", + ((cdata->mic >> NVME_CTRLR_DATA_MIC_ANAR_SHIFT) & + NVME_CTRLR_DATA_MIC_SRIOVVF_MASK) ? "Asymmetric, " : "", ((cdata->mic >> NVME_CTRLR_DATA_MIC_SRIOVVF_SHIFT) & NVME_CTRLR_DATA_MIC_SRIOVVF_MASK) ? "SR-IOV VF, " : "", ((cdata->mic >> NVME_CTRLR_DATA_MIC_MCTRLRS_SHIFT) & @@ -149,9 +149,24 @@ nvme_print_controller(struct nvme_controller_data *cda printf("Virtualization Management: %sSupported\n", ((oacs >> NVME_CTRLR_DATA_OACS_VM_SHIFT) & NVME_CTRLR_DATA_OACS_VM_MASK) ? "" : "Not "); - printf("Doorbell Buffer Config %sSupported\n", + printf("Doorbell Buffer Config: %sSupported\n", ((oacs >> NVME_CTRLR_DATA_OACS_DBBUFFER_SHIFT) & NVME_CTRLR_DATA_OACS_DBBUFFER_MASK) ? "" : "Not "); + printf("Get LBA Status: %sSupported\n", + ((oacs >> NVME_CTRLR_DATA_OACS_GETLBA_SHIFT) & + NVME_CTRLR_DATA_OACS_GETLBA_MASK) ? "" : "Not "); + printf("Sanitize: "); + if (cdata->sanicap != 0) { + printf("%s%s%s\n", + ((cdata->sanicap >> NVME_CTRLR_DATA_SANICAP_CES_SHIFT) & + NVME_CTRLR_DATA_SANICAP_CES_SHIFT) ? "crypto, " : "", + ((cdata->sanicap >> NVME_CTRLR_DATA_SANICAP_BES_SHIFT) & + NVME_CTRLR_DATA_SANICAP_BES_SHIFT) ? "block, " : "", + ((cdata->sanicap >> NVME_CTRLR_DATA_SANICAP_OWS_SHIFT) & + NVME_CTRLR_DATA_SANICAP_OWS_SHIFT) ? "overwrite" : ""); + } else { + printf("Not Supported\n"); + } printf("Abort Command Limit: %d\n", cdata->acl+1); printf("Async Event Request Limit: %d\n", cdata->aerl+1); printf("Number of Firmware Slots: "); @@ -197,6 +212,9 @@ nvme_print_controller(struct nvme_controller_data *cda printf("Timestamp feature: %sSupported\n", ((oncs >> NVME_CTRLR_DATA_ONCS_TIMESTAMP_SHIFT) & NVME_CTRLR_DATA_ONCS_TIMESTAMP_MASK) ? "" : "Not "); + printf("Verify feature: %sSupported\n", + ((oncs >> NVME_CTRLR_DATA_ONCS_VERIFY_SHIFT) & + NVME_CTRLR_DATA_ONCS_VERIFY_MASK) ? "" : "Not "); printf("Fused Operation Support: %s%s\n", (cdata->fuses == 0) ? "Not Supported" : "", ((cdata->fuses >> NVME_CTRLR_DATA_FUSES_CNW_SHIFT) & @@ -208,8 +226,13 @@ nvme_print_controller(struct nvme_controller_data *cda NVME_CTRLR_DATA_FNA_ERASE_ALL_MASK) ? "All-NVM" : "Per-NS", ((cdata->fna >> NVME_CTRLR_DATA_FNA_FORMAT_ALL_SHIFT) & NVME_CTRLR_DATA_FNA_FORMAT_ALL_MASK) ? "All-NVM" : "Per-NS"); - printf("Volatile Write Cache: %s\n", - vwc_present ? "Present" : "Not Present"); + t = (cdata->vwc >> NVME_CTRLR_DATA_VWC_ALL_SHIFT) & + NVME_CTRLR_DATA_VWC_ALL_MASK; + printf("Volatile Write Cache: %s%s\n", + ((cdata->vwc >> NVME_CTRLR_DATA_VWC_PRESENT_SHIFT) & + NVME_CTRLR_DATA_VWC_PRESENT_MASK) ? "Present" : "Not Present", + (t == NVME_CTRLR_DATA_VWC_ALL_NO) ? ", no flush all" : + (t == NVME_CTRLR_DATA_VWC_ALL_YES) ? ", flush all" : ""); if (nsmgmt) { printf("\n"); Modified: projects/fuse2/share/man/man4/cc_dctcp.4 ============================================================================== --- projects/fuse2/share/man/man4/cc_dctcp.4 Tue Jul 30 03:32:39 2019 (r350434) +++ projects/fuse2/share/man/man4/cc_dctcp.4 Tue Jul 30 04:17:36 2019 (r350435) @@ -28,7 +28,7 @@ .\" .\" $FreeBSD$ .\" -.Dd January 12, 2015 +.Dd July 29, 2019 .Dt CC_DCTCP 4 .Os .Sh NAME @@ -60,7 +60,7 @@ In addition, when classic ECN is used as sender and DC receiver, DCTCP avoids to mirror back ACKs only when the CWR flag is set in the incoming packet. .Pp -The other specifications are based on the paper and Internet Draft referenced +The other specifications are based on the paper and the RFC referenced in the .Sx SEE ALSO section below. @@ -70,16 +70,27 @@ The algorithm exposes the following tunable variables branch of the .Xr sysctl 3 MIB: -.Bl -tag -width ".Va alpha" +.Bl -tag -width ".Va slowstart" .It Va alpha -An initial estimator of the congestion on the link. -Default is 0. -.It Va dctcp_shift_g -An estimation gain in the alpha calculation. -Default is 16. +The initial value to estimate the congestion on the link. +The valid range is from 0 to 1024, where 1024 reduces the congestion +window to half, if a CE is observed in the first window and +.Va alpha +could not yet adjust to the congestion level on that path. +Default is 1024. +.It Va shift_g +An estimation gain in the +.Va alpha +calculation. +This influences the responsiveness when adjusting alpha +to the most recent observed window. +Valid range from 0 to 10, the default is 4, resulting in an effective +gain of 1 / ( 2 ^ +.Va shift_g +), or 1/16th. .It Va slowstart -A trigger to halve congestion window after slow start. -Default does nothing to halve window. +A flag if the congestion window should be reduced by one half after slow start. +Valid settings 0 and 1, default 0. .El .Sh SEE ALSO .Xr cc_chd 4 , @@ -108,10 +119,12 @@ Default does nothing to halve window. .Re .Rs .%A "Stephen Bensley" -.%A "Lars Eggert" .%A "Dave Thaler" -.%T "Microsoft's Datacenter TCP (DCTCP): TCP Congestion Control for Datacenters" -.%U "http://tools.ietf.org/html/draft-bensley-tcpm-dctcp-01" +.%A "Praveen Balasubramanian" +.%A "Lars Eggert" +.%A "Glenn Judd" +.%T "Data Center TCP (DCTCP): TCP Congestion Control for Data Centers" +.%U "https://tools.ietf.org/html/rfc8257" .Re .Sh HISTORY The Modified: projects/fuse2/sys/arm/ti/cpsw/if_cpsw.c ============================================================================== --- projects/fuse2/sys/arm/ti/cpsw/if_cpsw.c Tue Jul 30 03:32:39 2019 (r350434) +++ projects/fuse2/sys/arm/ti/cpsw/if_cpsw.c Tue Jul 30 04:17:36 2019 (r350435) @@ -755,7 +755,9 @@ cpsw_get_fdt_data(struct cpsw_softc *sc, int port) continue; } OF_prop_free(name); - if (mdio_child_addr != slave_mdio_addr[port]) + + if (mdio_child_addr != slave_mdio_addr[port] && + mdio_child_addr != (slave_mdio_addr[port] & 0xFFF)) continue; if (fdt_get_phyaddr(child, NULL, &phy, NULL) != 0){ Modified: projects/fuse2/sys/arm/ti/ti_hwmods.c ============================================================================== --- projects/fuse2/sys/arm/ti/ti_hwmods.c Tue Jul 30 03:32:39 2019 (r350434) +++ projects/fuse2/sys/arm/ti/ti_hwmods.c Tue Jul 30 04:17:36 2019 (r350435) @@ -97,6 +97,16 @@ struct hwmod ti_hwmods[] = { {NULL, 0} }; +static inline int +ti_get_hwmods_prop(phandle_t node, void **name) +{ + int len; + + if ((len = OF_getprop_alloc(node, "ti,hwmods", name)) > 0) + return (len); + return (OF_getprop_alloc(OF_parent(node), "ti,hwmods", name)); +} + clk_ident_t ti_hwmods_get_clock(device_t dev) { @@ -110,7 +120,7 @@ ti_hwmods_get_clock(device_t dev) if ((node = ofw_bus_get_node(dev)) == 0) return (INVALID_CLK_IDENT); - if ((len = OF_getprop_alloc(OF_parent(node), "ti,hwmods", (void**)&name)) <= 0) + if ((len = ti_get_hwmods_prop(node, (void **)&name)) <= 0) return (INVALID_CLK_IDENT); buf = name; @@ -148,7 +158,7 @@ int ti_hwmods_contains(device_t dev, const char *hwmod if ((node = ofw_bus_get_node(dev)) == 0) return (0); - if ((len = OF_getprop_alloc(OF_parent(node), "ti,hwmods", (void**)&name)) <= 0) + if ((len = ti_get_hwmods_prop(node, (void **)&name)) <= 0) return (0); buf = name; @@ -182,7 +192,7 @@ ti_hwmods_get_unit(device_t dev, const char *hwmod) if ((node = ofw_bus_get_node(dev)) == 0) return (0); - if ((len = OF_getprop_alloc(OF_parent(node), "ti,hwmods", (void**)&name)) <= 0) + if ((len = ti_get_hwmods_prop(node, (void **)&name)) <= 0) return (0); buf = name; Modified: projects/fuse2/sys/arm64/arm64/pmap.c ============================================================================== --- projects/fuse2/sys/arm64/arm64/pmap.c Tue Jul 30 03:32:39 2019 (r350434) +++ projects/fuse2/sys/arm64/arm64/pmap.c Tue Jul 30 04:17:36 2019 (r350435) @@ -5790,7 +5790,7 @@ pmap_fault(pmap_t pmap, uint64_t esr, uint64_t far) (pmap_load(pte) & (ATTR_AP_RW_BIT | ATTR_SW_DBM)) == (ATTR_AP(ATTR_AP_RO) | ATTR_SW_DBM)) { pmap_clear_bits(pte, ATTR_AP_RW_BIT); - pmap_invalidate_page(pmap, trunc_page(far)); + pmap_invalidate_page(pmap, far); rv = KERN_SUCCESS; } PMAP_UNLOCK(pmap); Modified: projects/fuse2/sys/arm64/conf/GENERIC ============================================================================== --- projects/fuse2/sys/arm64/conf/GENERIC Tue Jul 30 03:32:39 2019 (r350434) +++ projects/fuse2/sys/arm64/conf/GENERIC Tue Jul 30 04:17:36 2019 (r350435) @@ -162,6 +162,7 @@ device smc # SMSC LAN91C111 device vnic # Cavium ThunderX NIC device al_eth # Annapurna Alpine Ethernet NIC device dwc_rk # Rockchip Designware +device dwc_socfpga # Altera SOCFPGA Ethernet MAC # Etherswitch devices device etherswitch # Enable etherswitch support Modified: projects/fuse2/sys/compat/freebsd32/freebsd32_capability.c ============================================================================== --- projects/fuse2/sys/compat/freebsd32/freebsd32_capability.c Tue Jul 30 03:32:39 2019 (r350434) +++ projects/fuse2/sys/compat/freebsd32/freebsd32_capability.c Tue Jul 30 04:17:36 2019 (r350435) @@ -37,6 +37,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include #include Modified: projects/fuse2/sys/conf/files.arm64 ============================================================================== --- projects/fuse2/sys/conf/files.arm64 Tue Jul 30 03:32:39 2019 (r350434) +++ projects/fuse2/sys/conf/files.arm64 Tue Jul 30 04:17:36 2019 (r350435) @@ -206,6 +206,7 @@ dev/acpica/acpi_pci_link.c optional acpi pci dev/acpica/acpi_pcib.c optional acpi pci dev/acpica/acpi_pxm.c optional acpi dev/ahci/ahci_generic.c optional ahci +dev/altera/dwc/if_dwc_socfpga.c optional fdt dwc_socfpga dev/axgbe/if_axgbe.c optional axgbe dev/axgbe/xgbe-desc.c optional axgbe dev/axgbe/xgbe-dev.c optional axgbe Modified: projects/fuse2/sys/dev/bhnd/nvram/bhnd_nvram_data_tlv.c ============================================================================== --- projects/fuse2/sys/dev/bhnd/nvram/bhnd_nvram_data_tlv.c Tue Jul 30 03:32:39 2019 (r350434) +++ projects/fuse2/sys/dev/bhnd/nvram/bhnd_nvram_data_tlv.c Tue Jul 30 04:17:36 2019 (r350435) @@ -33,6 +33,7 @@ __FBSDID("$FreeBSD$"); #ifdef _KERNEL #include #include +#include #include #include #else /* !_KERNEL */ Modified: projects/fuse2/sys/dev/bhnd/nvram/bhnd_nvram_store.c ============================================================================== --- projects/fuse2/sys/dev/bhnd/nvram/bhnd_nvram_store.c Tue Jul 30 03:32:39 2019 (r350434) +++ projects/fuse2/sys/dev/bhnd/nvram/bhnd_nvram_store.c Tue Jul 30 04:17:36 2019 (r350435) @@ -32,6 +32,7 @@ __FBSDID("$FreeBSD$"); #include #include +#include #include #ifdef _KERNEL Modified: projects/fuse2/sys/dev/bhnd/nvram/bhnd_nvram_value.c ============================================================================== --- projects/fuse2/sys/dev/bhnd/nvram/bhnd_nvram_value.c Tue Jul 30 03:32:39 2019 (r350434) +++ projects/fuse2/sys/dev/bhnd/nvram/bhnd_nvram_value.c Tue Jul 30 04:17:36 2019 (r350435) @@ -31,6 +31,7 @@ __FBSDID("$FreeBSD$"); #include +#include #include #ifdef _KERNEL Modified: projects/fuse2/sys/dev/bhnd/nvram/bhnd_nvram_value_prf.c ============================================================================== --- projects/fuse2/sys/dev/bhnd/nvram/bhnd_nvram_value_prf.c Tue Jul 30 03:32:39 2019 (r350434) +++ projects/fuse2/sys/dev/bhnd/nvram/bhnd_nvram_value_prf.c Tue Jul 30 04:17:36 2019 (r350435) @@ -31,6 +31,7 @@ __FBSDID("$FreeBSD$"); #include +#include #include #ifdef _KERNEL Modified: projects/fuse2/sys/dev/drm2/drmP.h ============================================================================== --- projects/fuse2/sys/dev/drm2/drmP.h Tue Jul 30 03:32:39 2019 (r350434) +++ projects/fuse2/sys/dev/drm2/drmP.h Tue Jul 30 04:17:36 2019 (r350435) @@ -52,6 +52,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include #include Modified: projects/fuse2/sys/dev/mii/micphy.c ============================================================================== --- projects/fuse2/sys/dev/mii/micphy.c Tue Jul 30 03:32:39 2019 (r350434) +++ projects/fuse2/sys/dev/mii/micphy.c Tue Jul 30 04:17:36 2019 (r350435) @@ -1,5 +1,5 @@ /*- - * Copyright (c) 2014 Ruslan Bukin + * Copyright (c) 2014,2019 Ruslan Bukin * All rights reserved. * * This software was developed by SRI International and the University of @@ -32,7 +32,7 @@ __FBSDID("$FreeBSD$"); /* - * Micrel KSZ9021 Gigabit Ethernet Transceiver + * Micrel KSZ8081/KSZ9021/KSZ9031 Gigabit Ethernet Transceiver */ #include @@ -59,6 +59,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #define MII_KSZPHY_EXTREG 0x0b #define KSZPHY_EXTREG_WRITE (1 << 15) @@ -251,6 +252,7 @@ micphy_probe(device_t dev) static int micphy_attach(device_t dev) { + mii_fdt_phy_config_t *cfg; struct mii_softc *sc; phandle_t node; device_t miibus; @@ -271,10 +273,12 @@ micphy_attach(device_t dev) if ((node = ofw_bus_get_node(parent)) == -1) return (ENXIO); + cfg = mii_fdt_get_config(dev); + if (sc->mii_mpd_model == MII_MODEL_MICREL_KSZ9031) - ksz9031_load_values(sc, node); + ksz9031_load_values(sc, cfg->phynode); else - ksz9021_load_values(sc, node); + ksz9021_load_values(sc, cfg->phynode); return (0); } Modified: projects/fuse2/sys/dev/nvme/nvme.h ============================================================================== --- projects/fuse2/sys/dev/nvme/nvme.h Tue Jul 30 03:32:39 2019 (r350434) +++ projects/fuse2/sys/dev/nvme/nvme.h Tue Jul 30 04:17:36 2019 (r350435) @@ -175,6 +175,9 @@ /* SR-IOV Virtual Function */ #define NVME_CTRLR_DATA_MIC_SRIOVVF_SHIFT (2) #define NVME_CTRLR_DATA_MIC_SRIOVVF_MASK (0x1) +/* Asymmetric Namespace Access Reporting */ +#define NVME_CTRLR_DATA_MIC_ANAR_SHIFT (3) +#define NVME_CTRLR_DATA_MIC_ANAR_MASK (0x1) /** OACS - optional admin command support */ /* supports security send/receive commands */ @@ -204,6 +207,9 @@ /* supports Doorbell Buffer Config */ #define NVME_CTRLR_DATA_OACS_DBBUFFER_SHIFT (8) #define NVME_CTRLR_DATA_OACS_DBBUFFER_MASK (0x1) +/* supports Get LBA Status */ +#define NVME_CTRLR_DATA_OACS_GETLBA_SHIFT (9) +#define NVME_CTRLR_DATA_OACS_GETLBA_MASK (0x1) /** firmware updates */ /* first slot is read-only */ @@ -212,6 +218,9 @@ /* number of firmware slots */ #define NVME_CTRLR_DATA_FRMW_NUM_SLOTS_SHIFT (1) #define NVME_CTRLR_DATA_FRMW_NUM_SLOTS_MASK (0x7) +/* firmware activation without reset */ +#define NVME_CTRLR_DATA_FRMW_ACT_WO_RESET_SHIFT (4) +#define NVME_CTRLR_DATA_FRMW_ACT_WO_RESET_MASK (0x1) /** log page attributes */ /* per namespace smart/health log page */ @@ -228,6 +237,26 @@ #define NVME_CTRLR_DATA_APSTA_APST_SUPP_SHIFT (0) #define NVME_CTRLR_DATA_APSTA_APST_SUPP_MASK (0x1) +/** Sanitize Capabilities */ +/* Crypto Erase Support */ +#define NVME_CTRLR_DATA_SANICAP_CES_SHIFT (0) +#define NVME_CTRLR_DATA_SANICAP_CES_MASK (0x1) +/* Block Erase Support */ +#define NVME_CTRLR_DATA_SANICAP_BES_SHIFT (1) +#define NVME_CTRLR_DATA_SANICAP_BES_MASK (0x1) +/* Overwrite Support */ +#define NVME_CTRLR_DATA_SANICAP_OWS_SHIFT (2) +#define NVME_CTRLR_DATA_SANICAP_OWS_MASK (0x1) +/* No-Deallocate Inhibited */ +#define NVME_CTRLR_DATA_SANICAP_NDI_SHIFT (29) +#define NVME_CTRLR_DATA_SANICAP_NDI_MASK (0x1) +/* No-Deallocate Modifies Media After Sanitize */ +#define NVME_CTRLR_DATA_SANICAP_NODMMAS_SHIFT (30) +#define NVME_CTRLR_DATA_SANICAP_NODMMAS_MASK (0x3) +#define NVME_CTRLR_DATA_SANICAP_NODMMAS_UNDEF (0) +#define NVME_CTRLR_DATA_SANICAP_NODMMAS_NO (1) +#define NVME_CTRLR_DATA_SANICAP_NODMMAS_YES (2) + /** submission queue entry size */ #define NVME_CTRLR_DATA_SQES_MIN_SHIFT (0) #define NVME_CTRLR_DATA_SQES_MIN_MASK (0xF) @@ -255,6 +284,8 @@ #define NVME_CTRLR_DATA_ONCS_RESERV_MASK (0x1) #define NVME_CTRLR_DATA_ONCS_TIMESTAMP_SHIFT (6) #define NVME_CTRLR_DATA_ONCS_TIMESTAMP_MASK (0x1) +#define NVME_CTRLR_DATA_ONCS_VERIFY_SHIFT (7) +#define NVME_CTRLR_DATA_ONCS_VERIFY_MASK (0x1) /** Fused Operation Support */ #define NVME_CTRLR_DATA_FUSES_CNW_SHIFT (0) @@ -269,8 +300,15 @@ #define NVME_CTRLR_DATA_FNA_CRYPTO_ERASE_MASK (0x1) /** volatile write cache */ +/* volatile write cache present */ #define NVME_CTRLR_DATA_VWC_PRESENT_SHIFT (0) #define NVME_CTRLR_DATA_VWC_PRESENT_MASK (0x1) +/* flush all namespaces supported */ +#define NVME_CTRLR_DATA_VWC_ALL_SHIFT (1) +#define NVME_CTRLR_DATA_VWC_ALL_MASK (0x3) +#define NVME_CTRLR_DATA_VWC_ALL_UNKNOWN (0) +#define NVME_CTRLR_DATA_VWC_ALL_NO (2) +#define NVME_CTRLR_DATA_VWC_ALL_YES (3) /** namespace features */ /* thin provisioning */ @@ -285,6 +323,9 @@ /* NGUID and EUI64 fields are not reusable */ #define NVME_NS_DATA_NSFEAT_NO_ID_REUSE_SHIFT (3) #define NVME_NS_DATA_NSFEAT_NO_ID_REUSE_MASK (0x1) +/* NPWG, NPWA, NPDG, NPDA, and NOWS are valid */ +#define NVME_NS_DATA_NSFEAT_NPVALID_SHIFT (4) +#define NVME_NS_DATA_NSFEAT_NPVALID_MASK (0x1) /** formatted lba size */ #define NVME_NS_DATA_FLBAS_FORMAT_SHIFT (0) @@ -793,13 +834,28 @@ struct nvme_controller_data { /** Controller Attributes */ uint32_t ctratt; /* bitfield really */ - uint8_t reserved1[12]; + /** Read Recovery Levels Supported */ + uint16_t rrls; + uint8_t reserved1[9]; + + /** Controller Type */ + uint8_t cntrltype; + /** FRU Globally Unique Identifier */ uint8_t fguid[16]; - uint8_t reserved2[128]; + /** Command Retry Delay Time 1 */ + uint16_t crdt1; + /** Command Retry Delay Time 2 */ + uint16_t crdt2; + + /** Command Retry Delay Time 3 */ + uint16_t crdt3; + + uint8_t reserved2[122]; + /* bytes 256-511: admin command set attributes */ /** optional admin command support */ @@ -878,7 +934,34 @@ struct nvme_controller_data { /** Sanitize Capabilities */ uint32_t sanicap; /* Really a bitfield */ - uint8_t reserved3[180]; + /** Host Memory Buffer Minimum Descriptor Entry Size */ + uint32_t hmminds; + + /** Host Memory Maximum Descriptors Entries */ + uint16_t hmmaxd; + + /** NVM Set Identifier Maximum */ + uint16_t nsetidmax; + + /** Endurance Group Identifier Maximum */ + uint16_t endgidmax; + + /** ANA Transition Time */ + uint8_t anatt; + + /** Asymmetric Namespace Access Capabilities */ + uint8_t anacap; + + /** ANA Group Identifier Maximum */ + uint32_t anagrpmax; + + /** Number of ANA Group Identifiers */ + uint32_t nanagrpid; + + /** Persistent Event Log Size */ + uint32_t pels; + + uint8_t reserved3[156]; /* bytes 512-703: nvm command set attributes */ /** submission queue entry size */ @@ -913,8 +996,10 @@ struct nvme_controller_data { /** NVM Vendor Specific Command Configuration */ uint8_t nvscc; - uint8_t reserved5; + /** Namespace Write Protection Capabilities */ + uint8_t nwpc; + /** Atomic Compare & Write Unit */ uint16_t acwu; uint16_t reserved6; @@ -922,8 +1007,11 @@ struct nvme_controller_data { /** SGL Support */ uint32_t sgls; + /** Maximum Number of Allowed Namespaces */ + uint32_t mnan; + /* bytes 540-767: Reserved */ - uint8_t reserved7[228]; + uint8_t reserved7[224]; /** NVM Subsystem NVMe Qualified Name */ uint8_t subnqn[256]; @@ -1008,9 +1096,39 @@ struct nvme_namespace_data { /** NVM Capacity */ uint8_t nvmcap[16]; - /* bytes 64-103: Reserved */ - uint8_t reserved5[40]; + /** Namespace Preferred Write Granularity */ + uint16_t npwg; + /** Namespace Preferred Write Alignment */ + uint16_t npwa; + + /** Namespace Preferred Deallocate Granularity */ + uint16_t npdg; + + /** Namespace Preferred Deallocate Alignment */ + uint16_t npda; + + /** Namespace Optimal Write Size */ + uint16_t nows; + + /* bytes 74-91: Reserved */ + uint8_t reserved5[18]; + + /** ANA Group Identifier */ + uint32_t anagrpid; + + /* bytes 96-98: Reserved */ + uint8_t reserved6[3]; + + /** Namespace Attributes */ + uint8_t nsattr; + + /** NVM Set Identifier */ + uint16_t nvmsetid; + + /** Endurance Group Identifier */ + uint16_t endgid; + /** Namespace Globally Unique Identifier */ uint8_t nguid[16]; @@ -1020,7 +1138,7 @@ struct nvme_namespace_data { /** lba format support */ uint32_t lbaf[16]; - uint8_t reserved6[192]; + uint8_t reserved7[192]; uint8_t vendor_specific[3712]; } __packed __aligned(4); @@ -1402,6 +1520,10 @@ void nvme_controller_data_swapbytes(struct nvme_contro s->rtd3e = le32toh(s->rtd3e); s->oaes = le32toh(s->oaes); s->ctratt = le32toh(s->ctratt); + s->rrls = le16toh(s->rrls); + s->crdt1 = le16toh(s->crdt1); + s->crdt2 = le16toh(s->crdt2); + s->crdt3 = le16toh(s->crdt3); s->oacs = le16toh(s->oacs); s->wctemp = le16toh(s->wctemp); s->cctemp = le16toh(s->cctemp); @@ -1415,6 +1537,13 @@ void nvme_controller_data_swapbytes(struct nvme_contro s->mntmt = le16toh(s->mntmt); s->mxtmt = le16toh(s->mxtmt); s->sanicap = le32toh(s->sanicap); + s->hmminds = le32toh(s->hmminds); + s->hmmaxd = le16toh(s->hmmaxd); + s->nsetidmax = le16toh(s->nsetidmax); + s->endgidmax = le16toh(s->endgidmax); + s->anagrpmax = le32toh(s->anagrpmax); + s->nanagrpid = le32toh(s->nanagrpid); + s->pels = le32toh(s->pels); s->maxcmd = le16toh(s->maxcmd); s->nn = le32toh(s->nn); s->oncs = le16toh(s->oncs); @@ -1423,6 +1552,7 @@ void nvme_controller_data_swapbytes(struct nvme_contro s->awupf = le16toh(s->awupf); s->acwu = le16toh(s->acwu); s->sgls = le32toh(s->sgls); + s->mnan = le32toh(s->mnan); for (i = 0; i < 32; i++) nvme_power_state_swapbytes(&s->power_state[i]); } @@ -1442,6 +1572,14 @@ void nvme_namespace_data_swapbytes(struct nvme_namespa s->nabo = le16toh(s->nabo); s->nabspf = le16toh(s->nabspf); s->noiob = le16toh(s->noiob); + s->npwg = le16toh(s->npwg); + s->npwa = le16toh(s->npwa); + s->npdg = le16toh(s->npdg); + s->npda = le16toh(s->npda); + s->nows = le16toh(s->nows); + s->anagrpid = le32toh(s->anagrpid); + s->nvmsetid = le16toh(s->nvmsetid); + s->endgid = le16toh(s->endgid); for (i = 0; i < 16; i++) s->lbaf[i] = le32toh(s->lbaf[i]); } Modified: projects/fuse2/sys/dev/usb/net/if_urndis.c ============================================================================== --- projects/fuse2/sys/dev/usb/net/if_urndis.c Tue Jul 30 03:32:39 2019 (r350434) +++ projects/fuse2/sys/dev/usb/net/if_urndis.c Tue Jul 30 04:17:36 2019 (r350435) @@ -175,6 +175,9 @@ static const STRUCT_USB_HOST_ID urndis_host_devs[] = { *** DIFF OUTPUT TRUNCATED AT 1000 LINES ***