[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] Re: AHCI support integration
From: |
Tejun Heo |
Subject: |
[Qemu-devel] Re: AHCI support integration |
Date: |
Mon, 10 May 2010 08:55:00 +0200 |
User-agent: |
Mozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.9.1.9) Gecko/20100317 Thunderbird/3.0.4 |
Hello,
On 05/09/2010 09:11 PM, Alexander Graf wrote:
> Sebastian Herbszt wrote:
>> The ICH6 AHCI implementation submitted by Chong is an all-in-one
>> attempt (ahci.c). It includes all needed parts of the ICH6, AHCI,
>> SATA and ATA specification. The code in hw/ide/* on the other hand
>> is split (or could be split) into smaller parts like port based and
>> bus master access, IDE and ATA core. I think it might be
>> reasonable to split ahci.c into ICH6, AHCI and SATA parts and strip
>> the limited ATA support and reuse it from the ide core. This would
>> give us something like the following:
>>
>> hw/ide/piix.c (PIIX3 and PIIX4)
>> hw/ide/pci.c and core.c (IDE, BM)
>> hw/ata-core.c (ATA)
>> hw/sata/ich6.c (ICH6)
>> hw/sata-core.c (SATA)
>> hw/ahci-core.c (AHCI)
>>
>> Should this be a goal or am i over-engineering here?
>
> [CC'ing Tejun - he volunteered to help out on this topic as well]
>
> I think there's no need to split sata and ahci.
> Apart from that, I think we should take things incrementally. For now
> there's no need to split IDE further until we hit a technical limit. I
> have yet to see a patch trying to reuse the IDE command processing, so
> depending on how the respective person implements that, I'm open to
> suggenstions.
I don't know the code but here are a few things which might worth
considering.
* ahci and the IDE interfaces are pretty much independent in most
implementations.
* On host emulation side, there might not be too much to separate out
for generic sata part from ahci at this point. Link state emulation
should be pretty simple and I suppose multiple command processing
would be a bit strongly tied into specific host emulation.
* If necessary, a separate IDE layer below PIIX3/4, ICH whatever would
be nice. Most IDE controllers behave about the same after all and
depending on implementation except for link emulation and NCQ
handling, ahci can probably just wrap the IDE layer for other stuff
too.
* If necessary, implementing generic ahci would be nice. Most ahci
implementations only have small quirks on top of generic ahci
behavior (even less deviance compared to IDE), so separating it out
shouldn't be difficult at all.
Thanks.
--
tejun