Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
linux
Commits
3825aae7
Commit
3825aae7
authored
Feb 20, 2003
by
Louis Zhuang
Committed by
Greg Kroah-Hartman
Feb 20, 2003
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[PATCH] PCI: list code cleanup
Cleans up the list handling in a few places within the pci core.
parent
c88f4d31
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
14 additions
and
21 deletions
+14
-21
drivers/pci/probe.c
drivers/pci/probe.c
+2
-3
drivers/pci/setup-bus.c
drivers/pci/setup-bus.c
+12
-18
No files found.
drivers/pci/probe.c
View file @
3825aae7
...
...
@@ -556,10 +556,9 @@ unsigned int __devinit pci_do_scan_bus(struct pci_bus *bus)
int
__devinit
pci_bus_exists
(
const
struct
list_head
*
list
,
int
nr
)
{
const
struct
list_head
*
l
;
const
struct
pci_bus
*
b
;
for
(
l
=
list
->
next
;
l
!=
list
;
l
=
l
->
next
)
{
const
struct
pci_bus
*
b
=
pci_bus_b
(
l
);
list_for_each_entry
(
b
,
list
,
node
)
{
if
(
b
->
number
==
nr
||
pci_bus_exists
(
&
b
->
children
,
nr
))
return
1
;
}
...
...
drivers/pci/setup-bus.c
View file @
3825aae7
...
...
@@ -39,14 +39,13 @@
static
int
__devinit
pbus_assign_resources_sorted
(
struct
pci_bus
*
bus
)
{
struct
list_head
*
ln
;
struct
pci_dev
*
dev
;
struct
resource
*
res
;
struct
resource_list
head
,
*
list
,
*
tmp
;
int
idx
,
found_vga
=
0
;
head
.
next
=
NULL
;
for
(
ln
=
bus
->
devices
.
next
;
ln
!=
&
bus
->
devices
;
ln
=
ln
->
next
)
{
struct
pci_dev
*
dev
=
pci_dev_b
(
ln
);
list_for_each_entry
(
dev
,
&
bus
->
devices
,
bus_list
)
{
u16
class
=
dev
->
class
>>
8
;
if
(
class
==
PCI_CLASS_DISPLAY_VGA
...
...
@@ -201,15 +200,14 @@ pci_bridge_check_ranges(struct pci_bus *bus)
static
void
__devinit
pbus_size_io
(
struct
pci_bus
*
bus
)
{
struct
list_head
*
ln
;
struct
pci_dev
*
dev
;
struct
resource
*
b_res
=
bus
->
resource
[
0
];
unsigned
long
size
=
0
,
size1
=
0
;
if
(
!
(
b_res
->
flags
&
IORESOURCE_IO
))
return
;
for
(
ln
=
bus
->
devices
.
next
;
ln
!=
&
bus
->
devices
;
ln
=
ln
->
next
)
{
struct
pci_dev
*
dev
=
pci_dev_b
(
ln
);
list_for_each_entry
(
dev
,
&
bus
->
devices
,
bus_list
)
{
int
i
;
for
(
i
=
0
;
i
<
PCI_NUM_RESOURCES
;
i
++
)
{
...
...
@@ -250,7 +248,7 @@ pbus_size_io(struct pci_bus *bus)
static
void
__devinit
pbus_size_mem
(
struct
pci_bus
*
bus
,
unsigned
long
mask
,
unsigned
long
type
)
{
struct
list_head
*
ln
;
struct
pci_dev
*
dev
;
unsigned
long
min_align
,
align
,
size
;
unsigned
long
aligns
[
12
];
/* Alignments from 1Mb to 2Gb */
int
order
,
max_order
;
...
...
@@ -261,8 +259,7 @@ pbus_size_mem(struct pci_bus *bus, unsigned long mask, unsigned long type)
max_order
=
0
;
size
=
0
;
for
(
ln
=
bus
->
devices
.
next
;
ln
!=
&
bus
->
devices
;
ln
=
ln
->
next
)
{
struct
pci_dev
*
dev
=
pci_dev_b
(
ln
);
list_for_each_entry
(
dev
,
&
bus
->
devices
,
bus_list
)
{
int
i
;
for
(
i
=
0
;
i
<
PCI_NUM_RESOURCES
;
i
++
)
{
...
...
@@ -322,11 +319,12 @@ pbus_size_mem(struct pci_bus *bus, unsigned long mask, unsigned long type)
void
__devinit
pci_bus_size_bridges
(
struct
pci_bus
*
bus
)
{
struct
list_head
*
ln
;
struct
pci_bus
*
b
;
unsigned
long
mask
,
type
;
for
(
ln
=
bus
->
children
.
next
;
ln
!=
&
bus
->
children
;
ln
=
ln
->
next
)
pci_bus_size_bridges
(
pci_bus_b
(
ln
));
list_for_each_entry
(
b
,
&
bus
->
children
,
node
)
{
pci_bus_size_bridges
(
b
);
}
/* The root bus? */
if
(
!
bus
->
self
)
...
...
@@ -350,20 +348,16 @@ EXPORT_SYMBOL(pci_bus_size_bridges);
void
__devinit
pci_bus_assign_resources
(
struct
pci_bus
*
bus
)
{
struct
list_head
*
ln
;
struct
pci_bus
*
b
;
int
found_vga
=
pbus_assign_resources_sorted
(
bus
);
if
(
found_vga
)
{
struct
pci_bus
*
b
;
/* Propagate presence of the VGA to upstream bridges */
for
(
b
=
bus
;
b
->
parent
;
b
=
b
->
parent
)
{
b
->
resource
[
0
]
->
flags
|=
IORESOURCE_BUS_HAS_VGA
;
}
}
for
(
ln
=
bus
->
children
.
next
;
ln
!=
&
bus
->
children
;
ln
=
ln
->
next
)
{
struct
pci_bus
*
b
=
pci_bus_b
(
ln
);
list_for_each_entry
(
b
,
&
bus
->
children
,
node
)
{
pci_bus_assign_resources
(
b
);
pci_setup_bridge
(
b
);
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment