lkml.org 
[lkml]   [2015]   [Jun]   [25]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
From
SubjectRFC: Additions to APIC driver
Date
Hi,

We’re preparing our APIC driver (arch/x86/kernel/apic/apic_numachip.c) with next-gen hardware support and in that process I have a question on what the cleanest approach would be.

Both current generation and next generation chips will share a lot of similar code, but some of the core functionality is slightly different (such as the address to which you communicate with the APIC ICR to send IPIs, how to derive APIC IDs etc.).

The way I see it, we have few alternatives :

1) Create a new arc/x86/kernel/apic/apic_numachip2.c (and corresponding entry in the Makefile) which has a new “struct apic” with function pointers to the next-gen specific code. The new APIC driver would still only need CONFIG_X86_NUMACHIP to be compiled.

2) Modify the existing apic_numachip.c to recognise the different HW generations (trivial) and use function pointers to differentiate the IPI send calls (among other things), but use the *same* “struct apic” for both (the function pointers referenced in “struct apic” would need a new indirection level to differentiate between hardware revs).

3) Have two different “struct apic” entries in the existing apic_numachip.c source file, with separate oem_madt check functions etc. This would only be marginally different than 1) as far as implementation and code duplication goes, but it would be contained to one C source file and object file (silly question, maybe: would the apic_driver enumeration even work if it’s all in the same object file?)

Any insight into this from the great minds behind this would be highly appreciated.

Kind regards,
--
Steffen Persvold
Chief Architect NumaChip, Numascale AS
Tel: +47 23 16 71 88 Fax: +47 23 16 71 80 Skype: spersvold



\
 
 \ /
  Last update: 2015-06-25 19:21    [W:0.022 / U:0.068 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site