This series of patches adds support for handling IO Event interrupts which come through at the /event-sources/ibm,io-events device tree node.
Change log from V2: - rename RTAS general extended event log version 6 structure from rtas_error_log_v6ext to rtas_ext_event_log_v6. - Re-implement interrupt call list with atomic notifier. platforms/pseries/io_event_irq.c: - Move IO Event data copy to ioei_interrupt(). Rename ioei_get_event() to ioei_find_event(). - Remove unused ioei_call_handlers(), pseries_ioei_register_handler(), pseries_ioei_unregister_handler() as the functions are replaced by notifier. Change log from v1: - Restructure the patch into 3 patches. = Move non-IBM specific v6 extended log definition to rtas.h. = Move IBM specific v6 extended log definition to pseries_event_log.h and code to pseries_event_log.c. - Add CONFIG_PSERIES_EVENT_LOG to pseries Kconfig - Add CONFIG_IO_EVENT_IRQ to pseries Kconfig io_events.h: - Change C++ comments to C format. - Add definitions for all known type, sub-types, and scopes. - Change data type of rpc_data from u32 to u8 as the size of rpc_data is specified in rpc_field_len in bytes. - Set maximum length for rpc_data. - Change ioei_register_isr() and ioei_unregister_isr() declearation to match the change in io_events.c file io_events.c: - Use pseries_/PSERIES_ prefix for global symbols. - Change to use list_head for ioei_consumer list. - Remove scope from handler registeration. - Change device_initcall() to machine_device_initcall() - ioei_register_handler(): = Return -ENODEV if IOEI not supported on the machine. = Change use spin_lock() to use spin_lock_irq(). - ioei_unregister_handler(): = Change use spin_lock() to use spin_lock_irq(). - ioei_call_consumers(): = Change spin_lock_irqsave() to spin_lock() because we are called from an interrupt handler. = Return IRQ_HANDLED/IRQ_NONE if interrupt is handled/not handled. = Print an error message if no one claims the interrupt. - io_event_interrupt(): = Change to use rtas_data_buf and RTAS_DATA_BUF_SIZE for rtas_call(). = Loop calling rtas_call() to pull in multiple events in one interrupt. = Split IO event section searching code into ioei_get_event(). - init_ioei_IRQ() = Check rtas_token() return code. Signed-off-by: Mark Nelson <ma...@au1.ibm.com> Signed-off-by: Tseng-Hui (Frank) Lin <tseng...@us.ibm.com> --- _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev