From mboxrd@z Thu Jan 1 00:00:00 1970 From: Keir Fraser Subject: Re: [PATCH] tools/hvmloader: move shared_info to reserved memory area Date: Wed, 24 Oct 2012 12:05:32 -0700 Message-ID: References: <6a0c73ae9ce5cca72f78.1351101425@probook.site> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="B_3433925136_72471762" Return-path: In-Reply-To: <6a0c73ae9ce5cca72f78.1351101425@probook.site> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: Olaf Hering , xen-devel@lists.xen.org List-Id: xen-devel@lists.xenproject.org > This message is in MIME format. Since your mail reader does not understand this format, some or all of this message may not be legible. --B_3433925136_72471762 Content-type: text/plain; charset="US-ASCII" Content-transfer-encoding: 7bit On 24/10/2012 10:57, "Olaf Hering" wrote: > # HG changeset patch > # User Olaf Hering > # Date 1351101387 -7200 > # Node ID 6a0c73ae9ce5cca72f788c0e0f8fd6872010d83e > # Parent 22e08c9ac770db07c3c3e7c844aa7153050939f3 > tools/hvmloader: move shared_info to reserved memory area > > Reserve a range of 1MB for the HVM shared info page at 0xFE700000. This > area is already marked as reserved in the E820 map. The purpose of this > change is to provide Linux PVonHVM guests with a fixed page outside of > ordinary RAM. If the shared page is located in RAM it would be > overwritten during a kexec boot. I don't think hvmloader actually needs to map shared-info to the new location, it justs needs to guarantee that this location is unused, and document it so that it never *becomes* used in future. Which can be as simple as the attached patch (in fact all the changes apart from introducing GUEST_RESERVED_{START,END} are really cleaning up and bug-fixing the out-of-space checks in the mem_hole_alloc/mem_alloc functions). This then just requires that the guest maps shared-info to FE700000 itself. Should be quite easy. :) -- Keir > Signed-off-by: Olaf Hering > > diff -r 22e08c9ac770 -r 6a0c73ae9ce5 tools/firmware/hvmloader/config.h > --- a/tools/firmware/hvmloader/config.h > +++ b/tools/firmware/hvmloader/config.h > @@ -68,6 +68,8 @@ extern unsigned long pci_mem_start, pci_ > /* NB. ACPI_INFO_PHYSICAL_ADDRESS *MUST* match definition in acpi/dsdt.asl! > */ > #define ACPI_INFO_PHYSICAL_ADDRESS 0xFC000000 > #define RESERVED_MEMORY_DYNAMIC 0xFC001000 > +#define HVM_SHARED_INFO_AREA 0xFE700000 > +#define HVM_SHARED_INFO_SIZE 0x00100000 > > extern unsigned long scratch_start; > > diff -r 22e08c9ac770 -r 6a0c73ae9ce5 tools/firmware/hvmloader/util.c > --- a/tools/firmware/hvmloader/util.c > +++ b/tools/firmware/hvmloader/util.c > @@ -433,11 +433,18 @@ void *mem_alloc(uint32_t size, uint32_t > if ( align < 16 ) > align = 16; > > +retry: > s = (reserve + align) & ~(align - 1); > e = s + size - 1; > > BUG_ON((e < s) || (e >> PAGE_SHIFT) >= hvm_info->reserved_mem_pgstart); > > + /* Skip the shared info region */ > + if (s <= HVM_SHARED_INFO_AREA && e >= HVM_SHARED_INFO_AREA) { > + reserve = HVM_SHARED_INFO_AREA + HVM_SHARED_INFO_SIZE - 1; > + goto retry; > + } > + > while ( (reserve >> PAGE_SHIFT) != (e >> PAGE_SHIFT) ) > { > reserve += PAGE_SIZE; > @@ -765,7 +772,7 @@ struct shared_info *get_shared_info(void > xatp.domid = DOMID_SELF; > xatp.space = XENMAPSPACE_shared_info; > xatp.idx = 0; > - xatp.gpfn = mem_hole_alloc(1); > + xatp.gpfn = HVM_SHARED_INFO_AREA >> PAGE_SHIFT; > shared_info = (struct shared_info *)(xatp.gpfn << PAGE_SHIFT); > if ( hypercall_memory_op(XENMEM_add_to_physmap, &xatp) != 0 ) > BUG(); > > _______________________________________________ > Xen-devel mailing list > Xen-devel@lists.xen.org > http://lists.xen.org/xen-devel --B_3433925136_72471762 Content-type: application/octet-stream; name="00-hvmloader-reserved-mem" Content-disposition: attachment; filename="00-hvmloader-reserved-mem" Content-transfer-encoding: base64 ZGlmZiAtciAyMmUwOGM5YWM3NzAgdG9vbHMvZmlybXdhcmUvaHZtbG9hZGVyL2NvbmZpZy5o Ci0tLSBhL3Rvb2xzL2Zpcm13YXJlL2h2bWxvYWRlci9jb25maWcuaAlXZWQgT2N0IDI0IDE3 OjUxOjQ4IDIwMTIgKzAyMDAKKysrIGIvdG9vbHMvZmlybXdhcmUvaHZtbG9hZGVyL2NvbmZp Zy5oCVdlZCBPY3QgMjQgMDQ6MDE6MjQgMjAxMiAtMDcwMApAQCAtNjcsNyArNjcsMTUgQEAg ZXh0ZXJuIHVuc2lnbmVkIGxvbmcgcGNpX21lbV9zdGFydCwgcGNpXwogI2RlZmluZSBSRVNF UlZFRF9NRU1CQVNFICAgICAgICAgICAgICAweEZDMDAwMDAwCiAvKiBOQi4gQUNQSV9JTkZP X1BIWVNJQ0FMX0FERFJFU1MgKk1VU1QqIG1hdGNoIGRlZmluaXRpb24gaW4gYWNwaS9kc2R0 LmFzbCEgKi8KICNkZWZpbmUgQUNQSV9JTkZPX1BIWVNJQ0FMX0FERFJFU1MgICAgMHhGQzAw MDAwMAotI2RlZmluZSBSRVNFUlZFRF9NRU1PUllfRFlOQU1JQyAgICAgICAweEZDMDAxMDAw CisjZGVmaW5lIFJFU0VSVkVEX01FTU9SWV9EWU5BTUlDX1NUQVJUIDB4RkMwMDEwMDAKKyNk ZWZpbmUgUkVTRVJWRURfTUVNT1JZX0RZTkFNSUNfRU5EICAgMHhGRTAwMDAwMAorLyoKKyAq IEdVRVNUX1JFU0VSVkVEOiBQaHlzaWNhbCBhZGRyZXNzIHNwYWNlIHJlc2VydmVkIGZvciBn dWVzdCB1c2UuCisgKiBUaGlzIGlzIG5vdCBkeW5hbWljYWxseSBhZHZlcnRpc2VkIHRvIGd1 ZXN0cywgc28gdGhpcyByYW5nZSBtdXN0ICpuZXZlcioKKyAqIGJlIHVzZWQgZm9yIGFueSBw dXJwb3NlIGJ5IHVzLCBpbiBmdXR1cmUuCisgKi8KKyNkZWZpbmUgR1VFU1RfUkVTRVJWRURf U1RBUlQgICAgICAgICAgMHhGRTcwMDAwMAorI2RlZmluZSBHVUVTVF9SRVNFUlZFRF9FTkQg ICAgICAgICAgICAweEZFODAwMDAwCiAKIGV4dGVybiB1bnNpZ25lZCBsb25nIHNjcmF0Y2hf c3RhcnQ7CiAKZGlmZiAtciAyMmUwOGM5YWM3NzAgdG9vbHMvZmlybXdhcmUvaHZtbG9hZGVy L3V0aWwuYwotLS0gYS90b29scy9maXJtd2FyZS9odm1sb2FkZXIvdXRpbC5jCVdlZCBPY3Qg MjQgMTc6NTE6NDggMjAxMiArMDIwMAorKysgYi90b29scy9maXJtd2FyZS9odm1sb2FkZXIv dXRpbC5jCVdlZCBPY3QgMjQgMDQ6MDE6MjQgMjAxMiAtMDcwMApAQCAtNDE2LDEzICs0MTYs MTQgQEAgdm9pZCBtZW1faG9sZV9wb3B1bGF0ZV9yYW0oeGVuX3Bmbl90IG1mbgogICAgIH0K IH0KIAotc3RhdGljIHVpbnQzMl90IHJlc2VydmUgPSBSRVNFUlZFRF9NRU1PUllfRFlOQU1J QyAtIDE7CitzdGF0aWMgdWludDMyX3QgYWxsb2NfdXAgPSBSRVNFUlZFRF9NRU1PUllfRFlO QU1JQ19TVEFSVCAtIDE7CitzdGF0aWMgdWludDMyX3QgYWxsb2NfZG93biA9IFJFU0VSVkVE X01FTU9SWV9EWU5BTUlDX0VORDsKIAogeGVuX3Bmbl90IG1lbV9ob2xlX2FsbG9jKHVpbnQz Ml90IG5yX21mbnMpCiB7Ci0gICAgaHZtX2luZm8tPnJlc2VydmVkX21lbV9wZ3N0YXJ0IC09 IG5yX21mbnM7Ci0gICAgQlVHX09OKGh2bV9pbmZvLT5yZXNlcnZlZF9tZW1fcGdzdGFydCA8 PSAocmVzZXJ2ZSA+PiBQQUdFX1NISUZUKSk7Ci0gICAgcmV0dXJuIGh2bV9pbmZvLT5yZXNl cnZlZF9tZW1fcGdzdGFydDsKKyAgICBhbGxvY19kb3duIC09IG5yX21mbnMgPDwgUEFHRV9T SElGVDsKKyAgICBCVUdfT04oYWxsb2NfdXAgPj0gYWxsb2NfZG93bik7CisgICAgcmV0dXJu IGFsbG9jX2Rvd24gPj4gUEFHRV9TSElGVDsKIH0KIAogdm9pZCAqbWVtX2FsbG9jKHVpbnQz Ml90IHNpemUsIHVpbnQzMl90IGFsaWduKQpAQCAtNDMzLDE4ICs0MzQsMTggQEAgdm9pZCAq bWVtX2FsbG9jKHVpbnQzMl90IHNpemUsIHVpbnQzMl90IAogICAgIGlmICggYWxpZ24gPCAx NiApCiAgICAgICAgIGFsaWduID0gMTY7CiAKLSAgICBzID0gKHJlc2VydmUgKyBhbGlnbikg JiB+KGFsaWduIC0gMSk7CisgICAgcyA9IChhbGxvY191cCArIGFsaWduKSAmIH4oYWxpZ24g LSAxKTsKICAgICBlID0gcyArIHNpemUgLSAxOwogCi0gICAgQlVHX09OKChlIDwgcykgfHwg KGUgPj4gUEFHRV9TSElGVCkgPj0gaHZtX2luZm8tPnJlc2VydmVkX21lbV9wZ3N0YXJ0KTsK KyAgICBCVUdfT04oKGUgPCBzKSB8fCAoZSA+PSBhbGxvY19kb3duKSk7CiAKLSAgICB3aGls ZSAoIChyZXNlcnZlID4+IFBBR0VfU0hJRlQpICE9IChlID4+IFBBR0VfU0hJRlQpICkKKyAg ICB3aGlsZSAoIChhbGxvY191cCA+PiBQQUdFX1NISUZUKSAhPSAoZSA+PiBQQUdFX1NISUZU KSApCiAgICAgewotICAgICAgICByZXNlcnZlICs9IFBBR0VfU0laRTsKLSAgICAgICAgbWVt X2hvbGVfcG9wdWxhdGVfcmFtKHJlc2VydmUgPj4gUEFHRV9TSElGVCwgMSk7CisgICAgICAg IGFsbG9jX3VwICs9IFBBR0VfU0laRTsKKyAgICAgICAgbWVtX2hvbGVfcG9wdWxhdGVfcmFt KGFsbG9jX3VwID4+IFBBR0VfU0hJRlQsIDEpOwogICAgIH0KIAotICAgIHJlc2VydmUgPSBl OworICAgIGFsbG9jX3VwID0gZTsKIAogICAgIHJldHVybiAodm9pZCAqKSh1bnNpZ25lZCBs b25nKXM7CiB9Cg== --B_3433925136_72471762 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Xen-devel mailing list Xen-devel@lists.xen.org http://lists.xen.org/xen-devel --B_3433925136_72471762--