# # Test to trigger periodically ACPI suspend and resume and periodically # trying to restart graphic driver. # # The pc_intel_fb_drv is restarting on X201 successfully after resume. # On Qemu the restart of vesa_fb_drv after resume does not work up to now. # # Intel AMT SOL most the time does not work after resume. # PCMCIA Serial card worked reliable on X201 after resume. # assert_spec x86 if { ![have_spec hw] && ![have_spec nova] } { puts "Platform is unsupported." exit 0 } # non Intel machines has no GPU support, e.g. Qemu and AMD set board_non_intel [expr [have_include "power_on/qemu"]] if {$board_non_intel} { set fb_platform_service "platform_drv" } else { set fb_platform_service "intel_gpu_drv" } proc display_config { } { global board_non_intel if {$board_non_intel} { return { } } return { } } proc gpu_config { } { global board_non_intel if {$board_non_intel} return return { } } set build_components { core timer init server/report_rom server/dynamic_rom server/rom_filter drivers/acpi drivers/platform drivers/framebuffer/intel/pc drivers/framebuffer/vesa drivers/framebuffer/boot drivers/gpu/intel app/acpica app/pci_decode test/framebuffer test/suspend } build $build_components create_boot_directory set config "" append config { } [gpu_config] { } [display_config] { } install_config $config # non PCI devices for platform_drv, e.g. ps2/pit file copy [select_from_repositories board/[board]/devices] [run_dir]/genode/devices set boot_modules { core ld.lib.so init timer report_rom dynamic_rom rom_filter acpi_drv pc_platform_drv pci_decode pc_intel_fb_drv test-framebuffer vesa_fb_drv intel_gpu_drv boot_fb_drv acpica test-suspend } build_boot_image $boot_modules # qemu machine model q35 and multiple CPUs don't work with NOVA kernel # # src/lapic.cpp Acpi::delay(2) spins on PM_TMR forever # # According to qemu monitor "info mtree", # # address-space: I/O # 0000000000000000-000000000000ffff (prio 0, i/o): io # ... # 0000000000000600-000000000000067f (prio 0, i/o): ich9-pm # 0000000000000600-0000000000000603 (prio 0, i/o): acpi-evt # 0000000000000604-0000000000000605 (prio 0, i/o): acpi-cnt # 0000000000000608-000000000000060b (prio 0, i/o): acpi-tmr # 0000000000000620-000000000000062f (prio 0, i/o): acpi-gpe0 # 0000000000000630-0000000000000637 (prio 0, i/o): acpi-smi # 0000000000000660-000000000000067f (prio 0, i/o): sm-tco # # address-space: I/O # 0000000000000000-000000000000ffff (prio 0, i/o): io # 0000000000000000-0000000000000003 (prio 0, i/o): acpi-evt # 0000000000000004-0000000000000005 (prio 0, i/o): acpi-cnt # 0000000000000008-000000000000000b (prio 0, i/o): acpi-tmr # 0000000000000020-000000000000002f (prio 0, i/o): acpi-gpe0 # 0000000000000030-0000000000000037 (prio 0, i/o): acpi-smi # 0000000000000060-000000000000007f (prio 0, i/o): sm-tco # # the "ich9-pm" device behind/attached on a LPC PCI device # # ./hw/isa/lpc_ich9.c # ./hw/acpi/ich9.c: memory_region_init(&pm->io, OBJECT(lpc_pci), "ich9-pm", ICH9_PMIO_SIZE) # # is not at the right i/o space right location anymore. It seems that the # parent of ich9-pm stays disabled ... # # Further debugging shows: # # qemu/roms/seabios/src/resume.c s3_resume -> pci_resume # qemu/roms/seabios/src/fw/pciinit.c pci_resume # # In pci_resume the mmcfg and q35 and ich9-pm for PCIe is tried to be # re-enabled, but actually the calls never hit in Qemu. # It seems that mch_mmconfig_setup should use I/O PCI access in order to # enable MMIO PCI MMCFG access. # append qemu_args "-smp 1" run_genode_until forever