Hi,
First patch swapped for v2 of this series, using the patch from Paolo
now, which removes the pmbase dependency in the smm code altogether.
Second patch (unmodified) makes acpi pmbase a variable and figure where
to place the registers at runtime. No functional change.
With these preparations in place the third patch (unmodified too) moves
the acpi pm registers below 0x1000 for new enougth qemu (2.0+). The
whole 0x1000 -> 0xffff range is free then on q35.
cheers,
Gerd
Gerd …
[View More]Hoffmann (2):
acpi: remove PORT_ACPI_PM_BASE constant
Allow using full io region on q35.
Paolo Bonzini (1):
smm: remove code to handle ACPI disable/enable
src/fw/acpi.c | 14 +++++++-------
src/fw/biostables.c | 1 +
src/fw/paravirt.c | 5 +++++
src/fw/paravirt.h | 2 --
src/fw/pciinit.c | 32 +++++++++++++++++---------------
src/fw/smm.c | 29 ++---------------------------
src/util.h | 1 +
7 files changed, 33 insertions(+), 51 deletions(-)
--
1.8.3.1
[View Less]
This patch series refactors the vgabios graphics mode framebuffer
manipulation code. It then adds in support for manipulating "direct"
framebuffers that modern vga modes use.
This series (along with the followup patches for coreboot native vga
vgabios) is also available at:
https://github.com/KevinOConnor/seabios/tree/testing
-Kevin
Kevin O'Connor (7):
vgabios: Add option to control use of standard VGA IO ports.
vgabios: Split vgafb_scroll() into separate move and clear functions.
…
[View More]vgabios: Rewrite vgafb.c graphics operations to set of 4 standard
operators.
vgabios: Introduce text_address().
vgabios: Add support for manipulating framebuffers in high memory.
Set the color attribute when calling vgabios print character.
vgabios: PMM scan was incorrectly depending on a zero %ds segment.
src/output.c | 1 +
vgasrc/Kconfig | 8 +
vgasrc/vgabios.c | 119 ++++++---
vgasrc/vgabios.h | 34 ++-
vgasrc/vgafb.c | 762 +++++++++++++++++++++++++++++--------------------------
vgasrc/vgainit.c | 15 +-
6 files changed, 536 insertions(+), 403 deletions(-)
--
1.9.0
[View Less]
Hi,
Digged out an old patch from the mailing list, to make smm use
acpi_pm1a_cnt. This allows to make the acpi pmbase a variable
and figure where to place the registers at runtime.
With these preparations in place we can go move acpi pm registers
below 0x1000 for new enougth qemu (2.0+). The whole 0x1000 -> 0xffff
range is free then on q35.
cheers,
Gerd
Gerd Hoffmann (3):
smm: use acpi_pm1a_cnt
acpi: remove PORT_ACPI_PM_BASE constant
Allow using full io region on q35.
src/fw/…
[View More]acpi.c | 14 +++++++-------
src/fw/biostables.c | 3 ++-
src/fw/paravirt.c | 5 +++++
src/fw/paravirt.h | 2 --
src/fw/pciinit.c | 32 +++++++++++++++++---------------
src/fw/smm.c | 8 ++++----
src/util.h | 3 ++-
7 files changed, 37 insertions(+), 30 deletions(-)
--
1.8.3.1
[View Less]
Hello Seabios!
I started the thread from qemu-list and Laszlo suggested me to post the question here.
In Seabios, the call-path of calling vgarom entry point is the following:
handle_post() [src/post.c]
make_bios_writable() [src/fw/shadow.c]
make_bios_writable_intel()
__make_bios_writable_intel() -- shadows vgabios in C segment too
dopost() [src/post.c]
maininit()
vgarom_setup() [src/optionroms.c]
init_pcirom()
init_optionrom()
callrom()
…
[View More] __callrom()
_rom_header_entry [vgasrc/vgaentry.S]
vga_post() [vgasrc/vgainit.c]
For me, it looks like seabios (bios.bin) calls a function, vga_post, that is supposed be
in vgabios.bin. It makes me thinking that vgabios.bin is somehow embedded in bios.bin.
But, in my case I use both bios.bin and vgabios.bin to booting up my guest OS (I'm using qemu).
Apparently, I'm not clearly understanding the difference between vgabios inside bios.bin
and vgabios-stdvga.bin. Could you tell me the difference?
And, I'm trying to debug a vgabios.bin by examining with qemu+gdb. Especially, I'm trying to
set the break-point to the entry point of vgabios.bin and I'm not quite sure how to do this
since I don't know the address where vgabios.bin is loaded. I would appreciate if you give me
some hint about this.
Best regards,
Jaeyong
[View Less]
Since commit d85c22e44ee4e24f2be19d579ea8fa0066a85fbb,
when pulling aggregate tables from fw_cfg, we generate
a default type 0 (bios info) structure if one isn't
already provided.
This patch enables the "virtual machine" bit within the
bios_characteristics_extension_bytes field of the default
type 0 structure.
Signed-off-by: Gabriel Somlo <somlo(a)cmu.edu>
---
What do you all think, does it make sense to flip on the
"virtual machine" bit when generating a default Bios Info
(type 0) …
[View More]table to go along with everything else we received
via fw_cfg ?
If yes, please apply :)
Thanks,
Gabriel
src/fw/biostables.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/src/fw/biostables.c b/src/fw/biostables.c
index 17bee8e..64f3157 100644
--- a/src/fw/biostables.c
+++ b/src/fw/biostables.c
@@ -350,9 +350,10 @@ smbios_new_type_0(void *start,
memset(p->bios_characteristics, 0, 8);
p->bios_characteristics[0] = 0x08;
- /* Enable targeted content distribution (needed for SVVP) */
+ /* Enable targeted content distribution (needed for SVVP);
+ * Also enable "virtual machine" bit: */
p->bios_characteristics_extension_bytes[0] = 0;
- p->bios_characteristics_extension_bytes[1] = 4;
+ p->bios_characteristics_extension_bytes[1] = 0x14; /* TCG/SVVP | VM */
p->system_bios_major_release = 0;
p->system_bios_minor_release = 0;
--
1.9.0
[View Less]
I've been considering a possible architectural change to SeaBIOS.
Currently, SeaBIOS contains a mix of 16bit code and 32bit code. All
of the initialization and bootup code is done in regular 32bit mode,
but runtime code (the callbacks the OS uses) is generally run in 16bit
mode. I have been thinking about possibly changing this so that
hardware driver code runs exclusively in 32bit mode.
Specifically, this would involve running the disk controller code, the
keyboard/mouse controller code, …
[View More]and all hardware interrupt handlers
exclusively in 32bit mode. To support this, some BIOS calls would
require SeaBIOS to transition from 16bit mode to 32bit mode in order
to satisfy the request. This trampolining to 32bit mode at runtime is
already done for the AHCI driver, the XHCI driver, and the pvscsi
driver - as these devices can not function with only a 16bit driver.
Even with this proposed change, SeaBIOS would still continue to have
16bit code, though the remaining 16bit code would be almost
exclusively for interface support and it would be noticeably smaller.
In initial tests, the final 16bit code size drops from ~35K to ~16K.
The main benefit of this change is that it makes it easier to develop
and enhance the SeaBIOS hardware driver code, it makes understanding
the code simpler, and reduces the overall size of the SeaBIOS binary.
The biggest downside to this change would be problems running old DOS
era programs that attempt to run the BIOS in vm86 mode. Specifically,
the dos emm386 program is known to prevent 32 bit trampolines in
SeaBIOS from working. (There's been a bit of experience with AHCI
drivers running in 32bit mode (and now XHCI) so we have good
confidence that modern OSes wont present a problem.) To continue to
support these old DOS era programs I'm proposing we implement an SMI
to help trampoline to 32bit mode. This can be done within SeaBIOS for
QEMU TCG, but it would require work on kvm, coreboot, and ovmf to
support it. (If we go down this path and these projects aren't
extended to help trampoline to 32bit mode, then these projects would
no longer be able to run these old DOS era programs with SeaBIOS.)
For testing purposes, I have put together a series of patches to run
the SeaBIOS drivers in 32bit mode and to implement the QEMU TCG SMI
helper. The code is in a very rough state, but it demonstrates the
idea. It's available at:
https://github.com/KevinOConnor/seabios/tree/testing-32bit-drivers
Unfortunately, the QEMU TCG SMI doesn't seem to help in vm86 mode, but
I believe it is due to the QEMU code not handling CPL changes properly
in SMM mode. I still need to confirm this though.
In closing, this email is to start discussion on the proposal. This
would not impact the next release of SeaBIOS.
Comments?
-Kevin
[View Less]
Hi,
I think it's time to start planning the next seabios release. First,
because a bunch of changes have piled up in master. And second, because
of the smbios changes. They are a step forward in making seabios less
dependent on qemu internals and I want have that in qemu soonish.
So, how about this plan:
(1) merge smbios patches in qemu (patchset is close to final now).
(2) merge smbios patch in seabios
(3) start freeze
(4) tag release candidate (early may is realistic for that I …
[View More]think).
(5) pull release candidate into qemu for wider testing
(6) merge bugfix patches if needed
(7) tag final release 2-3 weeks after release candidate (end of
may probably).
(8) pull final release into qemu.
Comments?
cheers,
Gerd
[View Less]
Hi,
This patch adds a config option to move PORT_ACPI_PM_BASE,
then use the full I/O address space on q35.
Patches have been sent already a few months back, but IIRC we didn't
came to a final conclusion. Resending rebased + with minor help text
update to re-kick discussion.
cheers,
Gerd
Gerd Hoffmann (2):
Add config option to move PORT_ACPI_PM_BASE out of the way
Allow using full io region on q35
src/Kconfig | 7 +++++++
src/fw/paravirt.h | 9 +++++++--
src/fw/pciinit.c | …
[View More]16 +++++++++-------
3 files changed, 23 insertions(+), 9 deletions(-)
--
1.8.3.1
[View Less]