From mboxrd@z Thu Jan 1 00:00:00 1970 From: Juergen Gross Subject: [PATCH v5 18/20] xen_pvh: support building a standalone image Date: Wed, 21 Nov 2018 15:28:53 +0100 Message-ID: <20181121142855.13537-19-jgross@suse.com> References: <20181121142855.13537-1-jgross@suse.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20181121142855.13537-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: Juergen Gross , phcoder@gmail.com, daniel.kiper@oracle.com, xen-devel@lists.xen.org, hans@knorrie.org, roger.pau@citrix.com List-Id: xen-devel@lists.xenproject.org U3VwcG9ydCBta2ltYWdlIGZvciB4ZW5fcHZoLgoKU2lnbmVkLW9mZi1ieTogSnVlcmdlbiBHcm9z cyA8amdyb3NzQHN1c2UuY29tPgpSZXZpZXdlZC1ieTogRGFuaWVsIEtpcGVyIDxkYW5pZWwua2lw ZXJAb3JhY2xlLmNvbT4KLS0tClYyOiBzb21lIHN0eWxlIGFkanVzdG1lbnRzIChEYW5pZWwgS2lw ZXIpCiAgICB1c2UgZGVmaW5lcyBmb3IgZWxmLW5vdGVzIChEYW5pZWwgS2lwZXIpClY1OiBtb3Zl IGVsZi1ub3RlIGRlZmluZSB1c2FnZSBpbnRvIG5ldyBwYXRjaCAoRGFuaWVsIEtpcGVyKQoKSSBk aWRuJ3QgcmVwbGFjZSB0aGUgNDA5NiBieSBhIFBBR0VfU0laRSBtYWNybyBhcyByZXF1ZXN0ZWQg YnkgRGFuaWVsLAphcyB0aGVyZSBpc24ndCBzdWNoIGEgbWFjcm8gZWFzaWx5IGF2YWlsYWJsZSBm b3IgdXRpbC9ta2ltYWdlLmMgYW5kCkkgZGlkbid0IGludHJvZHVjZSBpdHMgdXNhZ2UuCi0tLQog aW5jbHVkZS9ncnViL3V0aWwvbWtpbWFnZS5oIHwgIDMgKystCiB1dGlsL2dydWItbWtpbWFnZTMy LmMgICAgICAgfCAgNCArKystCiB1dGlsL2dydWItbWtpbWFnZTY0LmMgICAgICAgfCAgNCArKyst CiB1dGlsL2dydWItbWtpbWFnZXh4LmMgICAgICAgfCA0NCArKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrLS0tLQogdXRpbC9ta2ltYWdlLmMgICAgICAgICAgICAgIHwgMjMg KysrKysrKysrKysrKysrKysrKysrKy0KIDUgZmlsZXMgY2hhbmdlZCwgNzAgaW5zZXJ0aW9ucygr KSwgOCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9pbmNsdWRlL2dydWIvdXRpbC9ta2ltYWdl LmggYi9pbmNsdWRlL2dydWIvdXRpbC9ta2ltYWdlLmgKaW5kZXggYjNhNWNhMTMyLi5iYTlmNTY4 ZjYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZ3J1Yi91dGlsL21raW1hZ2UuaAorKysgYi9pbmNsdWRl L2dydWIvdXRpbC9ta2ltYWdlLmgKQEAgLTcxLDcgKzcxLDggQEAgc3RydWN0IGdydWJfaW5zdGFs bF9pbWFnZV90YXJnZXRfZGVzYwogICAgIElNQUdFX0kzODZfSUVFRTEyNzUsCiAgICAgSU1BR0Vf TE9PTkdTT05fRUxGLCBJTUFHRV9RRU1VLCBJTUFHRV9QUEMsIElNQUdFX1lFRUxPT05HX0ZMQVNI LAogICAgIElNQUdFX0ZVTE9PTkcyRl9GTEFTSCwgSU1BR0VfSTM4Nl9QQ19QWEUsIElNQUdFX01J UFNfQVJDLAotICAgIElNQUdFX1FFTVVfTUlQU19GTEFTSCwgSU1BR0VfVUJPT1QsIElNQUdFX1hF TiwgSU1BR0VfSTM4Nl9QQ19FTFRPUklUTworICAgIElNQUdFX1FFTVVfTUlQU19GTEFTSCwgSU1B R0VfVUJPT1QsIElNQUdFX1hFTiwgSU1BR0VfSTM4Nl9QQ19FTFRPUklUTywKKyAgICBJTUFHRV9Y RU5fUFZICiAgIH0gaWQ7CiAgIGVudW0KICAgICB7CmRpZmYgLS1naXQgYS91dGlsL2dydWItbWtp bWFnZTMyLmMgYi91dGlsL2dydWItbWtpbWFnZTMyLmMKaW5kZXggMWYyY2NjY2QyLi4wMjZhMmRk NTkgMTAwNjQ0Ci0tLSBhL3V0aWwvZ3J1Yi1ta2ltYWdlMzIuYworKysgYi91dGlsL2dydWItbWtp bWFnZTMyLmMKQEAgLTE3LDcgKzE3LDkgQEAKICMgZGVmaW5lIEVMRl9SX1NZTSh2YWwpCQlFTEYz Ml9SX1NZTSh2YWwpCiAjIGRlZmluZSBFTEZfUl9UWVBFKHZhbCkJCUVMRjMyX1JfVFlQRSh2YWwp CiAjIGRlZmluZSBFTEZfU1RfVFlQRSh2YWwpCQlFTEYzMl9TVF9UWVBFKHZhbCkKLSNkZWZpbmUg WEVOX05PVEVfU0laRSAxMzIKKworI2RlZmluZSBYRU5fTk9URV9TSVpFCQkxMzIKKyNkZWZpbmUg WEVOX1BWSF9OT1RFX1NJWkUJMjAKIAogI2lmbmRlZiBHUlVCX01LSU1BR0VYWAogI2luY2x1ZGUg ImdydWItbWtpbWFnZXh4LmMiCmRpZmYgLS1naXQgYS91dGlsL2dydWItbWtpbWFnZTY0LmMgYi91 dGlsL2dydWItbWtpbWFnZTY0LmMKaW5kZXggNGZmNzJhNjI1Li4xNzBkZWZiNDAgMTAwNjQ0Ci0t LSBhL3V0aWwvZ3J1Yi1ta2ltYWdlNjQuYworKysgYi91dGlsL2dydWItbWtpbWFnZTY0LmMKQEAg LTE3LDcgKzE3LDkgQEAKICMgZGVmaW5lIEVMRl9SX1NZTSh2YWwpCQlFTEY2NF9SX1NZTSh2YWwp CiAjIGRlZmluZSBFTEZfUl9UWVBFKHZhbCkJCUVMRjY0X1JfVFlQRSh2YWwpCiAjIGRlZmluZSBF TEZfU1RfVFlQRSh2YWwpCQlFTEY2NF9TVF9UWVBFKHZhbCkKLSNkZWZpbmUgWEVOX05PVEVfU0la RSAxMjAKKworI2RlZmluZSBYRU5fTk9URV9TSVpFCQkxMjAKKyNkZWZpbmUgWEVOX1BWSF9OT1RF X1NJWkUJMjQKIAogI2lmbmRlZiBHUlVCX01LSU1BR0VYWAogI2luY2x1ZGUgImdydWItbWtpbWFn ZXh4LmMiCmRpZmYgLS1naXQgYS91dGlsL2dydWItbWtpbWFnZXh4LmMgYi91dGlsL2dydWItbWtp bWFnZXh4LmMKaW5kZXggNzg0ZWQxYTUyLi5lOTRhNzIxYjQgMTAwNjQ0Ci0tLSBhL3V0aWwvZ3J1 Yi1ta2ltYWdleHguYworKysgYi91dGlsL2dydWItbWtpbWFnZXh4LmMKQEAgLTIyOSwxMiArMjI5 LDEyIEBAIFNVRkZJWCAoZ3J1Yl9ta2ltYWdlX2dlbmVyYXRlX2VsZikgKGNvbnN0IHN0cnVjdCBn cnViX2luc3RhbGxfaW1hZ2VfdGFyZ2V0X2Rlc2MKICAgICAgIHBobnVtKys7CiAgICAgICBmb290 ZXJfc2l6ZSArPSBzaXplb2YgKHN0cnVjdCBncnViX2llZWUxMjc1X25vdGUpOwogICAgIH0KLSAg aWYgKGltYWdlX3RhcmdldC0+aWQgPT0gSU1BR0VfWEVOKQorICBpZiAoaW1hZ2VfdGFyZ2V0LT5p ZCA9PSBJTUFHRV9YRU4gfHwgaW1hZ2VfdGFyZ2V0LT5pZCA9PSBJTUFHRV9YRU5fUFZIKQogICAg IHsKICAgICAgIHBobnVtKys7CiAgICAgICBzaG51bSsrOwogICAgICAgc3RyaW5nX3NpemUgKz0g c2l6ZW9mICgiLnhlbiIpOwotICAgICAgZm9vdGVyX3NpemUgKz0gWEVOX05PVEVfU0laRTsKKyAg ICAgIGZvb3Rlcl9zaXplICs9IChpbWFnZV90YXJnZXQtPmlkID09IElNQUdFX1hFTikgPyBYRU5f Tk9URV9TSVpFIDogWEVOX1BWSF9OT1RFX1NJWkU7CiAgICAgfQogICBoZWFkZXJfc2l6ZSA9IEFM SUdOX1VQIChzaXplb2YgKCplaGRyKSArIHBobnVtICogc2l6ZW9mICgqcGhkcikKIAkJCSAgKyBz aG51bSAqIHNpemVvZiAoKnNoZHIpICsgc3RyaW5nX3NpemUsIGxheW91dC0+YWxpZ24pOwpAQCAt NDIxLDYgKzQyMSwzOSBAQCBTVUZGSVggKGdydWJfbWtpbWFnZV9nZW5lcmF0ZV9lbGYpIChjb25z dCBzdHJ1Y3QgZ3J1Yl9pbnN0YWxsX2ltYWdlX3RhcmdldF9kZXNjCiAgICAgICBwaGRyLT5wX29m ZnNldCA9IGdydWJfaG9zdF90b190YXJnZXQzMiAoaGVhZGVyX3NpemUgKyBwcm9ncmFtX3NpemUp OwogICAgIH0KIAorICBpZiAoaW1hZ2VfdGFyZ2V0LT5pZCA9PSBJTUFHRV9YRU5fUFZIKQorICAg IHsKKyAgICAgIGNoYXIgKm5vdGVfc3RhcnQgPSAoZWxmX2ltZyArIHByb2dyYW1fc2l6ZSArIGhl YWRlcl9zaXplKTsKKyAgICAgIEVsZl9OaGRyICpub3RlX3B0cjsKKyAgICAgIGNoYXIgKnB0ciA9 IChjaGFyICopIG5vdGVfc3RhcnQ7CisKKyAgICAgIGdydWJfdXRpbF9pbmZvICgiYWRkaW5nIFhF TiBOT1RFIHNlZ21lbnQiKTsKKworICAgICAgLyogUGh5czMyIEVudHJ5LiAgKi8KKyAgICAgIG5v dGVfcHRyID0gKEVsZl9OaGRyICopIHB0cjsKKyAgICAgIG5vdGVfcHRyLT5uX25hbWVzeiA9IGdy dWJfaG9zdF90b190YXJnZXQzMiAoc2l6ZW9mIChHUlVCX1hFTl9OT1RFX05BTUUpKTsKKyAgICAg IG5vdGVfcHRyLT5uX2Rlc2NzeiA9IGdydWJfaG9zdF90b190YXJnZXQzMiAoaW1hZ2VfdGFyZ2V0 LT52b2lkcF9zaXplb2YpOworICAgICAgbm90ZV9wdHItPm5fdHlwZSA9IGdydWJfaG9zdF90b190 YXJnZXQzMiAoWEVOX0VMRk5PVEVfUEhZUzMyX0VOVFJZKTsKKyAgICAgIHB0ciArPSBzaXplb2Yg KEVsZl9OaGRyKTsKKyAgICAgIG1lbWNweSAocHRyLCBHUlVCX1hFTl9OT1RFX05BTUUsIHNpemVv ZiAoR1JVQl9YRU5fTk9URV9OQU1FKSk7CisgICAgICBwdHIgKz0gQUxJR05fVVAgKHNpemVvZiAo R1JVQl9YRU5fTk9URV9OQU1FKSwgNCk7CisgICAgICBtZW1zZXQgKHB0ciwgMCwgaW1hZ2VfdGFy Z2V0LT52b2lkcF9zaXplb2YpOworICAgICAgKihncnViX3VpbnQzMl90ICopIHB0ciA9IEdSVUJf S0VSTkVMX0kzODZfWEVOX1BWSF9MSU5LX0FERFI7CisgICAgICBwdHIgKz0gaW1hZ2VfdGFyZ2V0 LT52b2lkcF9zaXplb2Y7CisKKyAgICAgIGFzc2VydCAoWEVOX1BWSF9OT1RFX1NJWkUgPT0gKHB0 ciAtIG5vdGVfc3RhcnQpKTsKKworICAgICAgcGhkcisrOworICAgICAgcGhkci0+cF90eXBlID0g Z3J1Yl9ob3N0X3RvX3RhcmdldDMyIChQVF9OT1RFKTsKKyAgICAgIHBoZHItPnBfZmxhZ3MgPSBn cnViX2hvc3RfdG9fdGFyZ2V0MzIgKFBGX1IpOworICAgICAgcGhkci0+cF9hbGlnbiA9IGdydWJf aG9zdF90b190YXJnZXQzMiAoaW1hZ2VfdGFyZ2V0LT52b2lkcF9zaXplb2YpOworICAgICAgcGhk ci0+cF92YWRkciA9IDA7CisgICAgICBwaGRyLT5wX3BhZGRyID0gMDsKKyAgICAgIHBoZHItPnBf ZmlsZXN6ID0gZ3J1Yl9ob3N0X3RvX3RhcmdldDMyIChYRU5fUFZIX05PVEVfU0laRSk7CisgICAg ICBwaGRyLT5wX21lbXN6ID0gMDsKKyAgICAgIHBoZHItPnBfb2Zmc2V0ID0gZ3J1Yl9ob3N0X3Rv X3RhcmdldDMyIChoZWFkZXJfc2l6ZSArIHByb2dyYW1fc2l6ZSk7CisgICAgfQorCiAgIGlmIChu b3RlKQogICAgIHsKICAgICAgIGludCBub3RlX3NpemUgPSBzaXplb2YgKHN0cnVjdCBncnViX2ll ZWUxMjc1X25vdGUpOwpAQCAtNDk2LDcgKzUyOSw3IEBAIFNVRkZJWCAoZ3J1Yl9ta2ltYWdlX2dl bmVyYXRlX2VsZikgKGNvbnN0IHN0cnVjdCBncnViX2luc3RhbGxfaW1hZ2VfdGFyZ2V0X2Rlc2MK ICAgICBzaGRyLT5zaF9lbnRzaXplID0gZ3J1Yl9ob3N0X3RvX3RhcmdldDMyICgwKTsKICAgICBz aGRyKys7CiAKLSAgICBpZiAoaW1hZ2VfdGFyZ2V0LT5pZCA9PSBJTUFHRV9YRU4pCisgICAgaWYg KGltYWdlX3RhcmdldC0+aWQgPT0gSU1BR0VfWEVOIHx8IGltYWdlX3RhcmdldC0+aWQgPT0gSU1B R0VfWEVOX1BWSCkKICAgICAgIHsKIAltZW1jcHkgKHB0ciwgIi54ZW4iLCBzaXplb2YgKCIueGVu IikpOwogCXNoZHItPnNoX25hbWUgPSBncnViX2hvc3RfdG9fdGFyZ2V0MzIgKHB0ciAtIHN0cl9z dGFydCk7CkBAIC01MDQsNyArNTM3LDEwIEBAIFNVRkZJWCAoZ3J1Yl9ta2ltYWdlX2dlbmVyYXRl X2VsZikgKGNvbnN0IHN0cnVjdCBncnViX2luc3RhbGxfaW1hZ2VfdGFyZ2V0X2Rlc2MKIAlzaGRy LT5zaF90eXBlID0gZ3J1Yl9ob3N0X3RvX3RhcmdldDMyIChTSFRfUFJPR0JJVFMpOwogCXNoZHIt PnNoX2FkZHIgPSBncnViX2hvc3RfdG9fdGFyZ2V0X2FkZHIgKHRhcmdldF9hZGRyICsgbGF5b3V0 LT5rZXJuZWxfc2l6ZSk7CiAJc2hkci0+c2hfb2Zmc2V0ID0gZ3J1Yl9ob3N0X3RvX3RhcmdldF9h ZGRyIChwcm9ncmFtX3NpemUgKyBoZWFkZXJfc2l6ZSk7Ci0Jc2hkci0+c2hfc2l6ZSA9IGdydWJf aG9zdF90b190YXJnZXQzMiAoWEVOX05PVEVfU0laRSk7CisJaWYgKGltYWdlX3RhcmdldC0+aWQg PT0gSU1BR0VfWEVOKQorCSAgc2hkci0+c2hfc2l6ZSA9IGdydWJfaG9zdF90b190YXJnZXQzMiAo WEVOX05PVEVfU0laRSk7CisJZWxzZQorCSAgc2hkci0+c2hfc2l6ZSA9IGdydWJfaG9zdF90b190 YXJnZXQzMiAoWEVOX1BWSF9OT1RFX1NJWkUpOwogCXNoZHItPnNoX2xpbmsgPSBncnViX2hvc3Rf dG9fdGFyZ2V0MzIgKDApOwogCXNoZHItPnNoX2luZm8gPSBncnViX2hvc3RfdG9fdGFyZ2V0MzIg KDApOwogCXNoZHItPnNoX2FkZHJhbGlnbiA9IGdydWJfaG9zdF90b190YXJnZXQzMiAoaW1hZ2Vf dGFyZ2V0LT52b2lkcF9zaXplb2YpOwpkaWZmIC0tZ2l0IGEvdXRpbC9ta2ltYWdlLmMgYi91dGls L21raW1hZ2UuYwppbmRleCBiMmY0M2ZlYTYuLjM1M2JiMTA5OCAxMDA2NDQKLS0tIGEvdXRpbC9t a2ltYWdlLmMKKysrIGIvdXRpbC9ta2ltYWdlLmMKQEAgLTEzMiw2ICsxMzIsMjQgQEAgc3RhdGlj IGNvbnN0IHN0cnVjdCBncnViX2luc3RhbGxfaW1hZ2VfdGFyZ2V0X2Rlc2MgaW1hZ2VfdGFyZ2V0 c1tdID0KICAgICAgIC5saW5rX2FkZHIgPSBHUlVCX0tFUk5FTF9JMzg2X1BDX0xJTktfQUREUiwK ICAgICAgIC5kZWZhdWx0X2NvbXByZXNzaW9uID0gR1JVQl9DT01QUkVTU0lPTl9MWk1BCiAgICAg fSwKKyAgICB7CisgICAgICAuZGlybmFtZSA9ICJpMzg2LXhlbl9wdmgiLAorICAgICAgLm5hbWVz ID0geyAiaTM4Ni14ZW5fcHZoIiwgTlVMTCB9LAorICAgICAgLnZvaWRwX3NpemVvZiA9IDQsCisg ICAgICAuYmlnZW5kaWFuID0gMCwKKyAgICAgIC5pZCA9IElNQUdFX1hFTl9QVkgsCisgICAgICAu ZmxhZ3MgPSBQTEFURk9STV9GTEFHU19OT05FLAorICAgICAgLnRvdGFsX21vZHVsZV9zaXplID0g VEFSR0VUX05PX0ZJRUxELAorICAgICAgLmRlY29tcHJlc3Nvcl9jb21wcmVzc2VkX3NpemUgPSBU QVJHRVRfTk9fRklFTEQsCisgICAgICAuZGVjb21wcmVzc29yX3VuY29tcHJlc3NlZF9zaXplID0g VEFSR0VUX05PX0ZJRUxELAorICAgICAgLmRlY29tcHJlc3Nvcl91bmNvbXByZXNzZWRfYWRkciA9 IFRBUkdFVF9OT19GSUVMRCwKKyAgICAgIC5lbGZfdGFyZ2V0ID0gRU1fMzg2LAorICAgICAgLnNl Y3Rpb25fYWxpZ24gPSAxLAorICAgICAgLnZhZGRyX29mZnNldCA9IDAsCisgICAgICAubGlua19h ZGRyID0gR1JVQl9LRVJORUxfSTM4Nl9YRU5fUFZIX0xJTktfQUREUiwKKyAgICAgIC5tb2RfYWxp Z24gPSBHUlVCX0tFUk5FTF9JMzg2X1hFTl9QVkhfTU9EX0FMSUdOLAorICAgICAgLmxpbmtfYWxp Z24gPSA0CisgICAgfSwKICAgICB7CiAgICAgICAuZGlybmFtZSA9ICJpMzg2LXBjIiwKICAgICAg IC5uYW1lcyA9IHsgImkzODYtcGMtcHhlIiwgTlVMTCB9LApAQCAtODYwLDcgKzg3OCw4IEBAIGdy dWJfaW5zdGFsbF9nZW5lcmF0ZV9pbWFnZSAoY29uc3QgY2hhciAqZGlyLCBjb25zdCBjaGFyICpw cmVmaXgsCiAgIGVsc2UKICAgICBrZXJuZWxfaW1nID0gZ3J1Yl9ta2ltYWdlX2xvYWRfaW1hZ2U2 NCAoa2VybmVsX3BhdGgsIHRvdGFsX21vZHVsZV9zaXplLAogCQkJCQkgICAgJmxheW91dCwgaW1h Z2VfdGFyZ2V0KTsKLSAgaWYgKGltYWdlX3RhcmdldC0+aWQgPT0gSU1BR0VfWEVOICYmIGxheW91 dC5hbGlnbiA8IDQwOTYpCisgIGlmICgoaW1hZ2VfdGFyZ2V0LT5pZCA9PSBJTUFHRV9YRU4gfHwg aW1hZ2VfdGFyZ2V0LT5pZCA9PSBJTUFHRV9YRU5fUFZIKSAmJgorICAgICAgbGF5b3V0LmFsaWdu IDwgNDA5NikKICAgICBsYXlvdXQuYWxpZ24gPSA0MDk2OwogCiAgIGlmICgoaW1hZ2VfdGFyZ2V0 LT5mbGFncyAmIFBMQVRGT1JNX0ZMQUdTX0RFQ09NUFJFU1NPUlMpCkBAIC0xMTAzLDYgKzExMjIs NyBAQCBncnViX2luc3RhbGxfZ2VuZXJhdGVfaW1hZ2UgKGNvbnN0IGNoYXIgKmRpciwgY29uc3Qg Y2hhciAqcHJlZml4LAogICAgIGNhc2UgSU1BR0VfTUlQU19BUkM6CiAgICAgY2FzZSBJTUFHRV9R RU1VX01JUFNfRkxBU0g6CiAgICAgY2FzZSBJTUFHRV9YRU46CisgICAgY2FzZSBJTUFHRV9YRU5f UFZIOgogICAgICAgYnJlYWs7CiAgICAgY2FzZSBJTUFHRV9TUEFSQzY0X0FPVVQ6CiAgICAgY2Fz ZSBJTUFHRV9TUEFSQzY0X1JBVzoKQEAgLTE2NzksNiArMTY5OSw3IEBAIGdydWJfaW5zdGFsbF9n ZW5lcmF0ZV9pbWFnZSAoY29uc3QgY2hhciAqZGlyLCBjb25zdCBjaGFyICpwcmVmaXgsCiAgICAg Y2FzZSBJTUFHRV9MT09OR1NPTl9FTEY6CiAgICAgY2FzZSBJTUFHRV9QUEM6CiAgICAgY2FzZSBJ TUFHRV9YRU46CisgICAgY2FzZSBJTUFHRV9YRU5fUFZIOgogICAgIGNhc2UgSU1BR0VfQ09SRUJP 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 1gPTVI-0006p2-JN for mharc-grub-devel@gnu.org; Wed, 21 Nov 2018 09:29:20 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:56243) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gPTVF-0006ky-4r for grub-devel@gnu.org; Wed, 21 Nov 2018 09:29:18 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gPTVB-0004Nz-C3 for grub-devel@gnu.org; Wed, 21 Nov 2018 09:29:17 -0500 Received: from mx2.suse.de ([195.135.220.15]:51246 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 1gPTVB-0004Jh-32 for grub-devel@gnu.org; Wed, 21 Nov 2018 09:29:13 -0500 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 3057BB020; Wed, 21 Nov 2018 14:29:02 +0000 (UTC) From: Juergen Gross To: grub-devel@gnu.org Cc: xen-devel@lists.xen.org, phcoder@gmail.com, daniel.kiper@oracle.com, roger.pau@citrix.com, hans@knorrie.org, Juergen Gross Subject: [PATCH v5 18/20] xen_pvh: support building a standalone image Date: Wed, 21 Nov 2018 15:28:53 +0100 Message-Id: <20181121142855.13537-19-jgross@suse.com> X-Mailer: git-send-email 2.16.4 In-Reply-To: <20181121142855.13537-1-jgross@suse.com> References: <20181121142855.13537-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: Wed, 21 Nov 2018 14:29:18 -0000 Support mkimage for xen_pvh. Signed-off-by: Juergen Gross Reviewed-by: Daniel Kiper --- V2: some style adjustments (Daniel Kiper) use defines for elf-notes (Daniel Kiper) V5: move elf-note define usage into new patch (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 | 44 ++++++++++++++++++++++++++++++++++++++++---- util/mkimage.c | 23 ++++++++++++++++++++++- 5 files changed, 70 insertions(+), 8 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 784ed1a52..e94a721b4 100644 --- a/util/grub-mkimagexx.c +++ b/util/grub-mkimagexx.c @@ -229,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); @@ -421,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); @@ -496,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); @@ -504,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 b2f43fea6..353bb1098 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