Message ID | 1478517229-140028-6-git-send-email-guangrong.xiao@linux.intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Mon, Nov 07, 2016 at 07:13:40PM +0800, Xiao Guangrong wrote: > To make the code more clearer, we > 1) check ram_slots first, and build ssdt & nfit only when it is available > 2) use nvdimm_get_plugged_device_list() to check if there is nvdimm device > plugged > > Suggested-by: Igor Mammedov <imammedo@redhat.com> > Signed-off-by: Xiao Guangrong <guangrong.xiao@linux.intel.com> > --- > hw/acpi/nvdimm.c | 30 ++++++++++++++++-------------- > 1 file changed, 16 insertions(+), 14 deletions(-) Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
On Mon, 7 Nov 2016 19:13:40 +0800 Xiao Guangrong <guangrong.xiao@linux.intel.com> wrote: > To make the code more clearer, we > 1) check ram_slots first, and build ssdt & nfit only when it is available > 2) use nvdimm_get_plugged_device_list() to check if there is nvdimm device > plugged > > Suggested-by: Igor Mammedov <imammedo@redhat.com> > Signed-off-by: Xiao Guangrong <guangrong.xiao@linux.intel.com> > --- Reviewed-by: Igor Mammedov <imammedo@redhat.com> > hw/acpi/nvdimm.c | 30 ++++++++++++++++-------------- > 1 file changed, 16 insertions(+), 14 deletions(-) > > diff --git a/hw/acpi/nvdimm.c b/hw/acpi/nvdimm.c > index 5156565..65eb6c9 100644 > --- a/hw/acpi/nvdimm.c > +++ b/hw/acpi/nvdimm.c > @@ -392,12 +392,6 @@ static void nvdimm_build_nfit(AcpiNVDIMMState *state, GArray *table_offsets, > NvdimmFitBuffer *fit_buf = &state->fit_buf; > unsigned int header; > > - > - /* NVDIMM device is not plugged? */ > - if (!fit_buf->fit->len) { > - return; > - } > - > acpi_add_table(table_offsets, table_data); > > /* NFIT header. */ > @@ -1275,14 +1269,22 @@ void nvdimm_build_acpi(GArray *table_offsets, GArray *table_data, > BIOSLinker *linker, AcpiNVDIMMState *state, > uint32_t ram_slots) > { > - nvdimm_build_nfit(state, table_offsets, table_data, linker); > + GSList *device_list; > > - /* > - * NVDIMM device is allowed to be plugged only if there is available > - * slot. > - */ > - if (ram_slots) { > - nvdimm_build_ssdt(table_offsets, table_data, linker, state->dsm_mem, > - ram_slots); > + /* no nvdimm device can be plugged. */ > + if (!ram_slots) { > + return; > } > + > + nvdimm_build_ssdt(table_offsets, table_data, linker, state->dsm_mem, > + ram_slots); > + > + device_list = nvdimm_get_plugged_device_list(); > + /* no NVDIMM device is plugged. */ > + if (!device_list) { > + return; > + } > + > + nvdimm_build_nfit(state, table_offsets, table_data, linker); > + g_slist_free(device_list); > }
diff --git a/hw/acpi/nvdimm.c b/hw/acpi/nvdimm.c index 5156565..65eb6c9 100644 --- a/hw/acpi/nvdimm.c +++ b/hw/acpi/nvdimm.c @@ -392,12 +392,6 @@ static void nvdimm_build_nfit(AcpiNVDIMMState *state, GArray *table_offsets, NvdimmFitBuffer *fit_buf = &state->fit_buf; unsigned int header; - - /* NVDIMM device is not plugged? */ - if (!fit_buf->fit->len) { - return; - } - acpi_add_table(table_offsets, table_data); /* NFIT header. */ @@ -1275,14 +1269,22 @@ void nvdimm_build_acpi(GArray *table_offsets, GArray *table_data, BIOSLinker *linker, AcpiNVDIMMState *state, uint32_t ram_slots) { - nvdimm_build_nfit(state, table_offsets, table_data, linker); + GSList *device_list; - /* - * NVDIMM device is allowed to be plugged only if there is available - * slot. - */ - if (ram_slots) { - nvdimm_build_ssdt(table_offsets, table_data, linker, state->dsm_mem, - ram_slots); + /* no nvdimm device can be plugged. */ + if (!ram_slots) { + return; } + + nvdimm_build_ssdt(table_offsets, table_data, linker, state->dsm_mem, + ram_slots); + + device_list = nvdimm_get_plugged_device_list(); + /* no NVDIMM device is plugged. */ + if (!device_list) { + return; + } + + nvdimm_build_nfit(state, table_offsets, table_data, linker); + g_slist_free(device_list); }
To make the code more clearer, we 1) check ram_slots first, and build ssdt & nfit only when it is available 2) use nvdimm_get_plugged_device_list() to check if there is nvdimm device plugged Suggested-by: Igor Mammedov <imammedo@redhat.com> Signed-off-by: Xiao Guangrong <guangrong.xiao@linux.intel.com> --- hw/acpi/nvdimm.c | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-)