acpi nvdimm: fix wrong buffer size returned by DSM method
Currently, 'RLEN' is the totally buffer size written by QEMU and it is ACPI internally used only. The buffer size returned to guest should not include 'RLEN' itself 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>
This commit is contained in:
parent
6034011c7e
commit
d51d1d7ede
|
@ -862,7 +862,8 @@ static void nvdimm_build_common_dsm(Aml *dev)
|
||||||
aml_append(method, aml_store(dsm_mem, aml_name("NTFI")));
|
aml_append(method, aml_store(dsm_mem, aml_name("NTFI")));
|
||||||
|
|
||||||
result_size = aml_local(1);
|
result_size = aml_local(1);
|
||||||
aml_append(method, aml_store(aml_name("RLEN"), result_size));
|
/* RLEN is not included in the payload returned to guest. */
|
||||||
|
aml_append(method, aml_subtract(aml_name("RLEN"), aml_int(4), result_size));
|
||||||
aml_append(method, aml_store(aml_shiftleft(result_size, aml_int(3)),
|
aml_append(method, aml_store(aml_shiftleft(result_size, aml_int(3)),
|
||||||
result_size));
|
result_size));
|
||||||
aml_append(method, aml_create_field(aml_name("ODAT"), aml_int(0),
|
aml_append(method, aml_create_field(aml_name("ODAT"), aml_int(0),
|
||||||
|
|
Loading…
Reference in a new issue