Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/806990/?format=api
{ "id": 806990, "url": "http://patchwork.ozlabs.org/api/patches/806990/?format=api", "web_url": "http://patchwork.ozlabs.org/project/linuxppc-dev/patch/20170829073404.8885-5-aik@ozlabs.ru/", "project": { "id": 2, "url": "http://patchwork.ozlabs.org/api/projects/2/?format=api", "name": "Linux PPC development", "link_name": "linuxppc-dev", "list_id": "linuxppc-dev.lists.ozlabs.org", "list_email": "linuxppc-dev@lists.ozlabs.org", "web_url": "https://github.com/linuxppc/wiki/wiki", "scm_url": "https://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux.git", "webscm_url": "https://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux.git/", "list_archive_url": "https://lore.kernel.org/linuxppc-dev/", "list_archive_url_format": "https://lore.kernel.org/linuxppc-dev/{}/", "commit_url_format": "https://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux.git/commit/?id={}" }, "msgid": "<20170829073404.8885-5-aik@ozlabs.ru>", "list_archive_url": "https://lore.kernel.org/linuxppc-dev/20170829073404.8885-5-aik@ozlabs.ru/", "date": "2017-08-29T07:34:02", "name": "[kernel,v2,4/6] powerpc/eeh: Remove unnecessary config_addr from eeh_dev", "commit_ref": "405b33a76d26e426276c088b38dc7efba7538ff2", "pull_url": null, "state": "accepted", "archived": false, "hash": "985d45249198d3955c16faca732089eda2ada77e", "submitter": { "id": 7621, "url": "http://patchwork.ozlabs.org/api/people/7621/?format=api", "name": "Alexey Kardashevskiy", "email": "aik@ozlabs.ru" }, "delegate": null, "mbox": "http://patchwork.ozlabs.org/project/linuxppc-dev/patch/20170829073404.8885-5-aik@ozlabs.ru/mbox/", "series": [ { "id": 322, "url": "http://patchwork.ozlabs.org/api/series/322/?format=api", "web_url": "http://patchwork.ozlabs.org/project/linuxppc-dev/list/?series=322", "date": "2017-08-29T07:34:01", "name": "powerpc/eeh: Some cleanups", "version": 2, "mbox": "http://patchwork.ozlabs.org/series/322/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/806990/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/806990/checks/", "tags": {}, "related": [], "headers": { "Return-Path": "<linuxppc-dev-bounces+patchwork-incoming=ozlabs.org@lists.ozlabs.org>", "X-Original-To": [ "patchwork-incoming@ozlabs.org", "linuxppc-dev@lists.ozlabs.org" ], "Delivered-To": [ "patchwork-incoming@ozlabs.org", "linuxppc-dev@lists.ozlabs.org" ], "Received": [ "from lists.ozlabs.org (lists.ozlabs.org [IPv6:2401:3900:2:1::3])\n\t(using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3xhL716Jz7z9ryQ\n\tfor <patchwork-incoming@ozlabs.org>;\n\tTue, 29 Aug 2017 17:36:45 +1000 (AEST)", "from lists.ozlabs.org (lists.ozlabs.org [IPv6:2401:3900:2:1::3])\n\tby lists.ozlabs.org (Postfix) with ESMTP id 3xhL714t23zDqmg\n\tfor <patchwork-incoming@ozlabs.org>;\n\tTue, 29 Aug 2017 17:36:45 +1000 (AEST)", "from ozlabs.ru (ozlabs.ru [107.173.13.209])\n\tby lists.ozlabs.org (Postfix) with ESMTP id 3xhL471GFyzDqTt\n\tfor <linuxppc-dev@lists.ozlabs.org>;\n\tTue, 29 Aug 2017 17:34:15 +1000 (AEST)", "from vpl1.ozlabs.ibm.com (localhost [IPv6:::1])\n\tby ozlabs.ru (Postfix) with ESMTP id 44E2B3A60055;\n\tTue, 29 Aug 2017 03:35:21 -0400 (EDT)" ], "From": "Alexey Kardashevskiy <aik@ozlabs.ru>", "To": "linuxppc-dev@lists.ozlabs.org", "Subject": "[PATCH kernel v2 4/6] powerpc/eeh: Remove unnecessary config_addr\n\tfrom eeh_dev", "Date": "Tue, 29 Aug 2017 17:34:02 +1000", "Message-Id": "<20170829073404.8885-5-aik@ozlabs.ru>", "X-Mailer": "git-send-email 2.11.0", "In-Reply-To": "<20170829073404.8885-1-aik@ozlabs.ru>", "References": "<20170829073404.8885-1-aik@ozlabs.ru>", "X-BeenThere": "linuxppc-dev@lists.ozlabs.org", "X-Mailman-Version": "2.1.23", "Precedence": "list", "List-Id": "Linux on PowerPC Developers Mail List\n\t<linuxppc-dev.lists.ozlabs.org>", "List-Unsubscribe": "<https://lists.ozlabs.org/options/linuxppc-dev>,\n\t<mailto:linuxppc-dev-request@lists.ozlabs.org?subject=unsubscribe>", "List-Archive": "<http://lists.ozlabs.org/pipermail/linuxppc-dev/>", "List-Post": "<mailto:linuxppc-dev@lists.ozlabs.org>", "List-Help": "<mailto:linuxppc-dev-request@lists.ozlabs.org?subject=help>", "List-Subscribe": "<https://lists.ozlabs.org/listinfo/linuxppc-dev>,\n\t<mailto:linuxppc-dev-request@lists.ozlabs.org?subject=subscribe>", "Cc": "Alexey Kardashevskiy <aik@ozlabs.ru>,\n\tAndrew Donnellan <andrew.donnellan@au1.ibm.com>", "Errors-To": "linuxppc-dev-bounces+patchwork-incoming=ozlabs.org@lists.ozlabs.org", "Sender": "\"Linuxppc-dev\"\n\t<linuxppc-dev-bounces+patchwork-incoming=ozlabs.org@lists.ozlabs.org>" }, "content": "The eeh_dev struct hold a config space address of an associated node\nand the very same address is also stored in the pci_dn struct which\nis always present during the eeh_dev lifetime.\n\nThis uses bus:devfn directly from pci_dn instead of cached and packed\nconfig_addr.\n\nSince config_addr is made from device's bus:dev.fn, there is no point\nin keeping it in the debugfs either so remove that too.\n\nSigned-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>\n---\nChangelog:\nv2:\n* fixed pseries platform\n---\n arch/powerpc/include/asm/eeh.h | 1 -\n arch/powerpc/kernel/eeh_pe.c | 42 ++++++++++++++--------------\n arch/powerpc/kernel/eeh_sysfs.c | 3 --\n arch/powerpc/platforms/powernv/eeh-powernv.c | 9 +++---\n arch/powerpc/platforms/pseries/eeh_pseries.c | 2 --\n 5 files changed, 26 insertions(+), 31 deletions(-)", "diff": "diff --git a/arch/powerpc/include/asm/eeh.h b/arch/powerpc/include/asm/eeh.h\nindex 777d37aa0a7f..9847ae3a12d1 100644\n--- a/arch/powerpc/include/asm/eeh.h\n+++ b/arch/powerpc/include/asm/eeh.h\n@@ -131,7 +131,6 @@ static inline bool eeh_pe_passed(struct eeh_pe *pe)\n struct eeh_dev {\n \tint mode;\t\t\t/* EEH mode\t\t\t*/\n \tint class_code;\t\t\t/* Class code of the device\t*/\n-\tint config_addr;\t\t/* Config address\t\t*/\n \tint pe_config_addr;\t\t/* PE config address\t\t*/\n \tu32 config_space[16];\t\t/* Saved PCI config space\t*/\n \tint pcix_cap;\t\t\t/* Saved PCIx capability\t*/\ndiff --git a/arch/powerpc/kernel/eeh_pe.c b/arch/powerpc/kernel/eeh_pe.c\nindex 419c3f07afd5..2e8d1b2b5af4 100644\n--- a/arch/powerpc/kernel/eeh_pe.c\n+++ b/arch/powerpc/kernel/eeh_pe.c\n@@ -340,11 +340,12 @@ int eeh_add_to_parent_pe(struct eeh_dev *edev)\n {\n \tstruct eeh_pe *pe, *parent;\n \tstruct pci_dn *pdn = eeh_dev_to_pdn(edev);\n+\tint config_addr = (pdn->busno << 8) | (pdn->devfn);\n \n \t/* Check if the PE number is valid */\n \tif (!eeh_has_flag(EEH_VALID_PE_ZERO) && !edev->pe_config_addr) {\n \t\tpr_err(\"%s: Invalid PE#0 for edev 0x%x on PHB#%x\\n\",\n-\t\t __func__, edev->config_addr, pdn->phb->global_number);\n+\t\t __func__, config_addr, pdn->phb->global_number);\n \t\treturn -EINVAL;\n \t}\n \n@@ -354,8 +355,7 @@ int eeh_add_to_parent_pe(struct eeh_dev *edev)\n \t * PE should be composed of PCI bus and its subordinate\n \t * components.\n \t */\n-\tpe = eeh_pe_get(pdn->phb, edev->pe_config_addr,\n-\t\t\tedev->config_addr);\n+\tpe = eeh_pe_get(pdn->phb, edev->pe_config_addr, config_addr);\n \tif (pe && !(pe->type & EEH_PE_INVALID)) {\n \t\t/* Mark the PE as type of PCI bus */\n \t\tpe->type = EEH_PE_BUS;\n@@ -365,10 +365,10 @@ int eeh_add_to_parent_pe(struct eeh_dev *edev)\n \t\tlist_add_tail(&edev->list, &pe->edevs);\n \t\tpr_debug(\"EEH: Add %04x:%02x:%02x.%01x to Bus PE#%x\\n\",\n \t\t\t pdn->phb->global_number,\n-\t\t\tedev->config_addr >> 8,\n-\t\t\tPCI_SLOT(edev->config_addr & 0xFF),\n-\t\t\tPCI_FUNC(edev->config_addr & 0xFF),\n-\t\t\tpe->addr);\n+\t\t\t pdn->busno,\n+\t\t\t PCI_SLOT(pdn->devfn),\n+\t\t\t PCI_FUNC(pdn->devfn),\n+\t\t\t pe->addr);\n \t\treturn 0;\n \t} else if (pe && (pe->type & EEH_PE_INVALID)) {\n \t\tlist_add_tail(&edev->list, &pe->edevs);\n@@ -388,10 +388,10 @@ int eeh_add_to_parent_pe(struct eeh_dev *edev)\n \t\tpr_debug(\"EEH: Add %04x:%02x:%02x.%01x to Device \"\n \t\t\t \"PE#%x, Parent PE#%x\\n\",\n \t\t\t pdn->phb->global_number,\n-\t\t\tedev->config_addr >> 8,\n- PCI_SLOT(edev->config_addr & 0xFF),\n- PCI_FUNC(edev->config_addr & 0xFF),\n-\t\t\tpe->addr, pe->parent->addr);\n+\t\t\t pdn->busno,\n+\t\t\t PCI_SLOT(pdn->devfn),\n+\t\t\t PCI_FUNC(pdn->devfn),\n+\t\t\t pe->addr, pe->parent->addr);\n \t\treturn 0;\n \t}\n \n@@ -405,7 +405,7 @@ int eeh_add_to_parent_pe(struct eeh_dev *edev)\n \t\treturn -ENOMEM;\n \t}\n \tpe->addr\t= edev->pe_config_addr;\n-\tpe->config_addr\t= edev->config_addr;\n+\tpe->config_addr\t= config_addr;\n \n \t/*\n \t * Put the new EEH PE into hierarchy tree. If the parent\n@@ -436,9 +436,9 @@ int eeh_add_to_parent_pe(struct eeh_dev *edev)\n \tpr_debug(\"EEH: Add %04x:%02x:%02x.%01x to \"\n \t\t \"Device PE#%x, Parent PE#%x\\n\",\n \t\t pdn->phb->global_number,\n-\t\t edev->config_addr >> 8,\n-\t\t PCI_SLOT(edev->config_addr & 0xFF),\n-\t\t PCI_FUNC(edev->config_addr & 0xFF),\n+\t\t pdn->busno,\n+\t\t PCI_SLOT(pdn->devfn),\n+\t\t PCI_FUNC(pdn->devfn),\n \t\t pe->addr, pe->parent->addr);\n \n \treturn 0;\n@@ -462,9 +462,9 @@ int eeh_rmv_from_parent_pe(struct eeh_dev *edev)\n \tif (!edev->pe) {\n \t\tpr_debug(\"%s: No PE found for device %04x:%02x:%02x.%01x\\n\",\n \t\t\t __func__, pdn->phb->global_number,\n-\t\t\t edev->config_addr >> 8,\n-\t\t\t PCI_SLOT(edev->config_addr & 0xFF),\n-\t\t\t PCI_FUNC(edev->config_addr & 0xFF));\n+\t\t\t pdn->busno,\n+\t\t\t PCI_SLOT(pdn->devfn),\n+\t\t\t PCI_FUNC(pdn->devfn));\n \t\treturn -EEXIST;\n \t}\n \n@@ -725,9 +725,9 @@ static void eeh_bridge_check_link(struct eeh_dev *edev)\n \n \tpr_debug(\"%s: Check PCIe link for %04x:%02x:%02x.%01x ...\\n\",\n \t\t __func__, pdn->phb->global_number,\n-\t\t edev->config_addr >> 8,\n-\t\t PCI_SLOT(edev->config_addr & 0xFF),\n-\t\t PCI_FUNC(edev->config_addr & 0xFF));\n+\t\t pdn->busno,\n+\t\t PCI_SLOT(pdn->devfn),\n+\t\t PCI_FUNC(pdn->devfn));\n \n \t/* Check slot status */\n \tcap = edev->pcie_cap;\ndiff --git a/arch/powerpc/kernel/eeh_sysfs.c b/arch/powerpc/kernel/eeh_sysfs.c\nindex 1ceecdda810b..797549289798 100644\n--- a/arch/powerpc/kernel/eeh_sysfs.c\n+++ b/arch/powerpc/kernel/eeh_sysfs.c\n@@ -51,7 +51,6 @@ static ssize_t eeh_show_##_name(struct device *dev, \\\n static DEVICE_ATTR(_name, S_IRUGO, eeh_show_##_name, NULL);\n \n EEH_SHOW_ATTR(eeh_mode, mode, \"0x%x\");\n-EEH_SHOW_ATTR(eeh_config_addr, config_addr, \"0x%x\");\n EEH_SHOW_ATTR(eeh_pe_config_addr, pe_config_addr, \"0x%x\");\n \n static ssize_t eeh_pe_state_show(struct device *dev,\n@@ -103,7 +102,6 @@ void eeh_sysfs_add_device(struct pci_dev *pdev)\n \t\treturn;\n \n \trc += device_create_file(&pdev->dev, &dev_attr_eeh_mode);\n-\trc += device_create_file(&pdev->dev, &dev_attr_eeh_config_addr);\n \trc += device_create_file(&pdev->dev, &dev_attr_eeh_pe_config_addr);\n \trc += device_create_file(&pdev->dev, &dev_attr_eeh_pe_state);\n \n@@ -128,7 +126,6 @@ void eeh_sysfs_remove_device(struct pci_dev *pdev)\n \t}\n \n \tdevice_remove_file(&pdev->dev, &dev_attr_eeh_mode);\n-\tdevice_remove_file(&pdev->dev, &dev_attr_eeh_config_addr);\n \tdevice_remove_file(&pdev->dev, &dev_attr_eeh_pe_config_addr);\n \tdevice_remove_file(&pdev->dev, &dev_attr_eeh_pe_state);\n \ndiff --git a/arch/powerpc/platforms/powernv/eeh-powernv.c b/arch/powerpc/platforms/powernv/eeh-powernv.c\nindex 552b0cd4e8ba..8864065eba22 100644\n--- a/arch/powerpc/platforms/powernv/eeh-powernv.c\n+++ b/arch/powerpc/platforms/powernv/eeh-powernv.c\n@@ -352,6 +352,7 @@ static void *pnv_eeh_probe(struct pci_dn *pdn, void *data)\n \tstruct eeh_dev *edev = pdn_to_eeh_dev(pdn);\n \tuint32_t pcie_flags;\n \tint ret;\n+\tint config_addr = (pdn->busno << 8) | (pdn->devfn);\n \n \t/*\n \t * When probing the root bridge, which doesn't have any\n@@ -386,8 +387,7 @@ static void *pnv_eeh_probe(struct pci_dn *pdn, void *data)\n \t\t}\n \t}\n \n-\tedev->config_addr = (pdn->busno << 8) | (pdn->devfn);\n-\tedev->pe_config_addr = phb->ioda.pe_rmap[edev->config_addr];\n+\tedev->pe_config_addr = phb->ioda.pe_rmap[config_addr];\n \n \t/* Create PE */\n \tret = eeh_add_to_parent_pe(edev);\n@@ -1699,6 +1699,7 @@ static int pnv_eeh_restore_config(struct pci_dn *pdn)\n \tstruct eeh_dev *edev = pdn_to_eeh_dev(pdn);\n \tstruct pnv_phb *phb;\n \ts64 ret;\n+\tint config_addr = (pdn->busno << 8) | (pdn->devfn);\n \n \tif (!edev)\n \t\treturn -EEXIST;\n@@ -1715,12 +1716,12 @@ static int pnv_eeh_restore_config(struct pci_dn *pdn)\n \t} else {\n \t\tphb = pdn->phb->private_data;\n \t\tret = opal_pci_reinit(phb->opal_id,\n-\t\t\t\t OPAL_REINIT_PCI_DEV, edev->config_addr);\n+\t\t\t\t OPAL_REINIT_PCI_DEV, config_addr);\n \t}\n \n \tif (ret) {\n \t\tpr_warn(\"%s: Can't reinit PCI dev 0x%x (%lld)\\n\",\n-\t\t\t__func__, edev->config_addr, ret);\n+\t\t\t__func__, config_addr, ret);\n \t\treturn -EIO;\n \t}\n \ndiff --git a/arch/powerpc/platforms/pseries/eeh_pseries.c b/arch/powerpc/platforms/pseries/eeh_pseries.c\nindex 04c8c1827549..6b812ad990e4 100644\n--- a/arch/powerpc/platforms/pseries/eeh_pseries.c\n+++ b/arch/powerpc/platforms/pseries/eeh_pseries.c\n@@ -254,7 +254,6 @@ static void *pseries_eeh_probe(struct pci_dn *pdn, void *data)\n \tret = eeh_ops->set_option(&pe, EEH_OPT_ENABLE);\n \tif (!ret) {\n \t\t/* Retrieve PE address */\n-\t\tedev->config_addr = (pdn->busno << 16) | (pdn->devfn << 8);\n \t\tedev->pe_config_addr = eeh_ops->get_pe_addr(&pe);\n \t\tpe.addr = edev->pe_config_addr;\n \n@@ -279,7 +278,6 @@ static void *pseries_eeh_probe(struct pci_dn *pdn, void *data)\n \t\t\t/* This device doesn't support EEH, but it may have an\n \t\t\t * EEH parent, in which case we mark it as supported.\n \t\t\t */\n-\t\t\tedev->config_addr = pdn_to_eeh_dev(pdn->parent)->config_addr;\n \t\t\tedev->pe_config_addr = pdn_to_eeh_dev(pdn->parent)->pe_config_addr;\n \t\t\teeh_add_to_parent_pe(edev);\n \t\t}\n", "prefixes": [ "kernel", "v2", "4/6" ] }