Page 1 of 2

The Mobius and 386 machines

Posted: Tue Mar 16, 2004 11:11 am
by srg
Hi

I've just tested The Mobius 2003-10-27 from a floppy on most of my machines and I've noticed a problem with 386s

On both my 386DX-40 machines, and my NexGen Nx586 (has 386 instruction set) machine, just after grub finished loading the module mobius.tar.gz, the machine's in question just Reset (possibly tripple fault).

My Am5x86 Machine and up all run it fine. I might test it with an old 486 SX or DX.

Anyway, what are the System Requirements for the Mobius? Is it meant to be able to run on a 386 (and NexGen of course :))?

Or could the error be happening in grub?

srg

Re:The Mobius and 386 machines

Posted: Tue Mar 16, 2004 2:21 pm
by Tim
It doesn't support the 386 :). I'm using INVLPG, which is 486+, and I really don't think it's worth putting in a workaround just to support people mad enough to still own a 386 :p.

Re:The Mobius and 386 machines

Posted: Tue Mar 16, 2004 3:38 pm
by srg
Tim Robinson wrote:It doesn't support the 386 :). I'm using INVLPG, which is 486+, and I really don't think it's worth putting in a workaround just to support people mad enough to still own a 386 :p.


I see

Out of interest, why are you using this BTW, what advantage does invalidating a single page table entry in the Translation Look-Aside Buffer have, does it make things quicker?

I'm not just mad, I'm insane! I bought 8 386 mobo's from ebay. I've got a 486DLC on the way. Although I suppose I'm a bit of a collector. BTW I'm selling one board with an Intel 386DX 33 (no ram).

My plan is to support the 386 and use conditional compilation dependant on the CPU used. Sure the code size will be bigger but wider support is quite important to me.

srg

Re:The Mobius and 386 machines

Posted: Tue Mar 16, 2004 4:55 pm
by Pype.Clicker
you will see enormous performance gain with 'invlpg'. Without it, everytime you change the mapping of a page or make a page absent, you have to flush the whole TLB (by reloading CR3), which means any further access to memory will incur a performance penalty from reading the PDE and PTE back from main memory (or L1/L2 cache).

With 'invlpg', only the PTE/PDE related to that very address need a refresh, other memory references will be unaffected.

Note that it's quite simple to work around:

Code: Select all

#ifdef CPU386
#define invalidate_tlb(x) asm("mov %%cr3,%0; mov %0,%%cr3")
#else
#define // normal invalidate_tlb() definition
#endif


But i understand why Tim don't want to bother with things like these... especially if he has no hardware to test them ...

Re:The Mobius and 386 machines

Posted: Wed Mar 17, 2004 2:01 am
by srg
I understand

My plan is to be able to recompile for different CPUs based in conditional compilation (Run time descisions would slow the system down of course :) ).

For me it's very important to support the widest range of systems possible.

But I can understand Tim's descision not to support the 386, as you hardly see any 386s any more and there are Hardly any NexGen Nx586s compaired to 486s out there (Which is a shame IMHO). But saying that, it was a bit foolhardy not to update the design for the Nx586 in incorperate new insructions, it kind of sealed it's own coffin (that and the proprietry motherboard).

Would it be possible, Tim, if you could state The Mobius's Minimum System Requirements on your website? This would stop questions like mine in their tracks! ;) So CPU wise, I'm guessing, it would be a minimum of a 486SX 20MHz.

BTW, your website is littered with i386 statements, just changing these to i486 would help.

Anyway, I'll test it later with my 486DLC when I get it (It's comming from Russia), that is suppose to support the 486 instruction set and runs on a 386 board (with BIOS support).

Thanks
srg

Re:The Mobius and 386 machines

Posted: Sat Mar 20, 2004 3:15 pm
by aladdin
in my computer it crachs with a page fault!!!

Re:The Mobius and 386 machines

Posted: Sun Mar 21, 2004 2:48 am
by srg
aladdin wrote:in my computer it crachs with a page fault!!!

Year, I've found that I've never been able to run it without it crashing with a page fault some time.

Sorry
srg

Re:The Mobius and 386 machines

Posted: Sun Mar 21, 2004 7:59 am
by Tim
Which version are you using? Where does it page fault? What is the CR2? What is the EIP? What does the stack dump say? How much memory does your system have? What can you find out by exploring at the debug prompt?

Re:The Mobius and 386 machines

Posted: Mon Mar 22, 2004 8:46 am
by srg
I have now tested The Mobius with a 486DLC and I get an invalid opcode at tbout the same place, it may not have that 486 instruction then.

Re:The Mobius and 386 machines

Posted: Mon Mar 22, 2004 6:09 pm
by Tim
Which release is that? They each have a date.

If you can tell me which release it is, and the EIP where the invalid instruction takes place, I can check whether it's a real bug or whether I should increase my hardware spec. Or if you type db, then the hex address of EIP, you'll get a hex dump, from which you (or I) can disassemble the code and check.

I think there's still a CPUID in there without a check for whether CPUID is supported. Maybe that's it.

PS: I just answered a post from Ben Gainey about Mobius Release 5 crashing trying to mount an NTFS volume. I should probably enhance the checks for valid FAT volumes (since the NTFS boot sector is somewhat similar to the FAT one).

Re:The Mobius and 386 machines

Posted: Tue Mar 23, 2004 10:40 am
by DennisCGc
Hey, I tested it and my keyboard doesn't work :o
Bochs log:

Code: Select all

00155975058i[KBD  ] reset-disable command received
00157455481e[KBD  ] controller_enQ(): OUTB set!
**similar message repeated several times**
00157466698e[KBD  ] controller_enQ(): OUTB set!
00285290500i[KBD  ] internal keyboard buffer full, ignoring scancode.(20)
00285632500i[KBD  ] internal keyboard buffer full, ignoring scancode.(a0)
00285906500i[KBD  ] internal keyboard buffer full, ignoring scancode.(20)


I don't know what's wrong with it.
(But the startup screen looks quite good ;) )

Re:The Mobius and 386 machines

Posted: Wed Mar 24, 2004 12:45 am
by BI lazy
*hemhem* [rofl] - no, I am not a toad nor a toadstool.

I know, Tim can speak for himself. I just want to remark, that all your nice comments about what's not working are not very helpful. you neither tell which build of m?bius you are testing nor at which position in the code it fails. You can make screenshots or notate the registerdump in the debug console of m?bius (which is a plain good thing). That would be faaar more helpful than vague remarks. Even the doctor is clueless if you only moan about a indifferent hurt in the groin.

Just my two cents

Re:The Mobius and 386 machines

Posted: Wed Mar 24, 2004 3:09 am
by srg
BI lazy wrote:*hemhem* [rofl] - no, I am not a toad nor a toadstool.

I know, Tim can speak for himself. I just want to remark, that all your nice comments about what's not working are not very helpful. you neither tell which build of m?bius you are testing nor at which position in the code it fails. You can make screenshots or notate the registerdump in the debug console of m?bius (which is a plain good thing). That would be faaar more helpful than vague remarks. Even the doctor is clueless if you only moan about a indifferent hurt in the groin.

Just my two cents


Sorry, I just havn't got round to it yet.

srg

Re:The Mobius and 386 machines

Posted: Wed Mar 24, 2004 3:54 am
by srg
OK

I'm now using Release 5 (ooooh!).

Anyway, with the DLC, The invalid instruction happens at:

0xc00044df

which is cpuid

Definately that, as it also happens on my Intel 486DX 50MHz

srg

Re:The Mobius and 386 machines

Posted: Mon Mar 29, 2004 3:18 am
by Therx
wasn't CPUID only in the late 486's and basically not around until pentiums