qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH] ahci: SATA FIS is 20 bytes, not 0x20


From: Alexander Graf
Subject: Re: [Qemu-devel] [PATCH] ahci: SATA FIS is 20 bytes, not 0x20
Date: Wed, 23 May 2012 11:53:51 +0200


Am 23.05.2012 um 11:13 schrieb Kevin Wolf <address@hidden>:

> Am 23.05.2012 01:26, schrieb Daniel Verkamp:
>> As in the SATA and AHCI specifications, a FIS is 5 Dwords of 4 bytes
>> each, which comes to 20 bytes (decimal), not 0x20.

Not sure I understand. FISs can have different sizes depending on the payload 
they are. The one you are looking at here is the d2h init FIS.

From the SATA 1.0a spec:

FIS Type - Set to a value of 34h. Defines the rest of the FIS fields. Defines 
the length of the
FIS as five Dwords.

So yes, you are right. The register FIS is 20 bytes, not 0x20 bytes long.

Does this fix some actual breakage for you?


Alex

>> 
>> Signed-off-by: Daniel Verkamp <address@hidden>
>> ---
>> hw/ide/ahci.c |    4 ++--
>> 1 files changed, 2 insertions(+), 2 deletions(-)
>> 
>> diff --git a/hw/ide/ahci.c b/hw/ide/ahci.c
>> index a883a92..2d7d03d 100644
>> --- a/hw/ide/ahci.c
>> +++ b/hw/ide/ahci.c
>> @@ -462,7 +462,7 @@ static void ahci_check_cmd_bh(void *opaque)
>> 
>> static void ahci_init_d2h(AHCIDevice *ad)
>> {
>> -    uint8_t init_fis[0x20];
>> +    uint8_t init_fis[20];
>>     IDEState *ide_state = &ad->port.ifs[0];
>> 
>>     memset(init_fis, 0, sizeof(init_fis));
>> @@ -619,7 +619,7 @@ static void ahci_write_fis_d2h(AHCIDevice *ad, uint8_t 
>> *cmd_fis)
>>     d2h_fis[11] = cmd_fis[11];
>>     d2h_fis[12] = cmd_fis[12];
>>     d2h_fis[13] = cmd_fis[13];
>> -    for (i = 14; i < 0x20; i++) {
>> +    for (i = 14; i < 20; i++) {
>>         d2h_fis[i] = 0;
>>     }
>> 
> 
> Alex or Andreas, can you please ack/nack?
> 
> Kevin



reply via email to

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