pci.rc : coldplug fix
hello,
this is the first time I write here :)
I discovered hotplog recently because devfs is no longer a "standard"
the first thing I tried is coldplug and..... nothing worked..... I looked into the sources and find the problem in pci.rc the pci.rc snapshot included here solve this issue and now coldplug work on my pc.
It has the advantage of using only /proc and awk to generate the pciID/vendorID
best regards
[....]
pci_boot_events ()
{
#
# FIXME on 2.5, /sys/bus/pci/devices gives some of this
# information, and more can be gotten with 'lspci'.
# don't expect pcimodules to exist!!
#
LISTER=type -p pcimodules
if [ "$LISTER" = "" -o ! -f /proc/bus/pci/devices -o ! -x pci.agent ]; then
echo $"** can't synthesize pci hotplug events"
return
fi
# make sure the pci agent will run
export ACTION=add
export PCI_CLASS=0
export PCI_ID=0:0
export PCI_SLOT=0:0.0
export PCI_SUBSYS_ID=0:0
# these notifications will be handled by pcimodules
gawk -F' ' '{printf("%s:%s\n",toupper(substr($2,0,4)), toupper(substr($2,5,4)) )}' /proc/bus/pci/devices | while read PCI_ID; do
/sbin/hotplug pci
done
}
[....]
MALET JL a écrit :
Quoted 35 lines
hello,
this is the first time I write here :)
I discovered hotplog recently because devfs is no longer a "standard" the first thing I tried is coldplug and..... nothing worked..... I looked into the sources and find the problem in pci.rc
the pci.rc snapshot included here solve this issue and now coldplug work on my pc.
It has the advantage of using only /proc and awk to generate the pciID/vendorID
best regards------------------------------------------------------------------------
[....]
pci_boot_events()
{
#
# FIXME on 2.5,/sys/bus/pci/devicesgives some of this
# information, and more can be gotten with 'lspci'.
# don't expect pcimodules to exist!!
#
LISTER=type -p pcimodules
if [ "$LISTER" = "" -o ! -f/proc/bus/pci/devices-o ! -x pci.agent ]; then
echo $"** can't synthesize pci hotplug events"
return
fi# make sure the pci agent will run export ACTIONd export PCI_CLASS=0 export PCI_ID=0:0 export PCI_SLOT=0:0.0 export PCI_SUBSYS_ID=0:0
Quoted 10 lines
# these notifications will be handled by pcimodules gawk -F' ' '{printf("%s:%s\n",toupper(substr($2,0,4)), toupper(substr($2,5,4)) )}' /proc/bus/pci/devices | while read PCI_ID; do /sbin/hotplug pci done }[....]
now I see another modification that can reduce the code :
pci_boot_events ()
{
# make sure the pci agent will run
export ACTIONd
export PCI_CLASS=0
export PCI_ID=0:0
export PCI_SLOT=0:0.0
export PCI_SUBSYS_ID=0:0 # these notifications will be handled by pcimodules
gawk -F' ' '{printf("%s:%s\n",toupper(substr($2,0,4)), toupper(substr($2,5,4)) )}' /proc/bus/pci/devices |
while read PCI_ID; do
/sbin/hotplug pci
done
}notice the fact that
1) sysfs isn't needed : use of /proc/bus/*
2) lspci isn't needed too : same information can be gathered in /proc/bus/pci/devices
3) pcimodules is furthermore not required
-------------------------------------------------------
This SF.net email is sponsored by: IBM Linux Tutorials. Become an expert in LINUX or just sharpen your skills. Sign up for IBM's Free Linux Tutorials. Learn everything from the bash shell to sys admin. Click now! http://ads.osdn.com/?ad_id78&alloc_id371&opÌk
_______________________________________________
Linux-hotplug-devel mailing list http://linux-hotplug.sourceforge.net
[email protected]
https://lists.sourceforge.net/lists/listinfo/linux-hotplug-devel