From mboxrd@z Thu Jan 1 00:00:00 1970 From: Juergen Gross Subject: [PATCH v4 17/19] xen_pvh: support building a standalone image Date: Fri, 2 Nov 2018 13:37:36 +0100 Message-ID: <20181102123738.16395-18-jgross@suse.com> References: <20181102123738.16395-1-jgross@suse.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20181102123738.16395-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 U3VwcG9ydCBta2ltYWdlIGZvciB4ZW5fcHZoLgoKSW4gb3JkZXIgdG8gYXZvaWQgdXNpbmcgcGxh aW4gaW50ZWdlcnMgZm9yIHRoZSBFTEYgbm90ZXMgdXNlIHRoZQphdmFpbGFibGUgWGVuIGluY2x1 ZGUgaW5zdGVhZC4gV2hpbGUgYXQgaXQgcmVwbGFjZSB0aGUgcGxhaW4gbnVtYmVycwpmb3IgWGVu IFBWIG1vZGUsIHRvby4KClNpZ25lZC1vZmYtYnk6IEp1ZXJnZW4gR3Jvc3MgPGpncm9zc0BzdXNl LmNvbT4KUmV2aWV3ZWQtYnk6IERhbmllbCBLaXBlciA8ZGFuaWVsLmtpcGVyQG9yYWNsZS5jb20+ Ci0tLQpWMjogc29tZSBzdHlsZSBhZGp1c3RtZW50cyAoRGFuaWVsIEtpcGVyKQogICAgdXNlIGRl ZmluZXMgZm9yIGVsZi1ub3RlcyAoRGFuaWVsIEtpcGVyKQoKSSBkaWRuJ3QgcmVwbGFjZSB0aGUg NDA5NiBieSBhIFBBR0VfU0laRSBtYWNybyBhcyByZXF1ZXN0ZWQgYnkgRGFuaWVsLAphcyB0aGVy ZSBpc24ndCBzdWNoIGEgbWFjcm8gZWFzaWx5IGF2YWlsYWJsZSBmb3IgdXRpbC9ta2ltYWdlLmMg YW5kCkkgZGlkbid0IGludHJvZHVjZSBpdHMgdXNhZ2UuCi0tLQogaW5jbHVkZS9ncnViL3V0aWwv bWtpbWFnZS5oIHwgIDMgKystCiB1dGlsL2dydWItbWtpbWFnZTMyLmMgICAgICAgfCAgNCArKyst CiB1dGlsL2dydWItbWtpbWFnZTY0LmMgICAgICAgfCAgNCArKystCiB1dGlsL2dydWItbWtpbWFn ZXh4LmMgICAgICAgfCA1OCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0t LS0tLS0KIHV0aWwvbWtpbWFnZS5jICAgICAgICAgICAgICB8IDIzICsrKysrKysrKysrKysrKysr LQogNSBmaWxlcyBjaGFuZ2VkLCA3OCBpbnNlcnRpb25zKCspLCAxNCBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS9pbmNsdWRlL2dydWIvdXRpbC9ta2ltYWdlLmggYi9pbmNsdWRlL2dydWIvdXRp bC9ta2ltYWdlLmgKaW5kZXggYjNhNWNhMTMyLi5iYTlmNTY4ZjYgMTAwNjQ0Ci0tLSBhL2luY2x1 ZGUvZ3J1Yi91dGlsL21raW1hZ2UuaAorKysgYi9pbmNsdWRlL2dydWIvdXRpbC9ta2ltYWdlLmgK QEAgLTcxLDcgKzcxLDggQEAgc3RydWN0IGdydWJfaW5zdGFsbF9pbWFnZV90YXJnZXRfZGVzYwog ICAgIElNQUdFX0kzODZfSUVFRTEyNzUsCiAgICAgSU1BR0VfTE9PTkdTT05fRUxGLCBJTUFHRV9R RU1VLCBJTUFHRV9QUEMsIElNQUdFX1lFRUxPT05HX0ZMQVNILAogICAgIElNQUdFX0ZVTE9PTkcy Rl9GTEFTSCwgSU1BR0VfSTM4Nl9QQ19QWEUsIElNQUdFX01JUFNfQVJDLAotICAgIElNQUdFX1FF TVVfTUlQU19GTEFTSCwgSU1BR0VfVUJPT1QsIElNQUdFX1hFTiwgSU1BR0VfSTM4Nl9QQ19FTFRP UklUTworICAgIElNQUdFX1FFTVVfTUlQU19GTEFTSCwgSU1BR0VfVUJPT1QsIElNQUdFX1hFTiwg SU1BR0VfSTM4Nl9QQ19FTFRPUklUTywKKyAgICBJTUFHRV9YRU5fUFZICiAgIH0gaWQ7CiAgIGVu dW0KICAgICB7CmRpZmYgLS1naXQgYS91dGlsL2dydWItbWtpbWFnZTMyLmMgYi91dGlsL2dydWIt bWtpbWFnZTMyLmMKaW5kZXggMWYyY2NjY2QyLi4wMjZhMmRkNTkgMTAwNjQ0Ci0tLSBhL3V0aWwv Z3J1Yi1ta2ltYWdlMzIuYworKysgYi91dGlsL2dydWItbWtpbWFnZTMyLmMKQEAgLTE3LDcgKzE3 LDkgQEAKICMgZGVmaW5lIEVMRl9SX1NZTSh2YWwpCQlFTEYzMl9SX1NZTSh2YWwpCiAjIGRlZmlu ZSBFTEZfUl9UWVBFKHZhbCkJCUVMRjMyX1JfVFlQRSh2YWwpCiAjIGRlZmluZSBFTEZfU1RfVFlQ RSh2YWwpCQlFTEYzMl9TVF9UWVBFKHZhbCkKLSNkZWZpbmUgWEVOX05PVEVfU0laRSAxMzIKKwor I2RlZmluZSBYRU5fTk9URV9TSVpFCQkxMzIKKyNkZWZpbmUgWEVOX1BWSF9OT1RFX1NJWkUJMjAK IAogI2lmbmRlZiBHUlVCX01LSU1BR0VYWAogI2luY2x1ZGUgImdydWItbWtpbWFnZXh4LmMiCmRp ZmYgLS1naXQgYS91dGlsL2dydWItbWtpbWFnZTY0LmMgYi91dGlsL2dydWItbWtpbWFnZTY0LmMK aW5kZXggNGZmNzJhNjI1Li4xNzBkZWZiNDAgMTAwNjQ0Ci0tLSBhL3V0aWwvZ3J1Yi1ta2ltYWdl NjQuYworKysgYi91dGlsL2dydWItbWtpbWFnZTY0LmMKQEAgLTE3LDcgKzE3LDkgQEAKICMgZGVm aW5lIEVMRl9SX1NZTSh2YWwpCQlFTEY2NF9SX1NZTSh2YWwpCiAjIGRlZmluZSBFTEZfUl9UWVBF KHZhbCkJCUVMRjY0X1JfVFlQRSh2YWwpCiAjIGRlZmluZSBFTEZfU1RfVFlQRSh2YWwpCQlFTEY2 NF9TVF9UWVBFKHZhbCkKLSNkZWZpbmUgWEVOX05PVEVfU0laRSAxMjAKKworI2RlZmluZSBYRU5f Tk9URV9TSVpFCQkxMjAKKyNkZWZpbmUgWEVOX1BWSF9OT1RFX1NJWkUJMjQKIAogI2lmbmRlZiBH UlVCX01LSU1BR0VYWAogI2luY2x1ZGUgImdydWItbWtpbWFnZXh4LmMiCmRpZmYgLS1naXQgYS91 dGlsL2dydWItbWtpbWFnZXh4LmMgYi91dGlsL2dydWItbWtpbWFnZXh4LmMKaW5kZXggYTQ4M2M2 NzRjLi5lOTRhNzIxYjQgMTAwNjQ0Ci0tLSBhL3V0aWwvZ3J1Yi1ta2ltYWdleHguYworKysgYi91 dGlsL2dydWItbWtpbWFnZXh4LmMKQEAgLTQ4LDYgKzQ4LDggQEAKICNpbmNsdWRlIDxncnViL3V0 aWwvaW5zdGFsbC5oPgogI2luY2x1ZGUgPGdydWIvdXRpbC9ta2ltYWdlLmg+CiAKKyNpbmNsdWRl IDx4ZW4vZWxmbm90ZS5oPgorCiAjcHJhZ21hIEdDQyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XY2Fz dC1hbGlnbiIKIAogI2RlZmluZSBHUlVCX01LSU1BR0VYWApAQCAtMjI3LDEyICsyMjksMTIgQEAg U1VGRklYIChncnViX21raW1hZ2VfZ2VuZXJhdGVfZWxmKSAoY29uc3Qgc3RydWN0IGdydWJfaW5z dGFsbF9pbWFnZV90YXJnZXRfZGVzYwogICAgICAgcGhudW0rKzsKICAgICAgIGZvb3Rlcl9zaXpl ICs9IHNpemVvZiAoc3RydWN0IGdydWJfaWVlZTEyNzVfbm90ZSk7CiAgICAgfQotICBpZiAoaW1h Z2VfdGFyZ2V0LT5pZCA9PSBJTUFHRV9YRU4pCisgIGlmIChpbWFnZV90YXJnZXQtPmlkID09IElN QUdFX1hFTiB8fCBpbWFnZV90YXJnZXQtPmlkID09IElNQUdFX1hFTl9QVkgpCiAgICAgewogICAg ICAgcGhudW0rKzsKICAgICAgIHNobnVtKys7CiAgICAgICBzdHJpbmdfc2l6ZSArPSBzaXplb2Yg KCIueGVuIik7Ci0gICAgICBmb290ZXJfc2l6ZSArPSBYRU5fTk9URV9TSVpFOworICAgICAgZm9v dGVyX3NpemUgKz0gKGltYWdlX3RhcmdldC0+aWQgPT0gSU1BR0VfWEVOKSA/IFhFTl9OT1RFX1NJ WkUgOiBYRU5fUFZIX05PVEVfU0laRTsKICAgICB9CiAgIGhlYWRlcl9zaXplID0gQUxJR05fVVAg KHNpemVvZiAoKmVoZHIpICsgcGhudW0gKiBzaXplb2YgKCpwaGRyKQogCQkJICArIHNobnVtICog c2l6ZW9mICgqc2hkcikgKyBzdHJpbmdfc2l6ZSwgbGF5b3V0LT5hbGlnbik7CkBAIC0zNDEsNyAr MzQzLDcgQEAgU1VGRklYIChncnViX21raW1hZ2VfZ2VuZXJhdGVfZWxmKSAoY29uc3Qgc3RydWN0 IGdydWJfaW5zdGFsbF9pbWFnZV90YXJnZXRfZGVzYwogICAgICAgbm90ZV9wdHIgPSAoRWxmX05o ZHIgKikgcHRyOwogICAgICAgbm90ZV9wdHItPm5fbmFtZXN6ID0gZ3J1Yl9ob3N0X3RvX3Rhcmdl dDMyIChzaXplb2YgKEdSVUJfWEVOX05PVEVfTkFNRSkpOwogICAgICAgbm90ZV9wdHItPm5fZGVz Y3N6ID0gZ3J1Yl9ob3N0X3RvX3RhcmdldDMyIChzaXplb2YgKFBBQ0tBR0VfTkFNRSkpOwotICAg ICAgbm90ZV9wdHItPm5fdHlwZSA9IGdydWJfaG9zdF90b190YXJnZXQzMiAoNik7CisgICAgICBu b3RlX3B0ci0+bl90eXBlID0gZ3J1Yl9ob3N0X3RvX3RhcmdldDMyIChYRU5fRUxGTk9URV9HVUVT VF9PUyk7CiAgICAgICBwdHIgKz0gc2l6ZW9mIChFbGZfTmhkcik7CiAgICAgICBtZW1jcHkgKHB0 ciwgR1JVQl9YRU5fTk9URV9OQU1FLCBzaXplb2YgKEdSVUJfWEVOX05PVEVfTkFNRSkpOwogICAg ICAgcHRyICs9IEFMSUdOX1VQIChzaXplb2YgKEdSVUJfWEVOX05PVEVfTkFNRSksIDQpOwpAQCAt MzUyLDcgKzM1NCw3IEBAIFNVRkZJWCAoZ3J1Yl9ta2ltYWdlX2dlbmVyYXRlX2VsZikgKGNvbnN0 IHN0cnVjdCBncnViX2luc3RhbGxfaW1hZ2VfdGFyZ2V0X2Rlc2MKICAgICAgIG5vdGVfcHRyID0g KEVsZl9OaGRyICopIHB0cjsKICAgICAgIG5vdGVfcHRyLT5uX25hbWVzeiA9IGdydWJfaG9zdF90 b190YXJnZXQzMiAoc2l6ZW9mIChHUlVCX1hFTl9OT1RFX05BTUUpKTsKICAgICAgIG5vdGVfcHRy LT5uX2Rlc2NzeiA9IGdydWJfaG9zdF90b190YXJnZXQzMiAoc2l6ZW9mICgiZ2VuZXJpYyIpKTsK LSAgICAgIG5vdGVfcHRyLT5uX3R5cGUgPSBncnViX2hvc3RfdG9fdGFyZ2V0MzIgKDgpOworICAg ICAgbm90ZV9wdHItPm5fdHlwZSA9IGdydWJfaG9zdF90b190YXJnZXQzMiAoWEVOX0VMRk5PVEVf TE9BREVSKTsKICAgICAgIHB0ciArPSBzaXplb2YgKEVsZl9OaGRyKTsKICAgICAgIG1lbWNweSAo cHRyLCBHUlVCX1hFTl9OT1RFX05BTUUsIHNpemVvZiAoR1JVQl9YRU5fTk9URV9OQU1FKSk7CiAg ICAgICBwdHIgKz0gQUxJR05fVVAgKHNpemVvZiAoR1JVQl9YRU5fTk9URV9OQU1FKSwgNCk7CkBA IC0zNjMsNyArMzY1LDcgQEAgU1VGRklYIChncnViX21raW1hZ2VfZ2VuZXJhdGVfZWxmKSAoY29u c3Qgc3RydWN0IGdydWJfaW5zdGFsbF9pbWFnZV90YXJnZXRfZGVzYwogICAgICAgbm90ZV9wdHIg PSAoRWxmX05oZHIgKikgcHRyOwogICAgICAgbm90ZV9wdHItPm5fbmFtZXN6ID0gZ3J1Yl9ob3N0 X3RvX3RhcmdldDMyIChzaXplb2YgKEdSVUJfWEVOX05PVEVfTkFNRSkpOwogICAgICAgbm90ZV9w dHItPm5fZGVzY3N6ID0gZ3J1Yl9ob3N0X3RvX3RhcmdldDMyIChzaXplb2YgKCJ4ZW4tMy4wIikp OwotICAgICAgbm90ZV9wdHItPm5fdHlwZSA9IGdydWJfaG9zdF90b190YXJnZXQzMiAoNSk7Cisg ICAgICBub3RlX3B0ci0+bl90eXBlID0gZ3J1Yl9ob3N0X3RvX3RhcmdldDMyIChYRU5fRUxGTk9U RV9YRU5fVkVSU0lPTik7CiAgICAgICBwdHIgKz0gc2l6ZW9mIChFbGZfTmhkcik7CiAgICAgICBt ZW1jcHkgKHB0ciwgR1JVQl9YRU5fTk9URV9OQU1FLCBzaXplb2YgKEdSVUJfWEVOX05PVEVfTkFN RSkpOwogICAgICAgcHRyICs9IEFMSUdOX1VQIChzaXplb2YgKEdSVUJfWEVOX05PVEVfTkFNRSks IDQpOwpAQCAtMzc0LDcgKzM3Niw3IEBAIFNVRkZJWCAoZ3J1Yl9ta2ltYWdlX2dlbmVyYXRlX2Vs ZikgKGNvbnN0IHN0cnVjdCBncnViX2luc3RhbGxfaW1hZ2VfdGFyZ2V0X2Rlc2MKICAgICAgIG5v dGVfcHRyID0gKEVsZl9OaGRyICopIHB0cjsKICAgICAgIG5vdGVfcHRyLT5uX25hbWVzeiA9IGdy dWJfaG9zdF90b190YXJnZXQzMiAoc2l6ZW9mIChHUlVCX1hFTl9OT1RFX05BTUUpKTsKICAgICAg IG5vdGVfcHRyLT5uX2Rlc2NzeiA9IGdydWJfaG9zdF90b190YXJnZXQzMiAoaW1hZ2VfdGFyZ2V0 LT52b2lkcF9zaXplb2YpOwotICAgICAgbm90ZV9wdHItPm5fdHlwZSA9IGdydWJfaG9zdF90b190 YXJnZXQzMiAoMSk7CisgICAgICBub3RlX3B0ci0+bl90eXBlID0gZ3J1Yl9ob3N0X3RvX3Rhcmdl dDMyIChYRU5fRUxGTk9URV9FTlRSWSk7CiAgICAgICBwdHIgKz0gc2l6ZW9mIChFbGZfTmhkcik7 CiAgICAgICBtZW1jcHkgKHB0ciwgR1JVQl9YRU5fTk9URV9OQU1FLCBzaXplb2YgKEdSVUJfWEVO X05PVEVfTkFNRSkpOwogICAgICAgcHRyICs9IEFMSUdOX1VQIChzaXplb2YgKEdSVUJfWEVOX05P VEVfTkFNRSksIDQpOwpAQCAtMzg1LDcgKzM4Nyw3IEBAIFNVRkZJWCAoZ3J1Yl9ta2ltYWdlX2dl bmVyYXRlX2VsZikgKGNvbnN0IHN0cnVjdCBncnViX2luc3RhbGxfaW1hZ2VfdGFyZ2V0X2Rlc2MK ICAgICAgIG5vdGVfcHRyID0gKEVsZl9OaGRyICopIHB0cjsKICAgICAgIG5vdGVfcHRyLT5uX25h bWVzeiA9IGdydWJfaG9zdF90b190YXJnZXQzMiAoc2l6ZW9mIChHUlVCX1hFTl9OT1RFX05BTUUp KTsKICAgICAgIG5vdGVfcHRyLT5uX2Rlc2NzeiA9IGdydWJfaG9zdF90b190YXJnZXQzMiAoaW1h Z2VfdGFyZ2V0LT52b2lkcF9zaXplb2YpOwotICAgICAgbm90ZV9wdHItPm5fdHlwZSA9IGdydWJf aG9zdF90b190YXJnZXQzMiAoMyk7CisgICAgICBub3RlX3B0ci0+bl90eXBlID0gZ3J1Yl9ob3N0 X3RvX3RhcmdldDMyIChYRU5fRUxGTk9URV9WSVJUX0JBU0UpOwogICAgICAgcHRyICs9IHNpemVv ZiAoRWxmX05oZHIpOwogICAgICAgbWVtY3B5IChwdHIsIEdSVUJfWEVOX05PVEVfTkFNRSwgc2l6 ZW9mIChHUlVCX1hFTl9OT1RFX05BTUUpKTsKICAgICAgIHB0ciArPSBBTElHTl9VUCAoc2l6ZW9m IChHUlVCX1hFTl9OT1RFX05BTUUpLCA0KTsKQEAgLTM5OCw3ICs0MDAsNyBAQCBTVUZGSVggKGdy dWJfbWtpbWFnZV9nZW5lcmF0ZV9lbGYpIChjb25zdCBzdHJ1Y3QgZ3J1Yl9pbnN0YWxsX2ltYWdl X3RhcmdldF9kZXNjCiAJICBub3RlX3B0ciA9IChFbGZfTmhkciAqKSBwdHI7CiAJICBub3RlX3B0 ci0+bl9uYW1lc3ogPSBncnViX2hvc3RfdG9fdGFyZ2V0MzIgKHNpemVvZiAoR1JVQl9YRU5fTk9U RV9OQU1FKSk7CiAJICBub3RlX3B0ci0+bl9kZXNjc3ogPSBncnViX2hvc3RfdG9fdGFyZ2V0MzIg KHNpemVvZiAoInllcyxiaW1vZGFsIikpOwotCSAgbm90ZV9wdHItPm5fdHlwZSA9IGdydWJfaG9z dF90b190YXJnZXQzMiAoOSk7CisJICBub3RlX3B0ci0+bl90eXBlID0gZ3J1Yl9ob3N0X3RvX3Rh cmdldDMyIChYRU5fRUxGTk9URV9QQUVfTU9ERSk7CiAJICBwdHIgKz0gc2l6ZW9mIChFbGZfTmhk cik7CiAJICBtZW1jcHkgKHB0ciwgR1JVQl9YRU5fTk9URV9OQU1FLCBzaXplb2YgKEdSVUJfWEVO X05PVEVfTkFNRSkpOwogCSAgcHRyICs9IEFMSUdOX1VQIChzaXplb2YgKEdSVUJfWEVOX05PVEVf TkFNRSksIDQpOwpAQCAtNDE5LDYgKzQyMSwzOSBAQCBTVUZGSVggKGdydWJfbWtpbWFnZV9nZW5l cmF0ZV9lbGYpIChjb25zdCBzdHJ1Y3QgZ3J1Yl9pbnN0YWxsX2ltYWdlX3RhcmdldF9kZXNjCiAg ICAgICBwaGRyLT5wX29mZnNldCA9IGdydWJfaG9zdF90b190YXJnZXQzMiAoaGVhZGVyX3NpemUg KyBwcm9ncmFtX3NpemUpOwogICAgIH0KIAorICBpZiAoaW1hZ2VfdGFyZ2V0LT5pZCA9PSBJTUFH RV9YRU5fUFZIKQorICAgIHsKKyAgICAgIGNoYXIgKm5vdGVfc3RhcnQgPSAoZWxmX2ltZyArIHBy b2dyYW1fc2l6ZSArIGhlYWRlcl9zaXplKTsKKyAgICAgIEVsZl9OaGRyICpub3RlX3B0cjsKKyAg ICAgIGNoYXIgKnB0ciA9IChjaGFyICopIG5vdGVfc3RhcnQ7CisKKyAgICAgIGdydWJfdXRpbF9p bmZvICgiYWRkaW5nIFhFTiBOT1RFIHNlZ21lbnQiKTsKKworICAgICAgLyogUGh5czMyIEVudHJ5 LiAgKi8KKyAgICAgIG5vdGVfcHRyID0gKEVsZl9OaGRyICopIHB0cjsKKyAgICAgIG5vdGVfcHRy LT5uX25hbWVzeiA9IGdydWJfaG9zdF90b190YXJnZXQzMiAoc2l6ZW9mIChHUlVCX1hFTl9OT1RF X05BTUUpKTsKKyAgICAgIG5vdGVfcHRyLT5uX2Rlc2NzeiA9IGdydWJfaG9zdF90b190YXJnZXQz MiAoaW1hZ2VfdGFyZ2V0LT52b2lkcF9zaXplb2YpOworICAgICAgbm90ZV9wdHItPm5fdHlwZSA9 IGdydWJfaG9zdF90b190YXJnZXQzMiAoWEVOX0VMRk5PVEVfUEhZUzMyX0VOVFJZKTsKKyAgICAg IHB0ciArPSBzaXplb2YgKEVsZl9OaGRyKTsKKyAgICAgIG1lbWNweSAocHRyLCBHUlVCX1hFTl9O T1RFX05BTUUsIHNpemVvZiAoR1JVQl9YRU5fTk9URV9OQU1FKSk7CisgICAgICBwdHIgKz0gQUxJ R05fVVAgKHNpemVvZiAoR1JVQl9YRU5fTk9URV9OQU1FKSwgNCk7CisgICAgICBtZW1zZXQgKHB0 ciwgMCwgaW1hZ2VfdGFyZ2V0LT52b2lkcF9zaXplb2YpOworICAgICAgKihncnViX3VpbnQzMl90 ICopIHB0ciA9IEdSVUJfS0VSTkVMX0kzODZfWEVOX1BWSF9MSU5LX0FERFI7CisgICAgICBwdHIg Kz0gaW1hZ2VfdGFyZ2V0LT52b2lkcF9zaXplb2Y7CisKKyAgICAgIGFzc2VydCAoWEVOX1BWSF9O T1RFX1NJWkUgPT0gKHB0ciAtIG5vdGVfc3RhcnQpKTsKKworICAgICAgcGhkcisrOworICAgICAg cGhkci0+cF90eXBlID0gZ3J1Yl9ob3N0X3RvX3RhcmdldDMyIChQVF9OT1RFKTsKKyAgICAgIHBo ZHItPnBfZmxhZ3MgPSBncnViX2hvc3RfdG9fdGFyZ2V0MzIgKFBGX1IpOworICAgICAgcGhkci0+ cF9hbGlnbiA9IGdydWJfaG9zdF90b190YXJnZXQzMiAoaW1hZ2VfdGFyZ2V0LT52b2lkcF9zaXpl b2YpOworICAgICAgcGhkci0+cF92YWRkciA9IDA7CisgICAgICBwaGRyLT5wX3BhZGRyID0gMDsK KyAgICAgIHBoZHItPnBfZmlsZXN6ID0gZ3J1Yl9ob3N0X3RvX3RhcmdldDMyIChYRU5fUFZIX05P VEVfU0laRSk7CisgICAgICBwaGRyLT5wX21lbXN6ID0gMDsKKyAgICAgIHBoZHItPnBfb2Zmc2V0 ID0gZ3J1Yl9ob3N0X3RvX3RhcmdldDMyIChoZWFkZXJfc2l6ZSArIHByb2dyYW1fc2l6ZSk7Cisg ICAgfQorCiAgIGlmIChub3RlKQogICAgIHsKICAgICAgIGludCBub3RlX3NpemUgPSBzaXplb2Yg KHN0cnVjdCBncnViX2llZWUxMjc1X25vdGUpOwpAQCAtNDk0LDcgKzUyOSw3IEBAIFNVRkZJWCAo Z3J1Yl9ta2ltYWdlX2dlbmVyYXRlX2VsZikgKGNvbnN0IHN0cnVjdCBncnViX2luc3RhbGxfaW1h Z2VfdGFyZ2V0X2Rlc2MKICAgICBzaGRyLT5zaF9lbnRzaXplID0gZ3J1Yl9ob3N0X3RvX3Rhcmdl dDMyICgwKTsKICAgICBzaGRyKys7CiAKLSAgICBpZiAoaW1hZ2VfdGFyZ2V0LT5pZCA9PSBJTUFH RV9YRU4pCisgICAgaWYgKGltYWdlX3RhcmdldC0+aWQgPT0gSU1BR0VfWEVOIHx8IGltYWdlX3Rh cmdldC0+aWQgPT0gSU1BR0VfWEVOX1BWSCkKICAgICAgIHsKIAltZW1jcHkgKHB0ciwgIi54ZW4i LCBzaXplb2YgKCIueGVuIikpOwogCXNoZHItPnNoX25hbWUgPSBncnViX2hvc3RfdG9fdGFyZ2V0 MzIgKHB0ciAtIHN0cl9zdGFydCk7CkBAIC01MDIsNyArNTM3LDEwIEBAIFNVRkZJWCAoZ3J1Yl9t a2ltYWdlX2dlbmVyYXRlX2VsZikgKGNvbnN0IHN0cnVjdCBncnViX2luc3RhbGxfaW1hZ2VfdGFy Z2V0X2Rlc2MKIAlzaGRyLT5zaF90eXBlID0gZ3J1Yl9ob3N0X3RvX3RhcmdldDMyIChTSFRfUFJP R0JJVFMpOwogCXNoZHItPnNoX2FkZHIgPSBncnViX2hvc3RfdG9fdGFyZ2V0X2FkZHIgKHRhcmdl dF9hZGRyICsgbGF5b3V0LT5rZXJuZWxfc2l6ZSk7CiAJc2hkci0+c2hfb2Zmc2V0ID0gZ3J1Yl9o b3N0X3RvX3RhcmdldF9hZGRyIChwcm9ncmFtX3NpemUgKyBoZWFkZXJfc2l6ZSk7Ci0Jc2hkci0+ c2hfc2l6ZSA9IGdydWJfaG9zdF90b190YXJnZXQzMiAoWEVOX05PVEVfU0laRSk7CisJaWYgKGlt YWdlX3RhcmdldC0+aWQgPT0gSU1BR0VfWEVOKQorCSAgc2hkci0+c2hfc2l6ZSA9IGdydWJfaG9z dF90b190YXJnZXQzMiAoWEVOX05PVEVfU0laRSk7CisJZWxzZQorCSAgc2hkci0+c2hfc2l6ZSA9 IGdydWJfaG9zdF90b190YXJnZXQzMiAoWEVOX1BWSF9OT1RFX1NJWkUpOwogCXNoZHItPnNoX2xp bmsgPSBncnViX2hvc3RfdG9fdGFyZ2V0MzIgKDApOwogCXNoZHItPnNoX2luZm8gPSBncnViX2hv c3RfdG9fdGFyZ2V0MzIgKDApOwogCXNoZHItPnNoX2FkZHJhbGlnbiA9IGdydWJfaG9zdF90b190 YXJnZXQzMiAoaW1hZ2VfdGFyZ2V0LT52b2lkcF9zaXplb2YpOwpkaWZmIC0tZ2l0IGEvdXRpbC9t a2ltYWdlLmMgYi91dGlsL21raW1hZ2UuYwppbmRleCBlMjJkODJhZmEuLjM3MDEzNmU1YyAxMDA2 NDQKLS0tIGEvdXRpbC9ta2ltYWdlLmMKKysrIGIvdXRpbC9ta2ltYWdlLmMKQEAgLTEzMiw2ICsx MzIsMjQgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBncnViX2luc3RhbGxfaW1hZ2VfdGFyZ2V0X2Rl c2MgaW1hZ2VfdGFyZ2V0c1tdID0KICAgICAgIC5saW5rX2FkZHIgPSBHUlVCX0tFUk5FTF9JMzg2 X1BDX0xJTktfQUREUiwKICAgICAgIC5kZWZhdWx0X2NvbXByZXNzaW9uID0gR1JVQl9DT01QUkVT U0lPTl9MWk1BCiAgICAgfSwKKyAgICB7CisgICAgICAuZGlybmFtZSA9ICJpMzg2LXhlbl9wdmgi LAorICAgICAgLm5hbWVzID0geyAiaTM4Ni14ZW5fcHZoIiwgTlVMTCB9LAorICAgICAgLnZvaWRw X3NpemVvZiA9IDQsCisgICAgICAuYmlnZW5kaWFuID0gMCwKKyAgICAgIC5pZCA9IElNQUdFX1hF Tl9QVkgsCisgICAgICAuZmxhZ3MgPSBQTEFURk9STV9GTEFHU19OT05FLAorICAgICAgLnRvdGFs X21vZHVsZV9zaXplID0gVEFSR0VUX05PX0ZJRUxELAorICAgICAgLmRlY29tcHJlc3Nvcl9jb21w cmVzc2VkX3NpemUgPSBUQVJHRVRfTk9fRklFTEQsCisgICAgICAuZGVjb21wcmVzc29yX3VuY29t cHJlc3NlZF9zaXplID0gVEFSR0VUX05PX0ZJRUxELAorICAgICAgLmRlY29tcHJlc3Nvcl91bmNv bXByZXNzZWRfYWRkciA9IFRBUkdFVF9OT19GSUVMRCwKKyAgICAgIC5lbGZfdGFyZ2V0ID0gRU1f Mzg2LAorICAgICAgLnNlY3Rpb25fYWxpZ24gPSAxLAorICAgICAgLnZhZGRyX29mZnNldCA9IDAs CisgICAgICAubGlua19hZGRyID0gR1JVQl9LRVJORUxfSTM4Nl9YRU5fUFZIX0xJTktfQUREUiwK KyAgICAgIC5tb2RfYWxpZ24gPSBHUlVCX0tFUk5FTF9JMzg2X1hFTl9QVkhfTU9EX0FMSUdOLAor ICAgICAgLmxpbmtfYWxpZ24gPSA0CisgICAgfSwKICAgICB7CiAgICAgICAuZGlybmFtZSA9ICJp Mzg2LXBjIiwKICAgICAgIC5uYW1lcyA9IHsgImkzODYtcGMtcHhlIiwgTlVMTCB9LApAQCAtODYw LDcgKzg3OCw4IEBAIGdydWJfaW5zdGFsbF9nZW5lcmF0ZV9pbWFnZSAoY29uc3QgY2hhciAqZGly LCBjb25zdCBjaGFyICpwcmVmaXgsCiAgIGVsc2UKICAgICBrZXJuZWxfaW1nID0gZ3J1Yl9ta2lt YWdlX2xvYWRfaW1hZ2U2NCAoa2VybmVsX3BhdGgsIHRvdGFsX21vZHVsZV9zaXplLAogCQkJCQkg ICAgJmxheW91dCwgaW1hZ2VfdGFyZ2V0KTsKLSAgaWYgKGltYWdlX3RhcmdldC0+aWQgPT0gSU1B R0VfWEVOICYmIGxheW91dC5hbGlnbiA8IDQwOTYpCisgIGlmICgoaW1hZ2VfdGFyZ2V0LT5pZCA9 PSBJTUFHRV9YRU4gfHwgaW1hZ2VfdGFyZ2V0LT5pZCA9PSBJTUFHRV9YRU5fUFZIKSAmJgorICAg ICAgbGF5b3V0LmFsaWduIDwgNDA5NikKICAgICBsYXlvdXQuYWxpZ24gPSA0MDk2OwogCiAgIGlm ICgoaW1hZ2VfdGFyZ2V0LT5mbGFncyAmIFBMQVRGT1JNX0ZMQUdTX0RFQ09NUFJFU1NPUlMpCkBA IC0xMTAzLDYgKzExMjIsNyBAQCBncnViX2luc3RhbGxfZ2VuZXJhdGVfaW1hZ2UgKGNvbnN0IGNo YXIgKmRpciwgY29uc3QgY2hhciAqcHJlZml4LAogICAgIGNhc2UgSU1BR0VfTUlQU19BUkM6CiAg ICAgY2FzZSBJTUFHRV9RRU1VX01JUFNfRkxBU0g6CiAgICAgY2FzZSBJTUFHRV9YRU46CisgICAg Y2FzZSBJTUFHRV9YRU5fUFZIOgogICAgICAgYnJlYWs7CiAgICAgY2FzZSBJTUFHRV9TUEFSQzY0 X0FPVVQ6CiAgICAgY2FzZSBJTUFHRV9TUEFSQzY0X1JBVzoKQEAgLTE2NzksNiArMTY5OSw3IEBA IGdydWJfaW5zdGFsbF9nZW5lcmF0ZV9pbWFnZSAoY29uc3QgY2hhciAqZGlyLCBjb25zdCBjaGFy ICpwcmVmaXgsCiAgICAgY2FzZSBJTUFHRV9MT09OR1NPTl9FTEY6CiAgICAgY2FzZSBJTUFHRV9Q UEM6CiAgICAgY2FzZSBJTUFHRV9YRU46CisgICAgY2FzZSBJTUFHRV9YRU5fUFZIOgogICAgIGNh c2UgSU1BR0VfQ09SRUJPT1Q6CiAgICAgY2FzZSBJTUFHRV9JMzg2X0lFRUUxMjc1OgogICAgICAg ewotLSAKMi4xNi40CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5v cmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZl bA== From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1gIYwT-0006jU-GM for mharc-grub-devel@gnu.org; Fri, 02 Nov 2018 08:52:49 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:43556) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gIYwL-0005Nw-CP for grub-devel@gnu.org; Fri, 02 Nov 2018 08:52:43 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gIYiC-00059U-1W for grub-devel@gnu.org; Fri, 02 Nov 2018 08:38:05 -0400 Received: from mx2.suse.de ([195.135.220.15]:50276 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 1gIYiB-00053I-Ll for grub-devel@gnu.org; Fri, 02 Nov 2018 08:38:03 -0400 X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay1.suse.de (unknown [195.135.220.254]) by mx1.suse.de (Postfix) with ESMTP id 8C4F5AF95; Fri, 2 Nov 2018 12:37:44 +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 v4 17/19] xen_pvh: support building a standalone image Date: Fri, 2 Nov 2018 13:37:36 +0100 Message-Id: <20181102123738.16395-18-jgross@suse.com> X-Mailer: git-send-email 2.16.4 In-Reply-To: <20181102123738.16395-1-jgross@suse.com> References: <20181102123738.16395-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: Fri, 02 Nov 2018 12:52:44 -0000 Support mkimage for xen_pvh. 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 Reviewed-by: Daniel Kiper --- 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..ba9f568f6 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_XEN_PVH } id; enum { diff --git a/util/grub-mkimage32.c b/util/grub-mkimage32.c index 1f2ccccd2..026a2dd59 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 XEN_PVH_NOTE_SIZE 20 #ifndef GRUB_MKIMAGEXX #include "grub-mkimagexx.c" diff --git a/util/grub-mkimage64.c b/util/grub-mkimage64.c index 4ff72a625..170defb40 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 XEN_PVH_NOTE_SIZE 24 #ifndef GRUB_MKIMAGEXX #include "grub-mkimagexx.c" diff --git a/util/grub-mkimagexx.c b/util/grub-mkimagexx.c index a483c674c..e94a721b4 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_XEN_PVH) { phnum++; shnum++; string_size += sizeof (".xen"); - footer_size += XEN_NOTE_SIZE; + footer_size += (image_target->id == IMAGE_XEN) ? XEN_NOTE_SIZE : XEN_PVH_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_XEN_PVH) + { + 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_XEN_PVH_LINK_ADDR; + ptr += image_target->voidp_sizeof; + + assert (XEN_PVH_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 (XEN_PVH_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_XEN_PVH) { 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 (XEN_PVH_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..370136e5c 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-xen_pvh", + .names = { "i386-xen_pvh", NULL }, + .voidp_sizeof = 4, + .bigendian = 0, + .id = IMAGE_XEN_PVH, + .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_XEN_PVH_LINK_ADDR, + .mod_align = GRUB_KERNEL_I386_XEN_PVH_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_XEN_PVH) && + 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_XEN_PVH: 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_XEN_PVH: case IMAGE_COREBOOT: case IMAGE_I386_IEEE1275: { -- 2.16.4