[Top][All Lists]
[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: |
Blue Swirl |
Subject: |
Re: [Qemu-devel] [PATCH 2/3] hd-geometry.c/s390: Disable geometry translation |
Date: |
Sun, 18 Nov 2012 19:14:00 +0000 |
On Sun, Nov 18, 2012 at 4:10 PM, Paolo Bonzini <address@hidden> wrote:
> 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?
I meant TARGET_S390X, sorry. I have no idea, but hosts and targets
should not be confused.
>
> 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.
A global variable, initialized by target specific code would work too.
>
>>> + /* 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
>>>
>>>
>>
>>
>
[Qemu-devel] [PATCH 1/3] hd-geometry.c: Integrate HDIO_GETGEO in guessing, Christian Borntraeger, 2012/11/13
[Qemu-devel] [PATCH 3/3] block: support auto-sensing of block sizes, Christian Borntraeger, 2012/11/13