qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [Patch][Bug 618533]OpenSolaris guest fails to see the S


From: Kevin Wolf
Subject: Re: [Qemu-devel] [Patch][Bug 618533]OpenSolaris guest fails to see the Solaris partitions of a physical disk
Date: Mon, 30 Aug 2010 10:32:07 +0200
User-agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.11) Gecko/20100720 Fedora/3.0.6-1.fc12 Thunderbird/3.0.6

Am 28.08.2010 09:17, schrieb devsk:
> Attached is the patch for fixing the issue reported in bug 618533.
> 
> The patch applies clean against 0.12.5 as well as git version.
> 
> -devsk
> PS: I am not on the list. Please CC me.
> 

> Signed Off by: devsk <address@hidden>
> =============================================

Please include a patch description that can be used as a commit message.
If you use git format-patch, you make it easiest for maintainers to
apply your patch.

Also, the tag is spelled "Signed-off-by:" and you should use your real
name there.

> --- hw/ide/core.c.orig  2010-08-16 20:16:11.168843003 -0700
> +++ hw/ide/core.c   2010-08-16 20:37:48.979843000 -0700
> @@ -109,7 +109,6 @@
>      put_le16(p + 0, 0x0040);
>      put_le16(p + 1, s->cylinders);
>      put_le16(p + 3, s->heads);
> -    put_le16(p + 4, 512 * s->sectors); /* XXX: retired, remove ? */

Just curious, is removing this field actually required?

>      put_le16(p + 5, 512); /* XXX: retired, remove ? */
>      put_le16(p + 6, s->sectors);
>      padstr((char *)(p + 10), s->drive_serial_str, 20); /* serial number */
> @@ -134,8 +133,16 @@
>      put_le16(p + 58, oldsize >> 16);
>      if (s->mult_sectors)
>          put_le16(p + 59, 0x100 | s->mult_sectors);
> -    put_le16(p + 60, s->nb_sectors);
> -    put_le16(p + 61, s->nb_sectors >> 16);
> +    if (s->nb_sectors <= (1 << 28) - 1)
> +    {

You may write the same condition a bit simpler as (s->nb_sectors < (1 <<
28)).

Please put the brace on the same line as the if, see the CODING_STYLE
file in the source. Also, indentation should be four spaces.

> +      put_le16(p + 60, s->nb_sectors);
> +      put_le16(p + 61, s->nb_sectors >> 16);
> +    }
> +    else
> +    {
> +      put_le16(p + 60, ((1 << 28) - 1) & 0xffff);
> +      put_le16(p + 61, ((1 << 28) - 1) >> 16);

Hm, I guess it's more readable like this:

    ....
} else {
    put_le16(p + 60, 0xffff);
    put_le16(p + 61, 0xffff);
}

> +    }
>      put_le16(p + 62, 0x07); /* single word dma0-2 supported */
>      put_le16(p + 63, 0x07); /* mdma0-2 supported */
>      put_le16(p + 65, 120);
> @@ -156,7 +163,7 @@
>      else
>           put_le16(p + 85, (1 << 14) | 1);
>      /* 13=flush_cache_ext,12=flush_cache,10=lba48 */
> -    put_le16(p + 86, (1 << 14) | (1 << 13) | (1 <<12) | (1 << 10));
> +    put_le16(p + 86, (1 << 13) | (1 <<12) | (1 << 10));
>      /* 14=set to 1, 1=smart self test, 0=smart error logging */
>      put_le16(p + 87, (1 << 14) | 0);
>      put_le16(p + 88, 0x3f | (1 << 13)); /* udma5 set and supported */

The logic looks correct. Please CC me when you submit v2 of the patch.

Kevin



reply via email to

[Prev in Thread] Current Thread [Next in Thread]