[PATCH 1/6] PCI,acpiphp: Use list_for_each_entry() for bus traversal
Subsystems:
acpi , pci subsystem , the rest
STALE4581d
13 messages,
4 authors,
2014-02-15 · open the first message on its own page
Replace list_for_each() + pci_bus_b() with the simpler
list_for_each_entry().
Signed-off-by: Yijing Wang <redacted>
---
drivers/pci/hotplug/acpiphp_glue.c | 6 +++---
1 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/drivers/pci/hotplug/acpiphp_glue.c b/drivers/pci/hotplug/acpiphp_glue.c
index cd929ae..aee6a0a 100644
--- a/drivers/pci/hotplug/acpiphp_glue.c
+++ b/drivers/pci/hotplug/acpiphp_glue.c @@ -450,7 +450,7 @@ static void cleanup_bridge(struct acpiphp_bridge *bridge)
*/
static unsigned char acpiphp_max_busnr ( struct pci_bus * bus )
{
- struct list_head * tmp ;
+ struct pci_bus * tmp ;
unsigned char max , n ;
/* @@ -463,8 +463,8 @@ static unsigned char acpiphp_max_busnr(struct pci_bus *bus)
*/
max = bus -> busn_res . start ;
- list_for_each ( tmp , & bus -> children ) {
- n = pci_bus_max_busnr ( pci_bus_b ( tmp ));
+ list_for_each_entry ( tmp , & bus -> children , node ) {
+ n = pci_bus_max_busnr ( tmp );
if ( n > max )
max = n ;
} --
1.7.1
Replace list_for_each() + pci_bus_b() with the simpler
list_for_each_entry().
Signed-off-by: Yijing Wang <redacted>
---
arch/arm/kernel/bios32.c | 7 ++-----
1 files changed, 2 insertions(+), 5 deletions(-)
diff --git a/arch/arm/kernel/bios32.c b/arch/arm/kernel/bios32.c
index 317da88..0a77858 100644
--- a/arch/arm/kernel/bios32.c
+++ b/arch/arm/kernel/bios32.c @@ -57,13 +57,10 @@ static void pcibios_bus_report_status(struct pci_bus *bus, u_int status_mask, in
void pcibios_report_status ( u_int status_mask , int warn )
{
- struct list_head * l ;
-
- list_for_each ( l , & pci_root_buses ) {
- struct pci_bus * bus = pci_bus_b ( l );
+ struct pci_bus * bus ;
+ list_for_each_entry ( bus , & pci_root_buses , node )
pcibios_bus_report_status ( bus , status_mask , warn );
- }
}
/* --
1.7.1
Replace list_for_each() + pci_bus_b() with the simpler
list_for_each_entry().
Signed-off-by: Yijing Wang <redacted>
---
drivers/gpu/drm/drm_fops.c | 3 ++-
1 files changed, 2 insertions(+), 1 deletions(-)
diff --git a/drivers/gpu/drm/drm_fops.c b/drivers/gpu/drm/drm_fops.c
index 7f2af9a..70d2987 100644
--- a/drivers/gpu/drm/drm_fops.c
+++ b/drivers/gpu/drm/drm_fops.c @@ -319,7 +319,8 @@ static int drm_open_helper(struct inode *inode, struct file *filp,
pci_dev_put ( pci_dev );
}
if ( ! dev -> hose ) {
- struct pci_bus * b = pci_bus_b ( pci_root_buses . next );
+ struct pci_bus * b = list_entry ( pci_root_buses . next ,
+ struct pci_bus , node );
if ( b )
dev -> hose = b -> sysdata ;
} --
1.7.1
Replace list_for_each() + pci_bus_b() with the simpler
list_for_each_entry().
Signed-off-by: Yijing Wang <redacted>
---
arch/powerpc/kernel/pci_64.c | 4 +---
arch/powerpc/platforms/pseries/pci_dlpar.c | 6 +++---
2 files changed, 4 insertions(+), 6 deletions(-)
diff --git a/arch/powerpc/kernel/pci_64.c b/arch/powerpc/kernel/pci_64.c
index a9e311f..2a47790 100644
--- a/arch/powerpc/kernel/pci_64.c
+++ b/arch/powerpc/kernel/pci_64.c @@ -208,7 +208,6 @@ long sys_pciconfig_iobase(long which, unsigned long in_bus,
unsigned long in_devfn )
{
struct pci_controller * hose ;
- struct list_head * ln ;
struct pci_bus * bus = NULL ;
struct device_node * hose_node ;
@@ -230,8 +229,7 @@ long sys_pciconfig_iobase(long which, unsigned long in_bus,
* used on pre - domains setup . We return the first match
*/
- for ( ln = pci_root_buses . next ; ln != & pci_root_buses ; ln = ln -> next ) {
- bus = pci_bus_b ( ln );
+ list_for_each_entry ( bus , & pci_root_buses , node ) {
if ( in_bus >= bus -> number && in_bus <= bus -> busn_res . end )
break ;
bus = NULL ; diff --git a/arch/powerpc/platforms/pseries/pci_dlpar.c b/arch/powerpc/platforms/pseries/pci_dlpar.c
index efe6137..203cbf0 100644
--- a/arch/powerpc/platforms/pseries/pci_dlpar.c
+++ b/arch/powerpc/platforms/pseries/pci_dlpar.c @@ -37,15 +37,15 @@ find_bus_among_children(struct pci_bus *bus,
struct device_node * dn )
{
struct pci_bus * child = NULL ;
- struct list_head * tmp ;
+ struct pci_bus * tmp ;
struct device_node * busdn ;
busdn = pci_bus_to_OF_node ( bus );
if ( busdn == dn )
return bus ;
- list_for_each ( tmp , & bus -> children ) {
- child = find_bus_among_children ( pci_bus_b ( tmp ), dn );
+ list_for_each_entry ( tmp , & bus -> children , node ) {
+ child = find_bus_among_children ( tmp , dn );
if ( child )
break ;
}; --
1.7.1
Replace list_for_each() + pci_bus_b() with the simpler
list_for_each_entry().
Signed-off-by: Yijing Wang <redacted>
---
drivers/pcmcia/yenta_socket.c | 6 +++---
1 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/drivers/pcmcia/yenta_socket.c b/drivers/pcmcia/yenta_socket.c
index 8485761..d16fb12 100644
--- a/drivers/pcmcia/yenta_socket.c
+++ b/drivers/pcmcia/yenta_socket.c @@ -1076,7 +1076,7 @@ static void yenta_config_init(struct yenta_socket *socket)
*/
static void yenta_fixup_parent_bridge ( struct pci_bus * cardbus_bridge )
{
- struct list_head * tmp ;
+ struct pci_bus * silbling ;
unsigned char upper_limit ;
/*
* We only check and fix the parent bridge : All systems which need @@ -1096,8 +1096,8 @@ static void yenta_fixup_parent_bridge(struct pci_bus *cardbus_bridge)
upper_limit = bridge_to_fix -> parent -> busn_res . end ;
/* check the bus ranges of all silbling bridges to prevent overlap */
- list_for_each ( tmp , & bridge_to_fix -> parent -> children ) {
- struct pci_bus * silbling = pci_bus_b ( tmp );
+ list_for_each_entry ( silbling , & bridge_to_fix -> parent -> children ,
+ node ) {
/*
* If the silbling has a higher secondary bus number
* and it ' s secondary is equal or smaller than our --
1.7.1
Replace pci_bus_b() with list_entry(), so we can remove
pci_bus_b().
Signed-off-by: Yijing Wang <redacted>
---
drivers/pci/pci.c | 6 +++---
drivers/pci/search.c | 10 +++++-----
include/linux/pci.h | 1 -
3 files changed, 8 insertions(+), 9 deletions(-)
diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
index 1febe90..6f5ed88 100644
--- a/drivers/pci/pci.c
+++ b/drivers/pci/pci.c @@ -108,12 +108,12 @@ static bool pcie_ari_disabled;
*/
unsigned char pci_bus_max_busnr ( struct pci_bus * bus )
{
- struct list_head * tmp ;
+ struct pci_bus * tmp ;
unsigned char max , n ;
max = bus -> busn_res . end ;
- list_for_each ( tmp , & bus -> children ) {
- n = pci_bus_max_busnr ( pci_bus_b ( tmp ));
+ list_for_each_entry ( tmp , & bus -> children , node ) {
+ n = pci_bus_max_busnr ( tmp );
if ( n > max )
max = n ;
} diff --git a/drivers/pci/search.c b/drivers/pci/search.c
index 3ff2ac7..4a1b972 100644
--- a/drivers/pci/search.c
+++ b/drivers/pci/search.c @@ -54,14 +54,14 @@ pci_find_upstream_pcie_bridge(struct pci_dev *pdev)
static struct pci_bus * pci_do_find_bus ( struct pci_bus * bus , unsigned char busnr )
{
- struct pci_bus * child ;
- struct list_head * tmp ;
+ struct pci_bus * child ;
+ struct pci_bus * tmp ;
if ( bus -> number == busnr )
return bus ;
- list_for_each ( tmp , & bus -> children ) {
- child = pci_do_find_bus ( pci_bus_b ( tmp ), busnr );
+ list_for_each_entry ( tmp , & bus -> children , node ) {
+ child = pci_do_find_bus ( tmp , busnr );
if ( child )
return child ;
} @@ -111,7 +111,7 @@ pci_find_next_bus(const struct pci_bus *from)
down_read ( & pci_bus_sem );
n = from ? from -> node . next : pci_root_buses . next ;
if ( n != & pci_root_buses )
- b = pci_bus_b ( n );
+ b = list_entry ( n , struct pci_bus , node );
up_read ( & pci_bus_sem );
return b ;
} diff --git a/include/linux/pci.h b/include/linux/pci.h
index fb57c89..e1b5752 100644
--- a/include/linux/pci.h
+++ b/include/linux/pci.h @@ -461,7 +461,6 @@ struct pci_bus {
unsigned int is_added : 1 ;
};
- #define pci_bus_b(n) list_entry(n, struct pci_bus, node)
#define to_pci_bus(n) container_of(n, struct pci_bus, dev)
/* --
1.7.1
On Thu, Feb 13, 2014 at 09:13:59PM +0800, Yijing Wang wrote: Replace list_for_each() + pci_bus_b() with the simpler
list_for_each_entry().
Signed-off-by: Yijing Wang <redacted>
Acked-by: Russell King <redacted>
--
FTTC broadband for 0.8mile line: 5.8Mbps down 500kbps up. Estimation
in database were 13.1 to 19Mbit for a good line, about 7.5+ for a bad.
Estimate before purchase was "up to 13.2Mbit".
On Thursday, February 13, 2014 09:13:58 PM Yijing Wang wrote: Replace list_for_each() + pci_bus_b() with the simpler
list_for_each_entry().
Signed-off-by: Yijing Wang <redacted>
Looks reasonable to me.
Does it conflict with anything currently in linux-next (the linux-next branch
of linux-pm.git in particular)?
quoted hunk ---
drivers/pci/hotplug/acpiphp_glue.c | 6 +++---
1 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/drivers/pci/hotplug/acpiphp_glue.c b/drivers/pci/hotplug/acpiphp_glue.c
index cd929ae..aee6a0a 100644
--- a/drivers/pci/hotplug/acpiphp_glue.c
+++ b/drivers/pci/hotplug/acpiphp_glue.c @@ -450,7 +450,7 @@ static void cleanup_bridge(struct acpiphp_bridge *bridge)
*/
static unsigned char acpiphp_max_busnr ( struct pci_bus * bus )
{
- struct list_head * tmp ;
+ struct pci_bus * tmp ;
unsigned char max , n ;
/* @@ -463,8 +463,8 @@ static unsigned char acpiphp_max_busnr(struct pci_bus *bus)
*/
max = bus -> busn_res . start ;
- list_for_each ( tmp , & bus -> children ) {
- n = pci_bus_max_busnr ( pci_bus_b ( tmp ));
+ list_for_each_entry ( tmp , & bus -> children , node ) {
+ n = pci_bus_max_busnr ( tmp );
if ( n > max )
max = n ;
}
--
I speak only for myself.
Rafael J. Wysocki, Intel Open Source Technology Center.
On 2014/2/14 7:54, Rafael J. Wysocki wrote: On Thursday, February 13, 2014 09:13:58 PM Yijing Wang wrote: quoted Replace list_for_each() + pci_bus_b() with the simpler
list_for_each_entry().
Signed-off-by: Yijing Wang <redacted>
Looks reasonable to me.
Does it conflict with anything currently in linux-next (the linux-next branch
of linux-pm.git in particular)?
Hi Rafael,
I applied this to your linux-next branch successfully . No conflicts found.
Thanks!
Yijing.
quoted ---
drivers/pci/hotplug/acpiphp_glue.c | 6 +++---
1 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/drivers/pci/hotplug/acpiphp_glue.c b/drivers/pci/hotplug/acpiphp_glue.c
index cd929ae..aee6a0a 100644
--- a/drivers/pci/hotplug/acpiphp_glue.c
+++ b/drivers/pci/hotplug/acpiphp_glue.c @@ -450,7 +450,7 @@ static void cleanup_bridge(struct acpiphp_bridge *bridge)
*/
static unsigned char acpiphp_max_busnr ( struct pci_bus * bus )
{
- struct list_head * tmp ;
+ struct pci_bus * tmp ;
unsigned char max , n ;
/* @@ -463,8 +463,8 @@ static unsigned char acpiphp_max_busnr(struct pci_bus *bus)
*/
max = bus -> busn_res . start ;
- list_for_each ( tmp , & bus -> children ) {
- n = pci_bus_max_busnr ( pci_bus_b ( tmp ));
+ list_for_each_entry ( tmp , & bus -> children , node ) {
+ n = pci_bus_max_busnr ( tmp );
if ( n > max )
max = n ;
}
--
Thanks!
Yijing
On Friday, February 14, 2014 10:19:41 AM Yijing Wang wrote: On 2014/2/14 7:54, Rafael J. Wysocki wrote: quoted On Thursday, February 13, 2014 09:13:58 PM Yijing Wang wrote: quoted Replace list_for_each() + pci_bus_b() with the simpler
list_for_each_entry().
Signed-off-by: Yijing Wang <redacted>
Looks reasonable to me.
Does it conflict with anything currently in linux-next (the linux-next branch
of linux-pm.git in particular)?
Hi Rafael,
I applied this to your linux-next branch successfully . No conflicts found.
Good. :-)
Please feel free to add my ACK to it.
Rafael
quoted quoted ---
drivers/pci/hotplug/acpiphp_glue.c | 6 +++---
1 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/drivers/pci/hotplug/acpiphp_glue.c b/drivers/pci/hotplug/acpiphp_glue.c
index cd929ae..aee6a0a 100644
--- a/drivers/pci/hotplug/acpiphp_glue.c
+++ b/drivers/pci/hotplug/acpiphp_glue.c @@ -450,7 +450,7 @@ static void cleanup_bridge(struct acpiphp_bridge *bridge)
*/
static unsigned char acpiphp_max_busnr ( struct pci_bus * bus )
{
- struct list_head * tmp ;
+ struct pci_bus * tmp ;
unsigned char max , n ;
/* @@ -463,8 +463,8 @@ static unsigned char acpiphp_max_busnr(struct pci_bus *bus)
*/
max = bus -> busn_res . start ;
- list_for_each ( tmp , & bus -> children ) {
- n = pci_bus_max_busnr ( pci_bus_b ( tmp ));
+ list_for_each_entry ( tmp , & bus -> children , node ) {
+ n = pci_bus_max_busnr ( tmp );
if ( n > max )
max = n ;
}
--
I speak only for myself.
Rafael J. Wysocki, Intel Open Source Technology Center.
On Thu, Feb 13, 2014 at 09:13:58PM +0800, Yijing Wang wrote: Replace list_for_each() + pci_bus_b() with the simpler
list_for_each_entry().
Signed-off-by: Yijing Wang <redacted>
I applied all six of these (please include a 0/6 cover letter in the
future; that's a nice place to note that I applied things) to
pci/list-for-each-entry for v3.15, thanks!
quoted hunk ---
drivers/pci/hotplug/acpiphp_glue.c | 6 +++---
1 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/drivers/pci/hotplug/acpiphp_glue.c b/drivers/pci/hotplug/acpiphp_glue.c
index cd929ae..aee6a0a 100644
--- a/drivers/pci/hotplug/acpiphp_glue.c
+++ b/drivers/pci/hotplug/acpiphp_glue.c @@ -450,7 +450,7 @@ static void cleanup_bridge(struct acpiphp_bridge *bridge)
*/
static unsigned char acpiphp_max_busnr ( struct pci_bus * bus )
{
- struct list_head * tmp ;
+ struct pci_bus * tmp ;
unsigned char max , n ;
/* @@ -463,8 +463,8 @@ static unsigned char acpiphp_max_busnr(struct pci_bus *bus)
*/
max = bus -> busn_res . start ;
- list_for_each ( tmp , & bus -> children ) {
- n = pci_bus_max_busnr ( pci_bus_b ( tmp ));
+ list_for_each_entry ( tmp , & bus -> children , node ) {
+ n = pci_bus_max_busnr ( tmp );
if ( n > max )
max = n ;
} --
1.7.1
quoted quoted Does it conflict with anything currently in linux-next (the linux-next branch
of linux-pm.git in particular)?
Hi Rafael,
I applied this to your linux-next branch successfully . No conflicts found.
Good. :-)
Please feel free to add my ACK to it.
Thanks very much!
On 2014/2/15 2:23, Bjorn Helgaas wrote: On Thu, Feb 13, 2014 at 09:13:58PM +0800, Yijing Wang wrote: quoted Replace list_for_each() + pci_bus_b() with the simpler
list_for_each_entry().
Signed-off-by: Yijing Wang <redacted>
I applied all six of these (please include a 0/6 cover letter in the
future; that's a nice place to note that I applied things) to
pci/list-for-each-entry for v3.15, thanks!
Thanks, I will add cover letter in the next time, sorry.
quoted ---
drivers/pci/hotplug/acpiphp_glue.c | 6 +++---
1 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/drivers/pci/hotplug/acpiphp_glue.c b/drivers/pci/hotplug/acpiphp_glue.c
index cd929ae..aee6a0a 100644
--- a/drivers/pci/hotplug/acpiphp_glue.c
+++ b/drivers/pci/hotplug/acpiphp_glue.c @@ -450,7 +450,7 @@ static void cleanup_bridge(struct acpiphp_bridge *bridge)
*/
static unsigned char acpiphp_max_busnr ( struct pci_bus * bus )
{
- struct list_head * tmp ;
+ struct pci_bus * tmp ;
unsigned char max , n ;
/* @@ -463,8 +463,8 @@ static unsigned char acpiphp_max_busnr(struct pci_bus *bus)
*/
max = bus -> busn_res . start ;
- list_for_each ( tmp , & bus -> children ) {
- n = pci_bus_max_busnr ( pci_bus_b ( tmp ));
+ list_for_each_entry ( tmp , & bus -> children , node ) {
+ n = pci_bus_max_busnr ( tmp );
if ( n > max )
max = n ;
} --
1.7.1
--
Thanks!
Yijing