| From 89ec3dcf17fd3fa009ecf8faaba36828dd6bc416 Mon Sep 17 00:00:00 2001 |
| From: Ricardo Ribalda Delgado <ricardo.ribalda@gmail.com> |
| Date: Wed, 27 Aug 2014 14:57:57 +0200 |
| Subject: PCI: Generate uppercase hex for modalias interface class |
| |
| From: Ricardo Ribalda Delgado <ricardo.ribalda@gmail.com> |
| |
| commit 89ec3dcf17fd3fa009ecf8faaba36828dd6bc416 upstream. |
| |
| Some implementations of modprobe fail to load the driver for a PCI device |
| automatically because the "interface" part of the modalias from the kernel |
| is lowercase, and the modalias from file2alias is uppercase. |
| |
| The "interface" is the low-order byte of the Class Code, defined in PCI |
| r3.0, Appendix D. Most interface types defined in the spec do not use |
| alpha characters, so they won't be affected. For example, 00h, 01h, 10h, |
| 20h, etc. are unaffected. |
| |
| Print the "interface" byte of the Class Code in uppercase hex, as we |
| already do for the Vendor ID, Device ID, Class, etc. |
| |
| [bhelgaas: changelog] |
| Signed-off-by: Ricardo Ribalda Delgado <ricardo.ribalda@gmail.com> |
| Signed-off-by: Bjorn Helgaas <bhelgaas@google.com> |
| Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/pci/pci-sysfs.c | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| --- a/drivers/pci/pci-sysfs.c |
| +++ b/drivers/pci/pci-sysfs.c |
| @@ -175,7 +175,7 @@ static ssize_t modalias_show(struct devi |
| { |
| struct pci_dev *pci_dev = to_pci_dev(dev); |
| |
| - return sprintf(buf, "pci:v%08Xd%08Xsv%08Xsd%08Xbc%02Xsc%02Xi%02x\n", |
| + return sprintf(buf, "pci:v%08Xd%08Xsv%08Xsd%08Xbc%02Xsc%02Xi%02X\n", |
| pci_dev->vendor, pci_dev->device, |
| pci_dev->subsystem_vendor, pci_dev->subsystem_device, |
| (u8)(pci_dev->class >> 16), (u8)(pci_dev->class >> 8), |