mirror of
https://github.com/torvalds/linux.git
synced 2024-11-24 21:21:41 +00:00
Drivers: hv: Add arch independent default functions for some Hyper-V handlers
Architecture independent Hyper-V code calls various arch-specific handlers when needed. To aid in supporting multiple architectures, provide weak defaults that can be overridden by arch-specific implementations where appropriate. But when arch-specific overrides aren't needed or haven't been implemented yet for a particular architecture, these stubs reduce the amount of clutter under arch/. No functional change. Signed-off-by: Michael Kelley <mikelley@microsoft.com> Link: https://lore.kernel.org/r/1626287687-2045-3-git-send-email-mikelley@microsoft.com Signed-off-by: Wei Liu <wei.liu@kernel.org>
This commit is contained in:
parent
afca4d95dd
commit
9d7cf2c967
@ -468,7 +468,6 @@ void hyperv_cleanup(void)
|
|||||||
hypercall_msr.as_uint64 = 0;
|
hypercall_msr.as_uint64 = 0;
|
||||||
wrmsrl(HV_X64_MSR_REFERENCE_TSC, hypercall_msr.as_uint64);
|
wrmsrl(HV_X64_MSR_REFERENCE_TSC, hypercall_msr.as_uint64);
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(hyperv_cleanup);
|
|
||||||
|
|
||||||
void hyperv_report_panic(struct pt_regs *regs, long err, bool in_die)
|
void hyperv_report_panic(struct pt_regs *regs, long err, bool in_die)
|
||||||
{
|
{
|
||||||
@ -542,4 +541,3 @@ bool hv_is_isolation_supported(void)
|
|||||||
{
|
{
|
||||||
return hv_get_isolation_type() != HV_ISOLATION_TYPE_NONE;
|
return hv_get_isolation_type() != HV_ISOLATION_TYPE_NONE;
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(hv_is_isolation_supported);
|
|
||||||
|
@ -62,14 +62,12 @@ void hv_setup_vmbus_handler(void (*handler)(void))
|
|||||||
{
|
{
|
||||||
vmbus_handler = handler;
|
vmbus_handler = handler;
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(hv_setup_vmbus_handler);
|
|
||||||
|
|
||||||
void hv_remove_vmbus_handler(void)
|
void hv_remove_vmbus_handler(void)
|
||||||
{
|
{
|
||||||
/* We have no way to deallocate the interrupt gate */
|
/* We have no way to deallocate the interrupt gate */
|
||||||
vmbus_handler = NULL;
|
vmbus_handler = NULL;
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(hv_remove_vmbus_handler);
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Routines to do per-architecture handling of stimer0
|
* Routines to do per-architecture handling of stimer0
|
||||||
@ -104,25 +102,21 @@ void hv_setup_kexec_handler(void (*handler)(void))
|
|||||||
{
|
{
|
||||||
hv_kexec_handler = handler;
|
hv_kexec_handler = handler;
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(hv_setup_kexec_handler);
|
|
||||||
|
|
||||||
void hv_remove_kexec_handler(void)
|
void hv_remove_kexec_handler(void)
|
||||||
{
|
{
|
||||||
hv_kexec_handler = NULL;
|
hv_kexec_handler = NULL;
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(hv_remove_kexec_handler);
|
|
||||||
|
|
||||||
void hv_setup_crash_handler(void (*handler)(struct pt_regs *regs))
|
void hv_setup_crash_handler(void (*handler)(struct pt_regs *regs))
|
||||||
{
|
{
|
||||||
hv_crash_handler = handler;
|
hv_crash_handler = handler;
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(hv_setup_crash_handler);
|
|
||||||
|
|
||||||
void hv_remove_crash_handler(void)
|
void hv_remove_crash_handler(void)
|
||||||
{
|
{
|
||||||
hv_crash_handler = NULL;
|
hv_crash_handler = NULL;
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(hv_remove_crash_handler);
|
|
||||||
|
|
||||||
#ifdef CONFIG_KEXEC_CORE
|
#ifdef CONFIG_KEXEC_CORE
|
||||||
static void hv_machine_shutdown(void)
|
static void hv_machine_shutdown(void)
|
||||||
|
@ -16,6 +16,7 @@
|
|||||||
#include <linux/export.h>
|
#include <linux/export.h>
|
||||||
#include <linux/bitfield.h>
|
#include <linux/bitfield.h>
|
||||||
#include <linux/cpumask.h>
|
#include <linux/cpumask.h>
|
||||||
|
#include <linux/ptrace.h>
|
||||||
#include <linux/slab.h>
|
#include <linux/slab.h>
|
||||||
#include <asm/hyperv-tlfs.h>
|
#include <asm/hyperv-tlfs.h>
|
||||||
#include <asm/mshyperv.h>
|
#include <asm/mshyperv.h>
|
||||||
@ -202,3 +203,51 @@ bool hv_query_ext_cap(u64 cap_query)
|
|||||||
return hv_extended_cap & cap_query;
|
return hv_extended_cap & cap_query;
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(hv_query_ext_cap);
|
EXPORT_SYMBOL_GPL(hv_query_ext_cap);
|
||||||
|
|
||||||
|
/* These __weak functions provide default "no-op" behavior and
|
||||||
|
* may be overridden by architecture specific versions. Architectures
|
||||||
|
* for which the default "no-op" behavior is sufficient can leave
|
||||||
|
* them unimplemented and not be cluttered with a bunch of stub
|
||||||
|
* functions in arch-specific code.
|
||||||
|
*/
|
||||||
|
|
||||||
|
bool __weak hv_is_isolation_supported(void)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(hv_is_isolation_supported);
|
||||||
|
|
||||||
|
void __weak hv_setup_vmbus_handler(void (*handler)(void))
|
||||||
|
{
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(hv_setup_vmbus_handler);
|
||||||
|
|
||||||
|
void __weak hv_remove_vmbus_handler(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(hv_remove_vmbus_handler);
|
||||||
|
|
||||||
|
void __weak hv_setup_kexec_handler(void (*handler)(void))
|
||||||
|
{
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(hv_setup_kexec_handler);
|
||||||
|
|
||||||
|
void __weak hv_remove_kexec_handler(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(hv_remove_kexec_handler);
|
||||||
|
|
||||||
|
void __weak hv_setup_crash_handler(void (*handler)(struct pt_regs *regs))
|
||||||
|
{
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(hv_setup_crash_handler);
|
||||||
|
|
||||||
|
void __weak hv_remove_crash_handler(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(hv_remove_crash_handler);
|
||||||
|
|
||||||
|
void __weak hyperv_cleanup(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(hyperv_cleanup);
|
||||||
|
Loading…
Reference in New Issue
Block a user