Date: Mon, 4 Mar 2013 12:56:56 +0100
When Kconfig was introduced in SeaBIOS with
commit a4c5daf0e2545361fadcad3015e10f8b23e53926
Author: Kevin O'Connor <kevin(a)koconnor.net>
Date: Mon Jan 24 22:13:58 2011 -0500
Initial commit of Kconfig build tool.
this typo was copied from Kconfig in Linux v2.6.38-rc2. In the meantime
Linux commit »kconfig: nconf: rewrite help texts« (0b616500) [1] rewrote
the texts for `nconf.c` – which might be ported too to SeaBIOS – and the
typo was fixed there. But it is still present in `mconf.c` as of Linux
3.8.
[1] http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=0…
---
tools/kconfig/mconf.c | 2 +-
tools/kconfig/nconf.c | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/tools/kconfig/mconf.c b/tools/kconfig/mconf.c
index d433c7a..2a24c42 100644
--- a/tools/kconfig/mconf.c
+++ b/tools/kconfig/mconf.c
@@ -25,7 +25,7 @@
static const char mconf_readme[] = N_(
"Overview\n"
"--------\n"
-"This interface let you select features and parameters for the build.\n"
+"This interface lets you select features and parameters for the build.\n"
"Features can either be built-in, modularized, or ignored. Parameters\n"
"must be entered in as decimal or hexadecimal numbers or text.\n"
"\n"
diff --git a/tools/kconfig/nconf.c b/tools/kconfig/nconf.c
index db56377..bb797c9 100644
--- a/tools/kconfig/nconf.c
+++ b/tools/kconfig/nconf.c
@@ -15,7 +15,7 @@
static const char nconf_readme[] = N_(
"Overview\n"
"--------\n"
-"This interface let you select features and parameters for the build.\n"
+"This interface lets you select features and parameters for the build.\n"
"Features can either be built-in, modularized, or ignored. Parameters\n"
"must be entered in as decimal or hexadecimal numbers or text.\n"
"\n"
--
1.7.10.4
This is the seabios code that adds support for loading
acpi tables from QEMU: it's working fine here and
in fact, I am able to get exactly same tables with builtin
tables and with tables coming from qemu.
Changes from v1:
- simplified linker interfaces along the lines suggested
by Kevin
- fixed lots of bugs
Michael S. Tsirkin (5):
linker: utility to patch in-memory ROM files
pmm: add a way to test whether memory is in FSEG
acpi: pack rsdp
acpi: load and link tables from /etc/acpi/
acpi: add an option to disable builtin tables
Makefile | 2 +-
src/Kconfig | 12 +++++-
src/acpi.c | 39 +++++++++++++++++
src/acpi.h | 2 +-
src/linker.c | 132 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
src/linker.h | 72 +++++++++++++++++++++++++++++++
src/paravirt.c | 2 +
src/pmm.c | 24 ++++++++---
src/util.h | 2 +
9 files changed, 278 insertions(+), 9 deletions(-)
create mode 100644 src/linker.c
create mode 100644 src/linker.h
--
MST
This is a refactoring of patch
PATCH v2: pci: load memory window setup from host.
Please note qemu merged the required interface already.
Please review, and consider for release.
Changes from v3:
- fix bug causing windows to crash
- better debug output (when enabled)
Changes from v2:
- address comments by Kevin:
avoid dynamic memory allocation
refactor code to avoid special-casing loaded windows
- split out to two patch series
Changes from v1:
- fix bug in 64 bit range check
- address Kevin's comments:
move file load into pciinit.c
dont reorder initialization
sizeof style fix
Michael S. Tsirkin (2):
pciinit: refactor mem init code
pci: load memory window setup from host
src/pciinit.c | 145 ++++++++++++++++++++++++++++++++++++++++++++++++----------
1 file changed, 121 insertions(+), 24 deletions(-)
--
MST
Hello,
I suggest adding the Open Firmware paths for devices SeaBIOS can boot
from
(example: /pci@i0cf8/usb@12,2/usb-*@4) to the boot selection screen. I
needed
to buy a serial adapter and a null modem just to get that string. That
string
is important since you cannot modify the default boot sequence without
it.
Best Regards,
Christian Weinz
Hi,
We already have tools/vgafixup.py to workaround some x86emu issues.
Looks like some more is needed, reportly[1] there are more xorg
segfaults which look alot like x86emu isses. They trigger with stdvga
and qxl (which are handled using the vesa driver), and they only happen
on x86_64 where vm86 mode can not be used to run the vgabios.
Guest in question is RHEL-5 / centos-5. Xorg version is 1.1.1
Some people digged deep into the x86emu changelogs when this showed up
for the first time. Anyone remembers the details? Are there known
x86emu bugs where we don't have workarounds for?
cheers,
Gerd
[1] https://bugzilla.redhat.com/show_bug.cgi?id=987097
Qemu commit 9ee59f3 removed the bochs bios apm interface emulation at
port 0x8900. That broke poweroff via APM. Fix it by powering off the
machine using the acpi pm control register.
Old code is left in, so seabios wil try both poweroff methods. Cleaning
that eventually up is left for another patch, after checking it isn't
needed. Qemu never implemented "Standby" and "Suspend", only
"Shutdown", so it looks like there might be non-qemu use cases (bochs
probably).
Easiest way to test this is the syslinux poweroff module; modern linux
distros usually have CONFIG_APM turned off.
Reported-by: Sebastian Herbszt <herbszt(a)gmx.de>
Signed-off-by: Gerd Hoffmann <kraxel(a)redhat.com>
---
src/acpi.c | 5 +++++
src/acpi.h | 1 +
src/apm.c | 2 ++
3 files changed, 8 insertions(+)
diff --git a/src/acpi.c b/src/acpi.c
index 3699898..44ba507 100644
--- a/src/acpi.c
+++ b/src/acpi.c
@@ -18,6 +18,8 @@
#include "acpi-dsdt.hex"
+u32 acpi_pm1a_cnt VARLOW = PORT_ACPI_PM_BASE + 0x04;
+
static void
build_header(struct acpi_table_header *h, u32 sig, int len, u8 rev)
{
@@ -730,9 +732,12 @@ find_acpi_features(void)
if (!fadt)
return;
u32 pm_tmr = le32_to_cpu(fadt->pm_tmr_blk);
+ u32 pm1a_cnt = le32_to_cpu(fadt->pm1a_cnt_blk);
dprintf(4, "pm_tmr_blk=%x\n", pm_tmr);
if (pm_tmr)
pmtimer_setup(pm_tmr, 3579);
+ if (pm1a_cnt)
+ acpi_pm1a_cnt = pm1a_cnt;
// Theoretically we should check the 'reset_reg_sup' flag, but Windows
// doesn't and thus nobody seems to *set* it. If the table is large enough
diff --git a/src/acpi.h b/src/acpi.h
index 5d1e104..f0d24d4 100644
--- a/src/acpi.h
+++ b/src/acpi.h
@@ -36,6 +36,7 @@ struct rsdp_descriptor { /* Root System Descriptor Pointer */
};
extern struct rsdp_descriptor *RsdpAddr;
+extern u32 acpi_pm1a_cnt;
/* Table structure from Linux kernel (the ACPI tables are under the
BSD license) */
diff --git a/src/apm.c b/src/apm.c
index b2eac6d..b3b351c 100644
--- a/src/apm.c
+++ b/src/apm.c
@@ -12,6 +12,7 @@
#include "config.h" // CONFIG_*
#include "biosvar.h" // GET_GLOBAL
#include "paravirt.h" // runningOnQEMU
+#include "acpi.h" // acpi_pm_ctl
static void
out_str(const char *str_cs)
@@ -109,6 +110,7 @@ void
apm_shutdown(void)
{
irq_disable();
+ outw(0x2000, acpi_pm1a_cnt);
out_str("Shutdown");
for (;;)
hlt();
--
1.7.9.7
Qemu commit 9ee59f3 removed the bochs bios apm interface emulation at
port 0x8900. That broke poweroff via APM. Fix it by powering off the
machine using the acpi pm control register.
Old code is left in, so seabios wil try both poweroff methods. Cleaning
that eventually up is left for another patch, after checking it isn't
needed. Qemu never implemented "Standby" and "Suspend", only
"Shutdown", so it looks like there might be non-qemu use cases (bochs
probably).
Easiest way to test this is the syslinux poweroff module; modern linux
distros usually have CONFIG_APM turned off.
Reported-by: Sebastian Herbszt <herbszt(a)gmx.de>
Signed-off-by: Gerd Hoffmann <kraxel(a)redhat.com>
---
src/acpi.c | 5 +++++
src/acpi.h | 1 +
src/apm.c | 2 ++
3 files changed, 8 insertions(+)
diff --git a/src/acpi.c b/src/acpi.c
index 3699898..2062033 100644
--- a/src/acpi.c
+++ b/src/acpi.c
@@ -18,6 +18,8 @@
#include "acpi-dsdt.hex"
+u32 acpi_pm1a_cnt = PORT_ACPI_PM_BASE + 0x04;
+
static void
build_header(struct acpi_table_header *h, u32 sig, int len, u8 rev)
{
@@ -730,9 +732,12 @@ find_acpi_features(void)
if (!fadt)
return;
u32 pm_tmr = le32_to_cpu(fadt->pm_tmr_blk);
+ u32 pm1a_cnt = le32_to_cpu(fadt->pm1a_cnt_blk);
dprintf(4, "pm_tmr_blk=%x\n", pm_tmr);
if (pm_tmr)
pmtimer_setup(pm_tmr, 3579);
+ if (pm1a_cnt)
+ acpi_pm1a_cnt = pm1a_cnt;
// Theoretically we should check the 'reset_reg_sup' flag, but Windows
// doesn't and thus nobody seems to *set* it. If the table is large enough
diff --git a/src/acpi.h b/src/acpi.h
index 5d1e104..f0d24d4 100644
--- a/src/acpi.h
+++ b/src/acpi.h
@@ -36,6 +36,7 @@ struct rsdp_descriptor { /* Root System Descriptor Pointer */
};
extern struct rsdp_descriptor *RsdpAddr;
+extern u32 acpi_pm1a_cnt;
/* Table structure from Linux kernel (the ACPI tables are under the
BSD license) */
diff --git a/src/apm.c b/src/apm.c
index b2eac6d..b3b351c 100644
--- a/src/apm.c
+++ b/src/apm.c
@@ -12,6 +12,7 @@
#include "config.h" // CONFIG_*
#include "biosvar.h" // GET_GLOBAL
#include "paravirt.h" // runningOnQEMU
+#include "acpi.h" // acpi_pm_ctl
static void
out_str(const char *str_cs)
@@ -109,6 +110,7 @@ void
apm_shutdown(void)
{
irq_disable();
+ outw(0x2000, acpi_pm1a_cnt);
out_str("Shutdown");
for (;;)
hlt();
--
1.7.9.7
Qemu commit 9ee59f3 removed the bochs bios apm interface emulation at
port 0x8900. That broke poweroff via APM. Fix it by powering off the
machine using the acpi pm control register.
Old code is left in, so seabios wil try both poweroff methods. Cleaning
that eventually up is left for another patch, after checking it isn't
needed. Qemu never implemented "Standby" and "Suspend", only
"Shutdown", so it looks like there might be non-qemu use cases (bochs
probably).
Easiest way to test this is the syslinux poweroff module; modern linux
distros usually have CONFIG_APM turned off.
Reported-by: Sebastian Herbszt <herbszt(a)gmx.de>
Signed-off-by: Gerd Hoffmann <kraxel(a)redhat.com>
---
src/apm.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/apm.c b/src/apm.c
index b2eac6d..15f37dd 100644
--- a/src/apm.c
+++ b/src/apm.c
@@ -109,6 +109,7 @@ void
apm_shutdown(void)
{
irq_disable();
+ outw(0x2000, PORT_ACPI_PM_BASE + 0x04);
out_str("Shutdown");
for (;;)
hlt();
--
1.7.9.7