qemu/include/hw/acpi/memory_hotplug.h
<<
>>
Prefs
   1#ifndef QEMU_HW_ACPI_MEMORY_HOTPLUG_H
   2#define QEMU_HW_ACPI_MEMORY_HOTPLUG_H
   3
   4#include "hw/qdev-core.h"
   5#include "hw/acpi/acpi.h"
   6#include "migration/vmstate.h"
   7#include "hw/acpi/aml-build.h"
   8
   9/**
  10 * MemStatus:
  11 * @is_removing: the memory device in slot has been requested to be ejected.
  12 *
  13 * This structure stores memory device's status.
  14 */
  15typedef struct MemStatus {
  16    DeviceState *dimm;
  17    bool is_enabled;
  18    bool is_inserting;
  19    bool is_removing;
  20    uint32_t ost_event;
  21    uint32_t ost_status;
  22} MemStatus;
  23
  24typedef struct MemHotplugState {
  25    bool is_enabled; /* true if memory hotplug is supported */
  26    MemoryRegion io;
  27    uint32_t selector;
  28    uint32_t dev_count;
  29    MemStatus *devs;
  30} MemHotplugState;
  31
  32void acpi_memory_hotplug_init(MemoryRegion *as, Object *owner,
  33                              MemHotplugState *state);
  34
  35void acpi_memory_plug_cb(ACPIREGS *ar, qemu_irq irq, MemHotplugState *mem_st,
  36                         DeviceState *dev, Error **errp);
  37void acpi_memory_unplug_request_cb(ACPIREGS *ar, qemu_irq irq,
  38                                   MemHotplugState *mem_st,
  39                                   DeviceState *dev, Error **errp);
  40void acpi_memory_unplug_cb(MemHotplugState *mem_st,
  41                           DeviceState *dev, Error **errp);
  42
  43extern const VMStateDescription vmstate_memory_hotplug;
  44#define VMSTATE_MEMORY_HOTPLUG(memhp, state) \
  45    VMSTATE_STRUCT(memhp, state, 1, \
  46                   vmstate_memory_hotplug, MemHotplugState)
  47
  48void acpi_memory_ospm_status(MemHotplugState *mem_st, ACPIOSTInfoList ***list);
  49
  50#define MEMORY_HOTPLUG_DEVICE        "MHPD"
  51#define MEMORY_SLOT_SCAN_METHOD      "MSCN"
  52#define MEMORY_HOTPLUG_HANDLER_PATH "\\_SB.PCI0." \
  53     MEMORY_HOTPLUG_DEVICE "." MEMORY_SLOT_SCAN_METHOD
  54
  55void build_memory_hotplug_aml(Aml *ctx, uint32_t nr_mem,
  56                              uint16_t io_base, uint16_t io_len);
  57#endif
  58