From: Niklas Cassel <cassel@kernel.org>
To: Jon Hunter <jonathanh@nvidia.com>
Cc: "Arnd Bergmann" <arnd@arndb.de>,
"Hans Zhang" <18255117159@163.com>,
"Manivannan Sadhasivam" <manivannan.sadhasivam@linaro.org>,
"Krzysztof Wilczyński" <kw@linux.com>,
"Kishon Vijay Abraham I" <kishon@kernel.org>,
"Greg Kroah-Hartman" <gregkh@linuxfoundation.org>,
linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org,
rockswang7@gmail.com,
"linux-tegra@vger.kernel.org" <linux-tegra@vger.kernel.org>
Subject: Re: [v11 2/2] misc: pci_endpoint_test: Fix overflow of bar_size
Date: Thu, 23 Jan 2025 09:10:41 +0100 [thread overview]
Message-ID: <Z5H5gTQa7UEpltMa@ryzen> (raw)
In-Reply-To: <72aa3800-320c-494b-ae46-b4f2ebf71e92@nvidia.com>
On Wed, Jan 22, 2025 at 11:18:44AM +0000, Jon Hunter wrote:
>
> On 22/01/2025 10:26, Arnd Bergmann wrote:
> > On Wed, Jan 22, 2025, at 11:07, Niklas Cassel wrote:
> > > On Tue, Jan 21, 2025 at 05:46:43PM +0000, Jon Hunter wrote:
> > > > > diff --git a/drivers/misc/pci_endpoint_test.c b/drivers/misc/>>
> > > >
> > > > This change breaks building the kernel with GCC v7 and I see ...
> > > >
> > > > ERROR: modpost: "__aeabi_uldivmod" [drivers/misc/pci_endpoint_test.ko]
> > > > undefined!
> > > > ERROR: modpost: "__aeabi_ldivmod" [drivers/misc/pci_endpoint_test.ko]
> > > > undefined!
> > > >
> > > > I know that this is an old GCC version, but this is a farm builder and the
> > > > kernel still indicates that GCC v5.1 is still supported [0].
> > >
> > > do you have any idea what is going on here?
> > >
> > > I'm a bit puzzled, since looking at other reports of this error,
> > > e.g.:
> > > https://lore.kernel.org/all/20241018151016.3496613-1-arnd@kernel.org/
> > >
> > > using div_u64() is usually the solution for this problem (for things that
> > > are not performance critical), not the cause of it... any ideas?
> >
> > I have tried to look at the email thread, but not tried to reproduce
> > it yet. I have two ideas about what might be happening:
> >
> > a) something causes a /different/ division to call into
> > __aeabi_uldivmod(), not the one from div_u64().
> >
> > b) the compiler notices one of the arguments to div_u64() being
> > constant in some cases and splits the calling function into
> > two special cases, for both the constant and non-constant
> > cases. This sometimes confuses the __builtin_constant_p()
> > in do_div() that decides to fall back to a 32-bit division.
> >
> > Try looking at the .s file when you run
> > 'make drivers/misc/pci_endpoint_test.s' to see where exactly it
> > calls the two division functions, maybe you see the problem then,
> > otherwise I can try to reproduce it here.
>
>
> FWIW I have encountered similar problems with this before with this compiler
> ...
>
> https://lore.kernel.org/linux-tegra/7733a4ca-330b-4127-af12-33f376fbbc47@nvidia.com/
I had no errors when building this patch using:
gcc (Debian 7.4.0-6) 7.4.0
on i386.
neither with CONFIG_PHYS_ADDR_T_64BIT=y (CONFIG_X86_PAE=y)
nor without it set.
So perhaps this is a bug in gcc 7.x on arm32 or in the arm32
implementation of div_u64() ?
Kind regards,
Niklas
next prev parent reply other threads:[~2025-01-23 8:10 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-01-09 9:45 [v11 0/2] misc: pci_endpoint_test: Fix overflow of bar_size Hans Zhang
2025-01-09 9:45 ` [v11 1/2] misc: pci_endpoint_test: Remove the "remainder" code Hans Zhang
2025-01-15 16:58 ` Manivannan Sadhasivam
2025-01-09 9:45 ` [v11 2/2] misc: pci_endpoint_test: Fix overflow of bar_size Hans Zhang
2025-01-15 16:58 ` Manivannan Sadhasivam
2025-01-15 17:05 ` Niklas Cassel
2025-01-16 2:03 ` Krzysztof Wilczyński
2025-01-16 9:36 ` Niklas Cassel
2025-01-16 9:38 ` Niklas Cassel
2025-01-17 8:49 ` Krzysztof Wilczyński
2025-01-21 17:46 ` Jon Hunter
2025-01-21 20:23 ` Bjorn Helgaas
2025-01-21 20:31 ` Niklas Cassel
2025-01-22 6:03 ` Jon Hunter
2025-01-22 10:07 ` Niklas Cassel
2025-01-22 10:26 ` Arnd Bergmann
2025-01-22 11:18 ` Jon Hunter
2025-01-23 8:10 ` Niklas Cassel [this message]
2025-01-15 14:02 ` [v11 0/2] " Krzysztof Wilczyński
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=Z5H5gTQa7UEpltMa@ryzen \
--to=cassel@kernel.org \
--cc=18255117159@163.com \
--cc=arnd@arndb.de \
--cc=gregkh@linuxfoundation.org \
--cc=jonathanh@nvidia.com \
--cc=kishon@kernel.org \
--cc=kw@linux.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=linux-tegra@vger.kernel.org \
--cc=manivannan.sadhasivam@linaro.org \
--cc=rockswang7@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.