aboutsummaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorJoel Stanley <joel@jms.id.au>2015-05-05 12:37:06 +0930
committerStewart Smith <stewart@linux.vnet.ibm.com>2015-05-13 14:01:35 +1000
commit4e32dae2d1edb8d5e955de3c5368a9930f28e52b (patch)
tree29e339d9cd83002d8c25ee83935cf47456665cba /include
parent7f227cb47a2d04715d09c29914e48f728d55b5fe (diff)
downloadskiboot-4e32dae2d1edb8d5e955de3c5368a9930f28e52b.zip
skiboot-4e32dae2d1edb8d5e955de3c5368a9930f28e52b.tar.gz
skiboot-4e32dae2d1edb8d5e955de3c5368a9930f28e52b.tar.bz2
occ: Send self-interrupt to chip with active PSI
We were previously asking the OCC of the current chip to generate the self interrupt. If Hostboot does not configure all the PSI Host Bridges, so if the current chip happens to have an unconfigured PSI HB, the chip will never see the interrupt. Instead grab a chip id from the list of configured PSIs, and ask the OCC on that chip to generate the self-interrupt. This adds a pointer to the chip's PSI in struct proc_chip so we can use the current chip's PSI if it is active without having to look through all of them. Signed-off-by: Joel Stanley <joel@jms.id.au> Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
Diffstat (limited to 'include')
-rw-r--r--include/chip.h3
-rw-r--r--include/psi.h1
2 files changed, 4 insertions, 0 deletions
diff --git a/include/chip.h b/include/chip.h
index 0547902..1b4f4c4 100644
--- a/include/chip.h
+++ b/include/chip.h
@@ -157,6 +157,9 @@ struct proc_chip {
/* Used by hw/p8-i2c.c */
struct list_head i2cms;
+
+ /* Used by hw/psi.c */
+ struct psi *psi;
};
extern uint32_t pir_to_chip_id(uint32_t pir);
diff --git a/include/psi.h b/include/psi.h
index 4127242..62643aa 100644
--- a/include/psi.h
+++ b/include/psi.h
@@ -217,6 +217,7 @@ extern void psi_disable_link(struct psi *psi);
extern void psi_reset_fsp(struct psi *psi);
extern bool psi_check_link_active(struct psi *psi);
extern bool psi_poll_fsp_interrupt(struct psi *psi);
+extern struct psi *psi_find_functional_chip(void);
/* Interrupts */
extern void psi_irq_reset(void);