From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:58151) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cpkwc-00051N-Ae for qemu-devel@nongnu.org; Sun, 19 Mar 2017 20:13:08 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cpkwZ-0004ub-QA for qemu-devel@nongnu.org; Sun, 19 Mar 2017 20:13:06 -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 1cpkwZ-0004uJ-Hg for qemu-devel@nongnu.org; Sun, 19 Mar 2017 20:13:03 -0400 From: Haozhong Zhang Date: Mon, 20 Mar 2017 08:12:41 +0800 Message-Id: <20170320001249.25521-3-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 02/10] xen-hvm: initialize DM ACPI 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 , Stefano Stabellini , Anthony Perard , xen-devel@lists.xenproject.org Probe the base address and the length of guest ACPI buffer reserved for copying ACPI from QEMU. Signed-off-by: Haozhong Zhang --- Cc: Stefano Stabellini Cc: Anthony Perard Cc: xen-devel@lists.xenproject.org --- xen-hvm.c | 66 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) diff --git a/xen-hvm.c b/xen-hvm.c index 5043beb98f..c42c958a0a 100644 --- a/xen-hvm.c +++ b/xen-hvm.c @@ -19,6 +19,7 @@ #include "qmp-commands.h" #include "sysemu/char.h" +#include "qemu/cutils.h" #include "qemu/error-report.h" #include "qemu/range.h" #include "sysemu/xen-mapcache.h" @@ -87,6 +88,18 @@ typedef struct XenPhysmap { QLIST_ENTRY(XenPhysmap) list; } XenPhysmap; +#define HVM_XS_DM_ACPI_ROOT "/hvmloader/dm-acpi" +#define HVM_XS_DM_ACPI_ADDRESS HVM_XS_DM_ACPI_ROOT"/address" +#define HVM_XS_DM_ACPI_LENGTH HVM_XS_DM_ACPI_ROOT"/length" + +typedef struct XenAcpiBuf { + ram_addr_t base; + ram_addr_t length; + ram_addr_t used; +} XenAcpiBuf; + +static XenAcpiBuf *dm_acpi_buf; + typedef struct XenIOState { ioservid_t ioservid; shared_iopage_t *shared_page; @@ -111,6 +124,8 @@ typedef struct XenIOState { hwaddr free_phys_offset; const XenPhysmap *log_for_dirtybit; + XenAcpiBuf dm_acpi_buf; + Notifier exit; Notifier suspend; Notifier wakeup; @@ -1205,6 +1220,52 @@ static void xen_wakeup_notifier(Notifier *notifier, void *data) xc_set_hvm_param(xen_xc, xen_domid, HVM_PARAM_ACPI_S_STATE, 0); } +static int dm_acpi_buf_init(XenIOState *state) +{ + char path[80], *value; + unsigned int len; + + dm_acpi_buf = &state->dm_acpi_buf; + + snprintf(path, sizeof(path), + "/local/domain/%d"HVM_XS_DM_ACPI_ADDRESS, xen_domid); + value = xs_read(state->xenstore, 0, path, &len); + if (!value) { + return -EINVAL; + } + if (qemu_strtoul(value, NULL, 16, &dm_acpi_buf->base)) { + return -EINVAL; + } + + snprintf(path, sizeof(path), + "/local/domain/%d"HVM_XS_DM_ACPI_LENGTH, xen_domid); + value = xs_read(state->xenstore, 0, path, &len); + if (!value) { + return -EINVAL; + } + if (qemu_strtoul(value, NULL, 16, &dm_acpi_buf->length)) { + return -EINVAL; + } + + dm_acpi_buf->used = 0; + + return 0; +} + +static int xen_dm_acpi_required(PCMachineState *pcms) +{ + return 0; +} + +static int xen_dm_acpi_init(PCMachineState *pcms, XenIOState *state) +{ + if (!xen_dm_acpi_required(pcms)) { + return 0; + } + + return dm_acpi_buf_init(state); +} + void xen_hvm_init(PCMachineState *pcms, MemoryRegion **ram_memory) { int i, rc; @@ -1344,6 +1405,11 @@ void xen_hvm_init(PCMachineState *pcms, MemoryRegion **ram_memory) /* Disable ACPI build because Xen handles it */ pcms->acpi_build_enabled = false; + if (xen_dm_acpi_init(pcms, state)) { + error_report("failed to initialize xen ACPI"); + goto err; + } + return; err: -- 2.12.0 From mboxrd@z Thu Jan 1 00:00:00 1970 From: Haozhong Zhang Subject: [RFC QEMU PATCH v2 02/10] xen-hvm: initialize DM ACPI Date: Mon, 20 Mar 2017 08:12:41 +0800 Message-ID: <20170320001249.25521-3-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 , xen-devel@lists.xenproject.org, Anthony Perard , Konrad Rzeszutek Wilk , Dan Williams List-Id: xen-devel@lists.xenproject.org UHJvYmUgdGhlIGJhc2UgYWRkcmVzcyBhbmQgdGhlIGxlbmd0aCBvZiBndWVzdCBBQ1BJIGJ1ZmZl ciByZXNlcnZlZApmb3IgY29weWluZyBBQ1BJIGZyb20gUUVNVS4KClNpZ25lZC1vZmYtYnk6IEhh b3pob25nIFpoYW5nIDxoYW96aG9uZy56aGFuZ0BpbnRlbC5jb20+Ci0tLQpDYzogU3RlZmFubyBT dGFiZWxsaW5pIDxzc3RhYmVsbGluaUBrZXJuZWwub3JnPgpDYzogQW50aG9ueSBQZXJhcmQgPGFu dGhvbnkucGVyYXJkQGNpdHJpeC5jb20+CkNjOiB4ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5v cmcKLS0tCiB4ZW4taHZtLmMgfCA2NiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIDEgZmlsZSBjaGFuZ2VkLCA2NiBpbnNlcnRp b25zKCspCgpkaWZmIC0tZ2l0IGEveGVuLWh2bS5jIGIveGVuLWh2bS5jCmluZGV4IDUwNDNiZWI5 OGYuLmM0MmM5NThhMGEgMTAwNjQ0Ci0tLSBhL3hlbi1odm0uYworKysgYi94ZW4taHZtLmMKQEAg LTE5LDYgKzE5LDcgQEAKICNpbmNsdWRlICJxbXAtY29tbWFuZHMuaCIKIAogI2luY2x1ZGUgInN5 c2VtdS9jaGFyLmgiCisjaW5jbHVkZSAicWVtdS9jdXRpbHMuaCIKICNpbmNsdWRlICJxZW11L2Vy cm9yLXJlcG9ydC5oIgogI2luY2x1ZGUgInFlbXUvcmFuZ2UuaCIKICNpbmNsdWRlICJzeXNlbXUv eGVuLW1hcGNhY2hlLmgiCkBAIC04Nyw2ICs4OCwxOCBAQCB0eXBlZGVmIHN0cnVjdCBYZW5QaHlz bWFwIHsKICAgICBRTElTVF9FTlRSWShYZW5QaHlzbWFwKSBsaXN0OwogfSBYZW5QaHlzbWFwOwog CisjZGVmaW5lIEhWTV9YU19ETV9BQ1BJX1JPT1QgICAgIi9odm1sb2FkZXIvZG0tYWNwaSIKKyNk ZWZpbmUgSFZNX1hTX0RNX0FDUElfQUREUkVTUyBIVk1fWFNfRE1fQUNQSV9ST09UIi9hZGRyZXNz IgorI2RlZmluZSBIVk1fWFNfRE1fQUNQSV9MRU5HVEggIEhWTV9YU19ETV9BQ1BJX1JPT1QiL2xl bmd0aCIKKwordHlwZWRlZiBzdHJ1Y3QgWGVuQWNwaUJ1ZiB7CisgICAgcmFtX2FkZHJfdCBiYXNl OworICAgIHJhbV9hZGRyX3QgbGVuZ3RoOworICAgIHJhbV9hZGRyX3QgdXNlZDsKK30gWGVuQWNw aUJ1ZjsKKworc3RhdGljIFhlbkFjcGlCdWYgKmRtX2FjcGlfYnVmOworCiB0eXBlZGVmIHN0cnVj dCBYZW5JT1N0YXRlIHsKICAgICBpb3NlcnZpZF90IGlvc2VydmlkOwogICAgIHNoYXJlZF9pb3Bh Z2VfdCAqc2hhcmVkX3BhZ2U7CkBAIC0xMTEsNiArMTI0LDggQEAgdHlwZWRlZiBzdHJ1Y3QgWGVu SU9TdGF0ZSB7CiAgICAgaHdhZGRyIGZyZWVfcGh5c19vZmZzZXQ7CiAgICAgY29uc3QgWGVuUGh5 c21hcCAqbG9nX2Zvcl9kaXJ0eWJpdDsKIAorICAgIFhlbkFjcGlCdWYgZG1fYWNwaV9idWY7CisK ICAgICBOb3RpZmllciBleGl0OwogICAgIE5vdGlmaWVyIHN1c3BlbmQ7CiAgICAgTm90aWZpZXIg d2FrZXVwOwpAQCAtMTIwNSw2ICsxMjIwLDUyIEBAIHN0YXRpYyB2b2lkIHhlbl93YWtldXBfbm90 aWZpZXIoTm90aWZpZXIgKm5vdGlmaWVyLCB2b2lkICpkYXRhKQogICAgIHhjX3NldF9odm1fcGFy YW0oeGVuX3hjLCB4ZW5fZG9taWQsIEhWTV9QQVJBTV9BQ1BJX1NfU1RBVEUsIDApOwogfQogCitz dGF0aWMgaW50IGRtX2FjcGlfYnVmX2luaXQoWGVuSU9TdGF0ZSAqc3RhdGUpCit7CisgICAgY2hh ciBwYXRoWzgwXSwgKnZhbHVlOworICAgIHVuc2lnbmVkIGludCBsZW47CisKKyAgICBkbV9hY3Bp X2J1ZiA9ICZzdGF0ZS0+ZG1fYWNwaV9idWY7CisKKyAgICBzbnByaW50ZihwYXRoLCBzaXplb2Yo cGF0aCksCisgICAgICAgICAgICAgIi9sb2NhbC9kb21haW4vJWQiSFZNX1hTX0RNX0FDUElfQURE UkVTUywgeGVuX2RvbWlkKTsKKyAgICB2YWx1ZSA9IHhzX3JlYWQoc3RhdGUtPnhlbnN0b3JlLCAw LCBwYXRoLCAmbGVuKTsKKyAgICBpZiAoIXZhbHVlKSB7CisgICAgICAgIHJldHVybiAtRUlOVkFM OworICAgIH0KKyAgICBpZiAocWVtdV9zdHJ0b3VsKHZhbHVlLCBOVUxMLCAxNiwgJmRtX2FjcGlf YnVmLT5iYXNlKSkgeworICAgICAgICByZXR1cm4gLUVJTlZBTDsKKyAgICB9CisKKyAgICBzbnBy aW50ZihwYXRoLCBzaXplb2YocGF0aCksCisgICAgICAgICAgICAgIi9sb2NhbC9kb21haW4vJWQi SFZNX1hTX0RNX0FDUElfTEVOR1RILCB4ZW5fZG9taWQpOworICAgIHZhbHVlID0geHNfcmVhZChz dGF0ZS0+eGVuc3RvcmUsIDAsIHBhdGgsICZsZW4pOworICAgIGlmICghdmFsdWUpIHsKKyAgICAg ICAgcmV0dXJuIC1FSU5WQUw7CisgICAgfQorICAgIGlmIChxZW11X3N0cnRvdWwodmFsdWUsIE5V TEwsIDE2LCAmZG1fYWNwaV9idWYtPmxlbmd0aCkpIHsKKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7 CisgICAgfQorCisgICAgZG1fYWNwaV9idWYtPnVzZWQgPSAwOworCisgICAgcmV0dXJuIDA7Cit9 CisKK3N0YXRpYyBpbnQgeGVuX2RtX2FjcGlfcmVxdWlyZWQoUENNYWNoaW5lU3RhdGUgKnBjbXMp Cit7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgeGVuX2RtX2FjcGlfaW5pdChQQ01h Y2hpbmVTdGF0ZSAqcGNtcywgWGVuSU9TdGF0ZSAqc3RhdGUpCit7CisgICAgaWYgKCF4ZW5fZG1f YWNwaV9yZXF1aXJlZChwY21zKSkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBy ZXR1cm4gZG1fYWNwaV9idWZfaW5pdChzdGF0ZSk7Cit9CisKIHZvaWQgeGVuX2h2bV9pbml0KFBD TWFjaGluZVN0YXRlICpwY21zLCBNZW1vcnlSZWdpb24gKipyYW1fbWVtb3J5KQogewogICAgIGlu dCBpLCByYzsKQEAgLTEzNDQsNiArMTQwNSwxMSBAQCB2b2lkIHhlbl9odm1faW5pdChQQ01hY2hp bmVTdGF0ZSAqcGNtcywgTWVtb3J5UmVnaW9uICoqcmFtX21lbW9yeSkKICAgICAvKiBEaXNhYmxl IEFDUEkgYnVpbGQgYmVjYXVzZSBYZW4gaGFuZGxlcyBpdCAqLwogICAgIHBjbXMtPmFjcGlfYnVp bGRfZW5hYmxlZCA9IGZhbHNlOwogCisgICAgaWYgKHhlbl9kbV9hY3BpX2luaXQocGNtcywgc3Rh dGUpKSB7CisgICAgICAgIGVycm9yX3JlcG9ydCgiZmFpbGVkIHRvIGluaXRpYWxpemUgeGVuIEFD UEkiKTsKKyAgICAgICAgZ290byBlcnI7CisgICAgfQorCiAgICAgcmV0dXJuOwogCiBlcnI6Ci0t IAoyLjEyLjAKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8v bGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK