I was just now trying to track down my other issue, whereby somewhere along the tree kexec stops working properly. In the process of doing that I realized I had initially made one change to the original 4.9 config beyond oldconfig: I'd turned off WX debugging. I've now compiled a bunch of versions with WX debugging back on, and new behavior arises. I am attaching the joournalctl log of a booted 4.13 kernel (from Linus' tree, commit 569dbb8). It boots and logs me in, but returns a call trace I wasn't seeing without the WX debugging. I am sending over in case it provides any information. The trace bears the 23:24:09 timestamp. On Sat, Dec 23, 2017 at 01:35:12AM +0000, Dexuan Cui wrote: > > From: Alexandru Chirvasitu [mailto:achirvasub@gmail.com] > > Sent: Friday, December 22, 2017 14:29 > > > > The output of that precise command run just now on a freshly-compiled > > copy of that commit is attached. > > > > On Fri, Dec 22, 2017 at 09:31:28PM +0000, Dexuan Cui wrote: > > > > From: Alexandru Chirvasitu [mailto:achirvasub@gmail.com] > > > > Sent: Friday, December 22, 2017 06:21 > > > > > > > > In the absence of logs, the best I can do at the moment is attach a > > > > picture of the screen I am presented with on the apic=debug boot > > > > attempt. > > > > Alex > > > > > > The panic happens in irq_matrix_assign_system+0x4e/0xd0 in your picture. > > > IMO we should find which line of code causes the panic. I suppose > > > "objdump -D kernel/irq/matrix.o" can help to do that. > > > > > > Thanks, > > > -- Dexuan > > The BUG_ON panic happens at line 147: > BUG_ON(!test_and_clear_bit(bit, cm->alloc_map)); > > I'm sure Thomas and Dou know it better than me. > > 137 void irq_matrix_assign_system(struct irq_matrix *m, unsigned int bit, > 138 bool replace) > 139 { > 140 struct cpumap *cm = this_cpu_ptr(m->maps); > 141 > 142 BUG_ON(bit > m->matrix_bits); > 143 BUG_ON(m->online_maps > 1 || (m->online_maps && !replace)); > 144 > 145 set_bit(bit, m->system_map); > 146 if (replace) { > 147 BUG_ON(!test_and_clear_bit(bit, cm->alloc_map)); > 148 cm->allocated--; > 149 m->total_allocated--; > 150 } > 151 if (bit >= m->alloc_start && bit < m->alloc_end) > 152 m->systembits_inalloc++; > 153 > 154 trace_irq_matrix_assign_system(bit, m); > 155 } > > -- Dexuan >