The Mobius and 386 machines

This forums is for OS project announcements including project openings, new releases, update notices, test requests, and job openings (both paying and volunteer).
srg

The Mobius and 386 machines

Post 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
Tim

Re:The Mobius and 386 machines

Post 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.
srg

Re:The Mobius and 386 machines

Post 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
User avatar
Pype.Clicker
Member
Member
Posts: 5964
Joined: Wed Oct 18, 2006 2:31 am
Location: In a galaxy, far, far away
Contact:

Re:The Mobius and 386 machines

Post 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 ...
srg

Re:The Mobius and 386 machines

Post 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
aladdin

Re:The Mobius and 386 machines

Post by aladdin »

in my computer it crachs with a page fault!!!
srg

Re:The Mobius and 386 machines

Post 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
Tim

Re:The Mobius and 386 machines

Post 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?
srg

Re:The Mobius and 386 machines

Post 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.
Tim

Re:The Mobius and 386 machines

Post 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).
DennisCGc

Re:The Mobius and 386 machines

Post 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 ;) )
BI lazy

Re:The Mobius and 386 machines

Post 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
srg

Re:The Mobius and 386 machines

Post 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
srg

Re:The Mobius and 386 machines

Post 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
Therx

Re:The Mobius and 386 machines

Post by Therx »

wasn't CPUID only in the late 486's and basically not around until pentiums
Post Reply