[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



 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.