On 7 March 2018 at 17:37, Guenter Roeck <li...@roeck-us.net> wrote: > The sabrelite machine model used by qemu-system-arm is based on the > Freescale/NXP i.MX6Q processor. This SoC has an on-board ethernet > controller which is supported in QEMU using the imx_fec.c module > (actually called imx.enet for this model.) > > The include/hw/arm/fsm-imx6.h file defines the interrupt vectors for the > imx.enet device like this: > > #define FSL_IMX6_ENET_MAC_1588_IRQ 118 > #define FSL_IMX6_ENET_MAC_IRQ 119 > > According to https://www.nxp.com/docs/en/reference-manual/IMX6DQRM.pdf, > page 225, in Table 3-1. ARM Cortex A9 domain interrupt summary, > interrupts are as follows. > > 150 ENET MAC 0 IRQ > 151 ENET MAC 0 1588 Timer interrupt > > where > > 150 - 32 == 118 > 151 - 32 == 119 > > In other words, the vector definitions in the fsl-imx6.h file are reversed. > > This results in lost interrupt warnings when running recent (v4.15+) Linux > kernels, and the Ethernet interface will fail to probe. > > Note that applying this patch will cause problems with older Linux kernels: > The Ethernet interface will fail to probe with Linux v4.9 and earlier. > Linux v4.1 and earlier will crash. This is a Linux kernel problem, not a > qemu problem: the Linux kernel only worked by accident since it requested > both interrupts.
So do the works-by-accident kernels fail on QEMU because we don't emulate some bit of the ethernet device ? Ideally we could fix that so we could boot newer kernels without breaking the old ones... thanks -- PMM