|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [RFC] x86/HVM: stdvga caching mode
Hello,
I happened to spot a ~14y old revert of the crucial hunk of the ~16y old
551ceee97513 ("x86, hvm: stdvga cache always on") in our patch set,
supposedly to deal with text mode corruption when Linux is booted without
any "vga=" option, and when - after the GUI is up - the console is
switched back to one of the text mode ones.
My immediate reaction was that we shouldn't be carrying such privately.
Yet after some playing with it I'm now at the point where I'm wondering
why we have that caching mode in the first place. It looks to hardly ever
come into use:
1) As of 68e1183411be ("libxc: introduce a xc_dom_arch for hvm-3.0-x86_32
guests") caching mode is disabled from start-of-day, due the disabling
being unconditional in hvm/save.c:arch_hvm_load(). That can of course
be worked around, but then 2).
2) In the course of setting up VGA, REP STOS (maybe REP MOVS) are
apparently used by both SeaBIOS and ROMBIOS, as can be derived from
stdvga_mem_accept() always hitting the "if ( p->dir == IOREQ_WRITE &&
p->count > 1 )" path while BIOS initializes.
Further:
3) 551ceee97513 ("x86, hvm: stdvga cache always on") bumped the maximum
range of "mapped" VRAM from 64k to 128k, yet without growing vram_page[].
Afaict in mode 0 (full 128k accessible at A0000-BFFFF) vram_get{b,l}()
now misbehave.
4) d1b531631515 ("x86/hvm: unconditionally buffer writes to VRAM") likely
went too far (or not far enough) in bypassing write handling, yet then
still allowing reads to be serviced from possibly stale cache, when
->stdvga goes first off and later back on, without ->cache changing
state.
5) 22a1fbb575df ("x86/hvm: make sure stdvga cache cannot be re-enabled")
likely went too far. Surely there are cases (VRAM clearing at the very
least) after which VRAM state is known again, and hence caching could
in principle be re-enabled.
Before I go and try to fix all of the above, I'd like to collect views
towards simply ripping out that caching mode, vastly simplifying the
source file in question.
Jan
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |