[haiku-commits] r37215 - in haiku/trunk/src/add-ons/kernel/drivers/graphics: nvidia nvidia_gpgpu radeon

  • From: ingo_weinhold@xxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Tue, 22 Jun 2010 00:02:31 +0200 (CEST)

Author: bonefish
Date: 2010-06-22 00:02:31 +0200 (Tue, 22 Jun 2010)
New Revision: 37215
Changeset: http://dev.haiku-os.org/changeset/37215/haiku

Modified:
   haiku/trunk/src/add-ons/kernel/drivers/graphics/nvidia/driver.c
   haiku/trunk/src/add-ons/kernel/drivers/graphics/nvidia_gpgpu/driver.c
   haiku/trunk/src/add-ons/kernel/drivers/graphics/radeon/PCI_GART.c
Log:
Force 32 bit physical addresses. Added TODOs.


Modified: haiku/trunk/src/add-ons/kernel/drivers/graphics/nvidia/driver.c
===================================================================
--- haiku/trunk/src/add-ons/kernel/drivers/graphics/nvidia/driver.c     
2010-06-21 21:48:02 UTC (rev 37214)
+++ haiku/trunk/src/add-ons/kernel/drivers/graphics/nvidia/driver.c     
2010-06-21 22:02:31 UTC (rev 37215)
@@ -906,8 +906,10 @@
                        (void **)&unaligned_dma_buffer,
                        B_ANY_KERNEL_ADDRESS,
                        2 * net_buf_size, /* take twice the net size so we can 
have MTRR-WC even on old systems */
-                       B_CONTIGUOUS, /* GPU always needs access */
+                       B_32_BIT_MEMORY, /* GPU always needs access */
                        B_USER_CLONEABLE_AREA | B_READ_AREA | B_WRITE_AREA);
+                       // TODO: Physical aligning can be done without waste 
using the
+                       // private create_area_etc().
        /* on error, abort */
        if (si->unaligned_dma_area < 0)
        {

Modified: haiku/trunk/src/add-ons/kernel/drivers/graphics/nvidia_gpgpu/driver.c
===================================================================
--- haiku/trunk/src/add-ons/kernel/drivers/graphics/nvidia_gpgpu/driver.c       
2010-06-21 21:48:02 UTC (rev 37214)
+++ haiku/trunk/src/add-ons/kernel/drivers/graphics/nvidia_gpgpu/driver.c       
2010-06-21 22:02:31 UTC (rev 37215)
@@ -662,8 +662,10 @@
                        (void **)&unaligned_dma_buffer,
                        B_ANY_KERNEL_ADDRESS,
                        2 * net_buf_size, /* take twice the net size so we can 
have MTRR-WC even on old systems */
-                       B_CONTIGUOUS, /* GPU always needs access */
+                       B_32_BIT_MEMORY, /* GPU always needs access */
                        B_USER_CLONEABLE_AREA | B_READ_AREA | B_WRITE_AREA);
+                       // TODO: Physical aligning can be done without waste 
using the
+                       // private create_area_etc().
        /* on error, abort */
        if (si->unaligned_dma_area < 0)
        {

Modified: haiku/trunk/src/add-ons/kernel/drivers/graphics/radeon/PCI_GART.c
===================================================================
--- haiku/trunk/src/add-ons/kernel/drivers/graphics/radeon/PCI_GART.c   
2010-06-21 21:48:02 UTC (rev 37214)
+++ haiku/trunk/src/add-ons/kernel/drivers/graphics/radeon/PCI_GART.c   
2010-06-21 22:02:31 UTC (rev 37215)
@@ -90,6 +90,8 @@
        gart->buffer.unaligned_area = create_area( "Radeon PCI GART buffer",
                &unaligned_addr, B_ANY_KERNEL_ADDRESS,
                2 * size, B_CONTIGUOUS/*B_FULL_LOCK*/, B_READ_AREA | 
B_WRITE_AREA | B_USER_CLONEABLE_AREA );
+               // TODO: Physical aligning can be done without waste using the
+               // private create_area_etc().
        if (gart->buffer.unaligned_area < 0) {
                SHOW_ERROR( 1, "cannot create PCI GART buffer (%s)",
                        strerror( gart->buffer.unaligned_area ));
@@ -146,11 +148,13 @@
 
        num_pages = (gart->buffer.size + B_PAGE_SIZE - 1) & ~(B_PAGE_SIZE - 1);
 
-       // GART must be contignuous
+       // GART must be contiguous
        gart->GATT.area = create_area("Radeon GATT", (void **)&gart->GATT.ptr,
                B_ANY_KERNEL_ADDRESS,
                (num_pages * sizeof( uint32 ) + B_PAGE_SIZE - 1) & 
~(B_PAGE_SIZE - 1),
-               B_CONTIGUOUS,
+               B_32_BIT_MEMORY,
+                       // TODO: Physical address is cast to 32 bit below! Use 
B_CONTIGUOUS,
+                       // when that is (/can be) fixed!
 #ifdef HAIKU_TARGET_PLATFORM_HAIKU
                // TODO: really user read/write?
                B_READ_AREA | B_WRITE_AREA | B_USER_CLONEABLE_AREA
@@ -182,7 +186,10 @@
                map_area_size = ((map_area_size / B_PAGE_SIZE) + 1) * 
B_PAGE_SIZE;
 
        // temporary area where we fill in the memory map (deleted below)
-       map_area = create_area("pci_gart_map_area", (void **)&map, 
B_ANY_ADDRESS, map_area_size, B_FULL_LOCK, B_READ_AREA | B_WRITE_AREA);
+       map_area = create_area("pci_gart_map_area", (void **)&map, 
B_ANY_ADDRESS,
+               map_area_size, B_32_BIT_MEMORY, B_READ_AREA | B_WRITE_AREA);
+               // TODO: Physical addresses are cast to 32 bit below! Use 
B_FULL_LOCK,
+               // when that is (/can be) fixed!
        dprintf("pci_gart_map_area: %ld\n", map_area);
 
        get_memory_map( gart->buffer.ptr, gart->buffer.size, map, map_count );


Other related posts:

  • » [haiku-commits] r37215 - in haiku/trunk/src/add-ons/kernel/drivers/graphics: nvidia nvidia_gpgpu radeon - ingo_weinhold