On 10/17/21 15:32, Bruce Ashfield wrote:
On Sun, Oct 17, 2021 at 4:26 AM Jacob Kroon <[email protected]> wrote:

Hi Bruce and Saul,

On 10/16/21 09:18, Jacob Kroon via lists.openembedded.org wrote:
Hi Bruce,

My Yocto images (which uses the linux-yocto kernel) stopped booting in
QEMU some time ago, and after some debugging it turns out this was
because the upstream Linux kernel removed the legacy IDE driver. Instead
one should use the libata driver. However, I don't think the linux-yocto
kernel has builtin support for the HW that is emulated by QEMU by
default (PIIX), instead it is built as a module, CONFIG_ATA_PIIX=m. If I
set CONFIG_ATA_PIIX=y, my images boot again.

I did a "make ARCH=i386 defconfig" in Torvalds master linux tree, and
the .config has CONFIG_ATA_PIIX=y.

Do you think it would make sense to have the support builtin in
linux-yocto aswell ?


I'm using KMACHINE = "common-pc". CC:ing Saul Wold, since I see that
commit 0d4f5ed5dca41a48423ce738131e52f7863d8ca6 in yocto-kernel-cache did:

diff --git a/bsp/common-pc/common-pc-drivers.cfg 
b/bsp/common-pc/common-pc-drivers.cfg
index 71608433..0b821903 100644
--- a/bsp/common-pc/common-pc-drivers.cfg
+++ b/bsp/common-pc/common-pc-drivers.cfg
@@ -5,7 +5,8 @@ CONFIG_PCI_MSI=y
  CONFIG_ATA=y
  CONFIG_ATA_ACPI=y
  CONFIG_ATA_SFF=y
-CONFIG_ATA_PIIX=y
+CONFIG_ATA_BMDMA=y
+CONFIG_ATA_PIIX=m

  CONFIG_INPUT=y
  CONFIG_INPUT_MOUSEDEV=y

which changed ATA_PIIX from a builtin to a module. Maybe this wasn't
intentional ?

It was definitely intentional.
 > We try and keep the configuration space of the targets as small as
possible. In particular, this is exactly why qemux86* was created, so
we wouldn't have to enable options in either the h/w targets or the
emulated targets that are specific to a use case on one (and vice
versa). That being said, they still actually do share the same machine
definitions in the kernel-cache, since nothing significant has forced
me to use that namespace split.

qemux86 doesn't need PIIX out of the box to boot, and the Kconfig
indicates "set it to N unless ...", and we do know the built-ins we
want, so it is set to 'm' as a middle ground.


When I start qemu-system-x86_64/qemu-system-i386 and type "info qtree" in the QEMU monitor (both version 5.2.0 and 6.1.0) I see "piix3-ide" for the IDE controller. Given that for older Yocto kernels the legacy IDE driver was builtin (CONFIG_BLK_DEV_PIIX=y), but is now removed in the kernel present on master, I'd figure ATA_PIIX=y would be required nowadays in order to get the kernels to boot in QEMU (since libata is replacing the old legacy IDE driver nowadays).

That being said, it isn't out of the question to enable it (slippery
slope to giant defconfig like beasts with everything and the kitchen
sink enabled notwithstanding .. not that this is much of a step down
that slope!) .. just let me ask a few more things first.


Yeah, the only reason I'm asking is because I think I'm using default QEMU emulated hardware, and I'm sure we want a Yocto kernel to boot in default QEMU hardware.

You say you are using KMACHINE='common-pc', that's good. But what else
is at play ? What OE MACHINE are you building ? What image FStypes,
etc ?


It is a custom machine for

https://www.compulab.com/products/computer-on-modules/cm-itc/

machine/cm-itc.conf:
---
IMAGE_FSTYPES ?= "ext4"

require conf/machine/include/x86/tune-i686.inc
require conf/machine/include/x86/x86-base.inc

PREFERRED_PROVIDER_virtual/bootloader = "grub-efi"
---

I won't be able to do some build testing until Monday, but do you
happen to have the qemu command lines (via runqemu) and machine
definitions for qemux88 and your machine?  I'd like to look at them
and confirm exactly what image, and boot parameters are in play, since
one boots and the other doesn't.


I don't use the "runqemu"-script, I boot the images using Fedora 34 QEMU installation (QEMU version 5.2.0). Commandline is:

qemu-system-x86_64 -m 1G -enable-kvm -nic user,hostfwd=tcp::10022-:22 -cpu n270 -bios 
/usr/share/edk2/ovmf-ia32/OVMF_CODE.fd -drive format=raw,file=<path-to-image>

I have the following bbappended in my yocto kernel recipe:
KMACHINE:cm-itc ?= "common-pc"
COMPATIBLE_MACHINE:cm-itc = "cm-itc"

together with some custom kernel configuration.

Regards Jacob
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#157049): 
https://lists.openembedded.org/g/openembedded-core/message/157049
Mute This Topic: https://lists.openembedded.org/mt/86367293/21656
Group Owner: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to