You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
powerpc/eeh: Cleanup comments in the EEH core
The EEH has been implemented on pSeries platform. The original
code looks a little bit nasty. The patch does cleanup on the
current EEH implementation so that it looks more clean.
* Duplicated comments have been removed from the corresponding
header files.
* Comments have been reorganized so that it looks more clean.
* The leading comments of functions are adjusted for a little
bit so that the result of "make pdfdocs" would be more
unified.
* Function definitions and calls have unified format as "xxx()".
That means the format "xxx ()" has been replaced by "xxx()".
* There're multiple functions implemented for resetting PE. The
position of those functions have been move around so that they
are adjacent to each other to reflect their relationship.
Signed-off-by: Gavin Shan <shangw@linux.vnet.ibm.com>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
This commit is contained in:
committed by
Benjamin Herrenschmidt
parent
b078766026
commit
cb3bc9d0de
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* eeh.h
|
||||
* Copyright (C) 2001 Dave Engebretsen & Todd Inglett IBM Corporation.
|
||||
* Copyright 2001-2012 IBM Corporation.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
@@ -40,8 +40,10 @@ extern int eeh_subsystem_enabled;
|
||||
#define EEH_MODE_RECOVERING (1<<3)
|
||||
#define EEH_MODE_IRQ_DISABLED (1<<4)
|
||||
|
||||
/* Max number of EEH freezes allowed before we consider the device
|
||||
* to be permanently disabled. */
|
||||
/*
|
||||
* Max number of EEH freezes allowed before we consider the device
|
||||
* to be permanently disabled.
|
||||
*/
|
||||
#define EEH_MAX_ALLOWED_FREEZES 5
|
||||
|
||||
void __init eeh_init(void);
|
||||
@@ -49,26 +51,8 @@ unsigned long eeh_check_failure(const volatile void __iomem *token,
|
||||
unsigned long val);
|
||||
int eeh_dn_check_failure(struct device_node *dn, struct pci_dev *dev);
|
||||
void __init pci_addr_cache_build(void);
|
||||
|
||||
/**
|
||||
* eeh_add_device_early
|
||||
* eeh_add_device_late
|
||||
*
|
||||
* Perform eeh initialization for devices added after boot.
|
||||
* Call eeh_add_device_early before doing any i/o to the
|
||||
* device (including config space i/o). Call eeh_add_device_late
|
||||
* to finish the eeh setup for this device.
|
||||
*/
|
||||
void eeh_add_device_tree_early(struct device_node *);
|
||||
void eeh_add_device_tree_late(struct pci_bus *);
|
||||
|
||||
/**
|
||||
* eeh_remove_device_recursive - undo EEH for device & children.
|
||||
* @dev: pci device to be removed
|
||||
*
|
||||
* As above, this removes the device; it also removes child
|
||||
* pci devices as well.
|
||||
*/
|
||||
void eeh_remove_bus_device(struct pci_dev *);
|
||||
|
||||
/**
|
||||
|
||||
@@ -47,92 +47,27 @@ extern int rtas_setup_phb(struct pci_controller *phb);
|
||||
|
||||
extern unsigned long pci_probe_only;
|
||||
|
||||
/* ---- EEH internal-use-only related routines ---- */
|
||||
#ifdef CONFIG_EEH
|
||||
|
||||
void pci_addr_cache_insert_device(struct pci_dev *dev);
|
||||
void pci_addr_cache_remove_device(struct pci_dev *dev);
|
||||
void pci_addr_cache_build(void);
|
||||
struct pci_dev *pci_get_device_by_addr(unsigned long addr);
|
||||
|
||||
/**
|
||||
* eeh_slot_error_detail -- record and EEH error condition to the log
|
||||
* @pdn: pci device node
|
||||
* @severity: EEH_LOG_TEMP_FAILURE or EEH_LOG_PERM_FAILURE
|
||||
*
|
||||
* Obtains the EEH error details from the RTAS subsystem,
|
||||
* and then logs these details with the RTAS error log system.
|
||||
*/
|
||||
#define EEH_LOG_TEMP_FAILURE 1
|
||||
#define EEH_LOG_PERM_FAILURE 2
|
||||
void eeh_slot_error_detail (struct pci_dn *pdn, int severity);
|
||||
|
||||
/**
|
||||
* rtas_pci_enable - enable IO transfers for this slot
|
||||
* @pdn: pci device node
|
||||
* @function: either EEH_THAW_MMIO or EEH_THAW_DMA
|
||||
*
|
||||
* Enable I/O transfers to this slot
|
||||
*/
|
||||
#define EEH_THAW_MMIO 2
|
||||
#define EEH_THAW_DMA 3
|
||||
int rtas_pci_enable(struct pci_dn *pdn, int function);
|
||||
|
||||
/**
|
||||
* rtas_set_slot_reset -- unfreeze a frozen slot
|
||||
* @pdn: pci device node
|
||||
*
|
||||
* Clear the EEH-frozen condition on a slot. This routine
|
||||
* does this by asserting the PCI #RST line for 1/8th of
|
||||
* a second; this routine will sleep while the adapter is
|
||||
* being reset.
|
||||
*
|
||||
* Returns a non-zero value if the reset failed.
|
||||
*/
|
||||
int rtas_set_slot_reset (struct pci_dn *);
|
||||
int eeh_wait_for_slot_status(struct pci_dn *pdn, int max_wait_msecs);
|
||||
|
||||
/**
|
||||
* eeh_restore_bars - Restore device configuration info.
|
||||
* @pdn: pci device node
|
||||
*
|
||||
* A reset of a PCI device will clear out its config space.
|
||||
* This routines will restore the config space for this
|
||||
* device, and is children, to values previously obtained
|
||||
* from the firmware.
|
||||
*/
|
||||
void eeh_restore_bars(struct pci_dn *);
|
||||
|
||||
/**
|
||||
* rtas_configure_bridge -- firmware initialization of pci bridge
|
||||
* @pdn: pci device node
|
||||
*
|
||||
* Ask the firmware to configure all PCI bridges devices
|
||||
* located behind the indicated node. Required after a
|
||||
* pci device reset. Does essentially the same hing as
|
||||
* eeh_restore_bars, but for brdges, and lets firmware
|
||||
* do the work.
|
||||
*/
|
||||
void rtas_configure_bridge(struct pci_dn *);
|
||||
|
||||
int rtas_write_config(struct pci_dn *, int where, int size, u32 val);
|
||||
int rtas_read_config(struct pci_dn *, int where, int size, u32 *val);
|
||||
|
||||
/**
|
||||
* eeh_mark_slot -- set mode flags for pertition endpoint
|
||||
* @pdn: pci device node
|
||||
*
|
||||
* mark and clear slots: find "partition endpoint" PE and set or
|
||||
* clear the flags for each subnode of the PE.
|
||||
*/
|
||||
void eeh_mark_slot (struct device_node *dn, int mode_flag);
|
||||
void eeh_clear_slot (struct device_node *dn, int mode_flag);
|
||||
|
||||
/**
|
||||
* find_device_pe -- Find the associated "Partiationable Endpoint" PE
|
||||
* @pdn: pci device node
|
||||
*/
|
||||
struct device_node * find_device_pe(struct device_node *dn);
|
||||
void eeh_mark_slot(struct device_node *dn, int mode_flag);
|
||||
void eeh_clear_slot(struct device_node *dn, int mode_flag);
|
||||
struct device_node *find_device_pe(struct device_node *dn);
|
||||
|
||||
void eeh_sysfs_add_device(struct pci_dev *pdev);
|
||||
void eeh_sysfs_remove_device(struct pci_dev *pdev);
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user