[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 3/5] x86/AMD: make C-state handling independent of Dom0
On Tue, Jun 11, 2019 at 06:42:33AM -0600, Jan Beulich wrote: > >>> On 10.06.19 at 18:28, <andrew.cooper3@xxxxxxxxxx> wrote: > > On 23/05/2019 13:18, Jan Beulich wrote: > >> At least for more recent CPUs, following what BKDG / PPR suggest for the > >> BIOS to surface via ACPI we can make ourselves independent of Dom0 > >> uploading respective data. > >> > >> Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx> > >> --- > >> TBD: Can we set local_apic_timer_c2_ok to true? I can't seem to find any > >> statement in the BKDG / PPR as to whether the LAPIC timer continues > >> running in CC6. > > > > This ought to be easy to determine. Given the description of CC6 > > flushing the cache and power gating the core, I'd say there is a > > reasonable chance that the LAPIC timer stops in CC6. > > But "reasonable chance" isn't enough for my taste here. And from > what you deduce, the answer to the question would be "no", and > hence simply no change to be made anywhere. (I do think though > that it's more complicated than this, because iirc much also depends > on what the firmware actually does.) The LAPIC timer never stops on the currently platforms (Naples and Rome). This is a knowledgable HW engineer so. > >> TBD: We may want to verify that HLT indeed is configured to enter CC6. > > > > I can't actually spot anything which talks about HLT directly. The > > closest I can post is CFOH (cache flush on halt) which is an > > auto-transition from CC1 to CC6 after a specific timeout, but the > > wording suggests that mwait would also take this path. > > Well, I had come across a section describing how HLT can be > configured to be the same action as the I/O port read from one > of the three ports involved in C-state management > (CStateBaseAddr+0...2). But I can't seem to find this again. > > As to MWAIT behaving the same, I don't think I can spot proof > of your interpretation or proof of Brian's. It's not really documented clearly. I got my information from the HW engineers. I've already posted what information I know so I won't repeat it. > >> --- a/xen/arch/x86/acpi/cpu_idle.c > >> +++ b/xen/arch/x86/acpi/cpu_idle.c > >> @@ -1283,6 +1288,98 @@ long set_cx_pminfo(uint32_t acpi_id, str > >> return 0; > >> } > >> > >> +static void amd_cpuidle_init(struct acpi_processor_power *power) > >> +{ > >> + unsigned int i, nr = 0; > >> + const struct cpuinfo_x86 *c = ¤t_cpu_data; > >> + const unsigned int ecx_req = CPUID5_ECX_EXTENSIONS_SUPPORTED | > >> + CPUID5_ECX_INTERRUPT_BREAK; > >> + const struct acpi_processor_cx *cx = NULL; > >> + static const struct acpi_processor_cx fam17[] = { > >> + { > >> + .type = ACPI_STATE_C1, > >> + .entry_method = ACPI_CSTATE_EM_FFH, > >> + .address = 0, > >> + .latency = 1, > >> + }, > >> + { > >> + .type = ACPI_STATE_C2, > >> + .entry_method = ACPI_CSTATE_EM_HALT, > >> + .latency = 400, > >> + }, > >> + }; > >> + > >> + if ( pm_idle_save && pm_idle != acpi_processor_idle ) > >> + return; > >> + > >> + if ( vendor_override < 0 ) > >> + return; > >> + > >> + switch ( c->x86 ) > >> + { > >> + case 0x17: > > > > With Hygon in the mix, this should be expanded to Fam18h. > > But only once we get a guarantee from AMD that they won't use > family 18h. Otherwise we'd have to use vendor checks here. > Anyway this series predates the merging of the Hygon one. But > yes, I can easily do this for v2. > > Jan > > -- Brian Woods _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |