Skip to contentSkip to conversation

incompatible struct pci_root_info?

PATCH New Németh Márton 2 participants 3 messages May 14, 2011 – May 15, 2011

Subsystems (3)
lore
Share & tools
lore
#0 lore raw

Hello,

I have found struct pci_root_info declaration at three different places in Linux kernel 2.6.39-rc6. Two of them are in arch/x86 and one of them is in arch/ia64.

arch/x86/pci/bus_numa.h:8:

	struct pci_root_info {
		char name[12];
		unsigned int res_num;
		struct resource res[RES_NUM];
		int bus_min;
		int bus_max;
		int node;
		int link;
	};

arch/x86/pci/acpi.c:10:

	struct pci_root_info {
		struct acpi_device *bridge;
		char *name;
		unsigned int res_num;
		struct resource *res;
		struct pci_bus *bus;
		int busnum;
	};

arch/ia64/pci/pci.c:133:

	struct pci_root_info {
		struct acpi_device *bridge;
		struct pci_controller *controller;
		char *name;
	};

As far as I know it is OK to have different types on different architectures with the same name. Is there any reason behind having two struct pci_root_info delcaration in arch/x86?

Regards,

Márton Németh

#1 lore raw
Quoted 5 lines · Németh Márton

As far as I know it is OK to have different types on different architectures with the same name. Is there any reason behind having two struct pci_root_info delcaration in arch/x86?

It looks like a namespace collision; the same name being used for that is really two different types.

-hpa

Signature · 2 lines
H. Peter Anvin, Intel Open Source Technology Center
I work for Intel.  I don't speak on their behalf.
#2 lore raw

PATCH 1/1 x86 pci acpi: rename struct pci_root_info

From: Márton Németh <[email protected]>

Rename struct pci_root_info to struct acpi_pci_root_info in arch/x86/pci/acpi.c because there is already a struct pci_root_info declared in arch/x86/pci/bus_numa.h . They both belnog to x86 architecture and the two declarations differ, so after rename each will have a unique name.

---

arch/x86/pci/acpi.c renamed from arch/x86/pci/acpi.c.orig +6 -6
@@ -7,7 +7,7 @@
 #include <asm/numa.h>
 #include <asm/pci_x86.h>
 
-struct pci_root_info {
+struct acpi_pci_root_info {
 	struct acpi_device *bridge;
 	char *name;
 	unsigned int res_num;
@@ -120,7 +120,7 @@ resource_to_addr(struct acpi_resource *r
 static acpi_status
 count_resource(struct acpi_resource *acpi_res, void *data)
 {
-	struct pci_root_info *info = data;
+	struct acpi_pci_root_info *info = data;
 	struct acpi_resource_address64 addr;
 	acpi_status status;
 
@@ -133,7 +133,7 @@ count_resource(struct acpi_resource *acp
 static acpi_status
 setup_resource(struct acpi_resource *acpi_res, void *data)
 {
-	struct pci_root_info *info = data;
+	struct acpi_pci_root_info *info = data;
 	struct resource *res;
 	struct acpi_resource_address64 addr;
 	acpi_status status;
@@ -188,7 +188,7 @@ static bool resource_contains(struct res
 	return false;
 }
 
-static void coalesce_windows(struct pci_root_info *info, int type)
+static void coalesce_windows(struct acpi_pci_root_info *info, int type)
 {
 	int i, j;
 	struct resource *res1, *res2;
@@ -223,7 +223,7 @@ static void coalesce_windows(struct pci_
 	}
 }
 
-static void add_resources(struct pci_root_info *info)
+static void add_resources(struct acpi_pci_root_info *info)
 {
 	int i;
 	struct resource *res, *root, *conflict;
@@ -259,7 +259,7 @@ static void
 get_current_resources(struct acpi_device *device, int busnum,
 			int domain, struct pci_bus *bus)
 {
-	struct pci_root_info info;
+	struct acpi_pci_root_info info;
 	size_t size;
 
 	if (pci_use_crs)