openbmc / qemu

Official QEMU mirror
Other
19 stars 22 forks source link

Stall probing i2c, no getty on console with dev-4.4 kernel #4

Closed amboar closed 7 years ago

amboar commented 8 years ago

It seems we have an issue with the timers with a dev-4.4 kernel running on the palmetto-bmc qemu machine.

amboar commented 8 years ago

It seems that aspeed_defconfig enables some options which are causing us to stall, namely:

CONFIG_NO_HZ_IDLE=y
CONFIG_HIGH_RES_TIMERS=y

From my own config it looks like we should also set CONFIG_HZ_PERIODIC=y

amboar commented 8 years ago

The way that the timers are used changes from dev-4.3 to dev-4.4, with dev-4.4 making heavier use of the device's clock-value-matching feature. This was apparent from tracing the writes to the registers on the qemu side.

I have a patch implementing clock value matching in the timer model which I'll push soon.

legoater commented 8 years ago

The linux kernel config from 4.4.6-openbmc-20160329-2 has no issue.

legoater commented 8 years ago

Here is a sample : https://gist.github.com/legoater/f08c341a65dfabfa953c8d67197a1767

legoater commented 8 years ago

Here is a fix for aspeed_defconfig when running under qemu

Signed-off-by: Cédric Le Goater <clg@kaod.org>
---
 arch/arm/configs/aspeed_defconfig |    9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

Index: linux.git/arch/arm/configs/aspeed_defconfig
===================================================================
--- linux.git.orig/arch/arm/configs/aspeed_defconfig
+++ linux.git/arch/arm/configs/aspeed_defconfig
@@ -2,8 +2,8 @@ CONFIG_KERNEL_XZ=y
 CONFIG_SYSVIPC=y
 CONFIG_FHANDLE=y
 CONFIG_IRQ_DOMAIN_DEBUG=y
-CONFIG_NO_HZ_IDLE=y
-CONFIG_HIGH_RES_TIMERS=y
+CONFIG_HZ_PERIODIC=y
+# CONFIG_HIGH_RES_TIMERS is not set
 CONFIG_LOG_BUF_SHIFT=14
 CONFIG_CGROUPS=y
 CONFIG_BLK_DEV_INITRD=y
@@ -13,7 +13,7 @@ CONFIG_BLK_DEV_INITRD=y
 # CONFIG_RD_LZ4 is not set
 CONFIG_CC_OPTIMIZE_FOR_SIZE=y
 CONFIG_BPF_SYSCALL=y
-# CONFIG_SHMEM is not set
+CONFIG_SHMEM=y
 # CONFIG_AIO is not set
 CONFIG_EMBEDDED=y
 # CONFIG_COMPAT_BRK is not set
@@ -127,6 +127,9 @@ CONFIG_FIRMWARE_MEMMAP=y
 CONFIG_FANOTIFY=y
 CONFIG_OVERLAY_FS=y
 CONFIG_CONFIGFS_FS=y
+CONFIG_TMPFS=y
+CONFIG_TMPFS_POSIX_ACL=y
+CONFIG_TMPFS_XATTR=y
 CONFIG_JFFS2_FS=y
 CONFIG_JFFS2_SUMMARY=y
 CONFIG_NFS_FS=y
amboar commented 8 years ago

@legoater Thanks for reducing it down, that works for me under various qemu builds. However, I am getting warnings like [ 34.840000] serial8250: too much work for irq23, which I haven't seen previously.

Can you send it as a patch against openbmc/linux dev-4.4 to @shenki and the OpenBMC mailing list?

amboar commented 8 years ago

@shenki @legoater I've pushed a patch that implements clock value matching for the aspeed timer model and allows us to boot with an unmodified aspeed_defconfig from dev-4.4: amboar@cd0d1aa1c15c7621b67dfd123d402df438ab33c7