mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-11-24 18:41:00 +07:00
s390/qdio: consolidate thinint init/exit
Wrap the init/exit steps for thinint into a single helper that follows the established naming scheme. Signed-off-by: Julian Wiedmann <jwi@linux.ibm.com> Reviewed-by: Steffen Maier <maier@linux.ibm.com> Reviewed-by: Benjamin Block <bblock@linux.ibm.com> Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
This commit is contained in:
parent
75e82bec6b
commit
3050f022df
@ -369,10 +369,8 @@ void qdio_shutdown_thinint(struct qdio_irq *irq_ptr);
|
||||
void tiqdio_add_device(struct qdio_irq *irq_ptr);
|
||||
void tiqdio_remove_device(struct qdio_irq *irq_ptr);
|
||||
void tiqdio_inbound_processing(unsigned long q);
|
||||
int tiqdio_allocate_memory(void);
|
||||
void tiqdio_free_memory(void);
|
||||
int tiqdio_register_thinints(void);
|
||||
void tiqdio_unregister_thinints(void);
|
||||
int qdio_thinint_init(void);
|
||||
void qdio_thinint_exit(void);
|
||||
int test_nonshared_ind(struct qdio_irq *);
|
||||
|
||||
/* prototypes for setup */
|
||||
|
@ -1861,16 +1861,11 @@ static int __init init_QDIO(void)
|
||||
rc = qdio_setup_init();
|
||||
if (rc)
|
||||
goto out_debug;
|
||||
rc = tiqdio_allocate_memory();
|
||||
rc = qdio_thinint_init();
|
||||
if (rc)
|
||||
goto out_cache;
|
||||
rc = tiqdio_register_thinints();
|
||||
if (rc)
|
||||
goto out_ti;
|
||||
return 0;
|
||||
|
||||
out_ti:
|
||||
tiqdio_free_memory();
|
||||
out_cache:
|
||||
qdio_setup_exit();
|
||||
out_debug:
|
||||
@ -1880,8 +1875,7 @@ static int __init init_QDIO(void)
|
||||
|
||||
static void __exit exit_QDIO(void)
|
||||
{
|
||||
tiqdio_unregister_thinints();
|
||||
tiqdio_free_memory();
|
||||
qdio_thinint_exit();
|
||||
qdio_setup_exit();
|
||||
qdio_debug_exit();
|
||||
}
|
||||
|
@ -197,34 +197,6 @@ static int set_subchannel_ind(struct qdio_irq *irq_ptr, int reset)
|
||||
return rc;
|
||||
}
|
||||
|
||||
/* allocate non-shared indicators and shared indicator */
|
||||
int __init tiqdio_allocate_memory(void)
|
||||
{
|
||||
q_indicators = kcalloc(TIQDIO_NR_INDICATORS,
|
||||
sizeof(struct indicator_t),
|
||||
GFP_KERNEL);
|
||||
if (!q_indicators)
|
||||
return -ENOMEM;
|
||||
return 0;
|
||||
}
|
||||
|
||||
void tiqdio_free_memory(void)
|
||||
{
|
||||
kfree(q_indicators);
|
||||
}
|
||||
|
||||
int __init tiqdio_register_thinints(void)
|
||||
{
|
||||
int rc;
|
||||
|
||||
rc = register_adapter_interrupt(&tiqdio_airq);
|
||||
if (rc) {
|
||||
DBF_EVENT("RTI:%x", rc);
|
||||
return rc;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
int qdio_establish_thinint(struct qdio_irq *irq_ptr)
|
||||
{
|
||||
int rc;
|
||||
@ -252,8 +224,27 @@ void qdio_shutdown_thinint(struct qdio_irq *irq_ptr)
|
||||
put_indicator(irq_ptr->dsci);
|
||||
}
|
||||
|
||||
void __exit tiqdio_unregister_thinints(void)
|
||||
int __init qdio_thinint_init(void)
|
||||
{
|
||||
int rc;
|
||||
|
||||
q_indicators = kcalloc(TIQDIO_NR_INDICATORS, sizeof(struct indicator_t),
|
||||
GFP_KERNEL);
|
||||
if (!q_indicators)
|
||||
return -ENOMEM;
|
||||
|
||||
rc = register_adapter_interrupt(&tiqdio_airq);
|
||||
if (rc) {
|
||||
DBF_EVENT("RTI:%x", rc);
|
||||
kfree(q_indicators);
|
||||
return rc;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
void __exit qdio_thinint_exit(void)
|
||||
{
|
||||
WARN_ON(!list_empty(&tiq_list));
|
||||
unregister_adapter_interrupt(&tiqdio_airq);
|
||||
kfree(q_indicators);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user