All of lore.kernel.org
 help / color / mirror / Atom feed
From: Simon Glass <sjg@chromium.org>
To: Bin Meng <bmeng.cn@gmail.com>
Cc: Tom Rini <trini@konsulko.com>,
	U-Boot Mailing List <u-boot@lists.denx.de>,
	 Anatolij Gustschin <agust@denx.de>
Subject: Re: [PATCH v4 09/12] x86: Enable SSE in 64-bit mode
Date: Mon, 13 Nov 2023 15:28:13 -0700	[thread overview]
Message-ID: <CAPnjgZ1PDQ2Da-0ooZSayPQ=vRRuPgFpPaEAgHXdvAZnaTBKiQ@mail.gmail.com> (raw)
In-Reply-To: <CAEUhbmVg0m6BJQ_k82Hiqc8AJW1ricfd8WhdKCzAVdj1OOm=Vg@mail.gmail.com>

Hi Bin,

On Mon, 13 Nov 2023 at 15:08, Bin Meng <bmeng.cn@gmail.com> wrote:
>
> Hi Simon,
>
> On Mon, Nov 13, 2023 at 4:03 AM Simon Glass <sjg@chromium.org> wrote:
> >
> > This is needed to support Truetype fonts. In any case, the compiler
> > expects SSE to be available in 64-bit mode. Provide an option to enable
> > SSE so that hardware floating-point arithmetic works.
> >
> > Signed-off-by: Simon Glass <sjg@chromium.org>
> > Suggested-by: Bin Meng <bmeng.cn@gmail.com>
> > ---
> >
> > Changes in v4:
> > - Use a Kconfig option
> >
> >  arch/x86/Kconfig          |  8 ++++++++
> >  arch/x86/config.mk        |  4 ++++
> >  arch/x86/cpu/x86_64/cpu.c | 12 ++++++++++++
> >  drivers/video/Kconfig     |  1 +
> >  4 files changed, 25 insertions(+)
> >
> > diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
> > index 99e59d94c606..6b532d712ee8 100644
> > --- a/arch/x86/Kconfig
> > +++ b/arch/x86/Kconfig
> > @@ -723,6 +723,14 @@ config ROM_TABLE_SIZE
> >         hex
> >         default 0x10000
> >
> > +config X86_HARDFP
> > +       bool "Support hardware floating point"
> > +       help
> > +         U-Boot generally does not make use of floating point. Where this is
> > +         needed, it can be enabled using this option. This adjusts the
> > +         start-up code for 64-bit mode and changes the compiler options for
> > +         64-bit to enable SSE.
>
> As discussed in another thread, this option should be made global to
> all architectures and by default no.
>
> > +
> >  config HAVE_ITSS
> >         bool "Enable ITSS"
> >         help
> > diff --git a/arch/x86/config.mk b/arch/x86/config.mk
> > index 26ec1af2f0b0..2e3a7119e798 100644
> > --- a/arch/x86/config.mk
> > +++ b/arch/x86/config.mk
> > @@ -27,9 +27,13 @@ ifeq ($(IS_32BIT),y)
> >  PLATFORM_CPPFLAGS += -march=i386 -m32
> >  else
> >  PLATFORM_CPPFLAGS += $(if $(CONFIG_SPL_BUILD),,-fpic) -fno-common -march=core2 -m64
> > +
> > +ifndef CONFIG_X86_HARDFP
> >  PLATFORM_CPPFLAGS += -mno-mmx -mno-sse
> >  endif
> >
> > +endif # IS_32BIT
> > +
> >  PLATFORM_RELFLAGS += -fdata-sections -ffunction-sections -fvisibility=hidden
> >
> >  KBUILD_LDFLAGS += -Bsymbolic -Bsymbolic-functions
> > diff --git a/arch/x86/cpu/x86_64/cpu.c b/arch/x86/cpu/x86_64/cpu.c
> > index 2647bff891f8..5ea746ecce4d 100644
> > --- a/arch/x86/cpu/x86_64/cpu.c
> > +++ b/arch/x86/cpu/x86_64/cpu.c
> > @@ -10,6 +10,7 @@
> >  #include <init.h>
> >  #include <asm/cpu.h>
> >  #include <asm/global_data.h>
> > +#include <asm/processor-flags.h>
> >
> >  DECLARE_GLOBAL_DATA_PTR;
> >
> > @@ -39,11 +40,22 @@ int x86_mp_init(void)
> >         return 0;
> >  }
> >
> > +/* enable SSE features for hardware floating point */
> > +static void setup_sse_features(void)
> > +{
> > +       asm ("mov %%cr4, %%rax\n" \
> > +       "or  %0, %%rax\n" \
> > +       "mov %%rax, %%cr4\n" \
> > +       : : "i" (X86_CR4_OSFXSR | X86_CR4_OSXMMEXCPT) : "eax");
> > +}
> > +
> >  int x86_cpu_reinit_f(void)
> >  {
> >         /* set the vendor to Intel so that native_calibrate_tsc() works */
> >         gd->arch.x86_vendor = X86_VENDOR_INTEL;
> >         gd->arch.has_mtrr = true;
> > +       if (IS_ENABLED(CONFIG_X86_HARDFP))
> > +               setup_sse_features();
> >
> >         return 0;
> >  }
> > diff --git a/drivers/video/Kconfig b/drivers/video/Kconfig
> > index 6f319ba0d544..39c82521be16 100644
> > --- a/drivers/video/Kconfig
> > +++ b/drivers/video/Kconfig
> > @@ -180,6 +180,7 @@ config CONSOLE_ROTATION
> >
> >  config CONSOLE_TRUETYPE
> >         bool "Support a console that uses TrueType fonts"
> > +       select X86_HARDFP if X86
>
> This should be "depends on HARDFP", indicating that the TrueType
> library is using hardware fp itself, and user has to explicitly turn
> the hardware fp Kconfig option on.

So you mean 'depends on HARDFP if X86'  ? After all, this is only for
X86 - other archs can use softfp which is already enabled, as I
understand it.

>
> "Select" does not work for architectures that does not have the
> "enabling hardware fp" logic in place.
>
> >         help
> >           TrueTrype fonts can provide outline-drawing capability rather than
> >           needing to provide a bitmap for each font and size that is needed.
> > --

I still don't think we are on the same page here. I would prefer to
just enable the options without any option. I really don't want to get
into RISC-V stuff - that is a separate concern.

From my POV it seems that x86 is special in that:
- it uses hardfp
- hardfp is always available in any CPU with 64-bit support (I think?)

So please can you be a bit more specific here?

Regards,
Simon

  reply	other threads:[~2023-11-13 22:28 UTC|newest]

Thread overview: 38+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-11-12 20:02 [PATCH v4 00/12] Resolve issues with booting distros on x86 Simon Glass
2023-11-12 20:02 ` [PATCH v4 01/12] efi: Correct handling of frame buffer Simon Glass
2023-11-12 20:02 ` [PATCH v4 02/12] bootstd: Refactor mmc prep to allow a different scan Simon Glass
2023-11-12 20:02 ` [PATCH v4 03/12] bootstd: Add a return code to bootflow menu Simon Glass
2023-11-12 20:02 ` [PATCH v4 04/12] x86: coreboot: Add a boot script Simon Glass
2023-11-12 20:02 ` [PATCH v4 05/12] usb: Avoid unbinding devices in use by bootflows Simon Glass
2023-11-12 20:27   ` Heinrich Schuchardt
2023-11-12 21:20     ` Simon Glass
2023-11-12 23:30       ` Heinrich Schuchardt
2023-11-15 15:50         ` Simon Glass
2023-11-15 16:23           ` Heinrich Schuchardt
2023-11-16  1:29             ` Heinrich Schuchardt
2023-11-16  1:42               ` Simon Glass
2023-11-16  2:01                 ` Heinrich Schuchardt
2023-11-16  2:35                   ` Simon Glass
2023-11-15 15:12   ` Shantur Rathore
2023-11-12 20:02 ` [PATCH v4 06/12] expo: Correct background colour Simon Glass
2023-11-12 20:02 ` [PATCH v4 07/12] video: Correct setting of cursor position Simon Glass
2023-11-12 20:31   ` Anatolij Gustschin
2023-11-12 20:02 ` [PATCH v4 08/12] video: Drop unnecessary truetype operations from SPL Simon Glass
2023-11-12 20:34   ` Anatolij Gustschin
2023-11-12 20:02 ` [PATCH v4 09/12] x86: Enable SSE in 64-bit mode Simon Glass
2023-11-13 22:08   ` Bin Meng
2023-11-13 22:28     ` Simon Glass [this message]
2023-11-13 22:59       ` Tom Rini
2023-11-13 23:46         ` Bin Meng
2023-11-13 23:52           ` Tom Rini
2023-11-14  1:49             ` Bin Meng
2023-11-14 16:22               ` Tom Rini
2023-11-15  0:44                 ` Bin Meng
2023-11-15  0:48                   ` Simon Glass
2023-11-15 15:46                     ` Mark Kettenis
2023-11-19 15:27                       ` Simon Glass
2023-11-15  1:38                   ` Tom Rini
2023-11-15  1:40   ` Tom Rini
2023-11-12 20:02 ` [PATCH v4 10/12] x86: coreboot: Enable truetype fonts Simon Glass
2023-11-12 20:02 ` [PATCH v4 11/12] x86: qemu: Expand ROM size Simon Glass
2023-11-12 20:02 ` [PATCH v4 12/12] x86: qemu: Enable truetype fonts Simon Glass

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='CAPnjgZ1PDQ2Da-0ooZSayPQ=vRRuPgFpPaEAgHXdvAZnaTBKiQ@mail.gmail.com' \
    --to=sjg@chromium.org \
    --cc=agust@denx.de \
    --cc=bmeng.cn@gmail.com \
    --cc=trini@konsulko.com \
    --cc=u-boot@lists.denx.de \
    /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.