incompatible struct pci_root_info?
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
H. Peter Anvin
reviewerQuoted 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_infodelcaration inarch/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.
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 *rstatic 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 *acpstatic 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 resreturn 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)