All of lore.kernel.org
 help / color / mirror / Atom feed
From: Paolo Bonzini <pbonzini@redhat.com>
To: Drew DeVault <sircmpwn@gmail.com>, qemu-devel <qemu-devel@nongnu.org>
Subject: Re: [Qemu-devel] [PATCH] Add bootloader name to multiboot implementation
Date: Thu, 13 Nov 2014 19:06:16 +0100	[thread overview]
Message-ID: <5464F318.8040402@redhat.com> (raw)
In-Reply-To: <5464EE7E.1030405@gmail.com>

Sorry for the delay.  The patch looks good; unfortunately we cannot
apply it now because QEMU 2.2 is in hard freeze.

Thanks for your contribution!

Paolo

On 13/11/2014 18:46, Drew DeVault wrote:
> cc-ing a few people I found in the blame for the relevant files. Mind
> taking a look at this patch?
> 
> Thanks!
> 
> On 11/04/2014 12:49 PM, Drew DeVault wrote:
>> Ping: http://patchwork.ozlabs.org/patch/404885/
>>
>> Does anyone know someone I can cc on this? This part of the code doesn't
>> have a dedicated maintainer.
>>
>> On 10/29/2014 11:52 PM, Drew DeVault wrote:
>>> The name is set to "qemu".
>>>
>>> Signed-off-by: Drew DeVault <sir@cmpwn.com>
>>> ---
>>> For the future, it may be useful to add a command line flag for
>>> setting this to
>>> some user-specified value. I also considered naming it
>>> "qemu-system-i386" or
>>> "qemu-system-x86_64" (as appropriate), but couldn't find an easy way
>>> to get
>>> those strings and decided it didn't matter.
>>>
>>>   hw/i386/multiboot.c | 32 +++++++++++++++++++++++++++-----
>>>   1 file changed, 27 insertions(+), 5 deletions(-)
>>>
>>> diff --git a/hw/i386/multiboot.c b/hw/i386/multiboot.c
>>> index 985ca1e..f86d351 100644
>>> --- a/hw/i386/multiboot.c
>>> +++ b/hw/i386/multiboot.c
>>> @@ -54,6 +54,7 @@ enum {
>>>       MBI_MODS_COUNT  = 20,
>>>       MBI_MODS_ADDR   = 24,
>>>       MBI_MMAP_ADDR   = 48,
>>> +    MBI_BOOTLOADER  = 64,
>>>
>>>       MBI_SIZE        = 88,
>>>
>>> @@ -74,6 +75,7 @@ enum {
>>>       MULTIBOOT_FLAGS_CMDLINE     = 1 << 2,
>>>       MULTIBOOT_FLAGS_MODULES     = 1 << 3,
>>>       MULTIBOOT_FLAGS_MMAP        = 1 << 6,
>>> +    MULTIBOOT_FLAGS_BOOTLOADER  = 1 << 9,
>>>   };
>>>
>>>   typedef struct {
>>> @@ -87,6 +89,8 @@ typedef struct {
>>>       hwaddr offset_mbinfo;
>>>       /* offset in buffer for cmdlines in bytes */
>>>       hwaddr offset_cmdlines;
>>> +    /* offset in buffer for bootloader name in bytes */
>>> +    hwaddr offset_bootloader;
>>>       /* offset of modules in bytes */
>>>       hwaddr offset_mods;
>>>       /* available slots for mb modules infos */
>>> @@ -95,6 +99,8 @@ typedef struct {
>>>       int mb_mods_count;
>>>   } MultibootState;
>>>
>>> +const char *bootloader_name = "qemu";
>>> +
>>>   static uint32_t mb_add_cmdline(MultibootState *s, const char *cmdline)
>>>   {
>>>       hwaddr p = s->offset_cmdlines;
>>> @@ -105,6 +111,16 @@ static uint32_t mb_add_cmdline(MultibootState *s,
>>> const char *cmdline)
>>>       return s->mb_buf_phys + p;
>>>   }
>>>
>>> +static uint32_t mb_add_bootloader(MultibootState *s, const char
>>> *bootloader)
>>> +{
>>> +    hwaddr p = s->offset_bootloader;
>>> +    char *b = (char *)s->mb_buf + p;
>>> +
>>> +    memcpy(b, bootloader, strlen(bootloader) + 1);
>>> +    s->offset_bootloader += strlen(b) + 1;
>>> +    return s->mb_buf_phys + p;
>>> +}
>>> +
>>>   static void mb_add_mod(MultibootState *s,
>>>                          hwaddr start, hwaddr end,
>>>                          hwaddr cmdline_phys)
>>> @@ -241,9 +257,10 @@ int load_multiboot(FWCfgState *fw_cfg,
>>>       mbs.mb_buf_size = TARGET_PAGE_ALIGN(mb_kernel_size);
>>>       mbs.offset_mbinfo = mbs.mb_buf_size;
>>>
>>> -    /* Calculate space for cmdlines and mb_mods */
>>> +    /* Calculate space for cmdlines, bootloader name, and mb_mods */
>>>       mbs.mb_buf_size += strlen(kernel_filename) + 1;
>>>       mbs.mb_buf_size += strlen(kernel_cmdline) + 1;
>>> +    mbs.mb_buf_size += strlen(bootloader_name) + 1;
>>>       if (initrd_filename) {
>>>           const char *r = initrd_filename;
>>>           mbs.mb_buf_size += strlen(r) + 1;
>>> @@ -257,9 +274,11 @@ int load_multiboot(FWCfgState *fw_cfg,
>>>
>>>       mbs.mb_buf_size = TARGET_PAGE_ALIGN(mbs.mb_buf_size);
>>>
>>> -    /* enlarge mb_buf to hold cmdlines and mb-info structs */
>>> -    mbs.mb_buf          = g_realloc(mbs.mb_buf, mbs.mb_buf_size);
>>> -    mbs.offset_cmdlines = mbs.offset_mbinfo + mbs.mb_mods_avail *
>>> MB_MOD_SIZE;
>>> +    /* enlarge mb_buf to hold cmdlines, bootloader, mb-info structs */
>>> +    mbs.mb_buf            = g_realloc(mbs.mb_buf, mbs.mb_buf_size);
>>> +    mbs.offset_cmdlines   = mbs.offset_mbinfo + mbs.mb_mods_avail *
>>> MB_MOD_SIZE;
>>> +    mbs.offset_bootloader = mbs.offset_cmdlines +
>>> strlen(kernel_filename) + 1
>>> +                            + strlen(kernel_cmdline) + 1;
>>>
>>>       if (initrd_filename) {
>>>           char *next_initrd, not_last;
>>> @@ -306,6 +325,8 @@ int load_multiboot(FWCfgState *fw_cfg,
>>>                kernel_filename, kernel_cmdline);
>>>       stl_p(bootinfo + MBI_CMDLINE, mb_add_cmdline(&mbs, kcmdline));
>>>
>>> +    stl_p(bootinfo + MBI_BOOTLOADER, mb_add_bootloader(&mbs,
>>> bootloader_name));
>>> +
>>>       stl_p(bootinfo + MBI_MODS_ADDR,  mbs.mb_buf_phys +
>>> mbs.offset_mbinfo);
>>>       stl_p(bootinfo + MBI_MODS_COUNT, mbs.mb_mods_count); /*
>>> mods_count */
>>>
>>> @@ -314,7 +335,8 @@ int load_multiboot(FWCfgState *fw_cfg,
>>>                                   | MULTIBOOT_FLAGS_BOOT_DEVICE
>>>                                   | MULTIBOOT_FLAGS_CMDLINE
>>>                                   | MULTIBOOT_FLAGS_MODULES
>>> -                                | MULTIBOOT_FLAGS_MMAP);
>>> +                                | MULTIBOOT_FLAGS_MMAP
>>> +                                | MULTIBOOT_FLAGS_BOOTLOADER);
>>>       stl_p(bootinfo + MBI_BOOT_DEVICE, 0x8000ffff); /* XXX: use the
>>> -boot switch? */
>>>       stl_p(bootinfo + MBI_MMAP_ADDR,   ADDR_E820_MAP);
>>>
>>>
> 
> 

  reply	other threads:[~2014-11-13 18:06 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-10-30  5:52 [Qemu-devel] [PATCH] Add bootloader name to multiboot implementation Drew DeVault
2014-11-04 19:49 ` Drew DeVault
2014-11-13 17:46   ` Drew DeVault
2014-11-13 18:06     ` Paolo Bonzini [this message]
2014-11-14  7:12 ` Adam Lackorzynski

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=5464F318.8040402@redhat.com \
    --to=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=sircmpwn@gmail.com \
    /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.