All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jan Beulich <jbeulich@suse.com>
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: "Romain Caritey" <Romain.Caritey@microchip.com>,
	"Alistair Francis" <alistair.francis@wdc.com>,
	"Connor Davis" <connojdavis@gmail.com>,
	"Andrew Cooper" <andrew.cooper3@citrix.com>,
	"Anthony PERARD" <anthony.perard@vates.tech>,
	"Michal Orzel" <michal.orzel@amd.com>,
	"Julien Grall" <julien@xen.org>,
	"Roger Pau Monné" <roger.pau@citrix.com>,
	"Stefano Stabellini" <sstabellini@kernel.org>,
	xen-devel@lists.xenproject.org
Subject: Re: [PATCH v2 05/11] xen/riscv: add kernel loading support
Date: Tue, 31 Mar 2026 17:14:59 +0200	[thread overview]
Message-ID: <57f01614-e742-4f2b-be9f-6687ea0b79e5@suse.com> (raw)
In-Reply-To: <05b1bc67-bbed-412e-881e-a3fb2c2d873b@gmail.com>

On 31.03.2026 16:30, Oleksii Kurochko wrote:
> On 3/30/26 4:47 PM, Jan Beulich wrote:
>> On 23.03.2026 17:29, Oleksii Kurochko wrote:
>>> --- a/xen/arch/riscv/include/asm/config.h
>>> +++ b/xen/arch/riscv/include/asm/config.h
>>> @@ -151,6 +151,19 @@
>>>   extern unsigned long phys_offset; /* = load_start - XEN_VIRT_START */
>>>   #endif
>>>   
>>> +/*
>>> + * KERNEL_LOAD_ADDR_ALIGNMENT is defined based on paragraph of
>>> + * "Kernel location" of boot.rst:
>>> + * https://docs.kernel.org/arch/riscv/boot.html#kernel-location
>>> + */
>>> +#if defined(CONFIG_RISCV_32)
>>> +#define KERNEL_LOAD_ADDR_ALIGNMENT MB(4)
>>> +#elif defined(CONFIG_RISCV_64)
>>> +#define KERNEL_LOAD_ADDR_ALIGNMENT MB(2)
>>> +#else
>>> +#error "Define KERNEL_LOAD_ADDR_ALIGNMENT"
>>> +#endif
>>
>> But that's Linux-specific. You want to be able to loader other OS kernels,
>> I suppose? The needed alignment should be a property of the kernel image,
>> suitably conveyed to the loader.
> 
> Then likely some updates will be needed...
> 
>>
>> Is Arm similarly capable of loading only Linux images? What about in
>> particular XTF?
> 
> ... they are pretend as they are Linux kernel zImage:
> 
> https://gitlab.com/xen-project/fusa/xtf/-/commit/dec72d83291d6782b3f41df66987c8a25eac422f#line_9f6eadcd7_A42
> 
> and in the case of XTF:
>      /* Magic number used to identify this is an ARM Linux zImage */
>      .word   ZIMAGE_MAGIC_NUMBER
>      /* The address the zImage starts at (0 = relocatable) */
>      .word   0
>      /* The address the zImage ends at */
>      .word   (_end - _start)
> 
> zImage.start is set to 0 so KERNEL_LOAD_ADDR_ALIGNMENT won't be applied 
> and load address from DTS's kernel node will be taken.
> 
> Other example in mind I have it is Zephyr OS, and the also use Image 
> protocol by enabling CONFIG_AARCH64_IMAGE_HEADER. So Xen can boot it too.

ISTR Andrew saying that he'd really like to be able to use plain ELF.
Anyway, if Linux Image is clearly stated as a only thing presently
supported, that's perhaps okay for the time being.

>>> +static void __init kernel_image_load(struct kernel_info *info)
>>> +{
>>> +    int rc;
>>> +    paddr_t load_addr = kernel_image_place(info);
>>> +    paddr_t paddr = info->image.kernel_addr;
>>> +    paddr_t len = info->image.len;
>>> +    void *kernel;
>>> +
>>> +    info->entry = load_addr;
>>
>> What if this is outside of memory bank 0 (as is possible when
>> info->image.start is non-zero).
> 
> It will be an issue and panic() will occur in place_modules().

Will it? I just looked again, and I can't help thinking that it won't.

>>> +    /* Currently there is no length in the header, so just use the size */
>>> +    start = 0;
>>> +    end = size;
>>
>> What's image_size then?
> 
> The comment is incorrect, the length is present in the header, but it is 
> effective length which isn't equal to the size of binary and is actually 
> bigger then binary size.
> 
> So here we want to use 'size' as it is a size of binary itself.

What is "effective length"? That sounds a little like e.g. .bss extending
past the (file) image, yet such would nee taking into account for allocation
(but not for reading in / copying over).

Jan


  parent reply	other threads:[~2026-03-31 15:15 UTC|newest]

Thread overview: 47+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-03-23 16:29 [PATCH v2 00/11] RISCV: enable DOMAIN_BUILD_HELPERS Oleksii Kurochko
2026-03-23 16:29 ` [PATCH v2 01/11] xen/riscv: implement get_page_from_gfn() Oleksii Kurochko
2026-03-26 13:50   ` Jan Beulich
2026-03-30 13:40     ` Oleksii Kurochko
2026-03-30 14:04       ` Jan Beulich
2026-03-23 16:29 ` [PATCH v2 02/11] xen: return proper type for guest access functions Oleksii Kurochko
2026-03-26 13:56   ` Jan Beulich
2026-03-23 16:29 ` [PATCH v2 03/11] xen/riscv: implement copy_to_guest_phys() Oleksii Kurochko
2026-03-30 14:24   ` Jan Beulich
2026-03-23 16:29 ` [PATCH v2 04/11] xen/dom0less: rename kernel_zimage_probe() to kernel_image_probe() Oleksii Kurochko
2026-03-23 16:29 ` [PATCH v2 05/11] xen/riscv: add kernel loading support Oleksii Kurochko
2026-03-30 14:47   ` Jan Beulich
     [not found]     ` <05b1bc67-bbed-412e-881e-a3fb2c2d873b@gmail.com>
2026-03-31 15:14       ` Jan Beulich [this message]
     [not found]         ` <a0efb7a6-4854-4fe5-bbf4-2561f25d7133@gmail.com>
2026-03-31 15:56           ` Jan Beulich
2026-03-23 16:29 ` [PATCH v2 06/11] xen: move declaration of fw_unreserved_regions() to common header Oleksii Kurochko
2026-03-23 16:29 ` [PATCH v2 07/11] xen: move domain_use_host_layout() to common code Oleksii Kurochko
2026-03-30 15:13   ` Jan Beulich
     [not found]     ` <57581b7d-cb9f-444c-9321-63b2fc3d09f0@gmail.com>
2026-03-31 15:53       ` Jan Beulich
2026-03-31 16:32         ` Oleksii Kurochko
2026-03-31 19:49           ` Oleksii Kurochko
2026-04-01  5:59             ` Jan Beulich
2026-04-01 14:44               ` Oleksii Kurochko
2026-04-01  5:58           ` Jan Beulich
2026-04-01 14:38             ` Oleksii Kurochko
2026-04-01 14:42               ` Jan Beulich
2026-03-23 16:29 ` [PATCH v2 08/11] xen: rename p2m_ipa_bits to p2m_gpa_bits Oleksii Kurochko
2026-03-30 15:16   ` Jan Beulich
2026-03-23 16:29 ` [PATCH v2 09/11] xen/riscv: introduce p2m_gpa_bits Oleksii Kurochko
2026-03-30 15:34   ` Jan Beulich
2026-03-31 16:02     ` Oleksii Kurochko
2026-04-01  6:07       ` Jan Beulich
2026-04-01 13:50         ` Oleksii Kurochko
2026-04-01 13:57           ` Jan Beulich
2026-03-23 16:29 ` [PATCH v2 10/11] xen/riscv: add definition of guest RAM banks Oleksii Kurochko
2026-03-30 15:51   ` Jan Beulich
2026-03-31 16:14     ` Oleksii Kurochko
2026-04-01  6:17       ` Jan Beulich
2026-04-01 13:57         ` Oleksii Kurochko
2026-04-01 14:22           ` Jan Beulich
2026-04-01 14:53             ` Oleksii Kurochko
2026-04-01 15:10               ` Jan Beulich
2026-04-06 15:43                 ` Oleksii Kurochko
2026-04-07  6:23                   ` Jan Beulich
2026-04-07  8:54                     ` Oleksii Kurochko
2026-04-07  9:09                       ` Jan Beulich
2026-04-07  9:19                         ` Oleksii Kurochko
2026-03-23 16:29 ` [PATCH v2 11/11] xen/riscv: enable DOMAIN_BUILD_HELPERS Oleksii Kurochko

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=57f01614-e742-4f2b-be9f-6687ea0b79e5@suse.com \
    --to=jbeulich@suse.com \
    --cc=Romain.Caritey@microchip.com \
    --cc=alistair.francis@wdc.com \
    --cc=andrew.cooper3@citrix.com \
    --cc=anthony.perard@vates.tech \
    --cc=connojdavis@gmail.com \
    --cc=julien@xen.org \
    --cc=michal.orzel@amd.com \
    --cc=oleksii.kurochko@gmail.com \
    --cc=roger.pau@citrix.com \
    --cc=sstabellini@kernel.org \
    --cc=xen-devel@lists.xenproject.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.