Lines Matching +full:io +full:- +full:hv
1 // SPDX-License-Identifier: GPL-2.0-only
50 return reg - HV_X64_MSR_SINT0 + HV_X64_MSR_NESTED_SINT0; in hv_get_nested_msr()
143 * Routines to do per-architecture handling of stimer0
232 * Hyper-V clock counter resets during hibernation. Save and restore clock
234 * before suspend. This is to make sure that sched_clock using hv tsc page
246 * Adjust the offsets used by hv tsc clocksource to in restore_hv_clock_tsc_state()
249 * - reference counter (time) now. in restore_hv_clock_tsc_state()
251 hv_adj_sched_clock_offset(hv_ref_counter_at_suspend - hv_read_reference_counter()); in restore_hv_clock_tsc_state()
256 * functions of x86_platform. The Hyper-V clock counter is reset during
257 * suspend-resume and the offset used to measure time needs to be
297 memcmp("Microsoft Hv", hyp_signature, 12)) in ms_hyperv_platform()
316 * Prior to WS2016 Debug-VM sends NMIs to all CPUs which makes
322 static atomic_t nmi_cpu = ATOMIC_INIT(-1); in hv_nmi_unknown()
328 old_cpu = -1; in hv_nmi_unknown()
365 * Override wakeup_secondary_cpu_64 callback for SEV-SNP in hv_smp_prepare_cpus()
369 apic->wakeup_secondary_cpu_64 = hv_snp_boot_ap; in hv_smp_prepare_cpus()
392 * When a fully enlightened TDX VM runs on Hyper-V, the firmware sets the
394 * interrupts can't work because request_irq() -> ... -> irq_to_desc() returns
397 * later setup_IO_APIC_irqs() -> find_irq_entry() fails to find the legacy irqs
402 * 'default_legacy_pic'. This way, mp_config_acpi_legacy_irqs() sees a non-zero
417 pr_err("%s: Could not detect Hyper-V version\n", __func__); in hv_get_hypervisor_version()
418 return -ENODEV; in hv_get_hypervisor_version()
421 cpuid(HYPERV_CPUID_VERSION, &info->eax, &info->ebx, &info->ecx, &info->edx); in hv_get_hypervisor_version()
431 pv_info.name = "Hyper-V"; in ms_hyperv_init_platform()
444 pr_info("Hyper-V: privilege flags low 0x%x, high 0x%x, hints 0x%x, misc 0x%x\n", in ms_hyperv_init_platform()
451 pr_debug("Hyper-V: max %u virtual processors, %u logical processors\n", in ms_hyperv_init_platform()
463 * Hyper-V should never specify running as root and as a Confidential in ms_hyperv_init_platform()
464 * VM. But to protect against a compromised/malicious Hyper-V trying in ms_hyperv_init_platform()
471 pr_info("Hyper-V: running as root partition\n"); in ms_hyperv_init_platform()
476 pr_info("Hyper-V: running on a nested hypervisor\n"); in ms_hyperv_init_platform()
496 pr_info("Hyper-V: Isolation Config: Group A 0x%x, Group B 0x%x\n", in ms_hyperv_init_platform()
510 * Mark the Hyper-V TSC page feature as disabled in ms_hyperv_init_platform()
520 * print a warning message. The slower Hyper-V MSR-based in ms_hyperv_init_platform()
524 pr_warn("Hyper-V: Invariant TSC is unavailable\n"); in ms_hyperv_init_platform()
529 /* Don't trust Hyper-V's TLB-flushing hypercalls. */ in ms_hyperv_init_platform()
540 pr_info("Hyper-V: Nested features: 0x%x\n", in ms_hyperv_init_platform()
555 pr_info("Hyper-V: LAPIC Timer Frequency: %#x\n", in ms_hyperv_init_platform()
627 * Hyper-V doesn't provide irq remapping for IO-APIC. To enable x2apic, in ms_hyperv_init_platform()
629 * and Hyper-V IOMMU driver makes sure cpus assigned with IO-APIC irqs in ms_hyperv_init_platform()
630 * have 8-bit APIC id. in ms_hyperv_init_platform()
637 /* Register Hyper-V specific clocksource */ in ms_hyperv_init_platform()
643 * TSC should be marked as unstable only after Hyper-V in ms_hyperv_init_platform()
648 mark_tsc_unstable("running on Hyper-V"); in ms_hyperv_init_platform()
660 * returns -ENODEV and the Hyper-V IOMMU driver is not used; instead, the
661 * generic support of the 15-bit APIC ID is used: see __irq_msi_compose_msg().
663 * Note: for a VM on Hyper-V, the I/O-APIC is the only device which
665 * There is no HPET, and PCI MSI/MSI-X interrupts are remapped by the
666 * pci-hyperv host bridge.
668 * Note: for a Hyper-V root partition, this will always return false.
670 * default, they are implemented as intercepts by the Windows Hyper-V stack.
690 ghcb_set_rcx(ghcb, regs->cx); in hv_sev_es_hcall_prepare()
691 ghcb_set_rdx(ghcb, regs->dx); in hv_sev_es_hcall_prepare()
692 ghcb_set_r8(ghcb, regs->r8); in hv_sev_es_hcall_prepare()
703 .name = "Microsoft Hyper-V",