diff options
| -rw-r--r-- | arch/ia64/pci/pci.c | 9 | 
1 files changed, 7 insertions, 2 deletions
| diff --git a/arch/ia64/pci/pci.c b/arch/ia64/pci/pci.c index 7de76dd352fe..c0fca2c1c858 100644 --- a/arch/ia64/pci/pci.c +++ b/arch/ia64/pci/pci.c @@ -56,10 +56,13 @@ int raw_pci_read(unsigned int seg, unsigned int bus, unsigned int devfn,  	if ((seg | reg) <= 255) {  		addr = PCI_SAL_ADDRESS(seg, bus, devfn, reg);  		mode = 0; -	} else { +	} else if (sal_revision >= SAL_VERSION_CODE(3,2)) {  		addr = PCI_SAL_EXT_ADDRESS(seg, bus, devfn, reg);  		mode = 1; +	} else { +		return -EINVAL;  	} +  	result = ia64_sal_pci_config_read(addr, mode, len, &data);  	if (result != 0)  		return -EINVAL; @@ -80,9 +83,11 @@ int raw_pci_write(unsigned int seg, unsigned int bus, unsigned int devfn,  	if ((seg | reg) <= 255) {  		addr = PCI_SAL_ADDRESS(seg, bus, devfn, reg);  		mode = 0; -	} else { +	} else if (sal_revision >= SAL_VERSION_CODE(3,2)) {  		addr = PCI_SAL_EXT_ADDRESS(seg, bus, devfn, reg);  		mode = 1; +	} else { +		return -EINVAL;  	}  	result = ia64_sal_pci_config_write(addr, mode, len, value);  	if (result != 0) | 
