|
@@ -224,7 +224,8 @@ int __init ibmphp_rsrc_init (void)
|
|
|
if ((curr->rsrc_type & RESTYPE) == MMASK) {
|
|
|
/* no bus structure exists in place yet */
|
|
|
if (list_empty (&gbuses)) {
|
|
|
- if ((rc = alloc_bus_range (&newbus, &newrange, curr, MEM, 1)))
|
|
|
+ rc = alloc_bus_range(&newbus, &newrange, curr, MEM, 1);
|
|
|
+ if (rc)
|
|
|
return rc;
|
|
|
list_add_tail (&newbus->bus_list, &gbuses);
|
|
|
debug ("gbuses = NULL, Memory Primary Bus %x [%x - %x]\n", newbus->busno, newrange->start, newrange->end);
|
|
@@ -237,7 +238,8 @@ int __init ibmphp_rsrc_init (void)
|
|
|
return rc;
|
|
|
} else {
|
|
|
/* went through all the buses and didn't find ours, need to create a new bus node */
|
|
|
- if ((rc = alloc_bus_range (&newbus, &newrange, curr, MEM, 1)))
|
|
|
+ rc = alloc_bus_range(&newbus, &newrange, curr, MEM, 1);
|
|
|
+ if (rc)
|
|
|
return rc;
|
|
|
|
|
|
list_add_tail (&newbus->bus_list, &gbuses);
|
|
@@ -248,7 +250,8 @@ int __init ibmphp_rsrc_init (void)
|
|
|
/* prefetchable memory */
|
|
|
if (list_empty (&gbuses)) {
|
|
|
/* no bus structure exists in place yet */
|
|
|
- if ((rc = alloc_bus_range (&newbus, &newrange, curr, PFMEM, 1)))
|
|
|
+ rc = alloc_bus_range(&newbus, &newrange, curr, PFMEM, 1);
|
|
|
+ if (rc)
|
|
|
return rc;
|
|
|
list_add_tail (&newbus->bus_list, &gbuses);
|
|
|
debug ("gbuses = NULL, PFMemory Primary Bus %x [%x - %x]\n", newbus->busno, newrange->start, newrange->end);
|
|
@@ -261,7 +264,8 @@ int __init ibmphp_rsrc_init (void)
|
|
|
return rc;
|
|
|
} else {
|
|
|
/* went through all the buses and didn't find ours, need to create a new bus node */
|
|
|
- if ((rc = alloc_bus_range (&newbus, &newrange, curr, PFMEM, 1)))
|
|
|
+ rc = alloc_bus_range(&newbus, &newrange, curr, PFMEM, 1);
|
|
|
+ if (rc)
|
|
|
return rc;
|
|
|
list_add_tail (&newbus->bus_list, &gbuses);
|
|
|
debug ("1st Bus, PFMemory Primary Bus %x [%x - %x]\n", newbus->busno, newrange->start, newrange->end);
|
|
@@ -271,7 +275,8 @@ int __init ibmphp_rsrc_init (void)
|
|
|
/* IO */
|
|
|
if (list_empty (&gbuses)) {
|
|
|
/* no bus structure exists in place yet */
|
|
|
- if ((rc = alloc_bus_range (&newbus, &newrange, curr, IO, 1)))
|
|
|
+ rc = alloc_bus_range(&newbus, &newrange, curr, IO, 1);
|
|
|
+ if (rc)
|
|
|
return rc;
|
|
|
list_add_tail (&newbus->bus_list, &gbuses);
|
|
|
debug ("gbuses = NULL, IO Primary Bus %x [%x - %x]\n", newbus->busno, newrange->start, newrange->end);
|
|
@@ -283,7 +288,8 @@ int __init ibmphp_rsrc_init (void)
|
|
|
return rc;
|
|
|
} else {
|
|
|
/* went through all the buses and didn't find ours, need to create a new bus node */
|
|
|
- if ((rc = alloc_bus_range (&newbus, &newrange, curr, IO, 1)))
|
|
|
+ rc = alloc_bus_range(&newbus, &newrange, curr, IO, 1);
|
|
|
+ if (rc)
|
|
|
return rc;
|
|
|
list_add_tail (&newbus->bus_list, &gbuses);
|
|
|
debug ("1st Bus, IO Primary Bus %x [%x - %x]\n", newbus->busno, newrange->start, newrange->end);
|
|
@@ -1038,7 +1044,9 @@ int ibmphp_check_resource (struct resource_node *res, u8 bridge)
|
|
|
/* found our range */
|
|
|
if (!res_prev) {
|
|
|
/* first time in the loop */
|
|
|
- if ((res_cur->start != range->start) && ((len_tmp = res_cur->start - 1 - range->start) >= res->len)) {
|
|
|
+ len_tmp = res_cur->start - 1 - range->start;
|
|
|
+
|
|
|
+ if ((res_cur->start != range->start) && (len_tmp >= res->len)) {
|
|
|
debug ("len_tmp = %x\n", len_tmp);
|
|
|
|
|
|
if ((len_tmp < len_cur) || (len_cur == 0)) {
|
|
@@ -1078,7 +1086,9 @@ int ibmphp_check_resource (struct resource_node *res, u8 bridge)
|
|
|
}
|
|
|
if (!res_cur->next) {
|
|
|
/* last device on the range */
|
|
|
- if ((range->end != res_cur->end) && ((len_tmp = range->end - (res_cur->end + 1)) >= res->len)) {
|
|
|
+ len_tmp = range->end - (res_cur->end + 1);
|
|
|
+
|
|
|
+ if ((range->end != res_cur->end) && (len_tmp >= res->len)) {
|
|
|
debug ("len_tmp = %x\n", len_tmp);
|
|
|
if ((len_tmp < len_cur) || (len_cur == 0)) {
|
|
|
|
|
@@ -1117,8 +1127,9 @@ int ibmphp_check_resource (struct resource_node *res, u8 bridge)
|
|
|
if (res_prev) {
|
|
|
if (res_prev->rangeno != res_cur->rangeno) {
|
|
|
/* 1st device on this range */
|
|
|
- if ((res_cur->start != range->start) &&
|
|
|
- ((len_tmp = res_cur->start - 1 - range->start) >= res->len)) {
|
|
|
+ len_tmp = res_cur->start - 1 - range->start;
|
|
|
+
|
|
|
+ if ((res_cur->start != range->start) && (len_tmp >= res->len)) {
|
|
|
if ((len_tmp < len_cur) || (len_cur == 0)) {
|
|
|
if ((range->start % tmp_divide) == 0) {
|
|
|
/* just perfect, starting address is divisible by length */
|
|
@@ -1153,7 +1164,9 @@ int ibmphp_check_resource (struct resource_node *res, u8 bridge)
|
|
|
}
|
|
|
} else {
|
|
|
/* in the same range */
|
|
|
- if ((len_tmp = res_cur->start - 1 - res_prev->end - 1) >= res->len) {
|
|
|
+ len_tmp = res_cur->start - 1 - res_prev->end - 1;
|
|
|
+
|
|
|
+ if (len_tmp >= res->len) {
|
|
|
if ((len_tmp < len_cur) || (len_cur == 0)) {
|
|
|
if (((res_prev->end + 1) % tmp_divide) == 0) {
|
|
|
/* just perfect, starting address's divisible by length */
|
|
@@ -1212,7 +1225,9 @@ int ibmphp_check_resource (struct resource_node *res, u8 bridge)
|
|
|
break;
|
|
|
}
|
|
|
while (range) {
|
|
|
- if ((len_tmp = range->end - range->start) >= res->len) {
|
|
|
+ len_tmp = range->end - range->start;
|
|
|
+
|
|
|
+ if (len_tmp >= res->len) {
|
|
|
if ((len_tmp < len_cur) || (len_cur == 0)) {
|
|
|
if ((range->start % tmp_divide) == 0) {
|
|
|
/* just perfect, starting address's divisible by length */
|
|
@@ -1276,7 +1291,9 @@ int ibmphp_check_resource (struct resource_node *res, u8 bridge)
|
|
|
break;
|
|
|
}
|
|
|
while (range) {
|
|
|
- if ((len_tmp = range->end - range->start) >= res->len) {
|
|
|
+ len_tmp = range->end - range->start;
|
|
|
+
|
|
|
+ if (len_tmp >= res->len) {
|
|
|
if ((len_tmp < len_cur) || (len_cur == 0)) {
|
|
|
if ((range->start % tmp_divide) == 0) {
|
|
|
/* just perfect, starting address's divisible by length */
|
|
@@ -1335,7 +1352,7 @@ int ibmphp_check_resource (struct resource_node *res, u8 bridge)
|
|
|
return -EINVAL;
|
|
|
}
|
|
|
}
|
|
|
- } /* end if(!res_cur) */
|
|
|
+ } /* end if (!res_cur) */
|
|
|
return -EINVAL;
|
|
|
}
|
|
|
|