diff mbox series

cpu/cpuid: check CPUID_PAE to determine 36 bit processor address space

Message ID 20230912120650.371781-1-anisinha@redhat.com
State New
Headers show
Series cpu/cpuid: check CPUID_PAE to determine 36 bit processor address space | expand

Commit Message

Ani Sinha Sept. 12, 2023, 12:06 p.m. UTC
PAE mode in x86 supports 36 bit address space. Check the PAE CPUID on the
guest processor and set phys_bits to 36 if PAE feature is set. This is in
addition to checking the presence of PSE36 CPUID feature for setting 36 bit
phys_bits.

Signed-off-by: Ani Sinha <anisinha@redhat.com>
---
 target/i386/cpu.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Note: Not sure what tests I should be running in order to make sure I am
not breaking any guest OSes. Usual qtests pass.

Comments

David Hildenbrand Sept. 12, 2023, 3:05 p.m. UTC | #1
On 12.09.23 14:06, Ani Sinha wrote:
> PAE mode in x86 supports 36 bit address space. Check the PAE CPUID on the
> guest processor and set phys_bits to 36 if PAE feature is set. This is in
> addition to checking the presence of PSE36 CPUID feature for setting 36 bit
> phys_bits.
> 
> Signed-off-by: Ani Sinha <anisinha@redhat.com>
> ---
>   target/i386/cpu.c | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
> 
> Note: Not sure what tests I should be running in order to make sure I am
> not breaking any guest OSes. Usual qtests pass.
> 
> diff --git a/target/i386/cpu.c b/target/i386/cpu.c
> index 24ee67b42d..f3a5c99117 100644
> --- a/target/i386/cpu.c
> +++ b/target/i386/cpu.c
> @@ -7375,7 +7375,7 @@ static void x86_cpu_realizefn(DeviceState *dev, Error **errp)
>               return;
>           }
>   
> -        if (env->features[FEAT_1_EDX] & CPUID_PSE36) {
> +        if (env->features[FEAT_1_EDX] & (CPUID_PSE36 | CPUID_PAE)) {
>               cpu->phys_bits = 36;
>           } else {
>               cpu->phys_bits = 32;

Reviewed-by: David Hildenbrand <david@redhat.com>
Michael S. Tsirkin Oct. 18, 2023, 12:05 p.m. UTC | #2
On Tue, Sep 12, 2023 at 05:36:50PM +0530, Ani Sinha wrote:
> PAE mode in x86 supports 36 bit address space. Check the PAE CPUID on the
> guest processor and set phys_bits to 36 if PAE feature is set. This is in
> addition to checking the presence of PSE36 CPUID feature for setting 36 bit
> phys_bits.
> 
> Signed-off-by: Ani Sinha <anisinha@redhat.com>

Acked-by: Michael S. Tsirkin <mst@redhat.com>

who's applying this?

> ---
>  target/i386/cpu.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> Note: Not sure what tests I should be running in order to make sure I am
> not breaking any guest OSes. Usual qtests pass.
> 
> diff --git a/target/i386/cpu.c b/target/i386/cpu.c
> index 24ee67b42d..f3a5c99117 100644
> --- a/target/i386/cpu.c
> +++ b/target/i386/cpu.c
> @@ -7375,7 +7375,7 @@ static void x86_cpu_realizefn(DeviceState *dev, Error **errp)
>              return;
>          }
>  
> -        if (env->features[FEAT_1_EDX] & CPUID_PSE36) {
> +        if (env->features[FEAT_1_EDX] & (CPUID_PSE36 | CPUID_PAE)) {
>              cpu->phys_bits = 36;
>          } else {
>              cpu->phys_bits = 32;
> -- 
> 2.39.1
Ani Sinha Oct. 18, 2023, 5:38 p.m. UTC | #3
On Wed, 18 Oct, 2023, 5:35 pm Michael S. Tsirkin, <mst@redhat.com> wrote:

> On Tue, Sep 12, 2023 at 05:36:50PM +0530, Ani Sinha wrote:
> > PAE mode in x86 supports 36 bit address space. Check the PAE CPUID on the
> > guest processor and set phys_bits to 36 if PAE feature is set. This is in
> > addition to checking the presence of PSE36 CPUID feature for setting 36
> bit
> > phys_bits.
> >
> > Signed-off-by: Ani Sinha <anisinha@redhat.com>
>
> Acked-by: Michael S. Tsirkin <mst@redhat.com>
>
> who's applying this?
>

I thought it would be you? What did I miss?


> > ---
> >  target/i386/cpu.c | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > Note: Not sure what tests I should be running in order to make sure I am
> > not breaking any guest OSes. Usual qtests pass.
> >
> > diff --git a/target/i386/cpu.c b/target/i386/cpu.c
> > index 24ee67b42d..f3a5c99117 100644
> > --- a/target/i386/cpu.c
> > +++ b/target/i386/cpu.c
> > @@ -7375,7 +7375,7 @@ static void x86_cpu_realizefn(DeviceState *dev,
> Error **errp)
> >              return;
> >          }
> >
> > -        if (env->features[FEAT_1_EDX] & CPUID_PSE36) {
> > +        if (env->features[FEAT_1_EDX] & (CPUID_PSE36 | CPUID_PAE)) {
> >              cpu->phys_bits = 36;
> >          } else {
> >              cpu->phys_bits = 32;
> > --
> > 2.39.1
>
>
Michael S. Tsirkin Oct. 18, 2023, 5:44 p.m. UTC | #4
On Wed, Oct 18, 2023 at 11:08:11PM +0530, Ani Sinha wrote:
> 
> 
> On Wed, 18 Oct, 2023, 5:35 pm Michael S. Tsirkin, <mst@redhat.com> wrote:
> 
>     On Tue, Sep 12, 2023 at 05:36:50PM +0530, Ani Sinha wrote:
>     > PAE mode in x86 supports 36 bit address space. Check the PAE CPUID on the
>     > guest processor and set phys_bits to 36 if PAE feature is set. This is in
>     > addition to checking the presence of PSE36 CPUID feature for setting 36
>     bit
>     > phys_bits.
>     >
>     > Signed-off-by: Ani Sinha <anisinha@redhat.com>
> 
>     Acked-by: Michael S. Tsirkin <mst@redhat.com>
> 
>     who's applying this?
> 
> 
> I thought it would be you? What did I miss?

I just don't play a lot with CPUID flags and might easily miss things.
Used to be Eduardo .. maybe CC him.

> 
> 
>     > ---
>     >  target/i386/cpu.c | 2 +-
>     >  1 file changed, 1 insertion(+), 1 deletion(-)
>     >
>     > Note: Not sure what tests I should be running in order to make sure I am
>     > not breaking any guest OSes. Usual qtests pass.
>     >
>     > diff --git a/target/i386/cpu.c b/target/i386/cpu.c
>     > index 24ee67b42d..f3a5c99117 100644
>     > --- a/target/i386/cpu.c
>     > +++ b/target/i386/cpu.c
>     > @@ -7375,7 +7375,7 @@ static void x86_cpu_realizefn(DeviceState *dev,
>     Error **errp)
>     >              return;
>     >          }
>     > 
>     > -        if (env->features[FEAT_1_EDX] & CPUID_PSE36) {
>     > +        if (env->features[FEAT_1_EDX] & (CPUID_PSE36 | CPUID_PAE)) {
>     >              cpu->phys_bits = 36;
>     >          } else {
>     >              cpu->phys_bits = 32;
>     > --
>     > 2.39.1
> 
>
Ani Sinha Oct. 19, 2023, 2:06 a.m. UTC | #5
On Wed, 18 Oct, 2023, 11:14 pm Michael S. Tsirkin, <mst@redhat.com> wrote:

> On Wed, Oct 18, 2023 at 11:08:11PM +0530, Ani Sinha wrote:
> >
> >
> > On Wed, 18 Oct, 2023, 5:35 pm Michael S. Tsirkin, <mst@redhat.com>
> wrote:
> >
> >     On Tue, Sep 12, 2023 at 05:36:50PM +0530, Ani Sinha wrote:
> >     > PAE mode in x86 supports 36 bit address space. Check the PAE CPUID
> on the
> >     > guest processor and set phys_bits to 36 if PAE feature is set.
> This is in
> >     > addition to checking the presence of PSE36 CPUID feature for
> setting 36
> >     bit
> >     > phys_bits.
> >     >
> >     > Signed-off-by: Ani Sinha <anisinha@redhat.com>
> >
> >     Acked-by: Michael S. Tsirkin <mst@redhat.com>
> >
> >     who's applying this?
> >
> >
> > I thought it would be you? What did I miss?
>
> I just don't play a lot with CPUID flags and might easily miss things.
> Used to be Eduardo .. maybe CC him.
>

Eduardo can you pick this up?


> >
> >
> >     > ---
> >     >  target/i386/cpu.c | 2 +-
> >     >  1 file changed, 1 insertion(+), 1 deletion(-)
> >     >
> >     > Note: Not sure what tests I should be running in order to make
> sure I am
> >     > not breaking any guest OSes. Usual qtests pass.
> >     >
> >     > diff --git a/target/i386/cpu.c b/target/i386/cpu.c
> >     > index 24ee67b42d..f3a5c99117 100644
> >     > --- a/target/i386/cpu.c
> >     > +++ b/target/i386/cpu.c
> >     > @@ -7375,7 +7375,7 @@ static void x86_cpu_realizefn(DeviceState
> *dev,
> >     Error **errp)
> >     >              return;
> >     >          }
> >     >
> >     > -        if (env->features[FEAT_1_EDX] & CPUID_PSE36) {
> >     > +        if (env->features[FEAT_1_EDX] & (CPUID_PSE36 |
> CPUID_PAE)) {
> >     >              cpu->phys_bits = 36;
> >     >          } else {
> >     >              cpu->phys_bits = 32;
> >     > --
> >     > 2.39.1
> >
> >
>
>
Ani Sinha Oct. 20, 2023, 4:52 p.m. UTC | #6
On Thu, 19 Oct, 2023, 7:36 am Ani Sinha, <anisinha@redhat.com> wrote:

>
>
> On Wed, 18 Oct, 2023, 11:14 pm Michael S. Tsirkin, <mst@redhat.com> wrote:
>
>> On Wed, Oct 18, 2023 at 11:08:11PM +0530, Ani Sinha wrote:
>> >
>> >
>> > On Wed, 18 Oct, 2023, 5:35 pm Michael S. Tsirkin, <mst@redhat.com>
>> wrote:
>> >
>> >     On Tue, Sep 12, 2023 at 05:36:50PM +0530, Ani Sinha wrote:
>> >     > PAE mode in x86 supports 36 bit address space. Check the PAE
>> CPUID on the
>> >     > guest processor and set phys_bits to 36 if PAE feature is set.
>> This is in
>> >     > addition to checking the presence of PSE36 CPUID feature for
>> setting 36
>> >     bit
>> >     > phys_bits.
>> >     >
>> >     > Signed-off-by: Ani Sinha <anisinha@redhat.com>
>> >
>> >     Acked-by: Michael S. Tsirkin <mst@redhat.com>
>> >
>> >     who's applying this?
>> >
>> >
>> > I thought it would be you? What did I miss?
>>
>> I just don't play a lot with CPUID flags and might easily miss things.
>> Used to be Eduardo .. maybe CC him.
>>
>
> Eduardo can you pick this up?
>

If Eduardo doesn't respond I'll send a PR for this.


>
>> >
>> >
>> >     > ---
>> >     >  target/i386/cpu.c | 2 +-
>> >     >  1 file changed, 1 insertion(+), 1 deletion(-)
>> >     >
>> >     > Note: Not sure what tests I should be running in order to make
>> sure I am
>> >     > not breaking any guest OSes. Usual qtests pass.
>> >     >
>> >     > diff --git a/target/i386/cpu.c b/target/i386/cpu.c
>> >     > index 24ee67b42d..f3a5c99117 100644
>> >     > --- a/target/i386/cpu.c
>> >     > +++ b/target/i386/cpu.c
>> >     > @@ -7375,7 +7375,7 @@ static void x86_cpu_realizefn(DeviceState
>> *dev,
>> >     Error **errp)
>> >     >              return;
>> >     >          }
>> >     >
>> >     > -        if (env->features[FEAT_1_EDX] & CPUID_PSE36) {
>> >     > +        if (env->features[FEAT_1_EDX] & (CPUID_PSE36 |
>> CPUID_PAE)) {
>> >     >              cpu->phys_bits = 36;
>> >     >          } else {
>> >     >              cpu->phys_bits = 32;
>> >     > --
>> >     > 2.39.1
>> >
>> >
>>
>>
Paolo Bonzini Oct. 21, 2023, 8:04 a.m. UTC | #7
On 9/12/23 14:06, Ani Sinha wrote:
> PAE mode in x86 supports 36 bit address space. Check the PAE CPUID on the
> guest processor and set phys_bits to 36 if PAE feature is set. This is in
> addition to checking the presence of PSE36 CPUID feature for setting 36 bit
> phys_bits.
> 
> Signed-off-by: Ani Sinha <anisinha@redhat.com>
> ---
>   target/i386/cpu.c | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
> 
> Note: Not sure what tests I should be running in order to make sure I am
> not breaking any guest OSes. Usual qtests pass.

Queued, thanks.

Paolo

> 
> diff --git a/target/i386/cpu.c b/target/i386/cpu.c
> index 24ee67b42d..f3a5c99117 100644
> --- a/target/i386/cpu.c
> +++ b/target/i386/cpu.c
> @@ -7375,7 +7375,7 @@ static void x86_cpu_realizefn(DeviceState *dev, Error **errp)
>               return;
>           }
>   
> -        if (env->features[FEAT_1_EDX] & CPUID_PSE36) {
> +        if (env->features[FEAT_1_EDX] & (CPUID_PSE36 | CPUID_PAE)) {
>               cpu->phys_bits = 36;
>           } else {
>               cpu->phys_bits = 32;
diff mbox series

Patch

diff --git a/target/i386/cpu.c b/target/i386/cpu.c
index 24ee67b42d..f3a5c99117 100644
--- a/target/i386/cpu.c
+++ b/target/i386/cpu.c
@@ -7375,7 +7375,7 @@  static void x86_cpu_realizefn(DeviceState *dev, Error **errp)
             return;
         }
 
-        if (env->features[FEAT_1_EDX] & CPUID_PSE36) {
+        if (env->features[FEAT_1_EDX] & (CPUID_PSE36 | CPUID_PAE)) {
             cpu->phys_bits = 36;
         } else {
             cpu->phys_bits = 32;