Re: Larger IO bitmap?

Stas Sergeev
2002-11-02T22:42:10Z

Hello.

Jos Hulzink wrote:
> Increasing the IO bitmap size has huge effects on your Task State Segment
> size. It sure is possible to increase that size, but be aware that this
> means you are using megabytes for your TSS's only !
As far as I can read the code
(not too far actually, so correct
me please), we have a per-process
IO bitmap copy, which gets copied
into a per-cpu TSS upon a task switch.
That means that you are right about the
overhead, but at the same time I see
nothing that keeps us from a dynamic
memory allocation for the per-process
copy, as soon as an ioperm() is called.
Is this possible?

> Running iopl(3) isn't that bad, as long as your code knows what it is
> doing...
> Ioperm is only needed for virtual 8086 mode (aka DOS emulation mode)
> With this in mind, dosemu is the only reason why the bitmap should be
> extended.
Well, at least I think that the VESA
driver of X also uses v86 for the video
bios invocations. It doesn't sucks as badly
as dosemu does probably because even using
vm86(), they still can keep IOPL==3, dosemu
can't. So I think that would still be an
improvement, probably not so noticeable as
it could be for dosemu, but still.

> In my humble opinion, dosemu is not important enough to make TSS's huge
> bloated things by default.
What if we treat dosemu not as a single
program, but as all that progs that can
work under it and require VESA?:)

> Well... it might be an option in the kernel on x86 systems: [ ] bloat
> kernel
> memory usage with huge TSS's, but I really thing this should not be the
> default way to go.
By any means I am not going to pollute the
memory by a useless per-process IO bitmap
copies. As we have a per-cpu TSS (thanks for
the hint, Denis), we'd have bloat only on a
per-process copies, but I wonder if it is
possible to avoid them except for the processes
that require it?

I wouldn't ask so much and just try the things
out, but for the one thing: what must be done,
besides increasing the IO_BITMAP_SIZE const of a
processor.h, in order to get the larger IO bitmap
right now? As I want to experement a bit, I
need to get it large at first, no matter how much
memory will it eat. But how can I do even that?