diff mbox

[RFC,3/4] nvdimm acpi: record the cache line size in AcpiNVDIMMState

Message ID 20170331084147.32716-4-haozhong.zhang@intel.com (mailing list archive)
State New, archived
Headers show

Commit Message

Haozhong Zhang March 31, 2017, 8:41 a.m. UTC
Software is allowed to write up to a cache line of data to the flush
hint address (ACPI spec 6.1, Table 5-135). NVDIMM ACPI code needs this
parameter to decide the address space size for flush hint addresses.

Signed-off-by: Haozhong Zhang <haozhong.zhang@intel.com>
---
 hw/acpi/nvdimm.c        | 5 ++++-
 hw/i386/pc_piix.c       | 2 +-
 hw/i386/pc_q35.c        | 2 +-
 include/hw/mem/nvdimm.h | 5 ++++-
 4 files changed, 10 insertions(+), 4 deletions(-)
diff mbox

Patch

diff --git a/hw/acpi/nvdimm.c b/hw/acpi/nvdimm.c
index 8e7d6ec..ea2ac3e 100644
--- a/hw/acpi/nvdimm.c
+++ b/hw/acpi/nvdimm.c
@@ -881,7 +881,8 @@  void nvdimm_acpi_plug_cb(HotplugHandler *hotplug_dev, DeviceState *dev)
 }
 
 void nvdimm_init_acpi_state(AcpiNVDIMMState *state, MemoryRegion *io,
-                            FWCfgState *fw_cfg, Object *owner)
+                            FWCfgState *fw_cfg, Object *owner,
+                            unsigned int cache_line_size)
 {
     memory_region_init_io(&state->io_mr, owner, &nvdimm_dsm_ops, state,
                           "nvdimm-acpi-io", NVDIMM_ACPI_IO_LEN);
@@ -893,6 +894,8 @@  void nvdimm_init_acpi_state(AcpiNVDIMMState *state, MemoryRegion *io,
                     state->dsm_mem->len);
 
     nvdimm_init_fit_buffer(&state->fit_buf);
+
+    state->cache_line_size = cache_line_size;
 }
 
 #define NVDIMM_COMMON_DSM       "NCAL"
diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c
index 9f102aa..81dd379 100644
--- a/hw/i386/pc_piix.c
+++ b/hw/i386/pc_piix.c
@@ -298,7 +298,7 @@  static void pc_init1(MachineState *machine,
 
     if (pcms->acpi_nvdimm_state.is_enabled) {
         nvdimm_init_acpi_state(&pcms->acpi_nvdimm_state, system_io,
-                               pcms->fw_cfg, OBJECT(pcms));
+                               pcms->fw_cfg, OBJECT(pcms), 64);
     }
 }
 
diff --git a/hw/i386/pc_q35.c b/hw/i386/pc_q35.c
index dd792a8..19f5515 100644
--- a/hw/i386/pc_q35.c
+++ b/hw/i386/pc_q35.c
@@ -272,7 +272,7 @@  static void pc_q35_init(MachineState *machine)
 
     if (pcms->acpi_nvdimm_state.is_enabled) {
         nvdimm_init_acpi_state(&pcms->acpi_nvdimm_state, system_io,
-                               pcms->fw_cfg, OBJECT(pcms));
+                               pcms->fw_cfg, OBJECT(pcms), 64);
     }
 }
 
diff --git a/include/hw/mem/nvdimm.h b/include/hw/mem/nvdimm.h
index eb71f41..888def6 100644
--- a/include/hw/mem/nvdimm.h
+++ b/include/hw/mem/nvdimm.h
@@ -134,11 +134,14 @@  struct AcpiNVDIMMState {
 
     /* the IO region used by OSPM to transfer control to QEMU. */
     MemoryRegion io_mr;
+
+    unsigned int cache_line_size;
 };
 typedef struct AcpiNVDIMMState AcpiNVDIMMState;
 
 void nvdimm_init_acpi_state(AcpiNVDIMMState *state, MemoryRegion *io,
-                            FWCfgState *fw_cfg, Object *owner);
+                            FWCfgState *fw_cfg, Object *owner,
+                            unsigned int cache_line_size);
 void nvdimm_build_acpi(GArray *table_offsets, GArray *table_data,
                        BIOSLinker *linker, AcpiNVDIMMState *state,
                        uint32_t ram_slots);