PERFORCE change 191575 for review

John Baldwin jhb at FreeBSD.org
Sat Apr 16 03:08:35 UTC 2011


http://p4web.freebsd.org/@@191575?ac=10

Change 191575 by jhb at jhb_fiver on 2011/04/16 03:08:21

	Finish making the resource set stuff handle 64-bit addresses.

Affected files ...

.. //depot/projects/pci/sys/dev/acpica/acpi_resource.c#4 edit
.. //depot/projects/pci/sys/dev/acpica/acpivar.h#3 edit

Differences ...

==== //depot/projects/pci/sys/dev/acpica/acpi_resource.c#4 (text+ko) ====

@@ -309,7 +309,14 @@
 	}
 
 #ifdef __i386__
-	/* XXX: TODO: check for ULONG_MAX issues. */
+	if (min > ULONG_MAX || res->Data.Address.MaxAddressFixed && max >
+	    ULONG_MAX) {
+	    ACPI_DEBUG_PRINT((ACPI_DB_RESOURCES, "ignored %s above 4G\n",
+		name));
+	    break;
+	}
+	if (max > ULONG_MAX)
+		max = ULONG_MAX;
 #endif
 	if (res->Data.Address.MinAddressFixed == ACPI_ADDRESS_FIXED &&
 	    res->Data.Address.MaxAddressFixed == ACPI_ADDRESS_FIXED) {
@@ -394,20 +401,20 @@
 static void	acpi_res_set_init(device_t dev, void *arg, void **context);
 static void	acpi_res_set_done(device_t dev, void *context);
 static void	acpi_res_set_ioport(device_t dev, void *context,
-				    u_int32_t base, u_int32_t length);
+				    uint64_t base, uint64_t length);
 static void	acpi_res_set_iorange(device_t dev, void *context,
-				     u_int32_t low, u_int32_t high, 
-				     u_int32_t length, u_int32_t align);
+				     uint64_t low, uint64_t high, 
+				     uint64_t length, uint64_t align);
 static void	acpi_res_set_memory(device_t dev, void *context,
-				    u_int32_t base, u_int32_t length);
+				    uint64_t base, uint64_t length);
 static void	acpi_res_set_memoryrange(device_t dev, void *context,
-					 u_int32_t low, u_int32_t high, 
-					 u_int32_t length, u_int32_t align);
-static void	acpi_res_set_irq(device_t dev, void *context, u_int8_t *irq,
+					 uint64_t low, uint64_t high, 
+					 uint64_t length, uint64_t align);
+static void	acpi_res_set_irq(device_t dev, void *context, uint8_t *irq,
 				 int count, int trig, int pol);
 static void	acpi_res_set_ext_irq(device_t dev, void *context,
-				 u_int32_t *irq, int count, int trig, int pol);
-static void	acpi_res_set_drq(device_t dev, void *context, u_int8_t *drq,
+				 uint32_t *irq, int count, int trig, int pol);
+static void	acpi_res_set_drq(device_t dev, void *context, uint8_t *drq,
 				 int count);
 static void	acpi_res_set_start_dependent(device_t dev, void *context,
 					     int preference);
@@ -458,8 +465,8 @@
 }
 
 static void
-acpi_res_set_ioport(device_t dev, void *context, u_int32_t base,
-		    u_int32_t length)
+acpi_res_set_ioport(device_t dev, void *context, uint64_t base,
+		    uint64_t length)
 {
     struct acpi_res_context	*cp = (struct acpi_res_context *)context;
 
@@ -469,8 +476,8 @@
 }
 
 static void
-acpi_res_set_iorange(device_t dev, void *context, u_int32_t low,
-		     u_int32_t high, u_int32_t length, u_int32_t align)
+acpi_res_set_iorange(device_t dev, void *context, uint64_t low,
+		     uint64_t high, uint64_t length, uint64_t align)
 {
     struct acpi_res_context	*cp = (struct acpi_res_context *)context;
 
@@ -480,8 +487,8 @@
 }
 
 static void
-acpi_res_set_memory(device_t dev, void *context, u_int32_t base,
-		    u_int32_t length)
+acpi_res_set_memory(device_t dev, void *context, uint64_t base,
+		    uint64_t length)
 {
     struct acpi_res_context	*cp = (struct acpi_res_context *)context;
 
@@ -492,8 +499,8 @@
 }
 
 static void
-acpi_res_set_memoryrange(device_t dev, void *context, u_int32_t low,
-			 u_int32_t high, u_int32_t length, u_int32_t align)
+acpi_res_set_memoryrange(device_t dev, void *context, uint64_t low,
+			 uint64_t high, uint64_t length, uint64_t align)
 {
     struct acpi_res_context	*cp = (struct acpi_res_context *)context;
 
@@ -503,7 +510,7 @@
 }
 
 static void
-acpi_res_set_irq(device_t dev, void *context, u_int8_t *irq, int count,
+acpi_res_set_irq(device_t dev, void *context, uint8_t *irq, int count,
     int trig, int pol)
 {
     struct acpi_res_context	*cp = (struct acpi_res_context *)context;
@@ -519,7 +526,7 @@
 }
 
 static void
-acpi_res_set_ext_irq(device_t dev, void *context, u_int32_t *irq, int count,
+acpi_res_set_ext_irq(device_t dev, void *context, uint32_t *irq, int count,
     int trig, int pol)
 {
     struct acpi_res_context	*cp = (struct acpi_res_context *)context;
@@ -535,7 +542,7 @@
 }
 
 static void
-acpi_res_set_drq(device_t dev, void *context, u_int8_t *drq, int count)
+acpi_res_set_drq(device_t dev, void *context, uint8_t *drq, int count)
 {
     struct acpi_res_context	*cp = (struct acpi_res_context *)context;
 

==== //depot/projects/pci/sys/dev/acpica/acpivar.h#3 (text+ko) ====

@@ -355,19 +355,19 @@
 struct acpi_parse_resource_set {
     void	(*set_init)(device_t dev, void *arg, void **context);
     void	(*set_done)(device_t dev, void *context);
-    void	(*set_ioport)(device_t dev, void *context, uint32_t base,
-		    uint32_t length);
-    void	(*set_iorange)(device_t dev, void *context, uint32_t low,
-		    uint32_t high, uint32_t length, uint32_t align);
-    void	(*set_memory)(device_t dev, void *context, uint32_t base,
-		    uint32_t length);
-    void	(*set_memoryrange)(device_t dev, void *context, uint32_t low,
-		    uint32_t high, uint32_t length, uint32_t align);
-    void	(*set_irq)(device_t dev, void *context, u_int8_t *irq,
+    void	(*set_ioport)(device_t dev, void *context, uint64_t base,
+		    uint64_t length);
+    void	(*set_iorange)(device_t dev, void *context, uint64_t low,
+		    uint64_t high, uint64_t length, uint64_t align);
+    void	(*set_memory)(device_t dev, void *context, uint64_t base,
+		    uint64_t length);
+    void	(*set_memoryrange)(device_t dev, void *context, uint64_t low,
+		    uint64_t high, uint64_t length, uint64_t align);
+    void	(*set_irq)(device_t dev, void *context, uint8_t *irq,
 		    int count, int trig, int pol);
-    void	(*set_ext_irq)(device_t dev, void *context, u_int32_t *irq,
+    void	(*set_ext_irq)(device_t dev, void *context, uint32_t *irq,
 		    int count, int trig, int pol);
-    void	(*set_drq)(device_t dev, void *context, u_int8_t *drq,
+    void	(*set_drq)(device_t dev, void *context, uint8_t *drq,
 		    int count);
     void	(*set_start_dependent)(device_t dev, void *context,
 		    int preference);


More information about the p4-projects mailing list