* Do we need acpiphp_sanitize_bus() in acpiphp?
@ 2012-08-15 14:13 Yijing Wang
2012-08-15 14:27 ` Bjorn Helgaas
0 siblings, 1 reply; 3+ messages in thread
From: Yijing Wang @ 2012-08-15 14:13 UTC (permalink / raw)
To: linux-pci, Bjorn Helgaas, Yinghai Lu
Hi all,
I have some confusion on acpiphp_sanitize_bus() functions.If I understand wrong about this, correct me,thanks your help.
I think there are three problems in this function:
1、Use list_for_each_entry here is not safe, because pci_stop_and_remove_bus_device() will remove the device from bus.
2、If assign resources fail after hot-add a device, the resource will reset to zero, in reset_resource(), res->start = 0,
res->end =0, res->end = 0.
3、I think leave the fail pci devices in the system is better rather than remove them, so we can see all pci devices
by lspci after hot-add, what about your opinion?
thanks!
Yijing.
/*
* Remove devices for which we could not assign resources, call
* arch specific code to fix-up the bus
*/
static void acpiphp_sanitize_bus(struct pci_bus *bus)
{
struct pci_dev *dev;
int i;
unsigned long type_mask = IORESOURCE_IO | IORESOURCE_MEM;
list_for_each_entry(dev, &bus->devices, bus_list) {
for (i=0; i<PCI_BRIDGE_RESOURCES; i++) {
struct resource *res = &dev->resource[i];
if ((res->flags & type_mask) && !res->start &&
res->end) {
/* Could not assign a required resources
* for this device, remove it */
pci_stop_and_remove_bus_device(dev);
break;
}
}
}
}
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: Do we need acpiphp_sanitize_bus() in acpiphp?
2012-08-15 14:13 Do we need acpiphp_sanitize_bus() in acpiphp? Yijing Wang
@ 2012-08-15 14:27 ` Bjorn Helgaas
2012-08-15 14:52 ` Yijing Wang
0 siblings, 1 reply; 3+ messages in thread
From: Bjorn Helgaas @ 2012-08-15 14:27 UTC (permalink / raw)
To: Yijing Wang; +Cc: linux-pci, Yinghai Lu
On Wed, Aug 15, 2012 at 7:13 AM, Yijing Wang <wangyijing0307@gmail.com> wrote:
> Hi all,
> I have some confusion on acpiphp_sanitize_bus() functions.If I understand wrong about this, correct me,thanks your help.
> I think there are three problems in this function:
> 1、Use list_for_each_entry here is not safe, because pci_stop_and_remove_bus_device() will remove the device from bus.
> 2、If assign resources fail after hot-add a device, the resource will reset to zero, in reset_resource(), res->start = 0,
> res->end =0, res->end = 0.
> 3、I think leave the fail pci devices in the system is better rather than remove them, so we can see all pci devices
> by lspci after hot-add, what about your opinion?
These sound like reasonable concerns. The best thing to do is to
propose patches (separate ones for each logical issue). Then we can
review a concrete change and apply it if appropriate.
> /*
> * Remove devices for which we could not assign resources, call
> * arch specific code to fix-up the bus
> */
> static void acpiphp_sanitize_bus(struct pci_bus *bus)
> {
> struct pci_dev *dev;
> int i;
> unsigned long type_mask = IORESOURCE_IO | IORESOURCE_MEM;
>
> list_for_each_entry(dev, &bus->devices, bus_list) {
> for (i=0; i<PCI_BRIDGE_RESOURCES; i++) {
> struct resource *res = &dev->resource[i];
> if ((res->flags & type_mask) && !res->start &&
> res->end) {
> /* Could not assign a required resources
> * for this device, remove it */
> pci_stop_and_remove_bus_device(dev);
> break;
> }
> }
> }
> }
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: Do we need acpiphp_sanitize_bus() in acpiphp?
2012-08-15 14:27 ` Bjorn Helgaas
@ 2012-08-15 14:52 ` Yijing Wang
0 siblings, 0 replies; 3+ messages in thread
From: Yijing Wang @ 2012-08-15 14:52 UTC (permalink / raw)
To: Bjorn Helgaas; +Cc: linux-pci, Yinghai Lu
> On Wed, Aug 15, 2012 at 7:13 AM, Yijing Wang <wangyijing0307@gmail.com> wrote:
>> Hi all,
>> I have some confusion on acpiphp_sanitize_bus() functions.If I understand wrong about this, correct me,thanks your help.
>> I think there are three problems in this function:
>> 1、Use list_for_each_entry here is not safe, because pci_stop_and_remove_bus_device() will remove the device from bus.
>> 2、If assign resources fail after hot-add a device, the resource will reset to zero, in reset_resource(), res->start = 0,
>> res->end =0, res->end = 0.
>> 3、I think leave the fail pci devices in the system is better rather than remove them, so we can see all pci devices
>> by lspci after hot-add, what about your opinion?
>
> These sound like reasonable concerns. The best thing to do is to
> propose patches (separate ones for each logical issue). Then we can
> review a concrete change and apply it if appropriate.
>
Hi Bjorn,
Thanks for your comments!
You are right, I will provide some patches as soon.
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2012-08-15 14:49 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-08-15 14:13 Do we need acpiphp_sanitize_bus() in acpiphp? Yijing Wang
2012-08-15 14:27 ` Bjorn Helgaas
2012-08-15 14:52 ` Yijing Wang
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).