busdma - Fix bouncebuffer operation for 64 bit builds / mountroot & boot issues
authorMatthew Dillon <dillon@apollo.backplane.com>
Sat, 19 Dec 2009 20:00:46 +0000 (12:00 -0800)
committerMatthew Dillon <dillon@apollo.backplane.com>
Sat, 19 Dec 2009 20:00:46 +0000 (12:00 -0800)
* BUF_SPACE_MAXADDR was incorrectly defined for 64 bit builds, effectively
  disabling bounce buffers.  Fixed.

* This created issues with drivers (particularly NATA) which only support
  32 bit physical addresses, causing x86_64 machines to fail to boot or
  to blow up.

Reported-by: several people
sys/cpu/x86_64/include/bus_dma.h

index b2f856d..9e213db 100644 (file)
@@ -39,14 +39,14 @@ typedef uint64_t bus_size_t;
 typedef uint64_t bus_space_tag_t;
 typedef uint64_t bus_space_handle_t;
 
-#define BUS_SPACE_MAXSIZE_24BIT 0xFFFFFF
-#define BUS_SPACE_MAXSIZE_32BIT        0xFFFFFFFF
+#define BUS_SPACE_MAXSIZE_24BIT 0xFFFFFFUL
+#define BUS_SPACE_MAXSIZE_32BIT        0xFFFFFFFFUL
 #define BUS_SPACE_MAXSIZE      (64 * 1024) /* Maximum supported size */
-#define BUS_SPACE_MAXADDR_24BIT        0xFFFFFF
-#define BUS_SPACE_MAXADDR_32BIT        0xFFFFFFFF
-#define BUS_SPACE_MAXADDR      BUS_SPACE_MAXADDR_32BIT
+#define BUS_SPACE_MAXADDR_24BIT        0xFFFFFFUL
+#define BUS_SPACE_MAXADDR_32BIT        0xFFFFFFFFUL
+#define BUS_SPACE_MAXADDR      0xFFFFFFFFFFFFFFFFUL
 
-#define BUS_SPACE_UNRESTRICTED (~0)
+#define BUS_SPACE_UNRESTRICTED (~0)    /* nsegments */
 
 /*
  * Values for the amd64 bus space tag, not to be used directly by MI code.