From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:58250) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cpkwm-00059x-Tu for qemu-devel@nongnu.org; Sun, 19 Mar 2017 20:13:18 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cpkwl-0004ws-Jn for qemu-devel@nongnu.org; Sun, 19 Mar 2017 20:13:16 -0400 Received: from mga03.intel.com ([134.134.136.65]:51743) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cpkwl-0004uJ-9P for qemu-devel@nongnu.org; Sun, 19 Mar 2017 20:13:15 -0400 From: Haozhong Zhang Date: Mon, 20 Mar 2017 08:12:46 +0800 Message-Id: <20170320001249.25521-8-haozhong.zhang@intel.com> In-Reply-To: <20170320001249.25521-1-haozhong.zhang@intel.com> References: <20170320001249.25521-1-haozhong.zhang@intel.com> Subject: [Qemu-devel] [RFC QEMU PATCH v2 07/10] xen-hvm: initiate building DM ACPI on i386 machine List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org, xen-devel@lists.xen.org Cc: Konrad Rzeszutek Wilk , Dan Williams , Haozhong Zhang , "Michael S. Tsirkin" , Paolo Bonzini , Richard Henderson , Eduardo Habkost , Stefano Stabellini , Anthony Perard , xen-devel@lists.xenproject.org If QEMU is running as Xen device model and Xen needs ACPI (e.g. NFIT) from QEMU, initiate building DM ACPI. Signed-off-by: Haozhong Zhang --- Cc: "Michael S. Tsirkin" Cc: Paolo Bonzini Cc: Richard Henderson Cc: Eduardo Habkost Cc: Stefano Stabellini Cc: Anthony Perard Cc: xen-devel@lists.xenproject.org --- hw/i386/pc.c | 16 ++++++++++------ include/hw/xen/xen.h | 2 ++ xen-hvm-stub.c | 4 ++++ xen-hvm.c | 23 ++++++++++++++++++++++- 4 files changed, 38 insertions(+), 7 deletions(-) diff --git a/hw/i386/pc.c b/hw/i386/pc.c index d24388e05f..6b76720c35 100644 --- a/hw/i386/pc.c +++ b/hw/i386/pc.c @@ -1256,12 +1256,16 @@ void pc_machine_done(Notifier *notifier, void *data) } } - acpi_setup(); - if (pcms->fw_cfg) { - pc_build_smbios(pcms); - pc_build_feature_control_file(pcms); - /* update FW_CFG_NB_CPUS to account for -device added CPUs */ - fw_cfg_modify_i16(pcms->fw_cfg, FW_CFG_NB_CPUS, pcms->boot_cpus); + if (!xen_enabled()) { + acpi_setup(); + if (pcms->fw_cfg) { + pc_build_smbios(pcms); + pc_build_feature_control_file(pcms); + /* update FW_CFG_NB_CPUS to account for -device added CPUs */ + fw_cfg_modify_i16(pcms->fw_cfg, FW_CFG_NB_CPUS, pcms->boot_cpus); + } + } else { + xen_dm_acpi_setup(pcms); } if (pcms->apic_id_limit > 255) { diff --git a/include/hw/xen/xen.h b/include/hw/xen/xen.h index d67cdd8c7d..2e2f4bf60d 100644 --- a/include/hw/xen/xen.h +++ b/include/hw/xen/xen.h @@ -65,4 +65,6 @@ void xen_register_framebuffer(struct MemoryRegion *mr); int xen_acpi_copy_to_guest(const char *name, const void *blob, size_t length, int type); +void xen_dm_acpi_setup(PCMachineState *pcms); + #endif /* QEMU_HW_XEN_H */ diff --git a/xen-hvm-stub.c b/xen-hvm-stub.c index a6c018505c..1231faabda 100644 --- a/xen-hvm-stub.c +++ b/xen-hvm-stub.c @@ -67,3 +67,7 @@ int xen_acpi_copy_to_guest(const char *name, const void *blob, size_t length, { return -1; } + +void xen_dm_acpi_setup(PCMachineState *pcms) +{ +} diff --git a/xen-hvm.c b/xen-hvm.c index 4ddc47e5f1..0c36dd11da 100644 --- a/xen-hvm.c +++ b/xen-hvm.c @@ -1268,7 +1268,7 @@ static ram_addr_t dm_acpi_buf_alloc(size_t length) static int xen_dm_acpi_required(PCMachineState *pcms) { - return 0; + return pcms->acpi_nvdimm_state.is_enabled; } static int xen_dm_acpi_init(PCMachineState *pcms, XenIOState *state) @@ -1280,6 +1280,27 @@ static int xen_dm_acpi_init(PCMachineState *pcms, XenIOState *state) return dm_acpi_buf_init(state); } +static void xen_dm_acpi_nvdimm_setup(PCMachineState *pcms) +{ + GArray *table_offsets = g_array_new(false, true /* clear */, + sizeof(uint32_t)); + GArray *table_data = g_array_new(false, true /* clear */, 1); + + nvdimm_build_acpi(table_offsets, table_data, + NULL, &pcms->acpi_nvdimm_state, + MACHINE(pcms)->ram_slots); + + g_array_free(table_offsets, true); + g_array_free(table_data, true); +} + +void xen_dm_acpi_setup(PCMachineState *pcms) +{ + if (pcms->acpi_nvdimm_state.is_enabled) { + xen_dm_acpi_nvdimm_setup(pcms); + } +} + void xen_hvm_init(PCMachineState *pcms, MemoryRegion **ram_memory) { int i, rc; -- 2.12.0 From mboxrd@z Thu Jan 1 00:00:00 1970 From: Haozhong Zhang Subject: [RFC QEMU PATCH v2 07/10] xen-hvm: initiate building DM ACPI on i386 machine Date: Mon, 20 Mar 2017 08:12:46 +0800 Message-ID: <20170320001249.25521-8-haozhong.zhang@intel.com> References: <20170320001249.25521-1-haozhong.zhang@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20170320001249.25521-1-haozhong.zhang@intel.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: qemu-devel@nongnu.org, xen-devel@lists.xen.org Cc: Haozhong Zhang , Stefano Stabellini , Eduardo Habkost , "Michael S. Tsirkin" , xen-devel@lists.xenproject.org, Paolo Bonzini , Anthony Perard , Konrad Rzeszutek Wilk , Dan Williams , Richard Henderson List-Id: xen-devel@lists.xenproject.org SWYgUUVNVSBpcyBydW5uaW5nIGFzIFhlbiBkZXZpY2UgbW9kZWwgYW5kIFhlbiBuZWVkcyBBQ1BJ IChlLmcuIE5GSVQpCmZyb20gUUVNVSwgaW5pdGlhdGUgYnVpbGRpbmcgRE0gQUNQSS4KClNpZ25l ZC1vZmYtYnk6IEhhb3pob25nIFpoYW5nIDxoYW96aG9uZy56aGFuZ0BpbnRlbC5jb20+Ci0tLQpD YzogIk1pY2hhZWwgUy4gVHNpcmtpbiIgPG1zdEByZWRoYXQuY29tPgpDYzogUGFvbG8gQm9uemlu aSA8cGJvbnppbmlAcmVkaGF0LmNvbT4KQ2M6IFJpY2hhcmQgSGVuZGVyc29uIDxydGhAdHdpZGRs ZS5uZXQ+CkNjOiBFZHVhcmRvIEhhYmtvc3QgPGVoYWJrb3N0QHJlZGhhdC5jb20+CkNjOiBTdGVm YW5vIFN0YWJlbGxpbmkgPHNzdGFiZWxsaW5pQGtlcm5lbC5vcmc+CkNjOiBBbnRob255IFBlcmFy ZCA8YW50aG9ueS5wZXJhcmRAY2l0cml4LmNvbT4KQ2M6IHhlbi1kZXZlbEBsaXN0cy54ZW5wcm9q ZWN0Lm9yZwotLS0KIGh3L2kzODYvcGMuYyAgICAgICAgIHwgMTYgKysrKysrKysrKy0tLS0tLQog aW5jbHVkZS9ody94ZW4veGVuLmggfCAgMiArKwogeGVuLWh2bS1zdHViLmMgICAgICAgfCAgNCAr KysrCiB4ZW4taHZtLmMgICAgICAgICAgICB8IDIzICsrKysrKysrKysrKysrKysrKysrKystCiA0 IGZpbGVzIGNoYW5nZWQsIDM4IGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvaHcvaTM4Ni9wYy5jIGIvaHcvaTM4Ni9wYy5jCmluZGV4IGQyNDM4OGUwNWYuLjZiNzY3 MjBjMzUgMTAwNjQ0Ci0tLSBhL2h3L2kzODYvcGMuYworKysgYi9ody9pMzg2L3BjLmMKQEAgLTEy NTYsMTIgKzEyNTYsMTYgQEAgdm9pZCBwY19tYWNoaW5lX2RvbmUoTm90aWZpZXIgKm5vdGlmaWVy LCB2b2lkICpkYXRhKQogICAgICAgICB9CiAgICAgfQogCi0gICAgYWNwaV9zZXR1cCgpOwotICAg IGlmIChwY21zLT5md19jZmcpIHsKLSAgICAgICAgcGNfYnVpbGRfc21iaW9zKHBjbXMpOwotICAg ICAgICBwY19idWlsZF9mZWF0dXJlX2NvbnRyb2xfZmlsZShwY21zKTsKLSAgICAgICAgLyogdXBk YXRlIEZXX0NGR19OQl9DUFVTIHRvIGFjY291bnQgZm9yIC1kZXZpY2UgYWRkZWQgQ1BVcyAqLwot ICAgICAgICBmd19jZmdfbW9kaWZ5X2kxNihwY21zLT5md19jZmcsIEZXX0NGR19OQl9DUFVTLCBw Y21zLT5ib290X2NwdXMpOworICAgIGlmICgheGVuX2VuYWJsZWQoKSkgeworICAgICAgICBhY3Bp X3NldHVwKCk7CisgICAgICAgIGlmIChwY21zLT5md19jZmcpIHsKKyAgICAgICAgICAgIHBjX2J1 aWxkX3NtYmlvcyhwY21zKTsKKyAgICAgICAgICAgIHBjX2J1aWxkX2ZlYXR1cmVfY29udHJvbF9m aWxlKHBjbXMpOworICAgICAgICAgICAgLyogdXBkYXRlIEZXX0NGR19OQl9DUFVTIHRvIGFjY291 bnQgZm9yIC1kZXZpY2UgYWRkZWQgQ1BVcyAqLworICAgICAgICAgICAgZndfY2ZnX21vZGlmeV9p MTYocGNtcy0+ZndfY2ZnLCBGV19DRkdfTkJfQ1BVUywgcGNtcy0+Ym9vdF9jcHVzKTsKKyAgICAg ICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIHhlbl9kbV9hY3BpX3NldHVwKHBjbXMpOwogICAg IH0KIAogICAgIGlmIChwY21zLT5hcGljX2lkX2xpbWl0ID4gMjU1KSB7CmRpZmYgLS1naXQgYS9p bmNsdWRlL2h3L3hlbi94ZW4uaCBiL2luY2x1ZGUvaHcveGVuL3hlbi5oCmluZGV4IGQ2N2NkZDhj N2QuLjJlMmY0YmY2MGQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvaHcveGVuL3hlbi5oCisrKyBiL2lu Y2x1ZGUvaHcveGVuL3hlbi5oCkBAIC02NSw0ICs2NSw2IEBAIHZvaWQgeGVuX3JlZ2lzdGVyX2Zy YW1lYnVmZmVyKHN0cnVjdCBNZW1vcnlSZWdpb24gKm1yKTsKIGludCB4ZW5fYWNwaV9jb3B5X3Rv X2d1ZXN0KGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IHZvaWQgKmJsb2IsIHNpemVfdCBsZW5ndGgs CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdHlwZSk7CiAKK3ZvaWQgeGVuX2RtX2Fj cGlfc2V0dXAoUENNYWNoaW5lU3RhdGUgKnBjbXMpOworCiAjZW5kaWYgLyogUUVNVV9IV19YRU5f SCAqLwpkaWZmIC0tZ2l0IGEveGVuLWh2bS1zdHViLmMgYi94ZW4taHZtLXN0dWIuYwppbmRleCBh NmMwMTg1MDVjLi4xMjMxZmFhYmRhIDEwMDY0NAotLS0gYS94ZW4taHZtLXN0dWIuYworKysgYi94 ZW4taHZtLXN0dWIuYwpAQCAtNjcsMyArNjcsNyBAQCBpbnQgeGVuX2FjcGlfY29weV90b19ndWVz dChjb25zdCBjaGFyICpuYW1lLCBjb25zdCB2b2lkICpibG9iLCBzaXplX3QgbGVuZ3RoLAogewog ICAgIHJldHVybiAtMTsKIH0KKwordm9pZCB4ZW5fZG1fYWNwaV9zZXR1cChQQ01hY2hpbmVTdGF0 ZSAqcGNtcykKK3sKK30KZGlmZiAtLWdpdCBhL3hlbi1odm0uYyBiL3hlbi1odm0uYwppbmRleCA0 ZGRjNDdlNWYxLi4wYzM2ZGQxMWRhIDEwMDY0NAotLS0gYS94ZW4taHZtLmMKKysrIGIveGVuLWh2 bS5jCkBAIC0xMjY4LDcgKzEyNjgsNyBAQCBzdGF0aWMgcmFtX2FkZHJfdCBkbV9hY3BpX2J1Zl9h bGxvYyhzaXplX3QgbGVuZ3RoKQogCiBzdGF0aWMgaW50IHhlbl9kbV9hY3BpX3JlcXVpcmVkKFBD TWFjaGluZVN0YXRlICpwY21zKQogewotICAgIHJldHVybiAwOworICAgIHJldHVybiBwY21zLT5h Y3BpX252ZGltbV9zdGF0ZS5pc19lbmFibGVkOwogfQogCiBzdGF0aWMgaW50IHhlbl9kbV9hY3Bp X2luaXQoUENNYWNoaW5lU3RhdGUgKnBjbXMsIFhlbklPU3RhdGUgKnN0YXRlKQpAQCAtMTI4MCw2 ICsxMjgwLDI3IEBAIHN0YXRpYyBpbnQgeGVuX2RtX2FjcGlfaW5pdChQQ01hY2hpbmVTdGF0ZSAq cGNtcywgWGVuSU9TdGF0ZSAqc3RhdGUpCiAgICAgcmV0dXJuIGRtX2FjcGlfYnVmX2luaXQoc3Rh dGUpOwogfQogCitzdGF0aWMgdm9pZCB4ZW5fZG1fYWNwaV9udmRpbW1fc2V0dXAoUENNYWNoaW5l U3RhdGUgKnBjbXMpCit7CisgICAgR0FycmF5ICp0YWJsZV9vZmZzZXRzID0gZ19hcnJheV9uZXco ZmFsc2UsIHRydWUgLyogY2xlYXIgKi8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgc2l6ZW9mKHVpbnQzMl90KSk7CisgICAgR0FycmF5ICp0YWJsZV9kYXRhID0gZ19h cnJheV9uZXcoZmFsc2UsIHRydWUgLyogY2xlYXIgKi8sIDEpOworCisgICAgbnZkaW1tX2J1aWxk X2FjcGkodGFibGVfb2Zmc2V0cywgdGFibGVfZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICBO VUxMLCAmcGNtcy0+YWNwaV9udmRpbW1fc3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgTUFD SElORShwY21zKS0+cmFtX3Nsb3RzKTsKKworICAgIGdfYXJyYXlfZnJlZSh0YWJsZV9vZmZzZXRz LCB0cnVlKTsKKyAgICBnX2FycmF5X2ZyZWUodGFibGVfZGF0YSwgdHJ1ZSk7Cit9CisKK3ZvaWQg eGVuX2RtX2FjcGlfc2V0dXAoUENNYWNoaW5lU3RhdGUgKnBjbXMpCit7CisgICAgaWYgKHBjbXMt PmFjcGlfbnZkaW1tX3N0YXRlLmlzX2VuYWJsZWQpIHsKKyAgICAgICAgeGVuX2RtX2FjcGlfbnZk aW1tX3NldHVwKHBjbXMpOworICAgIH0KK30KKwogdm9pZCB4ZW5faHZtX2luaXQoUENNYWNoaW5l U3RhdGUgKnBjbXMsIE1lbW9yeVJlZ2lvbiAqKnJhbV9tZW1vcnkpCiB7CiAgICAgaW50IGksIHJj OwotLSAKMi4xMi4wCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRw czovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==