public inbox for linux-arm-kernel@lists.infradead.org
 help / color / mirror / Atom feed
From: arnd@arndb.de (Arnd Bergmann)
To: linux-arm-kernel@lists.infradead.org
Subject: [RFC/PATCH 0/3] ARM: Use udiv/sdiv for __aeabi_{u}idiv library functions
Date: Sun, 22 Nov 2015 00:21:13 +0100	[thread overview]
Message-ID: <12750898.0A5czJmNqv@wuerfel> (raw)
In-Reply-To: <4519802.lamVCN5F0B@wuerfel>

On Sunday 22 November 2015 00:14:14 Arnd Bergmann wrote:
> On Saturday 21 November 2015 22:11:36 M?ns Rullg?rd wrote:
> > Arnd Bergmann <arnd@arndb.de> writes:
> > > On Saturday 21 November 2015 20:45:38 M?ns Rullg?rd wrote:
> > >> On 21 November 2015 20:39:58 GMT+00:00, Arnd Bergmann <arnd@arndb.de> wrote:
> > >> 
> > >> The ARM ARM says anything with virt has idiv, lpae doesn't matter.
> > >
> > > Ok, and anything with virt also has lpae by definition. The question is
> > > whether we care about using idiv on cores that do not have lpae, or that
> > > have neither lpae nor virt.
> > 
> > The question is, are there any such cores?  GCC doesn't know of any, but
> > then it's missing most non-ARM designs.
> 
> Exactly. Stephen should be able to find out about the Qualcomm cores,
> and http://comments.gmane.org/gmane.linux.ports.arm.kernel/426289 has
> some information about the others:
>  * Brahma-B15 supports all three.
>  * Dove (PJ4) reports idiv only in thumb mode, which I'm tempted to ignore
>    for the kernel, as it supports neither lpae nor idiva.
>  * Armada 370/XP (PJ4B) reports support for idiva and idivt, but according to
>    https://groups.google.com/a/dartlang.org/forum/#!topic/reviews/9wvsJvq0YYY
>    that may be a lie.
>  * According to the same source, Krait fails to report idiva and idivt,
>    but supports both anyway. However, I found reports on the web where
>    /proc/cpuinfo correctly contains the flags on the same SoC (APQ8064)
>    that was mentioned there, so maybe they were just running an old
>    kernel.

This has some more information: 

commit 120ecfafabec382c4feb79ff159ef42a39b6d33b
Author: Stepan Moskovchenko <stepanm@codeaurora.org>
Date:   Mon Mar 18 19:44:16 2013 +0100

    ARM: 7678/1: Work around faulty ISAR0 register in some Krait CPUs
    
    Some early versions of the Krait CPU design incorrectly indicate
    that they only support the UDIV and SDIV instructions in Thumb
    mode when they actually support them in ARM and Thumb mode. It
    seems that these CPUs follow the DDI0406B ARM ARM which has two
    possible values for the divide instructions field, instead of the
    DDI0406C document which has three possible values.
    
    Work around this problem by checking the MIDR against Krait CPUs
    with this faulty ISAR0 register and force the hwcaps to indicate
    support in both modes.
    
    [sboyd: Rewrote commit text to reflect real reasoning now that
        we autodetect udiv/sdiv]
    
    Signed-off-by: Stepan Moskovchenko <stepanm@codeaurora.org>
    Acked-by: Will Deacon <will.deacon@arm.com>
    Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
    Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>

so Krait clearly supports them, and this also explains why some
machines misreport it depending on the CPU version and kernel
release running on it.

Regarding PJ4, it's still unclear whether that has the same
problem and it only reports idivt when it actually supports idiva,
or whether the lack of idiva support on PJ4 is instead the reason
why the ARM ARM was updated to have separate flags.

	Arnd

  reply	other threads:[~2015-11-21 23:21 UTC|newest]

Thread overview: 59+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-11-21  1:23 [RFC/PATCH 0/3] ARM: Use udiv/sdiv for __aeabi_{u}idiv library functions Stephen Boyd
2015-11-21  1:23 ` [RFC/PATCH 1/3] scripts: Allow recordmcount to be used without tracing enabled Stephen Boyd
2015-11-21  1:23 ` [RFC/PATCH 2/3] recordmcount: Record locations of __aeabi_{u}idiv() calls on ARM Stephen Boyd
2015-11-21 10:13   ` Russell King - ARM Linux
2015-11-23 20:53     ` Stephen Boyd
2015-11-23 20:58       ` Steven Rostedt
2015-11-23 21:03       ` Russell King - ARM Linux
2015-11-23 21:16         ` Stephen Boyd
2015-11-23 21:33           ` Russell King - ARM Linux
2015-11-24  1:04             ` Stephen Boyd
2015-11-21  1:23 ` [RFC/PATCH 3/3] ARM: Replace calls to __aeabi_{u}idiv with udiv/sdiv instructions Stephen Boyd
2015-11-21 11:50   ` Måns Rullgård
2015-11-23 20:49     ` Stephen Boyd
2015-11-23 20:54       ` Måns Rullgård
2015-11-23 21:16         ` Stephen Boyd
2015-11-21 20:39 ` [RFC/PATCH 0/3] ARM: Use udiv/sdiv for __aeabi_{u}idiv library functions Arnd Bergmann
2015-11-21 20:45   ` Måns Rullgård
2015-11-21 21:00     ` Arnd Bergmann
2015-11-21 22:11       ` Måns Rullgård
2015-11-21 23:14         ` Arnd Bergmann
2015-11-21 23:21           ` Arnd Bergmann [this message]
2015-11-22 13:29             ` Peter Maydell
2015-11-22 19:25               ` Arnd Bergmann
2015-11-22 19:30                 ` Måns Rullgård
2015-11-22 19:47                 ` Russell King - ARM Linux
2015-11-22 19:58                   ` Arnd Bergmann
2015-11-22 20:03                     ` Russell King - ARM Linux
2015-11-22 20:37                       ` Arnd Bergmann
2015-11-22 20:39                         ` Måns Rullgård
2015-11-22 21:18                           ` Arnd Bergmann
2015-11-23  2:36                     ` Nicolas Pitre
2015-11-23  8:15                       ` Arnd Bergmann
2015-11-23 14:14                         ` Christopher Covington
2015-11-23 15:32                           ` Arnd Bergmann
2015-11-23 20:38                             ` Stephen Boyd
2015-11-23 21:19                               ` Arnd Bergmann
2015-11-23 21:32                                 ` Stephen Boyd
2015-11-23 21:57                                   ` Arnd Bergmann
2015-11-23 23:13                                     ` Stephen Boyd
2015-11-24 10:17                                       ` Arnd Bergmann
2015-11-24 12:15                                         ` Måns Rullgård
2015-11-24 13:45                                           ` Arnd Bergmann
2015-11-25  1:51                                         ` Stephen Boyd
2015-11-25  7:21                                           ` Arnd Bergmann
2015-11-24  0:13                                     ` Stephen Boyd
2015-11-24  8:53                                       ` Stephen Boyd
2015-11-24 10:38                                         ` Arnd Bergmann
2015-11-24 10:42                                           ` Russell King - ARM Linux
2015-11-24 12:10                                             ` Måns Rullgård
2015-11-24 12:23                                               ` Russell King - ARM Linux
2015-11-24 12:29                                                 ` Måns Rullgård
2015-11-24 14:00                                                   ` Russell King - ARM Linux
2015-11-24 14:03                                                     ` Måns Rullgård
2015-11-24 10:39                                         ` Russell King - ARM Linux
2015-11-24 20:07                                           ` Stephen Boyd
2015-11-24 20:35                                             ` Russell King - ARM Linux
2015-11-24 21:11                                               ` Arnd Bergmann
2016-01-13  1:51                                               ` Stephen Boyd
2015-11-24 10:37                                       ` Russell King - ARM Linux

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=12750898.0A5czJmNqv@wuerfel \
    --to=arnd@arndb.de \
    --cc=linux-arm-kernel@lists.infradead.org \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox