retrofit Safe Mode loader menu item actions

The menu item is now made completely independent with the ACPI item - most
modern systems seem to require ACPI and become even more "unsafe"
without it.
Safe Mode no longer disables APIC for the same reason.
kbdmux is not disabled as this feature has proven itself stable.

New actions:
- SMP is disabled in the Safe Mode now
- eventtimers are forced to periodic mode (some real and virtual systems
  seem to have problems otherwise)
- geom extra vigorous integrity checking is disabled, this is to
  facilitate migration from previous versions

Possible short term to do:
- make SMP switch a separate menu item
- restore APIC switch as a separate menu item

Longer term to do:
- turn various tweaks into separate menu items in a Safe Mode sub-menu

Please consider adding a safety tweak to Safe Mode when introducing
new major features or changes that may cause instabilities.

Discussed with:	jhb, scottl, Devin Teske
MFC after:	3 weeks (stable/9 only)
This commit is contained in:
Andriy Gapon 2012-04-06 09:36:22 +00:00
parent 17b611fb21
commit bec9e056eb
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=233941

View File

@ -62,30 +62,21 @@ marker task-menu-commands.4th
-rot 2dup 12 + c! rot \ replace 'N' with ASCII numeral
evaluate 0= if
s" hint.apic.0.disabled" unsetenv
s" kern.smp.disabled" unsetenv
s" hw.ata.ata_dma" unsetenv
s" hw.ata.atapi_dma" unsetenv
s" hw.ata.wc" unsetenv
s" hw.eisa_slots" unsetenv
s" hint.kbdmux.0.disabled" unsetenv
s" kern.eventtimer.periodic" unsetenv
s" kern.geom.part.check_integrity" unsetenv
else
\
\ Toggle ACPI elements if necessary
\
acpipresent? if acpienabled? if
menuacpi @ dup 0<> if
toggle_menuitem ( N -- N )
then
drop
acpi_disable
then then
s" set hint.apic.0.disabled=1" evaluate
s" set kern.smp.disabled=1" evaluate
s" set hw.ata.ata_dma=0" evaluate
s" set hw.ata.atapi_dma=0" evaluate
s" set hw.ata.wc=0" evaluate
s" set hw.eisa_slots=0" evaluate
s" set hint.kbdmux.0.disabled=1" evaluate
s" set kern.eventtimer.periodic=1" evaluate
s" set kern.geom.part.check_integrity=0" evaluate
then
menu-redraw