#define pr_fmt(fmt) …
#include <linux/interrupt.h>
#include <linux/spinlock.h>
#include <linux/cpu.h>
#include <linux/stat.h>
#include <linux/capability.h>
#include <xen/xen.h>
#include <xen/acpi.h>
#include <xen/xenbus.h>
#include <xen/events.h>
#include <xen/interface/platform.h>
#include <asm/xen/hypervisor.h>
#include <asm/xen/hypercall.h>
#ifdef CONFIG_ACPI
#include <acpi/processor.h>
#endif
struct pcpu { … };
static const struct bus_type xen_pcpu_subsys = …;
static DEFINE_MUTEX(xen_pcpu_lock);
static LIST_HEAD(xen_pcpus);
static int xen_pcpu_down(uint32_t cpu_id)
{ … }
static int xen_pcpu_up(uint32_t cpu_id)
{ … }
static ssize_t online_show(struct device *dev,
struct device_attribute *attr,
char *buf)
{ … }
static ssize_t __ref online_store(struct device *dev,
struct device_attribute *attr,
const char *buf, size_t count)
{ … }
static DEVICE_ATTR_RW(online);
static struct attribute *pcpu_dev_attrs[] = …;
static umode_t pcpu_dev_is_visible(struct kobject *kobj,
struct attribute *attr, int idx)
{ … }
static const struct attribute_group pcpu_dev_group = …;
static const struct attribute_group *pcpu_dev_groups[] = …;
static bool xen_pcpu_online(uint32_t flags)
{ … }
static void pcpu_online_status(struct xenpf_pcpuinfo *info,
struct pcpu *pcpu)
{ … }
static struct pcpu *get_pcpu(uint32_t cpu_id)
{ … }
static void pcpu_release(struct device *dev)
{ … }
static void unregister_and_remove_pcpu(struct pcpu *pcpu)
{ … }
static int register_pcpu(struct pcpu *pcpu)
{ … }
static struct pcpu *create_and_register_pcpu(struct xenpf_pcpuinfo *info)
{ … }
static int sync_pcpu(uint32_t cpu, uint32_t *max_cpu)
{ … }
static int xen_sync_pcpus(void)
{ … }
static void xen_pcpu_work_fn(struct work_struct *work)
{ … }
static DECLARE_WORK(xen_pcpu_work, xen_pcpu_work_fn);
static irqreturn_t xen_pcpu_interrupt(int irq, void *dev_id)
{ … }
static int __init xen_pcpu_init(void)
{ … }
arch_initcall(xen_pcpu_init);
#ifdef CONFIG_ACPI
bool __init xen_processor_present(uint32_t acpi_id)
{ … }
void xen_sanitize_proc_cap_bits(uint32_t *cap)
{ … }
#endif