Patchwork multiboot: set boot_device to first partition

login
register
mail settings
Submitter Arun Thomas
Date April 28, 2011, 2:11 p.m.
Message ID <1303999871-9955-1-git-send-email-arun.thomas@gmail.com>
Download mbox | patch
Permalink /patch/93220/
State New
Headers show

Comments

Arun Thomas - April 28, 2011, 2:11 p.m.
The multiboot info struct's 'boot_device' field has 'part1' set to 0x01, which
maps to the second primary partition. To specify the first primary partition,
'part1' should be set to 0x00, since partition numbers start from zero
according to the multiboot spec.

Signed-off-by: Arun Thomas <arun.thomas@gmail.com>

---
 hw/multiboot.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)
Stefan Hajnoczi - May 1, 2011, 4:35 p.m.
On Thu, Apr 28, 2011 at 3:11 PM, Arun Thomas <arun.thomas@gmail.com> wrote:
> The multiboot info struct's 'boot_device' field has 'part1' set to 0x01, which
> maps to the second primary partition. To specify the first primary partition,
> 'part1' should be set to 0x00, since partition numbers start from zero
> according to the multiboot spec.
>
> Signed-off-by: Arun Thomas <arun.thomas@gmail.com>

Which OSes have you tested?  Xen?  Solaris?

Stefan
Arun Thomas - May 18, 2011, 9:49 p.m.
On Sun, May 1, 2011 at 6:35 PM, Stefan Hajnoczi <stefanha@gmail.com> wrote:
> On Thu, Apr 28, 2011 at 3:11 PM, Arun Thomas <arun.thomas@gmail.com> wrote:
>> The multiboot info struct's 'boot_device' field has 'part1' set to 0x01, which
>> maps to the second primary partition. To specify the first primary partition,
>> 'part1' should be set to 0x00, since partition numbers start from zero
>> according to the multiboot spec.
>>
>> Signed-off-by: Arun Thomas <arun.thomas@gmail.com>
>
> Which OSes have you tested?  Xen?  Solaris?

I tested Solaris (OpenIndiana Build 148), and it boots fine. I haven't
been able to try Xen. Linux also boots fine, as expected.

Thanks,
Arun
Stefan Hajnoczi - May 19, 2011, 8:17 a.m.
On Wed, May 18, 2011 at 11:49:26PM +0200, Arun Thomas wrote:
> On Sun, May 1, 2011 at 6:35 PM, Stefan Hajnoczi <stefanha@gmail.com> wrote:
> > On Thu, Apr 28, 2011 at 3:11 PM, Arun Thomas <arun.thomas@gmail.com> wrote:
> >> The multiboot info struct's 'boot_device' field has 'part1' set to 0x01, which
> >> maps to the second primary partition. To specify the first primary partition,
> >> 'part1' should be set to 0x00, since partition numbers start from zero
> >> according to the multiboot spec.
> >>
> >> Signed-off-by: Arun Thomas <arun.thomas@gmail.com>
> >
> > Which OSes have you tested?  Xen?  Solaris?
> 
> I tested Solaris (OpenIndiana Build 148), and it boots fine. I haven't
> been able to try Xen. Linux also boots fine, as expected.

Okay, if Solaris boots that's a good sign.  According to the spec your
change is correct, I think this patch should be applied.

Reviewed-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Aurelien Jarno - June 3, 2011, 8:33 p.m.
On Thu, Apr 28, 2011 at 04:11:11PM +0200, Arun Thomas wrote:
> The multiboot info struct's 'boot_device' field has 'part1' set to 0x01, which
> maps to the second primary partition. To specify the first primary partition,
> 'part1' should be set to 0x00, since partition numbers start from zero
> according to the multiboot spec.
> 
> Signed-off-by: Arun Thomas <arun.thomas@gmail.com>
> 
> ---
>  hw/multiboot.c |    2 +-
>  1 files changed, 1 insertions(+), 1 deletions(-)

Thanks, applied.

> diff --git a/hw/multiboot.c b/hw/multiboot.c
> index 394ed01..6e6cfb9 100644
> --- a/hw/multiboot.c
> +++ b/hw/multiboot.c
> @@ -307,7 +307,7 @@ int load_multiboot(void *fw_cfg,
>                                  | MULTIBOOT_FLAGS_MMAP);
>      stl_p(bootinfo + MBI_MEM_LOWER,   640);
>      stl_p(bootinfo + MBI_MEM_UPPER,   (ram_size / 1024) - 1024);
> -    stl_p(bootinfo + MBI_BOOT_DEVICE, 0x8001ffff); /* XXX: use the -boot switch? */
> +    stl_p(bootinfo + MBI_BOOT_DEVICE, 0x8000ffff); /* XXX: use the -boot switch? */
>      stl_p(bootinfo + MBI_MMAP_ADDR,   ADDR_E820_MAP);
>  
>      mb_debug("multiboot: mh_entry_addr = %#x\n", mh_entry_addr);
> -- 
> tg: (d16e0f0..) bootdev (depends on: master)
> 
>

Patch

diff --git a/hw/multiboot.c b/hw/multiboot.c
index 394ed01..6e6cfb9 100644
--- a/hw/multiboot.c
+++ b/hw/multiboot.c
@@ -307,7 +307,7 @@  int load_multiboot(void *fw_cfg,
                                 | MULTIBOOT_FLAGS_MMAP);
     stl_p(bootinfo + MBI_MEM_LOWER,   640);
     stl_p(bootinfo + MBI_MEM_UPPER,   (ram_size / 1024) - 1024);
-    stl_p(bootinfo + MBI_BOOT_DEVICE, 0x8001ffff); /* XXX: use the -boot switch? */
+    stl_p(bootinfo + MBI_BOOT_DEVICE, 0x8000ffff); /* XXX: use the -boot switch? */
     stl_p(bootinfo + MBI_MMAP_ADDR,   ADDR_E820_MAP);
 
     mb_debug("multiboot: mh_entry_addr = %#x\n", mh_entry_addr);