diff options
author | Michael Ellerman <michael@ellerman.id.au> | 2009-02-17 00:18:49 +0000 |
---|---|---|
committer | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2009-02-23 15:53:03 +1100 |
commit | d523cc379da57f1c39f5db9c47bdaa94f74727ff (patch) | |
tree | 633a0fdaed64cea289706aa00063de9705cb29f2 /arch/powerpc/platforms/pseries/msi.c | |
parent | 620165f971753c2c451c880796bac7cd66f3534a (diff) | |
download | linux-d523cc379da57f1c39f5db9c47bdaa94f74727ff.tar.gz linux-d523cc379da57f1c39f5db9c47bdaa94f74727ff.tar.bz2 linux-d523cc379da57f1c39f5db9c47bdaa94f74727ff.zip |
powerpc/pseries: Return req#msi(-x) if request is larger
If a driver asks for more MSIs than the devices "req#msi(-x)" property,
we currently return -ENOSPC. This doesn't give the driver any chance to
make a new request with a number that might work.
So if "req#msi(-x)" is less than the request, return its value. To be
100% safe, make sure we return an error if req_msi == 0.
Signed-off-by: Michael Ellerman <michael@ellerman.id.au>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Diffstat (limited to 'arch/powerpc/platforms/pseries/msi.c')
-rw-r--r-- | arch/powerpc/platforms/pseries/msi.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/arch/powerpc/platforms/pseries/msi.c b/arch/powerpc/platforms/pseries/msi.c index 073b518338a3..081af6d7fa02 100644 --- a/arch/powerpc/platforms/pseries/msi.c +++ b/arch/powerpc/platforms/pseries/msi.c @@ -154,7 +154,11 @@ static int check_req(struct pci_dev *pdev, int nvec, char *prop_name) if (*req_msi < nvec) { pr_debug("rtas_msi: %s requests < %d MSIs\n", prop_name, nvec); - return -ENOSPC; + + if (*req_msi == 0) /* Be paranoid */ + return -ENOSPC; + + return *req_msi; } return 0; |