[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 5/5] x86: Set physical address bits based on host
From: |
Dr. David Alan Gilbert (git) |
Subject: |
[Qemu-devel] [PATCH 5/5] x86: Set physical address bits based on host |
Date: |
Thu, 16 Jun 2016 18:12:13 +0100 |
From: "Dr. David Alan Gilbert" <address@hidden>
A special case based on the previous phys-bits property; if it's
the magic value 0 then use the hosts capabilities.
Signed-off-by: Dr. David Alan Gilbert <address@hidden>
---
target-i386/cpu.c | 16 +++++++++++++++-
1 file changed, 15 insertions(+), 1 deletion(-)
diff --git a/target-i386/cpu.c b/target-i386/cpu.c
index c3bbf8e..e03e48f 100644
--- a/target-i386/cpu.c
+++ b/target-i386/cpu.c
@@ -2609,7 +2609,21 @@ void cpu_x86_cpuid(CPUX86State *env, uint32_t index,
uint32_t count,
/* 64 bit processor, 48 bits virtual, configurable
* physical bits.
*/
- *eax = 0x00003000 + cpu->phys_bits;
+ if (cpu->phys_bits != 0) {
+ *eax = 0x00003000 + cpu->phys_bits;
+ } else {
+ /* phys_bits set to 0 -> Try and read the host, again
+ * fall back to the magic 40 qemu used for a long time
+ * Note: This is setting the virtual size as well from
+ * the host; TODO: Split that out
+ */
+ uint32_t _eax;
+ *eax = 0x00003028; /* 48 bits virtual, 40 bits physical */
+ host_cpuid(0x80000000, 0, &_eax, NULL, NULL, NULL);
+ if (_eax >= 0x80000008) {
+ host_cpuid(0x80000008, 0, eax, NULL, NULL, NULL);
+ }
+ }
} else {
if (env->features[FEAT_1_EDX] & CPUID_PSE36) {
*eax = 0x00000024; /* 36 bits physical */
--
2.7.4
- Re: [Qemu-devel] [PATCH 1/5] BIT_RANGE convenience macro, (continued)
- [Qemu-devel] [PATCH 2/5] x86: Mask mtrr mask based on CPU physical address limits, Dr. David Alan Gilbert (git), 2016/06/16
- [Qemu-devel] [PATCH 3/5] x86: fill high bits of mtrr mask, Dr. David Alan Gilbert (git), 2016/06/16
- [Qemu-devel] [PATCH 5/5] x86: Set physical address bits based on host,
Dr. David Alan Gilbert (git) <=
- [Qemu-devel] [PATCH 4/5] x86: Allow physical address bits to be set, Dr. David Alan Gilbert (git), 2016/06/16
- Re: [Qemu-devel] [PATCH 4/5] x86: Allow physical address bits to be set, Paolo Bonzini, 2016/06/16
- Re: [Qemu-devel] [PATCH 4/5] x86: Allow physical address bits to be set, Eduardo Habkost, 2016/06/16
- Re: [Qemu-devel] [PATCH 4/5] x86: Allow physical address bits to be set, Dr. David Alan Gilbert, 2016/06/17
- Re: [Qemu-devel] [PATCH 4/5] x86: Allow physical address bits to be set, Paolo Bonzini, 2016/06/17
- Re: [Qemu-devel] [PATCH 4/5] x86: Allow physical address bits to be set, Gerd Hoffmann, 2016/06/17
- Re: [Qemu-devel] [PATCH 4/5] x86: Allow physical address bits to be set, Igor Mammedov, 2016/06/17
- Re: [Qemu-devel] [PATCH 4/5] x86: Allow physical address bits to be set, Gerd Hoffmann, 2016/06/17