Damien Zammit, le ven. 02 janv. 2026 04:16:01 +0000, a ecrit:
> ---
>  i386/i386/gdt.c | 18 ++++++++++++++++--
>  1 file changed, 16 insertions(+), 2 deletions(-)
> 
> diff --git a/i386/i386/gdt.c b/i386/i386/gdt.c
> index 9409c2fe..36712d3f 100644
> --- a/i386/i386/gdt.c
> +++ b/i386/i386/gdt.c
> @@ -40,6 +40,7 @@
>  
>  #include "vm_param.h"
>  #include "seg.h"
> +#include "msr.h"
>  #include "gdt.h"
>  #include "mp_desc.h"
>  
> @@ -110,6 +111,15 @@ gdt_fill(int cpu, struct real_descriptor *mygdt)
>  #endif       /* MACH_PV_DESCRIPTORS */
>  }
>  
> +#ifdef __x86_64__
> +static void
> +reload_gs_base(int cpu)
> +{
> +     wrmsr(MSR_REG_GSBASE, (uint64_t)&percpu_array[cpu]);

Is writing to MSR_REG_GSBASE really needed?

Samuel

> +     wrmsr(MSR_REG_KGSBASE, (uint64_t)&percpu_array[cpu]);
> +}
> +#endif
> +
>  static void
>  reload_segs(void)
>  {
> @@ -137,7 +147,9 @@ void
>  gdt_init(void)
>  {
>       gdt_fill(0, gdt);
> -
> +#ifdef __x86_64__
> +     reload_gs_base(0);
> +#endif
>       reload_segs();
>  
>  #ifdef       MACH_PV_PAGETABLES
> @@ -156,7 +168,9 @@ void
>  ap_gdt_init(int cpu)
>  {
>       gdt_fill(cpu, mp_gdt[cpu]);
> -
> +#ifdef __x86_64__
> +     reload_gs_base(cpu);
> +#endif
>       reload_segs();
>  }
>  #endif
> -- 
> 2.45.2
> 
> 
> 

-- 
Samuel
<y> muhahaha...
<y> ya un train qui part de Perrache à 14h57
<y> qui passe à Part-Dieu à 15h10
<y> si je le prends à Perrache, je suis en zone bleue
<y> si je le prends à Part-Dieu, je suis en zone blanche
<y> donc je vais le prendre à Perrache *mais* à Part-Dieu ;-)
 -+- #ens-mim - vive la SNCF -+-

Reply via email to