Port-xen archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

NR_PIRQS



Extract from booting 11.0_RC6 XEN3_DOM0 with Xen 4.20 on an IBM x3550M4:

[   1.0000030] ixg0 at pci3 dev 0 function 0: Intel(R) PRO/10GbE PCI-Express Network Driver, Version - 4.0.1-k
[   1.0000030] ixg0: device 82599EB
[   1.0000030] ixg0: ETrackID 800006c7
[   1.0000030] ixg0: PBA number G70815-008
[   1.0000030] panic: pirq 4991 out of bound, increase NR_PIRQS
[   1.0000030] cpu0: Begin traceback...
[   1.0000030] vpanic() at netbsd:vpanic+0x161
[   1.0000030] panic() at netbsd:panic+0x3c
[   1.0000030] bind_pirq_to_evtch() at netbsd:bind_pirq_to_evtch+0x93
[   1.0000030] intr_establish_xname() at netbsd:intr_establish_xname+0xe1
[   1.0000030] x86_pci_msix_establish() at netbsd:x86_pci_msix_establish+0x6d
[   1.0000030] ixgbe_attach() at netbsd:ixgbe_attach+0x1dd6

NR_PIRQS is set to be the same as NR_EVENT_CHANNELS:

#define	NR_PIRQS	NR_EVENT_CHANNELS
https://nxr.netbsd.org/xref/src/sys/arch/xen/xen/evtchn.c#92

In turn, NR_EVENT_CHANNELS is set to be the same as EVTCHN_2L_NR_CHANNELS:

/*
 * Event channel endpoints per domain (when using the 2-level ABI):
 *  1024 if a long is 32 bits; 4096 if a long is 64 bits.
 */
#define NR_EVENT_CHANNELS EVTCHN_2L_NR_CHANNELS
https://nxr.netbsd.org/xref/src/sys/external/mit/xen-include-public/dist/xen/include/public/xen.h#619

And this is set to a calculated value which works out as the comment above:

#define EVTCHN_2L_NR_CHANNELS (sizeof(xen_ulong_t) * sizeof(xen_ulong_t) * 64)

So if I want to increase NR_PIRQS to be at least 4991, do I increase just NR_PIRQS, increase NR_EVENT_CHANNELS or increase EVTCHN_2L_NR_CHANNELS?

Is there any reason why this is set low and/or we haven't yet switched to dynamic allocation?

--
Stephen



Home | Main Index | Thread Index | Old Index