aboutsummaryrefslogtreecommitdiff
path: root/hw/acpi/nvdimm.c
diff options
context:
space:
mode:
authorXiao Guangrong <guangrong.xiao@linux.intel.com>2016-11-07 19:13:37 +0800
committerMichael S. Tsirkin <mst@redhat.com>2016-11-15 17:20:37 +0200
commit12f86b5b3e1bdf75e0a467d771c16cc42f3a1f1a (patch)
tree5d4c9dedb0e4cf8267f817e75872a5234f9d6f3d /hw/acpi/nvdimm.c
parentc7f8d0f3a52b5ef8fdcd305cce438f67d7e06a9f (diff)
downloadqemu-12f86b5b3e1bdf75e0a467d771c16cc42f3a1f1a.zip
qemu-12f86b5b3e1bdf75e0a467d771c16cc42f3a1f1a.tar.gz
qemu-12f86b5b3e1bdf75e0a467d771c16cc42f3a1f1a.tar.bz2
nvdimm acpi: drop the lock of fit buffer
as there is a global lock to protect vm-exit handlers and QMP/monitor, this lock can be dropped Suggested-by: Igor Mammedov <imammedo@redhat.com> Signed-off-by: Xiao Guangrong <guangrong.xiao@linux.intel.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com> Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com> Reviewed-by: Igor Mammedov <imammedo@redhat.com>
Diffstat (limited to 'hw/acpi/nvdimm.c')
-rw-r--r--hw/acpi/nvdimm.c11
1 files changed, 1 insertions, 10 deletions
diff --git a/hw/acpi/nvdimm.c b/hw/acpi/nvdimm.c
index 623bb36..0fe3547 100644
--- a/hw/acpi/nvdimm.c
+++ b/hw/acpi/nvdimm.c
@@ -371,17 +371,14 @@ static GArray *nvdimm_build_device_structure(void)
static void nvdimm_init_fit_buffer(NvdimmFitBuffer *fit_buf)
{
- qemu_mutex_init(&fit_buf->lock);
fit_buf->fit = g_array_new(false, true /* clear */, 1);
}
static void nvdimm_build_fit_buffer(NvdimmFitBuffer *fit_buf)
{
- qemu_mutex_lock(&fit_buf->lock);
g_array_free(fit_buf->fit, true);
fit_buf->fit = nvdimm_build_device_structure();
fit_buf->dirty = true;
- qemu_mutex_unlock(&fit_buf->lock);
}
void nvdimm_acpi_hotplug(AcpiNVDIMMState *state)
@@ -395,11 +392,10 @@ static void nvdimm_build_nfit(AcpiNVDIMMState *state, GArray *table_offsets,
NvdimmFitBuffer *fit_buf = &state->fit_buf;
unsigned int header;
- qemu_mutex_lock(&fit_buf->lock);
/* NVDIMM device is not plugged? */
if (!fit_buf->fit->len) {
- goto exit;
+ return;
}
acpi_add_table(table_offsets, table_data);
@@ -413,9 +409,6 @@ static void nvdimm_build_nfit(AcpiNVDIMMState *state, GArray *table_offsets,
build_header(linker, table_data,
(void *)(table_data->data + header), "NFIT",
sizeof(NvdimmNfitHeader) + fit_buf->fit->len, 1, NULL, NULL);
-
-exit:
- qemu_mutex_unlock(&fit_buf->lock);
}
struct NvdimmDsmIn {
@@ -544,7 +537,6 @@ static void nvdimm_dsm_func_read_fit(AcpiNVDIMMState *state, NvdimmDsmIn *in,
read_fit = (NvdimmFuncReadFITIn *)in->arg3;
le32_to_cpus(&read_fit->offset);
- qemu_mutex_lock(&fit_buf->lock);
fit = fit_buf->fit;
nvdimm_debug("Read FIT: offset %#x FIT size %#x Dirty %s.\n",
@@ -578,7 +570,6 @@ exit:
cpu_physical_memory_write(dsm_mem_addr, read_fit_out, size);
g_free(read_fit_out);
- qemu_mutex_unlock(&fit_buf->lock);
}
static void nvdimm_dsm_reserved_root(AcpiNVDIMMState *state, NvdimmDsmIn *in,