lkml.org 
[lkml]   [2012]   [May]   [30]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4/5] pci: Create common pcibios_err_to_errno
    Date
    For returning errors out to non-PCI code.  Re-name xen's version.

    Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
    Acked-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
    ---

    drivers/xen/xen-pciback/conf_space.c | 6 +++---
    include/linux/pci.h | 26 ++++++++++++++++++++++++++
    2 files changed, 29 insertions(+), 3 deletions(-)

    diff --git a/drivers/xen/xen-pciback/conf_space.c b/drivers/xen/xen-pciback/conf_space.c
    index 30d7be0..46ae0f9 100644
    --- a/drivers/xen/xen-pciback/conf_space.c
    +++ b/drivers/xen/xen-pciback/conf_space.c
    @@ -124,7 +124,7 @@ static inline u32 merge_value(u32 val, u32 new_val, u32 new_val_mask,
    return val;
    }

    -static int pcibios_err_to_errno(int err)
    +static int xen_pcibios_err_to_errno(int err)
    {
    switch (err) {
    case PCIBIOS_SUCCESSFUL:
    @@ -202,7 +202,7 @@ out:
    pci_name(dev), size, offset, value);

    *ret_val = value;
    - return pcibios_err_to_errno(err);
    + return xen_pcibios_err_to_errno(err);
    }

    int xen_pcibk_config_write(struct pci_dev *dev, int offset, int size, u32 value)
    @@ -290,7 +290,7 @@ int xen_pcibk_config_write(struct pci_dev *dev, int offset, int size, u32 value)
    }
    }

    - return pcibios_err_to_errno(err);
    + return xen_pcibios_err_to_errno(err);
    }

    void xen_pcibk_config_free_dyn_fields(struct pci_dev *dev)
    diff --git a/include/linux/pci.h b/include/linux/pci.h
    index 1b6d1c5..a8b5e8c 100644
    --- a/include/linux/pci.h
    +++ b/include/linux/pci.h
    @@ -474,6 +474,32 @@ static inline bool pci_dev_msi_enabled(struct pci_dev *pci_dev) { return false;
    #define PCIBIOS_SET_FAILED 0x88
    #define PCIBIOS_BUFFER_TOO_SMALL 0x89

    +/*
    + * Translate above to generic errno for passing back through non-pci.
    + */
    +static inline int pcibios_err_to_errno(int err)
    +{
    + if (err <= PCIBIOS_SUCCESSFUL)
    + return err; /* Assume already errno */
    +
    + switch (err) {
    + case PCIBIOS_FUNC_NOT_SUPPORTED:
    + return -ENOENT;
    + case PCIBIOS_BAD_VENDOR_ID:
    + return -EINVAL;
    + case PCIBIOS_DEVICE_NOT_FOUND:
    + return -ENODEV;
    + case PCIBIOS_BAD_REGISTER_NUMBER:
    + return -EFAULT;
    + case PCIBIOS_SET_FAILED:
    + return -EIO;
    + case PCIBIOS_BUFFER_TOO_SMALL:
    + return -ENOSPC;
    + }
    +
    + return -ENOTTY;
    +}
    +
    /* Low-level architecture-dependent routines */

    struct pci_ops {


    \
     
     \ /
      Last update: 2012-05-30 07:41    [W:0.043 / U:4.600 seconds]
    ©2003-2017 Jasper Spaans. hosted at Digital OceanAdvertise on this site