PCI: create common pcibios_err_to_errno
For returning errors out to non-PCI code. Re-name xen's version. Acked-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> Signed-off-by: Alex Williamson <alex.williamson@redhat.com> Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
This commit is contained in:
parent
c63587d7f5
commit
a696165140
2 changed files with 29 additions and 3 deletions
|
@ -124,7 +124,7 @@ static inline u32 merge_value(u32 val, u32 new_val, u32 new_val_mask,
|
||||||
return val;
|
return val;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int pcibios_err_to_errno(int err)
|
static int xen_pcibios_err_to_errno(int err)
|
||||||
{
|
{
|
||||||
switch (err) {
|
switch (err) {
|
||||||
case PCIBIOS_SUCCESSFUL:
|
case PCIBIOS_SUCCESSFUL:
|
||||||
|
@ -202,7 +202,7 @@ int xen_pcibk_config_read(struct pci_dev *dev, int offset, int size,
|
||||||
pci_name(dev), size, offset, value);
|
pci_name(dev), size, offset, value);
|
||||||
|
|
||||||
*ret_val = 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)
|
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)
|
void xen_pcibk_config_free_dyn_fields(struct pci_dev *dev)
|
||||||
|
|
|
@ -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_SET_FAILED 0x88
|
||||||
#define PCIBIOS_BUFFER_TOO_SMALL 0x89
|
#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 */
|
/* Low-level architecture-dependent routines */
|
||||||
|
|
||||||
struct pci_ops {
|
struct pci_ops {
|
||||||
|
|
Loading…
Reference in a new issue