From: "Michael S. Tsirkin" <mst@redhat.com>
To: Marcel Apfelbaum <marcel.a@redhat.com>
Cc: imammedo@redhat.com, kraxel@redhat.com, qemu-devel@nongnu.org,
pbonzini@redhat.com
Subject: Re: [Qemu-devel] [PATCH 1/2] pc: avoid duplicate names for ROM MRs
Date: Thu, 6 Mar 2014 18:20:58 +0200 [thread overview]
Message-ID: <20140306162058.GA6667@redhat.com> (raw)
In-Reply-To: <1394122451.2663.13.camel@localhost.localdomain>
On Thu, Mar 06, 2014 at 06:14:11PM +0200, Marcel Apfelbaum wrote:
> On Thu, 2014-03-06 at 17:48 +0200, Michael S. Tsirkin wrote:
> > Since
> > commit 04920fc0faa4760f9c4fc0e73b992b768099be70
> > loader: store FW CFG ROM files in RAM
> > RAM MRs including ROM files in FW CFGs are created
> > and named using the file basename.
> >
> > This becomes problematic if these names are
> > supplied by user, since the basename might not
> > be unique.
> >
> > There are two cases we care about:
> > - option-rom flag.
> > - option ROM for devices. This triggers e.g. when
> > using rombar=0.
> >
> > At the moment we get an assert. E.g
> > qemu -option-rom /usr/share/ipxe/8086100e.rom -option-rom
> > /usr/share/ipxe.efi/8086100e.rom
> > RAMBlock "/rom@genroms/8086100e.rom" already registered, abort!
> >
> > This is a regression from 1.7.
> >
> > For now let's keep it simple and just avoid creating the
> > MRs in this case.
> >
> > Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
> > ---
> > include/hw/loader.h | 6 ++++--
> > hw/core/loader.c | 10 ++++++----
> > 2 files changed, 10 insertions(+), 6 deletions(-)
> >
> > diff --git a/include/hw/loader.h b/include/hw/loader.h
> > index 91b0122..edca1ed 100644
> > --- a/include/hw/loader.h
> > +++ b/include/hw/loader.h
> > @@ -44,9 +44,11 @@ void pstrcpy_targphys(const char *name,
> > const char *source);
> >
> > extern bool rom_file_in_ram;
> > +extern bool option_rom_in_ram;
> >
> > int rom_add_file(const char *file, const char *fw_dir,
> > - hwaddr addr, int32_t bootindex);
> > + hwaddr addr, int32_t bootindex,
> > + bool option);
> Hi Michael,
> I don't understand the usage of the new "option" parameter.
> It is always set to true by the caller
>
> Thanks,
> Marcel
Ouch for fixed files this was supposed to be false.
Will send v2.
> > void *rom_add_blob(const char *name, const void *blob, size_t len,
> > hwaddr addr, const char *fw_file_name,
> > FWCfgReadCallback fw_callback, void *callback_opaque);
> > @@ -60,7 +62,7 @@ void *rom_ptr(hwaddr addr);
> > void do_info_roms(Monitor *mon, const QDict *qdict);
> >
> > #define rom_add_file_fixed(_f, _a, _i) \
> > - rom_add_file(_f, NULL, _a, _i)
> > + rom_add_file(_f, NULL, _a, _i, true)
> > #define rom_add_blob_fixed(_f, _b, _l, _a) \
> > rom_add_blob(_f, _b, _l, _a, NULL, NULL, NULL)
> >
> > diff --git a/hw/core/loader.c b/hw/core/loader.c
> > index 0634bee..a19b158 100644
> > --- a/hw/core/loader.c
> > +++ b/hw/core/loader.c
> > @@ -54,6 +54,7 @@
> >
> > #include <zlib.h>
> >
> > +bool option_rom_in_ram = false;
> > bool rom_file_in_ram = true;
> >
> > static int roms_loaded;
> > @@ -624,7 +625,8 @@ static void *rom_set_mr(Rom *rom, Object *owner, const char *name)
> > }
> >
> > int rom_add_file(const char *file, const char *fw_dir,
> > - hwaddr addr, int32_t bootindex)
> > + hwaddr addr, int32_t bootindex,
> > + bool option)
> > {
> > Rom *rom;
> > int rc, fd = -1;
> > @@ -676,7 +678,7 @@ int rom_add_file(const char *file, const char *fw_dir,
> > basename);
> > snprintf(devpath, sizeof(devpath), "/rom@%s", fw_file_name);
> >
> > - if (rom_file_in_ram) {
> > + if ((!option || option_rom_in_ram) && rom_file_in_ram) {
> > data = rom_set_mr(rom, OBJECT(fw_cfg), devpath);
> > } else {
> > data = rom->data;
> > @@ -755,12 +757,12 @@ int rom_add_elf_program(const char *name, void *data, size_t datasize,
> >
> > int rom_add_vga(const char *file)
> > {
> > - return rom_add_file(file, "vgaroms", 0, -1);
> > + return rom_add_file(file, "vgaroms", 0, -1, true);
> > }
> >
> > int rom_add_option(const char *file, int32_t bootindex)
> > {
> > - return rom_add_file(file, "genroms", 0, bootindex);
> > + return rom_add_file(file, "genroms", 0, bootindex, true);
> > }
> >
> > static void rom_reset(void *unused)
>
>
>
prev parent reply other threads:[~2014-03-06 16:21 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-03-06 15:48 [Qemu-devel] [PATCH 1/2] pc: avoid duplicate names for ROM MRs Michael S. Tsirkin
2014-03-06 15:48 ` [Qemu-devel] [PATCH 2/2] pc: option rom migration compatibility with 1.7 Michael S. Tsirkin
2014-03-06 16:14 ` [Qemu-devel] [PATCH 1/2] pc: avoid duplicate names for ROM MRs Marcel Apfelbaum
2014-03-06 16:20 ` Michael S. Tsirkin [this message]
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=20140306162058.GA6667@redhat.com \
--to=mst@redhat.com \
--cc=imammedo@redhat.com \
--cc=kraxel@redhat.com \
--cc=marcel.a@redhat.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.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.