forked from Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
90 lines
2.3 KiB
90 lines
2.3 KiB
// SPDX-License-Identifier: GPL-2.0-or-later |
|
/* |
|
* xen-stub.c - stub drivers to reserve space for Xen |
|
* |
|
* Copyright (C) 2012 Intel Corporation |
|
* Author: Liu Jinsong <[email protected]> |
|
* Author: Jiang Yunhong <[email protected]> |
|
* |
|
* Copyright (C) 2012 Oracle Inc |
|
* Author: Konrad Rzeszutek Wilk <[email protected]> |
|
*/ |
|
|
|
#include <linux/kernel.h> |
|
#include <linux/init.h> |
|
#include <linux/export.h> |
|
#include <linux/types.h> |
|
#include <linux/acpi.h> |
|
#include <xen/acpi.h> |
|
|
|
#ifdef CONFIG_ACPI |
|
|
|
/*-------------------------------------------- |
|
stub driver for Xen memory hotplug |
|
--------------------------------------------*/ |
|
|
|
static const struct acpi_device_id memory_device_ids[] = { |
|
{ACPI_MEMORY_DEVICE_HID, 0}, |
|
{"", 0}, |
|
}; |
|
|
|
static struct acpi_driver xen_stub_memory_device_driver = { |
|
/* same name as native memory driver to block native loaded */ |
|
.name = "acpi_memhotplug", |
|
.class = ACPI_MEMORY_DEVICE_CLASS, |
|
.ids = memory_device_ids, |
|
}; |
|
|
|
int xen_stub_memory_device_init(void) |
|
{ |
|
if (!xen_initial_domain()) |
|
return -ENODEV; |
|
|
|
/* just reserve space for Xen, block native driver loaded */ |
|
return acpi_bus_register_driver(&xen_stub_memory_device_driver); |
|
} |
|
EXPORT_SYMBOL_GPL(xen_stub_memory_device_init); |
|
subsys_initcall(xen_stub_memory_device_init); |
|
|
|
void xen_stub_memory_device_exit(void) |
|
{ |
|
acpi_bus_unregister_driver(&xen_stub_memory_device_driver); |
|
} |
|
EXPORT_SYMBOL_GPL(xen_stub_memory_device_exit); |
|
|
|
|
|
/*-------------------------------------------- |
|
stub driver for Xen cpu hotplug |
|
--------------------------------------------*/ |
|
|
|
static const struct acpi_device_id processor_device_ids[] = { |
|
{ACPI_PROCESSOR_OBJECT_HID, 0}, |
|
{ACPI_PROCESSOR_DEVICE_HID, 0}, |
|
{"", 0}, |
|
}; |
|
|
|
static struct acpi_driver xen_stub_processor_driver = { |
|
/* same name as native processor driver to block native loaded */ |
|
.name = "processor", |
|
.class = ACPI_PROCESSOR_CLASS, |
|
.ids = processor_device_ids, |
|
}; |
|
|
|
int xen_stub_processor_init(void) |
|
{ |
|
if (!xen_initial_domain()) |
|
return -ENODEV; |
|
|
|
/* just reserve space for Xen, block native driver loaded */ |
|
return acpi_bus_register_driver(&xen_stub_processor_driver); |
|
} |
|
EXPORT_SYMBOL_GPL(xen_stub_processor_init); |
|
subsys_initcall(xen_stub_processor_init); |
|
|
|
void xen_stub_processor_exit(void) |
|
{ |
|
acpi_bus_unregister_driver(&xen_stub_processor_driver); |
|
} |
|
EXPORT_SYMBOL_GPL(xen_stub_processor_exit); |
|
|
|
#endif
|
|
|