diff --git a/drivers/pci/setup-bus.c b/drivers/pci/setup-bus.c
index 4c5509e..af2a98a 100644
--- a/drivers/pci/setup-bus.c
+++ b/drivers/pci/setup-bus.c
@@ -31,12 +31,6 @@
 	struct list_head list;
 	struct resource *res;
 	struct pci_dev *dev;
-};
-
-struct pci_dev_resource_x {
-	struct list_head list;
-	struct resource *res;
-	struct pci_dev *dev;
 	resource_size_t start;
 	resource_size_t end;
 	resource_size_t add_size;
@@ -72,7 +66,7 @@
 		 struct pci_dev *dev, struct resource *res,
 		 resource_size_t add_size, resource_size_t min_align)
 {
-	struct pci_dev_resource_x *tmp;
+	struct pci_dev_resource *tmp;
 
 	tmp = kzalloc(sizeof(*tmp), GFP_KERNEL);
 	if (!tmp) {
@@ -104,7 +98,7 @@
 static void remove_from_list(struct list_head *realloc_head,
 				 struct resource *res)
 {
-	struct pci_dev_resource_x *dev_res_x, *tmp;
+	struct pci_dev_resource *dev_res_x, *tmp;
 
 	list_for_each_entry_safe(dev_res_x, tmp, realloc_head, list) {
 		if (dev_res_x->res == res) {
@@ -118,7 +112,7 @@
 static resource_size_t get_res_add_size(struct list_head *realloc_head,
 					struct resource *res)
 {
-	struct pci_dev_resource_x *dev_res_x;
+	struct pci_dev_resource *dev_res_x;
 
 	list_for_each_entry(dev_res_x, realloc_head, list) {
 		if (dev_res_x->res == res) {
@@ -227,7 +221,7 @@
 		struct list_head *head)
 {
 	struct resource *res;
-	struct pci_dev_resource_x *dev_res_x, *tmp;
+	struct pci_dev_resource *dev_res_x, *tmp;
 	struct pci_dev_resource *dev_res;
 	resource_size_t add_size;
 	int idx;
@@ -325,7 +319,7 @@
 	 */
 	LIST_HEAD(save_head);
 	LIST_HEAD(local_fail_head);
-	struct pci_dev_resource_x *dev_res_x;
+	struct pci_dev_resource *dev_res_x;
 	struct pci_dev_resource *dev_res;
 
 	/* Check if optional add_size is there */
@@ -335,7 +329,7 @@
 	/* Save original start, end, flags etc at first */
 	list_for_each_entry(dev_res, head, list) {
 		if (add_to_list(&save_head, dev_res->dev, dev_res->res, 0, 0)) {
-			free_list(pci_dev_resource_x, &save_head);
+			free_list(pci_dev_resource, &save_head);
 			goto requested_and_reassign;
 		}
 	}
@@ -353,12 +347,12 @@
 		/* Remove head list from realloc_head list */
 		list_for_each_entry(dev_res, head, list)
 			remove_from_list(realloc_head, dev_res->res);
-		free_list(pci_dev_resource_x, &save_head);
+		free_list(pci_dev_resource, &save_head);
 		free_list(pci_dev_resource, head);
 		return;
 	}
 
-	free_list(pci_dev_resource_x, &local_fail_head);
+	free_list(pci_dev_resource, &local_fail_head);
 	/* Release assigned resource */
 	list_for_each_entry(dev_res, head, list)
 		if (dev_res->res->parent)
@@ -371,7 +365,7 @@
 		res->end = dev_res_x->end;
 		res->flags = dev_res_x->flags;
 	}
-	free_list(pci_dev_resource_x, &save_head);
+	free_list(pci_dev_resource, &save_head);
 
 requested_and_reassign:
 	/* Satisfy the must-have resource requests */
@@ -1256,7 +1250,7 @@
 	int tried_times = 0;
 	enum release_type rel_type = leaf_only;
 	LIST_HEAD(fail_head);
-	struct pci_dev_resource_x *dev_res_x;
+	struct pci_dev_resource *dev_res_x;
 	unsigned long type_mask = IORESOURCE_IO | IORESOURCE_MEM |
 				  IORESOURCE_PREFETCH;
 	unsigned long failed_type;
@@ -1304,7 +1298,7 @@
 	 */
 	failed_type &= type_mask;
 	if ((failed_type == IORESOURCE_IO) || (tried_times >= pci_try_num)) {
-		free_list(pci_dev_resource_x, &fail_head);
+		free_list(pci_dev_resource, &fail_head);
 		goto enable_and_dump;
 	}
 
@@ -1335,7 +1329,7 @@
 		if (dev_res_x->dev->subordinate)
 			res->flags = 0;
 	}
-	free_list(pci_dev_resource_x, &fail_head);
+	free_list(pci_dev_resource, &fail_head);
 
 	goto again;
 
@@ -1356,7 +1350,7 @@
 					want additional resources */
 	int tried_times = 0;
 	LIST_HEAD(fail_head);
-	struct pci_dev_resource_x *dev_res_x;
+	struct pci_dev_resource *dev_res_x;
 	int retval;
 	unsigned long type_mask = IORESOURCE_IO | IORESOURCE_MEM |
 				  IORESOURCE_PREFETCH;
@@ -1372,7 +1366,7 @@
 
 	if (tried_times >= 2) {
 		/* still fail, don't need to try more */
-		free_list(pci_dev_resource_x, &fail_head);
+		free_list(pci_dev_resource, &fail_head);
 		goto enable_all;
 	}
 
@@ -1400,7 +1394,7 @@
 		if (dev_res_x->dev->subordinate)
 			res->flags = 0;
 	}
-	free_list(pci_dev_resource_x, &fail_head);
+	free_list(pci_dev_resource, &fail_head);
 
 	goto again;
 
