From owner-svn-src-all@freebsd.org Mon Nov 30 10:35:15 2020 Return-Path: Delivered-To: svn-src-all@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 A611A476498; Mon, 30 Nov 2020 10:35:15 +0000 (UTC) (envelope-from tuexen@freebsd.org) Received: from drew.franken.de (drew.ipv6.franken.de [IPv6:2001:638:a02:a001:20e:cff:fe4a:feaa]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "*.franken.de", Issuer "Sectigo RSA Domain Validation Secure Server CA" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4Cl1pC3TNRz4tBW; Mon, 30 Nov 2020 10:35:15 +0000 (UTC) (envelope-from tuexen@freebsd.org) Received: from mbp.fritz.box (ip4d16e8c9.dynamic.kabel-deutschland.de [77.22.232.201]) (Authenticated sender: macmic) by mail-n.franken.de (Postfix) with ESMTPSA id 08F607220B80B; Mon, 30 Nov 2020 11:35:05 +0100 (CET) Content-Type: text/plain; charset=us-ascii Mime-Version: 1.0 (Mac OS X Mail 14.0 \(3654.20.0.2.21\)) Subject: Re: svn commit: r368167 - head/sys/dev/nvme From: Michael Tuexen In-Reply-To: <202011300701.0AU71CWr006435@repo.freebsd.org> Date: Mon, 30 Nov 2020 11:35:04 +0100 Cc: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Content-Transfer-Encoding: quoted-printable Message-Id: <8A805005-1EB5-477E-B8EA-003F91A9B337@freebsd.org> References: <202011300701.0AU71CWr006435@repo.freebsd.org> To: Michal Meloun X-Mailer: Apple Mail (2.3654.20.0.2.21) X-Spam-Status: No, score=-2.9 required=5.0 tests=ALL_TRUSTED,BAYES_00 autolearn=disabled version=3.4.1 X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on mail-n.franken.de X-Rspamd-Queue-Id: 4Cl1pC3TNRz4tBW X-Spamd-Bar: ---- Authentication-Results: mx1.freebsd.org; none X-Spamd-Result: default: False [-4.00 / 15.00]; REPLY(-4.00)[] X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 30 Nov 2020 10:35:15 -0000 > On 30. Nov 2020, at 08:01, Michal Meloun wrote: >=20 > Author: mmel > Date: Mon Nov 30 07:01:12 2020 > New Revision: 368167 > URL: https://svnweb.freebsd.org/changeset/base/368167 >=20 > Log: > NVME: Don't try to swap data on little endian machines. > These swapping functions violate BUSDMA contract - we cannot write > to armed (by bus_dmamap_sync(PRE_..)) buffers. Remove them at least > from little endian machines until a better solution will be = developed. This breaks building libsysdecode on a little endian (amd64) system: tuexen@cirrus:~/head/lib/libsysdecode % sudo make Password: env CPP=3D"cpp" MK_PF=3D"yes" /bin/sh = /usr/home/tuexen/head/lib/libsysdecode/mkioctls /usr/include > = ioctl.c.tmp if [ ! -e ioctl.c ] || ! cmp -s ioctl.c ioctl.c.tmp; then mv -f = ioctl.c.tmp ioctl.c; fi cc -O2 -pipe -fno-common = -I/usr/obj/usr/home/tuexen/head/amd64.amd64/lib/libsysdecode = -I/usr/home/tuexen/head/sys -I/usr/home/tuexen/head/libexec/rtld-elf = -DPF -g -MD -MF.depend.ioctl.o -MTioctl.o -std=3Dgnu99 = -Wno-format-zero-length -fstack-protector-strong -Wsystem-headers = -Werror -Wall -Wno-format-y2k -W -Wno-unused-parameter = -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith -Wreturn-type = -Wcast-qual -Wwrite-strings -Wswitch -Wshadow -Wunused-parameter = -Wcast-align -Wchar-subscripts -Winline -Wnested-externs = -Wredundant-decls -Wold-style-definition -Wno-pointer-sign = -Wmissing-variable-declarations -Wthread-safety -Wno-empty-body = -Wno-string-plus-int -Wno-unused-const-variable -Qunused-arguments = -c ioctl.c -o ioctl.o In file included from ioctl.c:33: In file included from = /usr/home/tuexen/head/sys/./cam/scsi/scsi_pass.h:35: In file included from /usr/home/tuexen/head/sys/cam/cam_ccb.h:46: In file included from /usr/home/tuexen/head/sys/cam/nvme/nvme_all.h:33: /usr/home/tuexen/head/sys/dev/nvme/nvme.h:1733:56: error: unused = parameter 's' [-Werror,-Wunused-parameter] void nvme_completion_swapbytes(struct nvme_completion *s) ^ /usr/home/tuexen/head/sys/dev/nvme/nvme.h:1747:58: error: unused = parameter 's' [-Werror,-Wunused-parameter] void nvme_power_state_swapbytes(struct nvme_power_state *s) ^ /usr/home/tuexen/head/sys/dev/nvme/nvme.h:1760:66: error: unused = parameter 's' [-Werror,-Wunused-parameter] void nvme_controller_data_swapbytes(struct nvme_controller_data *s) ^ /usr/home/tuexen/head/sys/dev/nvme/nvme.h:1812:64: error: unused = parameter 's' [-Werror,-Wunused-parameter] void nvme_namespace_data_swapbytes(struct nvme_namespace_data *s) ^ /usr/home/tuexen/head/sys/dev/nvme/nvme.h:1841:82: error: unused = parameter 's' [-Werror,-Wunused-parameter] void nvme_error_information_entry_swapbytes(struct = nvme_error_information_entry *s) = ^ /usr/home/tuexen/head/sys/dev/nvme/nvme.h:1858:26: error: unused = parameter 'p' [-Werror,-Wunused-parameter] void nvme_le128toh(void *p) ^ /usr/home/tuexen/head/sys/dev/nvme/nvme.h:1874:82: error: unused = parameter 's' [-Werror,-Wunused-parameter] void nvme_health_information_page_swapbytes(struct = nvme_health_information_page *s) = ^ /usr/home/tuexen/head/sys/dev/nvme/nvme.h:1902:62: error: unused = parameter 's' [-Werror,-Wunused-parameter] void nvme_firmware_page_swapbytes(struct nvme_firmware_page *s) ^ /usr/home/tuexen/head/sys/dev/nvme/nvme.h:1913:50: error: unused = parameter 's' [-Werror,-Wunused-parameter] void nvme_ns_list_swapbytes(struct nvme_ns_list *s) ^ /usr/home/tuexen/head/sys/dev/nvme/nvme.h:1924:76: error: unused = parameter 's' [-Werror,-Wunused-parameter] void nvme_command_effects_page_swapbytes(struct = nvme_command_effects_page *s) = ^ /usr/home/tuexen/head/sys/dev/nvme/nvme.h:1937:78: error: unused = parameter 's' [-Werror,-Wunused-parameter] void nvme_res_notification_page_swapbytes(struct = nvme_res_notification_page *s) = ^ /usr/home/tuexen/head/sys/dev/nvme/nvme.h:1946:76: error: unused = parameter 's' [-Werror,-Wunused-parameter] void nvme_sanitize_status_page_swapbytes(struct = nvme_sanitize_status_page *s) = ^ /usr/home/tuexen/head/sys/dev/nvme/nvme.h:1962:66: error: unused = parameter 's' [-Werror,-Wunused-parameter] void intel_log_temp_stats_swapbytes(struct intel_log_temp_stats *s) ^ /usr/home/tuexen/head/sys/dev/nvme/nvme.h:1979:58: error: unused = parameter 's' [-Werror,-Wunused-parameter] void nvme_resv_status_swapbytes(struct nvme_resv_status *s, size_t = size) ^ /usr/home/tuexen/head/sys/dev/nvme/nvme.h:1979:68: error: unused = parameter 'size' [-Werror,-Wunused-parameter] void nvme_resv_status_swapbytes(struct nvme_resv_status *s, size_t = size) ^ /usr/home/tuexen/head/sys/dev/nvme/nvme.h:1996:66: error: unused = parameter 's' [-Werror,-Wunused-parameter] void nvme_resv_status_ext_swapbytes(struct nvme_resv_status_ext *s, = size_t size) ^ /usr/home/tuexen/head/sys/dev/nvme/nvme.h:1996:76: error: unused = parameter 'size' [-Werror,-Wunused-parameter] void nvme_resv_status_ext_swapbytes(struct nvme_resv_status_ext *s, = size_t size) = ^ 17 errors generated. *** Error code 1 Stop. make: stopped in /usr/home/tuexen/head/lib/libsysdecode Best regards Michael >=20 > Reviewed by: imp > MFC after: 3 weeks >=20 > Modified: > head/sys/dev/nvme/nvme.h >=20 > Modified: head/sys/dev/nvme/nvme.h > = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D > --- head/sys/dev/nvme/nvme.h Sun Nov 29 23:37:18 2020 = (r368166) > +++ head/sys/dev/nvme/nvme.h Mon Nov 30 07:01:12 2020 = (r368167) > @@ -1732,6 +1732,7 @@ extern int nvme_use_nvd; > static inline > void nvme_completion_swapbytes(struct nvme_completion *s) > { > +#if _BYTE_ORDER !=3D _LITTLE_ENDIAN >=20 > s->cdw0 =3D le32toh(s->cdw0); > /* omit rsvd1 */ > @@ -1739,22 +1740,26 @@ void nvme_completion_swapbytes(struct = nvme_completion=20 > s->sqid =3D le16toh(s->sqid); > /* omit cid */ > s->status =3D le16toh(s->status); > +#endif > } >=20 > static inline > void nvme_power_state_swapbytes(struct nvme_power_state *s) > { > +#if _BYTE_ORDER !=3D _LITTLE_ENDIAN >=20 > s->mp =3D le16toh(s->mp); > s->enlat =3D le32toh(s->enlat); > s->exlat =3D le32toh(s->exlat); > s->idlp =3D le16toh(s->idlp); > s->actp =3D le16toh(s->actp); > +#endif > } >=20 > static inline > void nvme_controller_data_swapbytes(struct nvme_controller_data *s) > { > +#if _BYTE_ORDER !=3D _LITTLE_ENDIAN > int i; >=20 > s->vid =3D le16toh(s->vid); > @@ -1800,11 +1805,13 @@ void nvme_controller_data_swapbytes(struct = nvme_contro > s->mnan =3D le32toh(s->mnan); > for (i =3D 0; i < 32; i++) > nvme_power_state_swapbytes(&s->power_state[i]); > +#endif > } >=20 > static inline > void nvme_namespace_data_swapbytes(struct nvme_namespace_data *s) > { > +#if _BYTE_ORDER !=3D _LITTLE_ENDIAN > int i; >=20 > s->nsze =3D le64toh(s->nsze); > @@ -1827,11 +1834,13 @@ void nvme_namespace_data_swapbytes(struct = nvme_namespa > s->endgid =3D le16toh(s->endgid); > for (i =3D 0; i < 16; i++) > s->lbaf[i] =3D le32toh(s->lbaf[i]); > +#endif > } >=20 > static inline > void nvme_error_information_entry_swapbytes(struct = nvme_error_information_entry *s) > { > +#if _BYTE_ORDER !=3D _LITTLE_ENDIAN >=20 > s->error_count =3D le64toh(s->error_count); > s->sqid =3D le16toh(s->sqid); > @@ -1842,6 +1851,7 @@ void = nvme_error_information_entry_swapbytes(struct nvm > s->nsid =3D le32toh(s->nsid); > s->csi =3D le64toh(s->csi); > s->ttsi =3D le16toh(s->ttsi); > +#endif > } >=20 > static inline > @@ -1857,14 +1867,13 @@ void nvme_le128toh(void *p) > tmp[i] =3D tmp[15-i]; > tmp[15-i] =3D b; > } > -#else > - (void)p; > #endif > } >=20 > static inline > void nvme_health_information_page_swapbytes(struct = nvme_health_information_page *s) > { > +#if _BYTE_ORDER !=3D _LITTLE_ENDIAN > int i; >=20 > s->temperature =3D le16toh(s->temperature); > @@ -1886,47 +1895,57 @@ void = nvme_health_information_page_swapbytes(struct nvm > s->tmt2tc =3D le32toh(s->tmt2tc); > s->ttftmt1 =3D le32toh(s->ttftmt1); > s->ttftmt2 =3D le32toh(s->ttftmt2); > +#endif > } >=20 > static inline > void nvme_firmware_page_swapbytes(struct nvme_firmware_page *s) > { > +#if _BYTE_ORDER !=3D _LITTLE_ENDIAN > int i; >=20 > for (i =3D 0; i < 7; i++) > s->revision[i] =3D le64toh(s->revision[i]); > +#endif > } >=20 > static inline > void nvme_ns_list_swapbytes(struct nvme_ns_list *s) > { > +#if _BYTE_ORDER !=3D _LITTLE_ENDIAN > int i; >=20 > for (i =3D 0; i < 1024; i++) > s->ns[i] =3D le32toh(s->ns[i]); > +#endif > } >=20 > static inline > void nvme_command_effects_page_swapbytes(struct = nvme_command_effects_page *s) > { > +#if _BYTE_ORDER !=3D _LITTLE_ENDIAN > int i; >=20 > for (i =3D 0; i < 256; i++) > s->acs[i] =3D le32toh(s->acs[i]); > for (i =3D 0; i < 256; i++) > s->iocs[i] =3D le32toh(s->iocs[i]); > +#endif > } >=20 > static inline > void nvme_res_notification_page_swapbytes(struct = nvme_res_notification_page *s) > { > +#if _BYTE_ORDER !=3D _LITTLE_ENDIAN > s->log_page_count =3D le64toh(s->log_page_count); > s->nsid =3D le32toh(s->nsid); > +#endif > } >=20 > static inline > void nvme_sanitize_status_page_swapbytes(struct = nvme_sanitize_status_page *s) > { > +#if _BYTE_ORDER !=3D _LITTLE_ENDIAN > s->sprog =3D le16toh(s->sprog); > s->sstat =3D le16toh(s->sstat); > s->scdw10 =3D le32toh(s->scdw10); > @@ -1936,11 +1955,13 @@ void = nvme_sanitize_status_page_swapbytes(struct nvme_s > s->etfownd =3D le32toh(s->etfownd); > s->etfbewnd =3D le32toh(s->etfbewnd); > s->etfcewnd =3D le32toh(s->etfcewnd); > +#endif > } >=20 > static inline > void intel_log_temp_stats_swapbytes(struct intel_log_temp_stats *s) > { > +#if _BYTE_ORDER !=3D _LITTLE_ENDIAN >=20 > s->current =3D le64toh(s->current); > s->overtemp_flag_last =3D le64toh(s->overtemp_flag_last); > @@ -1951,11 +1972,13 @@ void intel_log_temp_stats_swapbytes(struct = intel_log_t > s->max_oper_temp =3D le64toh(s->max_oper_temp); > s->min_oper_temp =3D le64toh(s->min_oper_temp); > s->est_offset =3D le64toh(s->est_offset); > +#endif > } >=20 > static inline > void nvme_resv_status_swapbytes(struct nvme_resv_status *s, size_t = size) > { > +#if _BYTE_ORDER !=3D _LITTLE_ENDIAN > u_int i, n; >=20 > s->gen =3D le32toh(s->gen); > @@ -1966,11 +1989,13 @@ void nvme_resv_status_swapbytes(struct = nvme_resv_statu > s->ctrlr[i].hostid =3D le64toh(s->ctrlr[i].hostid); > s->ctrlr[i].rkey =3D le64toh(s->ctrlr[i].rkey); > } > +#endif > } >=20 > static inline > void nvme_resv_status_ext_swapbytes(struct nvme_resv_status_ext *s, = size_t size) > { > +#if _BYTE_ORDER !=3D _LITTLE_ENDIAN > u_int i, n; >=20 > s->gen =3D le32toh(s->gen); > @@ -1981,6 +2006,7 @@ void nvme_resv_status_ext_swapbytes(struct = nvme_resv_s > s->ctrlr[i].rkey =3D le64toh(s->ctrlr[i].rkey); > nvme_le128toh((void *)s->ctrlr[i].hostid); > } > +#endif > } >=20 > #endif /* __NVME_H__ */