Editing Hypervisor Reverse Engineering
Jump to navigation
Jump to search
The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.
Latest revision | Your text | ||
Line 8,561: | Line 8,561: | ||
==HV Calls== | ==HV Calls== | ||
=== | ===lv1_gpu_context_allocate=== | ||
%r4 - flags | |||
* '''Found the place in LV1 where LV1 sets IO page size for GART memory mapping. We could patch it and set to 4KB. That would make a lot of things easier for RSX developers on Linux.''' | * '''Found the place in LV1 where LV1 sets IO page size for GART memory mapping. We could patch it and set to 4KB. That would make a lot of things easier for RSX developers on Linux.''' | ||
* 1MB pages make RSX driver for Linux hard to implement because allocating 1Mb contiguous memory chunk on Linux is very very hard | * 1MB pages make RSX driver for Linux hard to implement because allocating 1Mb contiguous memory chunk on Linux is very very hard. | ||
====Flags==== | ====Flags==== | ||
'''0x2 - tells LV1 to use 64KB pages for GART memory mapping else LV1 uses 1MB pages''' | '''0x2 - tells LV1 to use 64KB pages for GART memory mapping else LV1 uses 1MB pages''' | ||
===lv1_gpu_context_attribute=== | ===lv1_gpu_context_attribute=== | ||
Line 8,710: | Line 8,650: | ||
* '''This attribute is NOT available on 3.15 LV1 e.g. but on 3.41 it's implemented.''' | * '''This attribute is NOT available on 3.15 LV1 e.g. but on 3.41 it's implemented.''' | ||
====Attribute 0x300==== | ====Attribute 0x300==== | ||
Line 8,734: | Line 8,668: | ||
=====Unbind Zcull===== | =====Unbind Zcull===== | ||
==FIFO Command Buffer== | ==FIFO Command Buffer== | ||
Line 9,087: | Line 8,972: | ||
* GART memory region is a memory region in System Memory but accessible by RSX through GART [http://dri.freedesktop.org/wiki/GART]. | * GART memory region is a memory region in System Memory but accessible by RSX through GART [http://dri.freedesktop.org/wiki/GART]. | ||
* GameOS calls it '''Main Memory'''. | * GameOS calls it '''Main Memory'''. | ||
* '''Problem: lv1_gpu_context_iomap supports ONLY 1MB | * '''Problem: lv1_gpu_context_iomap supports ONLY 1MB pages''' | ||
* Size of system memory objects mapped into GPU address space should be either multiple of 1MB which means wasting lots of RAM and we don't have enough of it anyways. This solution is NOT suitable. | * Size of system memory objects mapped into GPU address space should be either multiple of 1MB which means wasting lots of RAM and we don't have enough of it anyways. This solution is NOT suitable. | ||
* Or place several GART memory objects into 1 MB page and map it. That would mean we have to use memory manager for each 1MB page. | * Or place several GART memory objects into 1 MB page and map it. That would mean we have to use memory manager for each 1MB page. | ||
Line 9,171: | Line 9,056: | ||
* Nouveau driver implements DRM fences with REF control register. See '''nouveau_fence.c:nouveau_fence_new'''. | * Nouveau driver implements DRM fences with REF control register. See '''nouveau_fence.c:nouveau_fence_new'''. | ||
====IOCTLs==== | ====IOCTLs==== |