From mboxrd@z Thu Jan 1 00:00:00 1970 From: Juergen Gross Subject: [PATCH v2 16/18] xenpvh: support building a standalone image Date: Tue, 9 Oct 2018 13:03:15 +0200 Message-ID: <20181009110317.6022-17-jgross@suse.com> References: <20181009110317.6022-1-jgross@suse.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20181009110317.6022-1-jgross@suse.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: grub-devel@gnu.org Cc: hans@knorrie.org, phcoder@gmail.com, daniel.kiper@oracle.com, Juergen Gross , xen-devel@lists.xen.org List-Id: xen-devel@lists.xenproject.org U3VwcG9ydCBta2ltYWdlIGZvciB4ZW5wdmguCgpJbiBvcmRlciB0byBhdm9pZCB1c2luZyBwbGFp biBpbnRlZ2VycyBmb3IgdGhlIEVMRiBub3RlcyB1c2UgdGhlCmF2YWlsYWJsZSBYZW4gaW5jbHVk ZSBpbnN0ZWFkLiBXaGlsZSBhdCBpdCByZXBsYWNlIHRoZSBwbGFpbiBudW1iZXJzCmZvciBYZW4g UFYgbW9kZSwgdG9vLgoKU2lnbmVkLW9mZi1ieTogSnVlcmdlbiBHcm9zcyA8amdyb3NzQHN1c2Uu Y29tPgotLS0KVjI6IHNvbWUgc3R5bGUgYWRqdXN0bWVudHMgKERhbmllbCBLaXBlcikKICAgIHVz ZSBkZWZpbmVzIGZvciBlbGYtbm90ZXMgKERhbmllbCBLaXBlcikKCkkgZGlkbid0IHJlcGxhY2Ug dGhlIDQwOTYgYnkgYSBQQUdFX1NJWkUgbWFjcm8gYXMgcmVxdWVzdGVkIGJ5IERhbmllbCwKYXMg dGhlcmUgaXNuJ3Qgc3VjaCBhIG1hY3JvIGVhc2lseSBhdmFpbGFibGUgZm9yIHV0aWwvbWtpbWFn ZS5jIGFuZApJIGRpZG4ndCBpbnRyb2R1Y2UgaXRzIHVzYWdlLgotLS0KIGluY2x1ZGUvZ3J1Yi91 dGlsL21raW1hZ2UuaCB8ICAzICsrLQogdXRpbC9ncnViLW1raW1hZ2UzMi5jICAgICAgIHwgIDQg KysrLQogdXRpbC9ncnViLW1raW1hZ2U2NC5jICAgICAgIHwgIDQgKysrLQogdXRpbC9ncnViLW1r aW1hZ2V4eC5jICAgICAgIHwgNTggKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr Ky0tLS0tLS0tCiB1dGlsL21raW1hZ2UuYyAgICAgICAgICAgICAgfCAyMyArKysrKysrKysrKysr KysrKy0KIDUgZmlsZXMgY2hhbmdlZCwgNzggaW5zZXJ0aW9ucygrKSwgMTQgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9ncnViL3V0aWwvbWtpbWFnZS5oIGIvaW5jbHVkZS9ncnVi L3V0aWwvbWtpbWFnZS5oCmluZGV4IGIzYTVjYTEzMi4uM2Y1YmMyZTAwIDEwMDY0NAotLS0gYS9p bmNsdWRlL2dydWIvdXRpbC9ta2ltYWdlLmgKKysrIGIvaW5jbHVkZS9ncnViL3V0aWwvbWtpbWFn ZS5oCkBAIC03MSw3ICs3MSw4IEBAIHN0cnVjdCBncnViX2luc3RhbGxfaW1hZ2VfdGFyZ2V0X2Rl c2MKICAgICBJTUFHRV9JMzg2X0lFRUUxMjc1LAogICAgIElNQUdFX0xPT05HU09OX0VMRiwgSU1B R0VfUUVNVSwgSU1BR0VfUFBDLCBJTUFHRV9ZRUVMT09OR19GTEFTSCwKICAgICBJTUFHRV9GVUxP T05HMkZfRkxBU0gsIElNQUdFX0kzODZfUENfUFhFLCBJTUFHRV9NSVBTX0FSQywKLSAgICBJTUFH RV9RRU1VX01JUFNfRkxBU0gsIElNQUdFX1VCT09ULCBJTUFHRV9YRU4sIElNQUdFX0kzODZfUENf RUxUT1JJVE8KKyAgICBJTUFHRV9RRU1VX01JUFNfRkxBU0gsIElNQUdFX1VCT09ULCBJTUFHRV9Y RU4sIElNQUdFX0kzODZfUENfRUxUT1JJVE8sCisgICAgSU1BR0VfWEVOUFZICiAgIH0gaWQ7CiAg IGVudW0KICAgICB7CmRpZmYgLS1naXQgYS91dGlsL2dydWItbWtpbWFnZTMyLmMgYi91dGlsL2dy dWItbWtpbWFnZTMyLmMKaW5kZXggMWYyY2NjY2QyLi40MDlkNDg3ZDYgMTAwNjQ0Ci0tLSBhL3V0 aWwvZ3J1Yi1ta2ltYWdlMzIuYworKysgYi91dGlsL2dydWItbWtpbWFnZTMyLmMKQEAgLTE3LDcg KzE3LDkgQEAKICMgZGVmaW5lIEVMRl9SX1NZTSh2YWwpCQlFTEYzMl9SX1NZTSh2YWwpCiAjIGRl ZmluZSBFTEZfUl9UWVBFKHZhbCkJCUVMRjMyX1JfVFlQRSh2YWwpCiAjIGRlZmluZSBFTEZfU1Rf VFlQRSh2YWwpCQlFTEYzMl9TVF9UWVBFKHZhbCkKLSNkZWZpbmUgWEVOX05PVEVfU0laRSAxMzIK KworI2RlZmluZSBYRU5fTk9URV9TSVpFCQkxMzIKKyNkZWZpbmUgWEVOUFZIX05PVEVfU0laRQky MAogCiAjaWZuZGVmIEdSVUJfTUtJTUFHRVhYCiAjaW5jbHVkZSAiZ3J1Yi1ta2ltYWdleHguYyIK ZGlmZiAtLWdpdCBhL3V0aWwvZ3J1Yi1ta2ltYWdlNjQuYyBiL3V0aWwvZ3J1Yi1ta2ltYWdlNjQu YwppbmRleCA0ZmY3MmE2MjUuLjhiYzkzZWE1YSAxMDA2NDQKLS0tIGEvdXRpbC9ncnViLW1raW1h Z2U2NC5jCisrKyBiL3V0aWwvZ3J1Yi1ta2ltYWdlNjQuYwpAQCAtMTcsNyArMTcsOSBAQAogIyBk ZWZpbmUgRUxGX1JfU1lNKHZhbCkJCUVMRjY0X1JfU1lNKHZhbCkKICMgZGVmaW5lIEVMRl9SX1RZ UEUodmFsKQkJRUxGNjRfUl9UWVBFKHZhbCkKICMgZGVmaW5lIEVMRl9TVF9UWVBFKHZhbCkJCUVM RjY0X1NUX1RZUEUodmFsKQotI2RlZmluZSBYRU5fTk9URV9TSVpFIDEyMAorCisjZGVmaW5lIFhF Tl9OT1RFX1NJWkUJCTEyMAorI2RlZmluZSBYRU5QVkhfTk9URV9TSVpFCTI0CiAKICNpZm5kZWYg R1JVQl9NS0lNQUdFWFgKICNpbmNsdWRlICJncnViLW1raW1hZ2V4eC5jIgpkaWZmIC0tZ2l0IGEv dXRpbC9ncnViLW1raW1hZ2V4eC5jIGIvdXRpbC9ncnViLW1raW1hZ2V4eC5jCmluZGV4IGE0ODNj Njc0Yy4uMzAwOWEzNzU1IDEwMDY0NAotLS0gYS91dGlsL2dydWItbWtpbWFnZXh4LmMKKysrIGIv dXRpbC9ncnViLW1raW1hZ2V4eC5jCkBAIC00OCw2ICs0OCw4IEBACiAjaW5jbHVkZSA8Z3J1Yi91 dGlsL2luc3RhbGwuaD4KICNpbmNsdWRlIDxncnViL3V0aWwvbWtpbWFnZS5oPgogCisjaW5jbHVk ZSA8eGVuL2VsZm5vdGUuaD4KKwogI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkICItV2Nh c3QtYWxpZ24iCiAKICNkZWZpbmUgR1JVQl9NS0lNQUdFWFgKQEAgLTIyNywxMiArMjI5LDEyIEBA IFNVRkZJWCAoZ3J1Yl9ta2ltYWdlX2dlbmVyYXRlX2VsZikgKGNvbnN0IHN0cnVjdCBncnViX2lu c3RhbGxfaW1hZ2VfdGFyZ2V0X2Rlc2MKICAgICAgIHBobnVtKys7CiAgICAgICBmb290ZXJfc2l6 ZSArPSBzaXplb2YgKHN0cnVjdCBncnViX2llZWUxMjc1X25vdGUpOwogICAgIH0KLSAgaWYgKGlt YWdlX3RhcmdldC0+aWQgPT0gSU1BR0VfWEVOKQorICBpZiAoaW1hZ2VfdGFyZ2V0LT5pZCA9PSBJ TUFHRV9YRU4gfHwgaW1hZ2VfdGFyZ2V0LT5pZCA9PSBJTUFHRV9YRU5QVkgpCiAgICAgewogICAg ICAgcGhudW0rKzsKICAgICAgIHNobnVtKys7CiAgICAgICBzdHJpbmdfc2l6ZSArPSBzaXplb2Yg KCIueGVuIik7Ci0gICAgICBmb290ZXJfc2l6ZSArPSBYRU5fTk9URV9TSVpFOworICAgICAgZm9v dGVyX3NpemUgKz0gKGltYWdlX3RhcmdldC0+aWQgPT0gSU1BR0VfWEVOKSA/IFhFTl9OT1RFX1NJ WkUgOiBYRU5QVkhfTk9URV9TSVpFOwogICAgIH0KICAgaGVhZGVyX3NpemUgPSBBTElHTl9VUCAo c2l6ZW9mICgqZWhkcikgKyBwaG51bSAqIHNpemVvZiAoKnBoZHIpCiAJCQkgICsgc2hudW0gKiBz aXplb2YgKCpzaGRyKSArIHN0cmluZ19zaXplLCBsYXlvdXQtPmFsaWduKTsKQEAgLTM0MSw3ICsz NDMsNyBAQCBTVUZGSVggKGdydWJfbWtpbWFnZV9nZW5lcmF0ZV9lbGYpIChjb25zdCBzdHJ1Y3Qg Z3J1Yl9pbnN0YWxsX2ltYWdlX3RhcmdldF9kZXNjCiAgICAgICBub3RlX3B0ciA9IChFbGZfTmhk ciAqKSBwdHI7CiAgICAgICBub3RlX3B0ci0+bl9uYW1lc3ogPSBncnViX2hvc3RfdG9fdGFyZ2V0 MzIgKHNpemVvZiAoR1JVQl9YRU5fTk9URV9OQU1FKSk7CiAgICAgICBub3RlX3B0ci0+bl9kZXNj c3ogPSBncnViX2hvc3RfdG9fdGFyZ2V0MzIgKHNpemVvZiAoUEFDS0FHRV9OQU1FKSk7Ci0gICAg ICBub3RlX3B0ci0+bl90eXBlID0gZ3J1Yl9ob3N0X3RvX3RhcmdldDMyICg2KTsKKyAgICAgIG5v dGVfcHRyLT5uX3R5cGUgPSBncnViX2hvc3RfdG9fdGFyZ2V0MzIgKFhFTl9FTEZOT1RFX0dVRVNU X09TKTsKICAgICAgIHB0ciArPSBzaXplb2YgKEVsZl9OaGRyKTsKICAgICAgIG1lbWNweSAocHRy LCBHUlVCX1hFTl9OT1RFX05BTUUsIHNpemVvZiAoR1JVQl9YRU5fTk9URV9OQU1FKSk7CiAgICAg ICBwdHIgKz0gQUxJR05fVVAgKHNpemVvZiAoR1JVQl9YRU5fTk9URV9OQU1FKSwgNCk7CkBAIC0z NTIsNyArMzU0LDcgQEAgU1VGRklYIChncnViX21raW1hZ2VfZ2VuZXJhdGVfZWxmKSAoY29uc3Qg c3RydWN0IGdydWJfaW5zdGFsbF9pbWFnZV90YXJnZXRfZGVzYwogICAgICAgbm90ZV9wdHIgPSAo RWxmX05oZHIgKikgcHRyOwogICAgICAgbm90ZV9wdHItPm5fbmFtZXN6ID0gZ3J1Yl9ob3N0X3Rv X3RhcmdldDMyIChzaXplb2YgKEdSVUJfWEVOX05PVEVfTkFNRSkpOwogICAgICAgbm90ZV9wdHIt Pm5fZGVzY3N6ID0gZ3J1Yl9ob3N0X3RvX3RhcmdldDMyIChzaXplb2YgKCJnZW5lcmljIikpOwot ICAgICAgbm90ZV9wdHItPm5fdHlwZSA9IGdydWJfaG9zdF90b190YXJnZXQzMiAoOCk7CisgICAg ICBub3RlX3B0ci0+bl90eXBlID0gZ3J1Yl9ob3N0X3RvX3RhcmdldDMyIChYRU5fRUxGTk9URV9M T0FERVIpOwogICAgICAgcHRyICs9IHNpemVvZiAoRWxmX05oZHIpOwogICAgICAgbWVtY3B5IChw dHIsIEdSVUJfWEVOX05PVEVfTkFNRSwgc2l6ZW9mIChHUlVCX1hFTl9OT1RFX05BTUUpKTsKICAg ICAgIHB0ciArPSBBTElHTl9VUCAoc2l6ZW9mIChHUlVCX1hFTl9OT1RFX05BTUUpLCA0KTsKQEAg LTM2Myw3ICszNjUsNyBAQCBTVUZGSVggKGdydWJfbWtpbWFnZV9nZW5lcmF0ZV9lbGYpIChjb25z dCBzdHJ1Y3QgZ3J1Yl9pbnN0YWxsX2ltYWdlX3RhcmdldF9kZXNjCiAgICAgICBub3RlX3B0ciA9 IChFbGZfTmhkciAqKSBwdHI7CiAgICAgICBub3RlX3B0ci0+bl9uYW1lc3ogPSBncnViX2hvc3Rf dG9fdGFyZ2V0MzIgKHNpemVvZiAoR1JVQl9YRU5fTk9URV9OQU1FKSk7CiAgICAgICBub3RlX3B0 ci0+bl9kZXNjc3ogPSBncnViX2hvc3RfdG9fdGFyZ2V0MzIgKHNpemVvZiAoInhlbi0zLjAiKSk7 Ci0gICAgICBub3RlX3B0ci0+bl90eXBlID0gZ3J1Yl9ob3N0X3RvX3RhcmdldDMyICg1KTsKKyAg ICAgIG5vdGVfcHRyLT5uX3R5cGUgPSBncnViX2hvc3RfdG9fdGFyZ2V0MzIgKFhFTl9FTEZOT1RF X1hFTl9WRVJTSU9OKTsKICAgICAgIHB0ciArPSBzaXplb2YgKEVsZl9OaGRyKTsKICAgICAgIG1l bWNweSAocHRyLCBHUlVCX1hFTl9OT1RFX05BTUUsIHNpemVvZiAoR1JVQl9YRU5fTk9URV9OQU1F KSk7CiAgICAgICBwdHIgKz0gQUxJR05fVVAgKHNpemVvZiAoR1JVQl9YRU5fTk9URV9OQU1FKSwg NCk7CkBAIC0zNzQsNyArMzc2LDcgQEAgU1VGRklYIChncnViX21raW1hZ2VfZ2VuZXJhdGVfZWxm KSAoY29uc3Qgc3RydWN0IGdydWJfaW5zdGFsbF9pbWFnZV90YXJnZXRfZGVzYwogICAgICAgbm90 ZV9wdHIgPSAoRWxmX05oZHIgKikgcHRyOwogICAgICAgbm90ZV9wdHItPm5fbmFtZXN6ID0gZ3J1 Yl9ob3N0X3RvX3RhcmdldDMyIChzaXplb2YgKEdSVUJfWEVOX05PVEVfTkFNRSkpOwogICAgICAg bm90ZV9wdHItPm5fZGVzY3N6ID0gZ3J1Yl9ob3N0X3RvX3RhcmdldDMyIChpbWFnZV90YXJnZXQt PnZvaWRwX3NpemVvZik7Ci0gICAgICBub3RlX3B0ci0+bl90eXBlID0gZ3J1Yl9ob3N0X3RvX3Rh cmdldDMyICgxKTsKKyAgICAgIG5vdGVfcHRyLT5uX3R5cGUgPSBncnViX2hvc3RfdG9fdGFyZ2V0 MzIgKFhFTl9FTEZOT1RFX0VOVFJZKTsKICAgICAgIHB0ciArPSBzaXplb2YgKEVsZl9OaGRyKTsK ICAgICAgIG1lbWNweSAocHRyLCBHUlVCX1hFTl9OT1RFX05BTUUsIHNpemVvZiAoR1JVQl9YRU5f Tk9URV9OQU1FKSk7CiAgICAgICBwdHIgKz0gQUxJR05fVVAgKHNpemVvZiAoR1JVQl9YRU5fTk9U RV9OQU1FKSwgNCk7CkBAIC0zODUsNyArMzg3LDcgQEAgU1VGRklYIChncnViX21raW1hZ2VfZ2Vu ZXJhdGVfZWxmKSAoY29uc3Qgc3RydWN0IGdydWJfaW5zdGFsbF9pbWFnZV90YXJnZXRfZGVzYwog ICAgICAgbm90ZV9wdHIgPSAoRWxmX05oZHIgKikgcHRyOwogICAgICAgbm90ZV9wdHItPm5fbmFt ZXN6ID0gZ3J1Yl9ob3N0X3RvX3RhcmdldDMyIChzaXplb2YgKEdSVUJfWEVOX05PVEVfTkFNRSkp OwogICAgICAgbm90ZV9wdHItPm5fZGVzY3N6ID0gZ3J1Yl9ob3N0X3RvX3RhcmdldDMyIChpbWFn ZV90YXJnZXQtPnZvaWRwX3NpemVvZik7Ci0gICAgICBub3RlX3B0ci0+bl90eXBlID0gZ3J1Yl9o b3N0X3RvX3RhcmdldDMyICgzKTsKKyAgICAgIG5vdGVfcHRyLT5uX3R5cGUgPSBncnViX2hvc3Rf dG9fdGFyZ2V0MzIgKFhFTl9FTEZOT1RFX1ZJUlRfQkFTRSk7CiAgICAgICBwdHIgKz0gc2l6ZW9m IChFbGZfTmhkcik7CiAgICAgICBtZW1jcHkgKHB0ciwgR1JVQl9YRU5fTk9URV9OQU1FLCBzaXpl b2YgKEdSVUJfWEVOX05PVEVfTkFNRSkpOwogICAgICAgcHRyICs9IEFMSUdOX1VQIChzaXplb2Yg KEdSVUJfWEVOX05PVEVfTkFNRSksIDQpOwpAQCAtMzk4LDcgKzQwMCw3IEBAIFNVRkZJWCAoZ3J1 Yl9ta2ltYWdlX2dlbmVyYXRlX2VsZikgKGNvbnN0IHN0cnVjdCBncnViX2luc3RhbGxfaW1hZ2Vf dGFyZ2V0X2Rlc2MKIAkgIG5vdGVfcHRyID0gKEVsZl9OaGRyICopIHB0cjsKIAkgIG5vdGVfcHRy LT5uX25hbWVzeiA9IGdydWJfaG9zdF90b190YXJnZXQzMiAoc2l6ZW9mIChHUlVCX1hFTl9OT1RF X05BTUUpKTsKIAkgIG5vdGVfcHRyLT5uX2Rlc2NzeiA9IGdydWJfaG9zdF90b190YXJnZXQzMiAo c2l6ZW9mICgieWVzLGJpbW9kYWwiKSk7Ci0JICBub3RlX3B0ci0+bl90eXBlID0gZ3J1Yl9ob3N0 X3RvX3RhcmdldDMyICg5KTsKKwkgIG5vdGVfcHRyLT5uX3R5cGUgPSBncnViX2hvc3RfdG9fdGFy Z2V0MzIgKFhFTl9FTEZOT1RFX1BBRV9NT0RFKTsKIAkgIHB0ciArPSBzaXplb2YgKEVsZl9OaGRy KTsKIAkgIG1lbWNweSAocHRyLCBHUlVCX1hFTl9OT1RFX05BTUUsIHNpemVvZiAoR1JVQl9YRU5f Tk9URV9OQU1FKSk7CiAJICBwdHIgKz0gQUxJR05fVVAgKHNpemVvZiAoR1JVQl9YRU5fTk9URV9O QU1FKSwgNCk7CkBAIC00MTksNiArNDIxLDM5IEBAIFNVRkZJWCAoZ3J1Yl9ta2ltYWdlX2dlbmVy YXRlX2VsZikgKGNvbnN0IHN0cnVjdCBncnViX2luc3RhbGxfaW1hZ2VfdGFyZ2V0X2Rlc2MKICAg ICAgIHBoZHItPnBfb2Zmc2V0ID0gZ3J1Yl9ob3N0X3RvX3RhcmdldDMyIChoZWFkZXJfc2l6ZSAr IHByb2dyYW1fc2l6ZSk7CiAgICAgfQogCisgIGlmIChpbWFnZV90YXJnZXQtPmlkID09IElNQUdF X1hFTlBWSCkKKyAgICB7CisgICAgICBjaGFyICpub3RlX3N0YXJ0ID0gKGVsZl9pbWcgKyBwcm9n cmFtX3NpemUgKyBoZWFkZXJfc2l6ZSk7CisgICAgICBFbGZfTmhkciAqbm90ZV9wdHI7CisgICAg ICBjaGFyICpwdHIgPSAoY2hhciAqKSBub3RlX3N0YXJ0OworCisgICAgICBncnViX3V0aWxfaW5m byAoImFkZGluZyBYRU4gTk9URSBzZWdtZW50Iik7CisKKyAgICAgIC8qIFBoeXMzMiBFbnRyeS4g ICovCisgICAgICBub3RlX3B0ciA9IChFbGZfTmhkciAqKSBwdHI7CisgICAgICBub3RlX3B0ci0+ bl9uYW1lc3ogPSBncnViX2hvc3RfdG9fdGFyZ2V0MzIgKHNpemVvZiAoR1JVQl9YRU5fTk9URV9O QU1FKSk7CisgICAgICBub3RlX3B0ci0+bl9kZXNjc3ogPSBncnViX2hvc3RfdG9fdGFyZ2V0MzIg KGltYWdlX3RhcmdldC0+dm9pZHBfc2l6ZW9mKTsKKyAgICAgIG5vdGVfcHRyLT5uX3R5cGUgPSBn cnViX2hvc3RfdG9fdGFyZ2V0MzIgKFhFTl9FTEZOT1RFX1BIWVMzMl9FTlRSWSk7CisgICAgICBw dHIgKz0gc2l6ZW9mIChFbGZfTmhkcik7CisgICAgICBtZW1jcHkgKHB0ciwgR1JVQl9YRU5fTk9U RV9OQU1FLCBzaXplb2YgKEdSVUJfWEVOX05PVEVfTkFNRSkpOworICAgICAgcHRyICs9IEFMSUdO X1VQIChzaXplb2YgKEdSVUJfWEVOX05PVEVfTkFNRSksIDQpOworICAgICAgbWVtc2V0IChwdHIs IDAsIGltYWdlX3RhcmdldC0+dm9pZHBfc2l6ZW9mKTsKKyAgICAgICooZ3J1Yl91aW50MzJfdCAq KSBwdHIgPSBHUlVCX0tFUk5FTF9JMzg2X1hFTlBWSF9MSU5LX0FERFI7CisgICAgICBwdHIgKz0g aW1hZ2VfdGFyZ2V0LT52b2lkcF9zaXplb2Y7CisKKyAgICAgIGFzc2VydCAoWEVOUFZIX05PVEVf U0laRSA9PSAocHRyIC0gbm90ZV9zdGFydCkpOworCisgICAgICBwaGRyKys7CisgICAgICBwaGRy LT5wX3R5cGUgPSBncnViX2hvc3RfdG9fdGFyZ2V0MzIgKFBUX05PVEUpOworICAgICAgcGhkci0+ cF9mbGFncyA9IGdydWJfaG9zdF90b190YXJnZXQzMiAoUEZfUik7CisgICAgICBwaGRyLT5wX2Fs aWduID0gZ3J1Yl9ob3N0X3RvX3RhcmdldDMyIChpbWFnZV90YXJnZXQtPnZvaWRwX3NpemVvZik7 CisgICAgICBwaGRyLT5wX3ZhZGRyID0gMDsKKyAgICAgIHBoZHItPnBfcGFkZHIgPSAwOworICAg ICAgcGhkci0+cF9maWxlc3ogPSBncnViX2hvc3RfdG9fdGFyZ2V0MzIgKFhFTlBWSF9OT1RFX1NJ WkUpOworICAgICAgcGhkci0+cF9tZW1zeiA9IDA7CisgICAgICBwaGRyLT5wX29mZnNldCA9IGdy dWJfaG9zdF90b190YXJnZXQzMiAoaGVhZGVyX3NpemUgKyBwcm9ncmFtX3NpemUpOworICAgIH0K KwogICBpZiAobm90ZSkKICAgICB7CiAgICAgICBpbnQgbm90ZV9zaXplID0gc2l6ZW9mIChzdHJ1 Y3QgZ3J1Yl9pZWVlMTI3NV9ub3RlKTsKQEAgLTQ5NCw3ICs1MjksNyBAQCBTVUZGSVggKGdydWJf bWtpbWFnZV9nZW5lcmF0ZV9lbGYpIChjb25zdCBzdHJ1Y3QgZ3J1Yl9pbnN0YWxsX2ltYWdlX3Rh cmdldF9kZXNjCiAgICAgc2hkci0+c2hfZW50c2l6ZSA9IGdydWJfaG9zdF90b190YXJnZXQzMiAo MCk7CiAgICAgc2hkcisrOwogCi0gICAgaWYgKGltYWdlX3RhcmdldC0+aWQgPT0gSU1BR0VfWEVO KQorICAgIGlmIChpbWFnZV90YXJnZXQtPmlkID09IElNQUdFX1hFTiB8fCBpbWFnZV90YXJnZXQt PmlkID09IElNQUdFX1hFTlBWSCkKICAgICAgIHsKIAltZW1jcHkgKHB0ciwgIi54ZW4iLCBzaXpl b2YgKCIueGVuIikpOwogCXNoZHItPnNoX25hbWUgPSBncnViX2hvc3RfdG9fdGFyZ2V0MzIgKHB0 ciAtIHN0cl9zdGFydCk7CkBAIC01MDIsNyArNTM3LDEwIEBAIFNVRkZJWCAoZ3J1Yl9ta2ltYWdl X2dlbmVyYXRlX2VsZikgKGNvbnN0IHN0cnVjdCBncnViX2luc3RhbGxfaW1hZ2VfdGFyZ2V0X2Rl c2MKIAlzaGRyLT5zaF90eXBlID0gZ3J1Yl9ob3N0X3RvX3RhcmdldDMyIChTSFRfUFJPR0JJVFMp OwogCXNoZHItPnNoX2FkZHIgPSBncnViX2hvc3RfdG9fdGFyZ2V0X2FkZHIgKHRhcmdldF9hZGRy ICsgbGF5b3V0LT5rZXJuZWxfc2l6ZSk7CiAJc2hkci0+c2hfb2Zmc2V0ID0gZ3J1Yl9ob3N0X3Rv X3RhcmdldF9hZGRyIChwcm9ncmFtX3NpemUgKyBoZWFkZXJfc2l6ZSk7Ci0Jc2hkci0+c2hfc2l6 ZSA9IGdydWJfaG9zdF90b190YXJnZXQzMiAoWEVOX05PVEVfU0laRSk7CisJaWYgKGltYWdlX3Rh cmdldC0+aWQgPT0gSU1BR0VfWEVOKQorCSAgc2hkci0+c2hfc2l6ZSA9IGdydWJfaG9zdF90b190 YXJnZXQzMiAoWEVOX05PVEVfU0laRSk7CisJZWxzZQorCSAgc2hkci0+c2hfc2l6ZSA9IGdydWJf aG9zdF90b190YXJnZXQzMiAoWEVOUFZIX05PVEVfU0laRSk7CiAJc2hkci0+c2hfbGluayA9IGdy dWJfaG9zdF90b190YXJnZXQzMiAoMCk7CiAJc2hkci0+c2hfaW5mbyA9IGdydWJfaG9zdF90b190 YXJnZXQzMiAoMCk7CiAJc2hkci0+c2hfYWRkcmFsaWduID0gZ3J1Yl9ob3N0X3RvX3RhcmdldDMy IChpbWFnZV90YXJnZXQtPnZvaWRwX3NpemVvZik7CmRpZmYgLS1naXQgYS91dGlsL21raW1hZ2Uu YyBiL3V0aWwvbWtpbWFnZS5jCmluZGV4IGUyMmQ4MmFmYS4uNWUwNzFjMDc0IDEwMDY0NAotLS0g YS91dGlsL21raW1hZ2UuYworKysgYi91dGlsL21raW1hZ2UuYwpAQCAtMTMyLDYgKzEzMiwyNCBA QCBzdGF0aWMgY29uc3Qgc3RydWN0IGdydWJfaW5zdGFsbF9pbWFnZV90YXJnZXRfZGVzYyBpbWFn ZV90YXJnZXRzW10gPQogICAgICAgLmxpbmtfYWRkciA9IEdSVUJfS0VSTkVMX0kzODZfUENfTElO S19BRERSLAogICAgICAgLmRlZmF1bHRfY29tcHJlc3Npb24gPSBHUlVCX0NPTVBSRVNTSU9OX0xa TUEKICAgICB9LAorICAgIHsKKyAgICAgIC5kaXJuYW1lID0gImkzODYteGVucHZoIiwKKyAgICAg IC5uYW1lcyA9IHsgImkzODYteGVucHZoIiwgTlVMTCB9LAorICAgICAgLnZvaWRwX3NpemVvZiA9 IDQsCisgICAgICAuYmlnZW5kaWFuID0gMCwKKyAgICAgIC5pZCA9IElNQUdFX1hFTlBWSCwKKyAg ICAgIC5mbGFncyA9IFBMQVRGT1JNX0ZMQUdTX05PTkUsCisgICAgICAudG90YWxfbW9kdWxlX3Np emUgPSBUQVJHRVRfTk9fRklFTEQsCisgICAgICAuZGVjb21wcmVzc29yX2NvbXByZXNzZWRfc2l6 ZSA9IFRBUkdFVF9OT19GSUVMRCwKKyAgICAgIC5kZWNvbXByZXNzb3JfdW5jb21wcmVzc2VkX3Np emUgPSBUQVJHRVRfTk9fRklFTEQsCisgICAgICAuZGVjb21wcmVzc29yX3VuY29tcHJlc3NlZF9h ZGRyID0gVEFSR0VUX05PX0ZJRUxELAorICAgICAgLmVsZl90YXJnZXQgPSBFTV8zODYsCisgICAg ICAuc2VjdGlvbl9hbGlnbiA9IDEsCisgICAgICAudmFkZHJfb2Zmc2V0ID0gMCwKKyAgICAgIC5s aW5rX2FkZHIgPSBHUlVCX0tFUk5FTF9JMzg2X1hFTlBWSF9MSU5LX0FERFIsCisgICAgICAubW9k X2FsaWduID0gR1JVQl9LRVJORUxfSTM4Nl9YRU5QVkhfTU9EX0FMSUdOLAorICAgICAgLmxpbmtf YWxpZ24gPSA0CisgICAgfSwKICAgICB7CiAgICAgICAuZGlybmFtZSA9ICJpMzg2LXBjIiwKICAg ICAgIC5uYW1lcyA9IHsgImkzODYtcGMtcHhlIiwgTlVMTCB9LApAQCAtODYwLDcgKzg3OCw4IEBA IGdydWJfaW5zdGFsbF9nZW5lcmF0ZV9pbWFnZSAoY29uc3QgY2hhciAqZGlyLCBjb25zdCBjaGFy ICpwcmVmaXgsCiAgIGVsc2UKICAgICBrZXJuZWxfaW1nID0gZ3J1Yl9ta2ltYWdlX2xvYWRfaW1h Z2U2NCAoa2VybmVsX3BhdGgsIHRvdGFsX21vZHVsZV9zaXplLAogCQkJCQkgICAgJmxheW91dCwg aW1hZ2VfdGFyZ2V0KTsKLSAgaWYgKGltYWdlX3RhcmdldC0+aWQgPT0gSU1BR0VfWEVOICYmIGxh eW91dC5hbGlnbiA8IDQwOTYpCisgIGlmICgoaW1hZ2VfdGFyZ2V0LT5pZCA9PSBJTUFHRV9YRU4g fHwgaW1hZ2VfdGFyZ2V0LT5pZCA9PSBJTUFHRV9YRU5QVkgpICYmCisgICAgICBsYXlvdXQuYWxp Z24gPCA0MDk2KQogICAgIGxheW91dC5hbGlnbiA9IDQwOTY7CiAKICAgaWYgKChpbWFnZV90YXJn ZXQtPmZsYWdzICYgUExBVEZPUk1fRkxBR1NfREVDT01QUkVTU09SUykKQEAgLTExMDMsNiArMTEy Miw3IEBAIGdydWJfaW5zdGFsbF9nZW5lcmF0ZV9pbWFnZSAoY29uc3QgY2hhciAqZGlyLCBjb25z dCBjaGFyICpwcmVmaXgsCiAgICAgY2FzZSBJTUFHRV9NSVBTX0FSQzoKICAgICBjYXNlIElNQUdF X1FFTVVfTUlQU19GTEFTSDoKICAgICBjYXNlIElNQUdFX1hFTjoKKyAgICBjYXNlIElNQUdFX1hF TlBWSDoKICAgICAgIGJyZWFrOwogICAgIGNhc2UgSU1BR0VfU1BBUkM2NF9BT1VUOgogICAgIGNh c2UgSU1BR0VfU1BBUkM2NF9SQVc6CkBAIC0xNjc5LDYgKzE2OTksNyBAQCBncnViX2luc3RhbGxf Z2VuZXJhdGVfaW1hZ2UgKGNvbnN0IGNoYXIgKmRpciwgY29uc3QgY2hhciAqcHJlZml4LAogICAg IGNhc2UgSU1BR0VfTE9PTkdTT05fRUxGOgogICAgIGNhc2UgSU1BR0VfUFBDOgogICAgIGNhc2Ug SU1BR0VfWEVOOgorICAgIGNhc2UgSU1BR0VfWEVOUFZIOgogICAgIGNhc2UgSU1BR0VfQ09SRUJP T1Q6CiAgICAgY2FzZSBJTUFHRV9JMzg2X0lFRUUxMjc1OgogICAgICAgewotLSAKMi4xNi40CgoK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVs IG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0 cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZlbA== From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1g9pnq-0001bn-DB for mharc-grub-devel@gnu.org; Tue, 09 Oct 2018 07:03:50 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:43191) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1g9pni-0001Sp-2C for grub-devel@gnu.org; Tue, 09 Oct 2018 07:03:45 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1g9pnf-0005Xv-EP for grub-devel@gnu.org; Tue, 09 Oct 2018 07:03:41 -0400 Received: from mx2.suse.de ([195.135.220.15]:55318 helo=mx1.suse.de) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1g9pnf-0005Pj-19 for grub-devel@gnu.org; Tue, 09 Oct 2018 07:03:39 -0400 X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (unknown [195.135.220.254]) by mx1.suse.de (Postfix) with ESMTP id 40F41B021; Tue, 9 Oct 2018 11:03:23 +0000 (UTC) From: Juergen Gross To: grub-devel@gnu.org Cc: xen-devel@lists.xen.org, phcoder@gmail.com, daniel.kiper@oracle.com, hans@knorrie.org, Juergen Gross Subject: [PATCH v2 16/18] xenpvh: support building a standalone image Date: Tue, 9 Oct 2018 13:03:15 +0200 Message-Id: <20181009110317.6022-17-jgross@suse.com> X-Mailer: git-send-email 2.16.4 In-Reply-To: <20181009110317.6022-1-jgross@suse.com> References: <20181009110317.6022-1-jgross@suse.com> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x (no timestamps) [generic] X-Received-From: 195.135.220.15 X-BeenThere: grub-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: The development of GNU GRUB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 09 Oct 2018 11:03:46 -0000 Support mkimage for xenpvh. In order to avoid using plain integers for the ELF notes use the available Xen include instead. While at it replace the plain numbers for Xen PV mode, too. Signed-off-by: Juergen Gross --- V2: some style adjustments (Daniel Kiper) use defines for elf-notes (Daniel Kiper) I didn't replace the 4096 by a PAGE_SIZE macro as requested by Daniel, as there isn't such a macro easily available for util/mkimage.c and I didn't introduce its usage. --- include/grub/util/mkimage.h | 3 ++- util/grub-mkimage32.c | 4 +++- util/grub-mkimage64.c | 4 +++- util/grub-mkimagexx.c | 58 +++++++++++++++++++++++++++++++++++++-------- util/mkimage.c | 23 +++++++++++++++++- 5 files changed, 78 insertions(+), 14 deletions(-) diff --git a/include/grub/util/mkimage.h b/include/grub/util/mkimage.h index b3a5ca132..3f5bc2e00 100644 --- a/include/grub/util/mkimage.h +++ b/include/grub/util/mkimage.h @@ -71,7 +71,8 @@ struct grub_install_image_target_desc IMAGE_I386_IEEE1275, IMAGE_LOONGSON_ELF, IMAGE_QEMU, IMAGE_PPC, IMAGE_YEELOONG_FLASH, IMAGE_FULOONG2F_FLASH, IMAGE_I386_PC_PXE, IMAGE_MIPS_ARC, - IMAGE_QEMU_MIPS_FLASH, IMAGE_UBOOT, IMAGE_XEN, IMAGE_I386_PC_ELTORITO + IMAGE_QEMU_MIPS_FLASH, IMAGE_UBOOT, IMAGE_XEN, IMAGE_I386_PC_ELTORITO, + IMAGE_XENPVH } id; enum { diff --git a/util/grub-mkimage32.c b/util/grub-mkimage32.c index 1f2ccccd2..409d487d6 100644 --- a/util/grub-mkimage32.c +++ b/util/grub-mkimage32.c @@ -17,7 +17,9 @@ # define ELF_R_SYM(val) ELF32_R_SYM(val) # define ELF_R_TYPE(val) ELF32_R_TYPE(val) # define ELF_ST_TYPE(val) ELF32_ST_TYPE(val) -#define XEN_NOTE_SIZE 132 + +#define XEN_NOTE_SIZE 132 +#define XENPVH_NOTE_SIZE 20 #ifndef GRUB_MKIMAGEXX #include "grub-mkimagexx.c" diff --git a/util/grub-mkimage64.c b/util/grub-mkimage64.c index 4ff72a625..8bc93ea5a 100644 --- a/util/grub-mkimage64.c +++ b/util/grub-mkimage64.c @@ -17,7 +17,9 @@ # define ELF_R_SYM(val) ELF64_R_SYM(val) # define ELF_R_TYPE(val) ELF64_R_TYPE(val) # define ELF_ST_TYPE(val) ELF64_ST_TYPE(val) -#define XEN_NOTE_SIZE 120 + +#define XEN_NOTE_SIZE 120 +#define XENPVH_NOTE_SIZE 24 #ifndef GRUB_MKIMAGEXX #include "grub-mkimagexx.c" diff --git a/util/grub-mkimagexx.c b/util/grub-mkimagexx.c index a483c674c..3009a3755 100644 --- a/util/grub-mkimagexx.c +++ b/util/grub-mkimagexx.c @@ -48,6 +48,8 @@ #include #include +#include + #pragma GCC diagnostic ignored "-Wcast-align" #define GRUB_MKIMAGEXX @@ -227,12 +229,12 @@ SUFFIX (grub_mkimage_generate_elf) (const struct grub_install_image_target_desc phnum++; footer_size += sizeof (struct grub_ieee1275_note); } - if (image_target->id == IMAGE_XEN) + if (image_target->id == IMAGE_XEN || image_target->id == IMAGE_XENPVH) { phnum++; shnum++; string_size += sizeof (".xen"); - footer_size += XEN_NOTE_SIZE; + footer_size += (image_target->id == IMAGE_XEN) ? XEN_NOTE_SIZE : XENPVH_NOTE_SIZE; } header_size = ALIGN_UP (sizeof (*ehdr) + phnum * sizeof (*phdr) + shnum * sizeof (*shdr) + string_size, layout->align); @@ -341,7 +343,7 @@ SUFFIX (grub_mkimage_generate_elf) (const struct grub_install_image_target_desc note_ptr = (Elf_Nhdr *) ptr; note_ptr->n_namesz = grub_host_to_target32 (sizeof (GRUB_XEN_NOTE_NAME)); note_ptr->n_descsz = grub_host_to_target32 (sizeof (PACKAGE_NAME)); - note_ptr->n_type = grub_host_to_target32 (6); + note_ptr->n_type = grub_host_to_target32 (XEN_ELFNOTE_GUEST_OS); ptr += sizeof (Elf_Nhdr); memcpy (ptr, GRUB_XEN_NOTE_NAME, sizeof (GRUB_XEN_NOTE_NAME)); ptr += ALIGN_UP (sizeof (GRUB_XEN_NOTE_NAME), 4); @@ -352,7 +354,7 @@ SUFFIX (grub_mkimage_generate_elf) (const struct grub_install_image_target_desc note_ptr = (Elf_Nhdr *) ptr; note_ptr->n_namesz = grub_host_to_target32 (sizeof (GRUB_XEN_NOTE_NAME)); note_ptr->n_descsz = grub_host_to_target32 (sizeof ("generic")); - note_ptr->n_type = grub_host_to_target32 (8); + note_ptr->n_type = grub_host_to_target32 (XEN_ELFNOTE_LOADER); ptr += sizeof (Elf_Nhdr); memcpy (ptr, GRUB_XEN_NOTE_NAME, sizeof (GRUB_XEN_NOTE_NAME)); ptr += ALIGN_UP (sizeof (GRUB_XEN_NOTE_NAME), 4); @@ -363,7 +365,7 @@ SUFFIX (grub_mkimage_generate_elf) (const struct grub_install_image_target_desc note_ptr = (Elf_Nhdr *) ptr; note_ptr->n_namesz = grub_host_to_target32 (sizeof (GRUB_XEN_NOTE_NAME)); note_ptr->n_descsz = grub_host_to_target32 (sizeof ("xen-3.0")); - note_ptr->n_type = grub_host_to_target32 (5); + note_ptr->n_type = grub_host_to_target32 (XEN_ELFNOTE_XEN_VERSION); ptr += sizeof (Elf_Nhdr); memcpy (ptr, GRUB_XEN_NOTE_NAME, sizeof (GRUB_XEN_NOTE_NAME)); ptr += ALIGN_UP (sizeof (GRUB_XEN_NOTE_NAME), 4); @@ -374,7 +376,7 @@ SUFFIX (grub_mkimage_generate_elf) (const struct grub_install_image_target_desc note_ptr = (Elf_Nhdr *) ptr; note_ptr->n_namesz = grub_host_to_target32 (sizeof (GRUB_XEN_NOTE_NAME)); note_ptr->n_descsz = grub_host_to_target32 (image_target->voidp_sizeof); - note_ptr->n_type = grub_host_to_target32 (1); + note_ptr->n_type = grub_host_to_target32 (XEN_ELFNOTE_ENTRY); ptr += sizeof (Elf_Nhdr); memcpy (ptr, GRUB_XEN_NOTE_NAME, sizeof (GRUB_XEN_NOTE_NAME)); ptr += ALIGN_UP (sizeof (GRUB_XEN_NOTE_NAME), 4); @@ -385,7 +387,7 @@ SUFFIX (grub_mkimage_generate_elf) (const struct grub_install_image_target_desc note_ptr = (Elf_Nhdr *) ptr; note_ptr->n_namesz = grub_host_to_target32 (sizeof (GRUB_XEN_NOTE_NAME)); note_ptr->n_descsz = grub_host_to_target32 (image_target->voidp_sizeof); - note_ptr->n_type = grub_host_to_target32 (3); + note_ptr->n_type = grub_host_to_target32 (XEN_ELFNOTE_VIRT_BASE); ptr += sizeof (Elf_Nhdr); memcpy (ptr, GRUB_XEN_NOTE_NAME, sizeof (GRUB_XEN_NOTE_NAME)); ptr += ALIGN_UP (sizeof (GRUB_XEN_NOTE_NAME), 4); @@ -398,7 +400,7 @@ SUFFIX (grub_mkimage_generate_elf) (const struct grub_install_image_target_desc note_ptr = (Elf_Nhdr *) ptr; note_ptr->n_namesz = grub_host_to_target32 (sizeof (GRUB_XEN_NOTE_NAME)); note_ptr->n_descsz = grub_host_to_target32 (sizeof ("yes,bimodal")); - note_ptr->n_type = grub_host_to_target32 (9); + note_ptr->n_type = grub_host_to_target32 (XEN_ELFNOTE_PAE_MODE); ptr += sizeof (Elf_Nhdr); memcpy (ptr, GRUB_XEN_NOTE_NAME, sizeof (GRUB_XEN_NOTE_NAME)); ptr += ALIGN_UP (sizeof (GRUB_XEN_NOTE_NAME), 4); @@ -419,6 +421,39 @@ SUFFIX (grub_mkimage_generate_elf) (const struct grub_install_image_target_desc phdr->p_offset = grub_host_to_target32 (header_size + program_size); } + if (image_target->id == IMAGE_XENPVH) + { + char *note_start = (elf_img + program_size + header_size); + Elf_Nhdr *note_ptr; + char *ptr = (char *) note_start; + + grub_util_info ("adding XEN NOTE segment"); + + /* Phys32 Entry. */ + note_ptr = (Elf_Nhdr *) ptr; + note_ptr->n_namesz = grub_host_to_target32 (sizeof (GRUB_XEN_NOTE_NAME)); + note_ptr->n_descsz = grub_host_to_target32 (image_target->voidp_sizeof); + note_ptr->n_type = grub_host_to_target32 (XEN_ELFNOTE_PHYS32_ENTRY); + ptr += sizeof (Elf_Nhdr); + memcpy (ptr, GRUB_XEN_NOTE_NAME, sizeof (GRUB_XEN_NOTE_NAME)); + ptr += ALIGN_UP (sizeof (GRUB_XEN_NOTE_NAME), 4); + memset (ptr, 0, image_target->voidp_sizeof); + *(grub_uint32_t *) ptr = GRUB_KERNEL_I386_XENPVH_LINK_ADDR; + ptr += image_target->voidp_sizeof; + + assert (XENPVH_NOTE_SIZE == (ptr - note_start)); + + phdr++; + phdr->p_type = grub_host_to_target32 (PT_NOTE); + phdr->p_flags = grub_host_to_target32 (PF_R); + phdr->p_align = grub_host_to_target32 (image_target->voidp_sizeof); + phdr->p_vaddr = 0; + phdr->p_paddr = 0; + phdr->p_filesz = grub_host_to_target32 (XENPVH_NOTE_SIZE); + phdr->p_memsz = 0; + phdr->p_offset = grub_host_to_target32 (header_size + program_size); + } + if (note) { int note_size = sizeof (struct grub_ieee1275_note); @@ -494,7 +529,7 @@ SUFFIX (grub_mkimage_generate_elf) (const struct grub_install_image_target_desc shdr->sh_entsize = grub_host_to_target32 (0); shdr++; - if (image_target->id == IMAGE_XEN) + if (image_target->id == IMAGE_XEN || image_target->id == IMAGE_XENPVH) { memcpy (ptr, ".xen", sizeof (".xen")); shdr->sh_name = grub_host_to_target32 (ptr - str_start); @@ -502,7 +537,10 @@ SUFFIX (grub_mkimage_generate_elf) (const struct grub_install_image_target_desc shdr->sh_type = grub_host_to_target32 (SHT_PROGBITS); shdr->sh_addr = grub_host_to_target_addr (target_addr + layout->kernel_size); shdr->sh_offset = grub_host_to_target_addr (program_size + header_size); - shdr->sh_size = grub_host_to_target32 (XEN_NOTE_SIZE); + if (image_target->id == IMAGE_XEN) + shdr->sh_size = grub_host_to_target32 (XEN_NOTE_SIZE); + else + shdr->sh_size = grub_host_to_target32 (XENPVH_NOTE_SIZE); shdr->sh_link = grub_host_to_target32 (0); shdr->sh_info = grub_host_to_target32 (0); shdr->sh_addralign = grub_host_to_target32 (image_target->voidp_sizeof); diff --git a/util/mkimage.c b/util/mkimage.c index e22d82afa..5e071c074 100644 --- a/util/mkimage.c +++ b/util/mkimage.c @@ -132,6 +132,24 @@ static const struct grub_install_image_target_desc image_targets[] = .link_addr = GRUB_KERNEL_I386_PC_LINK_ADDR, .default_compression = GRUB_COMPRESSION_LZMA }, + { + .dirname = "i386-xenpvh", + .names = { "i386-xenpvh", NULL }, + .voidp_sizeof = 4, + .bigendian = 0, + .id = IMAGE_XENPVH, + .flags = PLATFORM_FLAGS_NONE, + .total_module_size = TARGET_NO_FIELD, + .decompressor_compressed_size = TARGET_NO_FIELD, + .decompressor_uncompressed_size = TARGET_NO_FIELD, + .decompressor_uncompressed_addr = TARGET_NO_FIELD, + .elf_target = EM_386, + .section_align = 1, + .vaddr_offset = 0, + .link_addr = GRUB_KERNEL_I386_XENPVH_LINK_ADDR, + .mod_align = GRUB_KERNEL_I386_XENPVH_MOD_ALIGN, + .link_align = 4 + }, { .dirname = "i386-pc", .names = { "i386-pc-pxe", NULL }, @@ -860,7 +878,8 @@ grub_install_generate_image (const char *dir, const char *prefix, else kernel_img = grub_mkimage_load_image64 (kernel_path, total_module_size, &layout, image_target); - if (image_target->id == IMAGE_XEN && layout.align < 4096) + if ((image_target->id == IMAGE_XEN || image_target->id == IMAGE_XENPVH) && + layout.align < 4096) layout.align = 4096; if ((image_target->flags & PLATFORM_FLAGS_DECOMPRESSORS) @@ -1103,6 +1122,7 @@ grub_install_generate_image (const char *dir, const char *prefix, case IMAGE_MIPS_ARC: case IMAGE_QEMU_MIPS_FLASH: case IMAGE_XEN: + case IMAGE_XENPVH: break; case IMAGE_SPARC64_AOUT: case IMAGE_SPARC64_RAW: @@ -1679,6 +1699,7 @@ grub_install_generate_image (const char *dir, const char *prefix, case IMAGE_LOONGSON_ELF: case IMAGE_PPC: case IMAGE_XEN: + case IMAGE_XENPVH: case IMAGE_COREBOOT: case IMAGE_I386_IEEE1275: { -- 2.16.4