[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH 15/15] x86/PVH: simplify writing of Dom0's RSDP



On Mon, Oct 12, 2026 at 10:26:58AM +0200, Jan Beulich wrote:
> Now that we establish where the RSDP is to live before actually loading
> the kernel (and writing start-info there) we can simply hand the pointer
> there, eliminating the need for the (fragile) separate write to the field
> out of pvh_setup_acpi().
> 
> Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx>

Acked-by: Roger Pau Monné <roger@xxxxxxxxxxxxxx>

One nit below.

> ---
> Alternatively we could move start_info to the top-level function, have
> pvh_load_kernel() and pvh_setup_acpi() fill what need filling, and do
> the write from the top-level function. Yet it looks to me as if this was
> more churn for little extra gain.
> 
> --- a/xen/arch/x86/hvm/dom0_build.c
> +++ b/xen/arch/x86/hvm/dom0_build.c
> @@ -976,7 +976,8 @@ static int __init pvh_load_kernel(
>      const struct boot_domain *bd,
>      struct elf_binary *elf,
>      struct hvm_modlist_entry *mod,
> -    paddr_t *start_info_addr)
> +    paddr_t *start_info_addr,
> +    paddr_t rsdp)
>  {
>      struct domain *d = bd->d;
>      struct boot_module *initrd = bd->initrd;
> @@ -1110,6 +1111,7 @@ static int __init pvh_load_kernel(
>  
>      start_info.magic = XEN_HVM_START_MAGIC_VALUE;
>      start_info.flags = SIF_PRIVILEGED | SIF_INITDOMAIN;
> +    start_info.rsdp_paddr = rsdp;
>      rc = hvm_copy_to_guest_phys(last_addr, &start_info, sizeof(start_info), 
> v);
>      if ( rc )
>      {
> @@ -1587,10 +1589,7 @@ static int __init pvh_place_acpi(
>      return 0;
>  }
>  
> -static int __init pvh_setup_acpi(
> -    struct domain *d,
> -    struct acpi_info *info,
> -    paddr_t start_info)
> +static int __init pvh_setup_acpi(struct domain *d, struct acpi_info *info)
>  {
>      int rc;
>      struct acpi_table_rsdp *native_rsdp, rsdp = {
> @@ -1642,20 +1641,6 @@ static int __init pvh_setup_acpi(
>          return rc;
>      }
>  
> -    /* Copy RSDP address to start_info. */
> -    BUILD_BUG_ON(sizeof(info->rsdp) !=
> -                 sizeof_field(struct hvm_start_info, rsdp_paddr));

You add this BUILD_BUG_ON() in a previous patch and remove it here.
Maybe it's not worth adding?

Thanks, Roger.



 


Rackspace

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