All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
To: Igor Mammedov <imammedo@redhat.com>
Cc: qemu-devel@nongnu.org, wang.yechao255@zte.com.cn, mst@redhat.com,
	peng.hao2@zte.com.cn
Subject: Re: [Qemu-devel] [PATCH for 2.10] pc: make 'pc.rom' readonly when machine has PCI enabled
Date: Tue, 1 Aug 2017 13:07:57 +0100	[thread overview]
Message-ID: <20170801120757.GL2079@work-vm> (raw)
In-Reply-To: <1501232945-195611-1-git-send-email-imammedo@redhat.com>

* Igor Mammedov (imammedo@redhat.com) wrote:
> looking at bios ROM mapping in QEMU it seems that only isapc
> (i.e. not PCI enabled machine) requires ROM being mapped as
> RW in other cases BIOS is mapped as RO. Do the same for option
> ROM 'pc.rom' when machine has PCI enabled.

Does this need to be machine-type linked?

Dave

> As useful side-effect pc.rom MemoryRegion stops being
> put in vhost memory map (filtered out by vhost_section()),
> which reduces number of entries by 1.
> 
> Coincidentally it fixes migration failure reported in
> 
> "[PATCH V2]  vhost: fix a migration failed because of vhost region merge"
> 
> where following destination CLI with /sys/module/vhost/parameters/max_mem_regions = 8
> 
> export DIMMSCOUNT=6
> QEMU -enable-kvm \
>      -netdev type=tap,id=guest0,vhost=on,script=no,vhostforce \
>      -device virtio-net-pci,netdev=guest0 \
>      -m 256,slots=256,maxmem=2G \
>      `i=0; while [ $i -lt $DIMMSCOUNT ]; do echo \
>          "-object memory-backend-ram,id=m$i,size=128M \
>           -device pc-dimm,id=d$i,memdev=m$i"; i=$(($i + 1)); \
>      done`
> 
> will fail to startup with error:
> 
>  "-device pc-dimm,id=d5,memdev=m5: a used vhost backend has no free memory slots left"
> 
> while it's possible to add the 6th DIMM during hotplug
> on source.
> 
> Issue is caused by the fact that number of entries in vhost map
> is bigger on 1 entry, when -device is processed, than
> after guest boots up, and that offending entry belongs to
> 'pc.rom', it's not like vhost intends to do IO in ROM range
> so making it RO hides region from vhost and makes number
> of entries in vhost memory map at -device/machine_done time
> match number of entries after guest boots.
> 
> Signed-off-by: Igor Mammedov <imammedo@redhat.com>
> Reported-by: Peng Hao <peng.hao2@zte.com.cn>
> ---
>  hw/i386/pc.c | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/hw/i386/pc.c b/hw/i386/pc.c
> index e3fcd51..de459e2 100644
> --- a/hw/i386/pc.c
> +++ b/hw/i386/pc.c
> @@ -1449,6 +1449,9 @@ void pc_memory_init(PCMachineState *pcms,
>      option_rom_mr = g_malloc(sizeof(*option_rom_mr));
>      memory_region_init_ram(option_rom_mr, NULL, "pc.rom", PC_ROM_SIZE,
>                             &error_fatal);
> +    if (pcmc->pci_enabled) {
> +        memory_region_set_readonly(option_rom_mr, true);
> +    }
>      vmstate_register_ram_global(option_rom_mr);
>      memory_region_add_subregion_overlap(rom_memory,
>                                          PC_ROM_MIN_VGA,
> -- 
> 2.7.4
> 
--
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK

  reply	other threads:[~2017-08-01 12:08 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-07-28  9:09 [Qemu-devel] [PATCH for 2.10] pc: make 'pc.rom' readonly when machine has PCI enabled Igor Mammedov
2017-08-01 12:07 ` Dr. David Alan Gilbert [this message]
2017-08-01 12:40   ` Igor Mammedov

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=20170801120757.GL2079@work-vm \
    --to=dgilbert@redhat.com \
    --cc=imammedo@redhat.com \
    --cc=mst@redhat.com \
    --cc=peng.hao2@zte.com.cn \
    --cc=qemu-devel@nongnu.org \
    --cc=wang.yechao255@zte.com.cn \
    /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.