svn commit: r357349 - in head/sys: conf modules/tpm
Ian Lepore
ian at freebsd.org
Sat Feb 1 17:48:27 UTC 2020
On Fri, 2020-01-31 at 23:36 +0100, Dimitry Andric wrote:
> Hmm yes, you are quite right. Other parts of the code also seem to
> use ~TPM_XXX, and the WR4() inline function called takes a
> uint32_t. I'll revert my change and apply the tilde version instead!
>
> -Dimitry
>
So you're going to switch from writing 0 to writing 0xfffffffe, and
just assume that will work the same? Like, without looking at the
datasheet or TRM for the device? Surely those other 31 bits you're
turning on in a control register can't do anything important, can they?
I haven't looked at the code, but I'll bet the other places that are
using ~SYMBOLNAME are doing so in the context of read-modify-write in a
way that preserves existing bits, which is completely different than
just turning on 31 bits as a side effect of turning one bit off.
-- Ian
> > On 31 Jan 2020, at 22:13, Conrad Meyer <cem at FreeBSD.org> wrote:
> >
> > Hi Dimitry,
> >
> > Do you think maybe the intent is to use ~TPM_CRB_CTRL_CANCEL_CMD
> > instead? Plain "0" might also make sense. But I think the
> > compiler
> > is right here and the warning should not be disabled — !BIT(foo)
> > doesn't really make sense for a register. It happens to affect the
> > right bit only because CANCEL_CMD is BIT(0).
> >
> > Thanks,
> > Conrad
> >
> > On Fri, Jan 31, 2020 at 11:36 AM Dimitry Andric <dim at freebsd.org>
> > wrote:
> > >
> > > Author: dim
> > > Date: Fri Jan 31 19:36:14 2020
> > > New Revision: 357349
> > > URL: https://svnweb.freebsd.org/changeset/base/357349
> > >
> > > Log:
> > > Merge r357348 from the clang 10.0.0 import branch:
> > >
> > > Disable new clang 10.0.0 warnings about converting the result of
> > > shift
> > > operations to a boolean in tpm(4):
> > >
> > > sys/dev/tpm/tpm_crb.c:301:32: error: converting the result of
> > > '<<' to a boolean; did you mean '(1 << (0)) != 0'? [-Werror,-
> > > Wint-in-bool-context]
> > > WR4(sc, TPM_CRB_CTRL_CANCEL, !TPM_CRB_CTRL_CANCEL_CMD);
> > > ^
> > > sys/dev/tpm/tpm_crb.c:73:34: note: expanded from macro
> > > 'TPM_CRB_CTRL_CANCEL_CMD'
> > > #define TPM_CRB_CTRL_CANCEL_CMD BIT(0)
> > > ^
> > > sys/dev/tpm/tpm20.h:60:19: note: expanded from macro 'BIT'
> > > #define BIT(x) (1 << (x))
> > > ^
> > >
> > > Such warnings can be useful in C++ contexts, but not so much in
> > > kernel
> > > drivers, where this type of bit twiddling is commonplace. So
> > > disable it
> > > for this case.
> > >
> > > MFC after: 3 days
> > >
> > > Modified:
> > > head/sys/conf/files.amd64
> > > head/sys/conf/kern.mk
> > > head/sys/modules/tpm/Makefile
> > > Directory Properties:
> > > head/ (props changed)
> > >
> > > Modified: head/sys/conf/files.amd64
> > > =================================================================
> > > =============
> > > --- head/sys/conf/files.amd64 Fri Jan 31 19:35:21
> > > 2020 (r357348)
> > > +++ head/sys/conf/files.amd64 Fri Jan 31 19:36:14
> > > 2020 (r357349)
> > > @@ -323,7 +323,8 @@
> > > dev/syscons/scvesactl.c optional sc vga vesa
> > > dev/syscons/scvgarndr.c optional sc vga
> > > dev/tpm/tpm.c optional tpm
> > > dev/tpm/tpm20.c optional tpm
> > > -dev/tpm/tpm_crb.c optional tpm acpi
> > > +dev/tpm/tpm_crb.c optional tpm acpi \
> > > + compile-with "${NORMAL_C} ${NO_WINT_IN_BOOL_CONTEXT}"
> > > dev/tpm/tpm_tis.c optional tpm acpi
> > > dev/tpm/tpm_acpi.c optional tpm acpi
> > > dev/tpm/tpm_isa.c optional tpm isa
> > >
> > > Modified: head/sys/conf/kern.mk
> > > =================================================================
> > > =============
> > > --- head/sys/conf/kern.mk Fri Jan 31 19:35:21
> > > 2020 (r357348)
> > > +++ head/sys/conf/kern.mk Fri Jan 31 19:36:14
> > > 2020 (r357349)
> > > @@ -37,6 +37,9 @@ CWARNEXTRA+= -Wno-error-shift-negative-value
> > > .if ${COMPILER_VERSION} >= 40000
> > > CWARNEXTRA+= -Wno-address-of-packed-member
> > > .endif
> > > +.if ${COMPILER_VERSION} >= 100000
> > > +NO_WINT_IN_BOOL_CONTEXT= -Wno-int-in-bool-context
> > > +.endif
> > > .endif
> > >
> > > .if ${COMPILER_TYPE} == "gcc"
> > >
> > > Modified: head/sys/modules/tpm/Makefile
> > > =================================================================
> > > =============
> > > --- head/sys/modules/tpm/Makefile Fri Jan 31 19:35:21
> > > 2020 (r357348)
> > > +++ head/sys/modules/tpm/Makefile Fri Jan 31 19:36:14
> > > 2020 (r357349)
> > > @@ -11,3 +11,5 @@ SRCS+= tpm_isa.c tpm_acpi.c isa_if.h
> > > opt_acpi.h acpi_i
> > > SRCS+= tpm20.c tpm_crb.c tpm_tis.c opt_tpm.h
> > >
> > > .include <bsd.kmod.mk>
> > > +
> > > +CWARNFLAGS.tpm_crb.c+= ${NO_WINT_IN_BOOL_CONTEXT}
>
>
More information about the svn-src-head
mailing list