/* Have to set XIVE to 0xff to be able to remove a slot */
call_status = rtas_call(ibm_set_xive, 3, 1, NULL, hw_irq,
xics_default_server, 0xff); if (call_status != 0) {
printk(KERN_ERR "%s: ibm_set_xive(0xff) irq=%u returned %d\n",
__func__, hw_irq, call_status); return;
}
}
staticint ics_rtas_host_match(struct ics *ics, struct device_node *node)
{ /* IBM machines have interrupt parents of various funky types for things * like vdevices, events, etc... The trick we use here is to match * everything here except the legacy 8259 which is compatible "chrp,iic"
*/ return !of_device_is_compatible(node, "chrp,iic");
}
/* Only one global & state struct ics */ staticstruct ics ics_rtas = {
.check = ics_rtas_check,
.mask_unknown = ics_rtas_mask_unknown,
.get_server = ics_rtas_get_server,
.host_match = ics_rtas_host_match,
.chip = &ics_rtas_irq_chip,
};
/* We enable the RTAS "ICS" if RTAS is present with the * appropriate tokens
*/ if (ibm_get_xive == RTAS_UNKNOWN_SERVICE ||
ibm_set_xive == RTAS_UNKNOWN_SERVICE) return -ENODEV;
/* We need to patch our irq chip's EOI to point to the * right ICP
*/
ics_rtas_irq_chip.irq_eoi = icp_ops->eoi;
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.