From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from e7.ny.us.ibm.com (e7.ny.us.ibm.com [32.97.182.137]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client CN "e7.ny.us.ibm.com", Issuer "GeoTrust SSL CA" (not verified)) by ozlabs.org (Postfix) with ESMTPS id 54CCE2C00A5 for ; Wed, 15 May 2013 13:35:09 +1000 (EST) Received: from /spool/local by e7.ny.us.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Tue, 14 May 2013 23:35:06 -0400 Received: from d01relay01.pok.ibm.com (d01relay01.pok.ibm.com [9.56.227.233]) by d01dlp01.pok.ibm.com (Postfix) with ESMTP id 1007738C804A for ; Tue, 14 May 2013 23:35:05 -0400 (EDT) Received: from d01av03.pok.ibm.com (d01av03.pok.ibm.com [9.56.224.217]) by d01relay01.pok.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id r4F3Z5nD307776 for ; Tue, 14 May 2013 23:35:05 -0400 Received: from d01av03.pok.ibm.com (loopback [127.0.0.1]) by d01av03.pok.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id r4F3Z3nY006083 for ; Wed, 15 May 2013 00:35:05 -0300 From: Gavin Shan To: linuxppc-dev@lists.ozlabs.org Subject: [PATCH v1 00/22] powerpc/eeh: Enhance converting EEH dev Date: Wed, 15 May 2013 11:34:36 +0800 Message-Id: <1368588898-16224-1-git-send-email-shangw@linux.vnet.ibm.com> Cc: Gavin Shan List-Id: Linux on PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Initially, the series of patches is built based on 3.10.RC1 and the patchset doesn't intend to enable EEH functionality for PHB3 for now. The series of patches intends to support EEH for PowerNV platform. The EEH core already supports multiple probe methods: device tree nodes and PCI devices. For EEH on PowerNV, we're using PCI devices to do EEH probe, which is different from the probe type used on pSeries platform. Another point I should mention is that the overall EEH would be split up to 3 layers: EEH core, platform layer and I/O chip layer. It would make the EEH on PowerNV platform can achieve more flexibility and support more I/O chips in future. Besides, the EEH event can be produced by detecting 0xFF's from reading PCI config or I/O registers, or from interrupts dedicated for EEH error reporting. So we have to handle the EEH error interrupts. On the other hand, the EEH events will be processed by EEH core like pSeries platform does. We don't have existing utility (e.g. errinjct) to test the patchset. In order to conduct the test, you need copy over the eeh-debug.c to PowerNV platform directory and change the makefile accordingly. Please contact me to get the eeh-debug.c if you want run the test case. After that, you need write P7IOC registers explicitly to trigger frozen PE or fenced PHB explicitly as the following example shows. The patchset has been verified on Firebird-L machine where I have 2 Emulex ethernet card on PHB#6. I keep pinging to one of the ethernet cards from external and then use following commands to produce frozen PE or fenced PHB errors. Eventually, the errors can be recovered and the ethernet card is reachable after temporary connection lost. Trigger frozen PE: echo "0xD10 0x0000000002000000" > /proc/IODA/PHB6/REG sleep 1 echo "0xD10 0x0000000000000000" > /proc/IODA/PHB6/REG Trigger fenced PHB: echo "0xD10 0x8000000000000000" > /proc/IODA/PHB6/REG --- arch/powerpc/include/asm/eeh.h | 29 ++- arch/powerpc/include/asm/eeh_event.h | 6 +- arch/powerpc/include/asm/opal.h | 110 ++++- arch/powerpc/kernel/rtas_pci.c | 3 +- arch/powerpc/platforms/powernv/Makefile | 1 + arch/powerpc/platforms/powernv/eeh-ioda.c | 519 ++++++++++++++++++++++++ arch/powerpc/platforms/powernv/eeh-powernv.c | 380 +++++++++++++++++ arch/powerpc/platforms/powernv/opal-wrappers.S | 2 + arch/powerpc/platforms/powernv/opal.c | 6 + arch/powerpc/platforms/powernv/pci-err.c | 475 ++++++++++++++++++++++ arch/powerpc/platforms/powernv/pci-ioda.c | 17 +- arch/powerpc/platforms/powernv/pci-p5ioc2.c | 6 +- arch/powerpc/platforms/powernv/pci.c | 41 ++- arch/powerpc/platforms/powernv/pci.h | 22 + arch/powerpc/platforms/pseries/eeh.c | 61 +++- arch/powerpc/platforms/pseries/eeh_dev.c | 35 ++ arch/powerpc/platforms/pseries/eeh_event.c | 12 +- arch/powerpc/platforms/pseries/eeh_pe.c | 31 ++- 18 files changed, 1712 insertions(+), 44 deletions(-) Thanks, Gavin