[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v2 3/3] x86/PVH: Support relocatable dom0 kernels
- To: Jan Beulich <jbeulich@xxxxxxxx>, <xen-devel@xxxxxxxxxxxxxxxxxxxx>
- From: Jason Andryuk <jason.andryuk@xxxxxxx>
- Date: Thu, 14 Mar 2024 08:46:41 -0400
- Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=suse.com smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0)
- Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=zwsxoslQo6epcIHeLAvExmX6llLb507hpt1snaIsrBI=; b=dvWLIoFUKbPc2tn+wrbDauEKWyEnUmJ1mqi6xC0BQaJ9w+E+Ci6JrwVpmOzlFXu767yGo4yH7TlKQIzHKctbPkFseutoFv/2Z3PdoO3UjVie8bU3xIKCbqv+lluiFUWrwzGVPkiFtu32PT+W4XU2z+pT7PfVyZncJvX3OcPZ3t4/P4EkjTpczkRtkU8y3pNOpa8mnAkjBrRnbplVQVWQziG1EYvkqKNELqJVvUnMwdEVUDnQakOPhI8Bqy23fgSEQ83SXPdB2KXU7WEj9SZgNvVqKuuu8LybqZdhuQxzNfXGGPpfYpBoDU9okHe790Qz23zRfEu29YkL7SxZNjfI8w==
- Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=IY2UGM5ym2E3El9xU+31Z+CG6nU9+XAEjiddEMrOR+iXl5SkFx7tmVX1H7iaI3T9CJLMoCk7ar5Xk7E5sANSxKzmaAzDWwuax+7uIyqUKGmuXXuVtsl3H6juH/q5hFRCdS0OqX9Hov0JCv7pigdYaRFSL2tjb7Hg/N1hAFRtcLBfRBdBrDSCYbYVslEcJ1XzAtVsxgUHbZ4twyq1EdElxUKIzOzLrIuoXKkOSUmNwVNTnoRt68WKJ/51R8dXY+FiwDFNMFcrUYM/nMQ2tY2Oy67cj+x5NY4XdrkbaCA85M15DroSEVZdSo+SspAk4IjzKYTwux4qkqW6KyvoVNgm1w==
- Cc: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>, Roger Pau Monné <roger.pau@xxxxxxxxxx>, Wei Liu <wl@xxxxxxx>, George Dunlap <george.dunlap@xxxxxxxxxx>, Julien Grall <julien@xxxxxxx>, Stefano Stabellini <sstabellini@xxxxxxxxxx>
- Delivery-date: Thu, 14 Mar 2024 12:47:01 +0000
- List-id: Xen developer discussion <xen-devel.lists.xenproject.org>
On 2024-03-14 03:12, Jan Beulich wrote:
On 13.03.2024 22:02, Jason Andryuk wrote:
On 2024-03-13 15:30, Jason Andryuk wrote:
+/* Find an e820 RAM region that fits the kernel at a suitable alignment. */
+static paddr_t __init find_kernel_memory(
+ const struct domain *d, struct elf_binary *elf,
+ const struct elf_dom_parms *parms)
+{
+ paddr_t kernel_start = (paddr_t)elf->dest_base & PAGE_MASK;
+ paddr_t kernel_end = PAGE_ALIGN((paddr_t)elf->dest_base + elf->dest_size);
+ paddr_t kernel_size = kernel_end - kernel_start;
+ unsigned int i;
+
+ /*
+ * The memory map is sorted and all RAM regions starts and sizes are
+ * aligned to page boundaries.
+ */
+ for ( i = 0; i < d->arch.nr_e820; i++ )
+ {
+ paddr_t start = d->arch.e820[i].addr;
+ paddr_t end = d->arch.e820[i].addr + d->arch.e820[i].size;
+ paddr_t kstart, kend;
+
+ if ( d->arch.e820[i].type != E820_RAM )
+ continue;
+
+ if ( d->arch.e820[i].size < kernel_size )
+ continue;
+
+ kstart = ROUNDUP(start, parms->phys_align);
+ kstart = kstart < parms->phys_min ? parms->phys_min : kstart;
This should be
kstart = MAX(kstart, parms->phys_min);
Except that MAX() really ought to be the last resort; max() and max_t()
want considering in preference.
Yes, thanks. max() will do.
Regards,
Jason
|