A bit more information:

The address and the data should be available via a pointer  in the
IDEState struct in qemu/hw/ide/internal.h. I'm currently working on adding
DMA simulation for my disk simulation work. This works by passing a sector
worth of accesses to our DRAMSim main memory simulation (which is
connected in ptlsim/cache/memoryController.cpp).

> On Tue, Apr 24, 2012 at 2:16 AM, Sungchan Kim
> <[email protected]>wrote:
>
>> Dear all,
>>
>>
>>
>> I'm trying to integrate our custom SSD simulator to marss.
>>
>> To do this, beside a boot disk, I'm using an additional disk image in
>> raw
>> format that is mounted to /dev/sdb.
>>
>> I'm working with the ubuntu image that is available at the marss web
>> site.
>>
>>
>> I need to monitor (and get) the actual IDE DMA data that is read
>> from/written when using the raw disk image, /dev/sdb.
>>
>> Even though I looked at some source files in qemu/hw/ide, it is still
>> not
>> sure which function or data structure I should use to do this.
>>
>> Could anyone help me figure out this difficulty?
>>
>> Thank you.
>>
>>
>> I have pasted a text from an email response I gave to Jim about DMA
> tracking in QEMU:
>
> On Tue, Apr 17, 2012 at 3:59 AM, Jim Stevens <[email protected]> wrote:
>
>> Avadh,
>>
>> When QEMU performs a disk access and emulates the DMA, do the
>> addresses accessed by the DMA get passed along to the
>> memoryController? I'm just wondering if we are missing out on an
>> important source of memory traffic for DRAMSim or if this is properly
>> modeled in
>> marss.
>>
>> This is a really tricky part in QEMU.  To optimize IO emulation QEMU
> doesn't perform any DMA operation initiated by Disk or Network card.
> When a request to disk drive or network card is done, they know the
> destination memory address in RAM so when data is available its
> directly copied to those memory location without going through DMA.
>
> To trap all such memory activities, there are few function provided by
> QEMU to access VM's memory:
>
> cpu_physical_memory_write
> cpu_physical_memory_read
> cpu_physical_memory_rw
>
> Now disk interface doesn't use these functions :).  For modularity
> and performance, they use some specific BMDMAState structures
> that are used by BlockDrivers to copy data into VM's RAM.
>
> The trap that I have placed is called when DMA is completed. So
> you can look into some more variables there to find out where data
> is copied and how much.
>
> Hope this helps.
>
> - Avadh
>
>
>>  Regards,
>>
>> Sungchan Kim
>>
>> _______________________________________________
>> http://www.marss86.org
>> Marss86-Devel mailing list
>> [email protected]
>> https://www.cs.binghamton.edu/mailman/listinfo/marss86-devel
>>
>>
> _______________________________________________
> http://www.marss86.org
> Marss86-Devel mailing list
> [email protected]
> https://www.cs.binghamton.edu/mailman/listinfo/marss86-devel
>



_______________________________________________
http://www.marss86.org
Marss86-Devel mailing list
[email protected]
https://www.cs.binghamton.edu/mailman/listinfo/marss86-devel

Reply via email to