[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v7 00/10] i8254, i8259 and running Microport UNIX (c
From: |
Matthew Ogilvie |
Subject: |
[Qemu-devel] [PATCH v7 00/10] i8254, i8259 and running Microport UNIX (ca 1987) |
Date: |
Sun, 25 Nov 2012 14:51:36 -0700 |
This series makes a series of mostly-unrelated fixes to allow
running an old Microport UNIX (ca 1987) guest under qemu.
Changes since version 6:
* Patches 1 through 6 haven't changed, other than resolving
a couple of simple conflicts.
* Patch 7 "fixes" IRQ0 by just making it work like before,
rather than fixing it properly. This avoids possible risk
to cross-version migration, etc.
* Patches 8, 9, and 10 provide one possible gradual transition path
to properly fix the 8254 model with relatively little risk to
migration/etc. The idea is that 8 and 9 could be applied
immediately in preparation for a future fix, and then the
actual fix (10) could be applied sometime in the future when
migrating to or from pre-patch-9 versions is no longer a concern.
I am not actually aware of ANY guest that actually needs
an improved 8254 model, but this provides one way to improve
it if desired.
----------------
Split up this series?
I'm not sure what the next steps are to get these into qemu, other
than waiting for 1.4 for at least the non-trivial parts?
Patches 1 through 3 could be considered independent trivial patches.
Would splitting them apart improve the changes of getting them into qemu?
Patch 4 isn't quite trivial, but it is well isolated (other than
small documentation conflicts against patch 3). Should it be split
off? It hasn't changed since version 3, but nobody has really
commented on it.
Patches 5 through 10 are interrelated, and should remain related in
a series.
----------------
Still needed:
* Corresponding KVM patches. The best approach may depend
on what option is selected for qemu above.
* Note that KVM uses a simplified model that doesn't try
to emulate the trailing edge of the interrupt very well
at all. I'm not proposing to change this aspect of it.
* A patch analogous to 7 should be easy.
* Patches 8 through 10 are also fairly easy by themselves.
But now we start having an explosion of combinations
of versions of KVM and qemu and migration to/from, and it
might be better to:
* Or more involved fixes would involve new ioctl()'s and
command line arguments to select old or fixed 8254 models
dynamically. See below.
----------------
Alternative options for improving the i8254 model and migration:
1. Don't fix 8254 at all. Just apply through patch 7 or 8, and don't try
to make any additional fixes. I don't know of any guests that need
improvements, so this could be a viable option.
2. Just fix it immediately, and don't worry about migration. Squash
the last few patches together. A single missed periodic
timer tick that only happens when migrating
between versions of qemu is probably not a significant
concern. (Unless someone knows of an OS that actually runs
the i8254 in single shot mode 4, where a missed interrupt
could cause a hang or something?)
3. Use patches 8 and 9 now, and patch 10 sometime in the future.
If it was just qemu, this would be attractive. But when you
also need to worry about a bunch of combinations of versions of
qemu and KVM and migration, this is looking less attractive.
4. Support both old and fixed i8254 models, selectable at runtime
with a command line option. (Question: What should such an
option look like?) This may be the best way to actually
change the 8254, but I'm not sure changes are even needed.
It's certainly getting rather far afield from running Microport
UNIX...
----------------
Matthew Ogilvie (10):
fix some debug printf format strings
vl: fix -hdachs/-hda argument order parsing issues
qemu-options.hx: mention retrace= VGA option
vga: add some optional CGA compatibility hacks
i8259: fix so that dropping IRQ level always clears the interrupt
request
i8259: refactor pic_set_irq level logic
i8254/i8259: workaround to make IRQ0 work like before
i8254: add comments about fixing timings
i8254: prepare for migration compatibility with future fixes
FOR FUTURE: fix i8254/i8259 IRQ0 line logic
hw/cirrus_vga.c | 4 ++--
hw/i8254.c | 24 +++++++++++++++++++--
hw/i8254_common.c | 18 ++++++----------
hw/i8259.c | 28 ++++++++++---------------
hw/ide/cmd646.c | 5 +++--
hw/ide/via.c | 5 +++--
hw/pc.h | 4 ++++
hw/vga.c | 37 ++++++++++++++++++++++++++-------
qemu-options.hx | 27 +++++++++++++++++++++++-
vl.c | 62 ++++++++++++++++++++++++++++++++++++-------------------
10 files changed, 147 insertions(+), 67 deletions(-)
--
1.7.10.2.484.gcd07cc5
- [Qemu-devel] [PATCH v7 00/10] i8254, i8259 and running Microport UNIX (ca 1987),
Matthew Ogilvie <=
- [Qemu-devel] [PATCH v7 01/10] fix some debug printf format strings, Matthew Ogilvie, 2012/11/25
- [Qemu-devel] [PATCH v7 05/10] i8259: fix so that dropping IRQ level always clears the interrupt request, Matthew Ogilvie, 2012/11/25
- [Qemu-devel] [PATCH v7 07/10] i8254/i8259: workaround to make IRQ0 work like before, Matthew Ogilvie, 2012/11/25
- [Qemu-devel] [PATCH v7 02/10] vl: fix -hdachs/-hda argument order parsing issues, Matthew Ogilvie, 2012/11/25
- [Qemu-devel] [PATCH v7 08/10] i8254: add comments about fixing timings, Matthew Ogilvie, 2012/11/25
- [Qemu-devel] [PATCH v7 03/10] qemu-options.hx: mention retrace= VGA option, Matthew Ogilvie, 2012/11/25
- [Qemu-devel] [PATCH v7 04/10] vga: add some optional CGA compatibility hacks, Matthew Ogilvie, 2012/11/25
- [Qemu-devel] [PATCH v7 06/10] i8259: refactor pic_set_irq level logic, Matthew Ogilvie, 2012/11/25
- [Qemu-devel] [PATCH v7 09/10] i8254: prepare for migration compatibility with future fixes, Matthew Ogilvie, 2012/11/25
- [Qemu-devel] [PATCH v7 10/10] FOR FUTURE: fix i8254/i8259 IRQ0 line logic, Matthew Ogilvie, 2012/11/25