qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [PATCH v11 5/5] pcie/aer: use fw device path as fallback fo


From: Isaku Yamahata
Subject: [Qemu-devel] [PATCH v11 5/5] pcie/aer: use fw device path as fallback for aer injection command
Date: Fri, 24 Dec 2010 12:14:16 +0900

pcie_aer_inject command: When qdev id failed, try fw device path as
fallback.

Signed-off-by: Isaku Yamahata <address@hidden>
---
 hmp-commands.hx |    7 ++++++-
 hw/pcie_aer.c   |   12 ++++++++----
 2 files changed, 14 insertions(+), 5 deletions(-)

diff --git a/hmp-commands.hx b/hmp-commands.hx
index 8d84ddc..928ded4 100644
--- a/hmp-commands.hx
+++ b/hmp-commands.hx
@@ -878,12 +878,17 @@ ETEXI
                      "id:s,error_status:s,"
                      "header0:i?,header1:i?,header2:i?,header3:i?,"
                      "prefix0:i?,prefix1:i?,prefix2:i?,prefix3:i?",
-        .params     = "[-a] [-c] id "
+        .params     = "[-a] [-c] [id|pci_fw_dev_path] "
                       "<error_status> [<tlp header> [<tlp header prefix>]]",
         .help       = "inject pcie aer error\n\t\t\t"
                      " -a for advisory non fatal error\n\t\t\t"
                      " -c for correctable error\n\t\t\t"
                       "<id> = qdev device id\n\t\t\t"
+                      "<pci_fw_dev_path> = fw device path to pci device"
+                     "\n\t\t\t/pci@<ioport or mmio(hex)>"
+                      "[<fw_name>]@<slot(hex)>,<func(hex)>/.../"
+                      "[<fw_name>]@<slot(hex)>,<func(hex)>\n\t\t\t"
+                     "e.g. /address@hidden/@1,1\n\t\t\t"
                       "<error_status> = error string or 32bit\n\t\t\t"
                       "<tlb header> = 32bit x 4\n\t\t\t"
                       "<tlb header prefix> = 32bit x 4",
diff --git a/hw/pcie_aer.c b/hw/pcie_aer.c
index 6e653dd..6bad79c 100644
--- a/hw/pcie_aer.c
+++ b/hw/pcie_aer.c
@@ -969,10 +969,14 @@ int do_pcie_aer_inejct_error(Monitor *mon,
 
     ret = pci_qdev_find_device(id, &dev);
     if (ret < 0) {
-        monitor_printf(mon,
-                       "id or pci device path is invalid or device not "
-                       "found. %s\n", id);
-        return ret;
+        /* fall back to fw device path */
+        ret = pci_parse_fw_dev_path(id, &dev);
+        if (ret < 0) {
+            monitor_printf(mon,
+                           "id or pci device path is invalid or device not "
+                           "found. %s\n", id);
+            return ret;
+        }
     }
     if (!pci_is_express(dev)) {
         monitor_printf(mon, "the device doesn't support pci express. %s\n",
-- 
1.7.1.1




reply via email to

[Prev in Thread] Current Thread [Next in Thread]