qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH 2/3] hd-geometry.c/s390: Disable geometry transl


From: Paolo Bonzini
Subject: Re: [Qemu-devel] [PATCH 2/3] hd-geometry.c/s390: Disable geometry translation
Date: Sun, 18 Nov 2012 17:10:02 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:16.0) Gecko/20121016 Thunderbird/16.0.1

Il 17/11/2012 17:07, Blue Swirl ha scritto:
> On Tue, Nov 13, 2012 at 8:50 AM, Christian Borntraeger
> <address@hidden> wrote:
>> From: Einar Lueck <address@hidden>
>>
>> This patch disables the translation of geometry information read from
>> disks on s390. On s390 such translations lead to wrong geometries being
>> advertized to the guest because there is no entity doing these kinds
>> of translation on this architecture.
>>
>> Signed-off-by Einar Lueck <address@hidden>
>> Signed-off-by Christian Borntraeger <address@hidden>
>> ---
>>  hw/hd-geometry.c |    5 +++++
>>  1 file changed, 5 insertions(+)
>>
>> diff --git a/hw/hd-geometry.c b/hw/hd-geometry.c
>> index 4cf040d..db1dc81 100644
>> --- a/hw/hd-geometry.c
>> +++ b/hw/hd-geometry.c
>> @@ -144,6 +144,10 @@ static int guess_disk_msdosgeo(BlockDriverState *bs,
>>                  continue;
>>              }
>>
>> +#ifdef __s390__
> 
> No, this would make all system emulators (e.g. x86) on s390 host to
> use this translation, not just s390. I think you want to use #ifdef
> CONFIG_S390X instead.

This symbol is not available because this file is compiled just once.
Which non-x86 targets actually care about translation stuff?

Probably it would be best to split the MS-DOS stuff in a separate file,
and use the stub mechanism (no weak symbols, alas :)) to provide a
default implementation that just returns BIOS_ATA_TRANSLATION_NONE.

>> +            /* on s390 there is no BIOS doing any kind of translation */
>> +            translation = BIOS_ATA_TRANSLATION_NONE;
>> +#else
>>              if (heads > 16) {
>>                  /* LCHS guess with heads > 16 means that a BIOS LBA
>>                     translation was active, so a standard physical disk
>> @@ -158,6 +162,7 @@ static int guess_disk_msdosgeo(BlockDriverState *bs,
>>                     the logical geometry */
>>                  translation = BIOS_ATA_TRANSLATION_NONE;
>>              }
>> +#endif
>>              *pheads = heads;
>>              *psectors = sectors;
>>              *pcylinders = cylinders;
>> --
>> 1.7.10.1
>>
>>
> 
> 




reply via email to

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