Here are a few quick notes based on spending a little while skimming
through some of the ehca source code:
ehca_asm.h:
this stuff should be in include/asm and mostly already is:
asm_sync_mem is just the standard mb() from <asm/system.h>.
mftb() is get_tb() from <asm/time.h>
so you just need to add prefetch_zero to include/asm-ppc64
ehca_classes.c:
why have ehca_module_new? it seems to be used to allocate a
single instance of a struct that should just be module-global variables.
ehca_classes_pSeries.h:
Why have EHCA_MEMPAGESIZE and EHCA_MEMPAGESIZE_MASK? Can they be
different from PAGE_SIZE and PAGE_MASK?
Get rid of typedefs of struct hcp_eq_handle -- just use structs
directly in code.
Can struct hcp_modify_qp_control_block declaration be made readable?
ehca_common.h:
why have typedef of ehca_redcode_t? Just use long directly.
ntohd() seems to duplicate be64_to_cpu() except without proper
__be64 annotation -- why is it needed?
ehca_irq.c:
in ehca_comp_event_callback(), what protects against the CQ being
destroyed out from under you?
ehca_kernel.h:
ehca_sleep() and ehca_msleep() duplicate msleep_interruptible().
why is assert() needed instead of just using BUG_ON()
why have MIN() and MAX() instad of just using min()/max()?
ehca_kv_to_g() looks rather horrible -- why are you working with
kernel virtual addresses at all?
ehca_kr_to_g() looks like it is a substitute for dma_map_single()
Why not use the correct DMA API instead?
ehca_main.c:
ehca_module_exit() -- I don't see where ehca_wq is destroyed.
ehca_module_exit() -- what prevents ehca_poll_eq() from running
after the module text is gone? You don't wait for the kthread
to actually stop, and it might be in the middle of the sleep.
_______________________________________________
openib-general mailing list
[email protected]
http://openib.org/mailman/listinfo/openib-general
To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general