On Thu, Nov 04, 2021 at 04:33:41PM -0700, Nick Desaulniers wrote: > On Thu, Nov 4, 2021 at 4:29 PM Nick Desaulniers <ndesaulniers@xxxxxxxxxx> wrote: > > > > On Thu, Nov 4, 2021 at 2:59 PM Nathan Chancellor <nathan@xxxxxxxxxx> wrote: > > > > > > A new commit in LLVM causes an error on the use of 'long double' when > > > '-mno-x87' is used, which the kernel does through an alias, > > > '-mno-80387' (see the LLVM commit below for more details around why it > > > does this). > > > > > > drivers/usb/dwc2/hcd_queue.c:1744:25: error: expression requires 'long double' type support, but target 'x86_64-unknown-linux-gnu' does not support it > > > delay = ktime_set(0, DWC2_RETRY_WAIT_DELAY); > > > ^ > > > drivers/usb/dwc2/hcd_queue.c:62:34: note: expanded from macro 'DWC2_RETRY_WAIT_DELAY' > > > #define DWC2_RETRY_WAIT_DELAY (1 * 1E6L) > > > ^ > > > 1 error generated. > > > > > > This happens due to the use of a 'long double' literal. The 'E6' part of > > > '1E6L' causes the literal to be a 'double' then the 'L' suffix promotes > > > it to 'long double'. > > > > > > There is no visible reason for a floating point value in this driver, as > > > the value is only used as a parameter to a function that expects an > > > integer type. Use USEC_PER_SEC, which is the same integer value as > > > '1E6L', to avoid changing functionality but fix the error. > > > > > > Fixes: 6ed30a7d8ec2 ("usb: dwc2: host: use hrtimer for NAK retries") > > > Link: https://github.com/ClangBuiltLinux/linux/issues/1497 > > > Link: https://github.com/llvm/llvm-project/commit/a8083d42b1c346e21623a1d36d1f0cadd7801d83 > > > Signed-off-by: Nathan Chancellor <nathan@xxxxxxxxxx> > > > > Thanks for the patch! > > Reviewed-by: Nick Desaulniers <ndesaulniers@xxxxxxxxxx> > > hmm...should we explicitly #include <vdso/time.h> for this > declaration? It may work due to transitive includes, but that's > generally considered brittle should those transitive includes change > in the future. This file uses ktime_t, which comes from include/linux/ktime.h, which eventually includes include/vdso/time64.h. include/vdso/time64.h is only included in three header files and no drivers so I do not think this is that brittle. I am happy to change that if the maintainers feel it is worth the extra include. > > > > > --- > > > drivers/usb/dwc2/hcd_queue.c | 2 +- > > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > > > diff --git a/drivers/usb/dwc2/hcd_queue.c b/drivers/usb/dwc2/hcd_queue.c > > > index 89a788326c56..bdf1927e1be1 100644 > > > --- a/drivers/usb/dwc2/hcd_queue.c > > > +++ b/drivers/usb/dwc2/hcd_queue.c > > > @@ -59,7 +59,7 @@ > > > #define DWC2_UNRESERVE_DELAY (msecs_to_jiffies(5)) > > > > > > /* If we get a NAK, wait this long before retrying */ > > > -#define DWC2_RETRY_WAIT_DELAY (1 * 1E6L) > > > +#define DWC2_RETRY_WAIT_DELAY (1 * USEC_PER_SEC) > > > > > > /** > > > * dwc2_periodic_channel_available() - Checks that a channel is available for a > > > > > > base-commit: d4439a1189f93d0ac1eaf0197db8e6b3e197d5c7 > > > -- > > > 2.34.0.rc0 > > > > > > > > > -- > > Thanks, > > ~Nick Desaulniers > > > > -- > Thanks, > ~Nick Desaulniers