Sysop: | Amessyroom |
---|---|
Location: | Fayetteville, NC |
Users: | 42 |
Nodes: | 6 (0 / 6) |
Uptime: | 01:20:42 |
Calls: | 220 |
Calls today: | 1 |
Files: | 824 |
Messages: | 121,522 |
Posted today: | 6 |
Just saw a mention of a proposal from Intel to produce a simplified
variant of the AMD64/x86-64 architecture, leaving out a whole bunch of
legacy stuff that doesn’t get much use these days.
One of the things proposed for removal is the Ring 1 and Ring 2 privilege modes.
Does OpenVMS on AMD64 make use of these modes?
One of the things proposed for removal is the Ring 1 and Ring 2
privilege
modes.
Does OpenVMS on AMD64 make use of these modes?
My understanding of the proposed changes are:
64 bit OS 64 bit app - works
64 bit OS 32 bit apps - works
32 bit OS 32 bit apps - gone
32 bit OS 16 bit apps - gone
16 bit OS 16 bit apps - gone
VMS x86-64 is 64 bit OS 64 bit apps (the fact that pointers are
often stored with only low 32 bit bit in RAM is irrelevant).
On Thu, 2024-10-17 at 19:27 -0400, Arne Vajhøj wrote:
One of the things proposed for removal is the Ring 1 and Ring 2
privilege
modes.
Does OpenVMS on AMD64 make use of these modes?
My understanding of the proposed changes are:
64 bit OS 64 bit app - works
64 bit OS 32 bit apps - works
32 bit OS 32 bit apps - gone
32 bit OS 16 bit apps - gone
16 bit OS 16 bit apps - gone
VMS x86-64 is 64 bit OS 64 bit apps (the fact that pointers are
often stored with only low 32 bit bit in RAM is irrelevant).
His question was about the ring priviledge modes, not what apps and
what OS will run on the proposed architecture.
His question was about the ring priviledge modes, not what apps and
what OS will run on the proposed architecture.
I read the question. And I tried to answer.
No changes for 64 bit OS 64 bit apps - and that includes VMS.
(excluding boot process, which need to do some stuff before
it actually becomes a running 64 bit OS)
The details about why has been mentioned a few times
previously.
x86-64 in long mode only support 2 modes in PTE's, so
VMS x86-64 is a hardware 2 mode OS 4 mode OS - U in ring 3,
S, E and K in ring 0.
x86-64 in long mode only support 2 modes in PTE's, so
VMS x86-64 is a hardware 2 mode OS 4 mode OS - U in ring 3,
S, E and K in ring 0.
Arne Vajhøj wrote:
x86-64 in long mode only support 2 modes in PTE's, so
VMS x86-64 is a hardware 2 mode OS 4 mode OS - U in ring 3,
S, E and K in ring 0.
Not exactly.
Ring 3 is used for Exec, Super, and User
Ring 0 is used for kernel and for transitions between modes (SWIS)
Running Exec and Super in ring 0 would blow away the separation (which,
I might add, is there more for stability than for security, before I unintentionally re-start that debate)
On 11/3/2024 9:06 AM, Camiel Vanderhoeven wrote:
Arne Vajhøj wrote:
x86-64 in long mode only support 2 modes in PTE's, so
VMS x86-64 is a hardware 2 mode OS 4 mode OS - U in ring 3,
S, E and K in ring 0.
Not exactly.
Ring 3 is used for Exec, Super, and User
Ring 0 is used for kernel and for transitions between modes (SWIS)
Running Exec and Super in ring 0 would blow away the separation
(which, I might add, is there more for stability than for security,
before I unintentionally re-start that debate)
You are more afraid that DCL or RMS would step on VMS than
applications would step on DCL or RMS?
Arne Vajhøj wrote:
On 11/3/2024 9:06 AM, Camiel Vanderhoeven wrote:
Arne Vajhøj wrote:
x86-64 in long mode only support 2 modes in PTE's, so
VMS x86-64 is a hardware 2 mode OS 4 mode OS - U in ring 3,
S, E and K in ring 0.
Not exactly.
Ring 3 is used for Exec, Super, and User
Ring 0 is used for kernel and for transitions between modes (SWIS)
Running Exec and Super in ring 0 would blow away the separation
(which, I might add, is there more for stability than for security,
before I unintentionally re-start that debate)
You are more afraid that DCL or RMS would step on VMS than
applications would step on DCL or RMS?
No, certainly not. That is why we have a separate set of page tables for
each mode. For instance, a page that has kernel write / exec read
protections is represented by the following PTEs in these 4 sets of page tables:
kernel mode: S(upervisor) W(riteable)
exec mode: U(ser) R(eadable)
super mode: not present
user mode: not present
On 11/3/2024 11:38 AM, Camiel Vanderhoeven wrote:
Arne Vajhøj wrote:
On 11/3/2024 9:06 AM, Camiel Vanderhoeven wrote:
Arne Vajhøj wrote:
x86-64 in long mode only support 2 modes in PTE's, so
VMS x86-64 is a hardware 2 mode OS 4 mode OS - U in ring 3,
S, E and K in ring 0.
Not exactly.
Ring 3 is used for Exec, Super, and User
Ring 0 is used for kernel and for transitions between modes (SWIS)
Running Exec and Super in ring 0 would blow away the separation
(which, I might add, is there more for stability than for security,
before I unintentionally re-start that debate)
You are more afraid that DCL or RMS would step on VMS than
applications would step on DCL or RMS?
No, certainly not. That is why we have a separate set of page tables for
each mode. For instance, a page that has kernel write / exec read
protections is represented by the following PTEs in these 4 sets of page
tables:
kernel mode: S(upervisor) W(riteable)
exec mode: U(ser) R(eadable)
super mode: not present
user mode: not present
The more I think about the more fascinating it sounds.
So if I write a C program with:
char __align(13) buf[8192];
and the C code call SYS$SETPRT with PRT$C_UREW on that, then
it works like.
logical/application level:
1 page of 8 KB with:
logK : write
logE : write
logS : read
logU : read
physical/hardware level:
2 pages of 4 KB each in four different page tables:
logK => page table with: physK : write, physU : ? (should not matter)
logE => page table with: physK : write, physU : write
logS => page table with: physK : write, physU : read
logU => page table with: physK : write, physU : read
Arne Vajhøj wrote:
On 11/3/2024 9:06 AM, Camiel Vanderhoeven wrote:
Arne Vajhøj wrote:
x86-64 in long mode only support 2 modes in PTE's, so
VMS x86-64 is a hardware 2 mode OS 4 mode OS - U in ring 3,
S, E and K in ring 0.
Not exactly.
Ring 3 is used for Exec, Super, and User
Ring 0 is used for kernel and for transitions between modes (SWIS)
Running Exec and Super in ring 0 would blow away the separation
(which, I might add, is there more for stability than for security,
before I unintentionally re-start that debate)
You are more afraid that DCL or RMS would step on VMS than
applications would step on DCL or RMS?
No, certainly not. That is why we have a separate set of page tables for
each mode. For instance, a page that has kernel write / exec read
protections is represented by the following PTEs in these 4 sets of page tables:
kernel mode: S(upervisor) W(riteable)
exec mode: U(ser) R(eadable)
super mode: not present
user mode: not present
On 11/3/2024 11:38 AM, Camiel Vanderhoeven wrote:
Arne Vajhøj wrote:
On 11/3/2024 9:06 AM, Camiel Vanderhoeven wrote:
Arne Vajhøj wrote:
x86-64 in long mode only support 2 modes in PTE's, so
VMS x86-64 is a hardware 2 mode OS 4 mode OS - U in ring 3,
S, E and K in ring 0.
Not exactly.
Ring 3 is used for Exec, Super, and User
Ring 0 is used for kernel and for transitions between modes (SWIS)
Running Exec and Super in ring 0 would blow away the separation
(which, I might add, is there more for stability than for security,
before I unintentionally re-start that debate)
You are more afraid that DCL or RMS would step on VMS than
applications would step on DCL or RMS?
No, certainly not. That is why we have a separate set of page tables for
each mode. For instance, a page that has kernel write / exec read
protections is represented by the following PTEs in these 4 sets of page
tables:
kernel mode: S(upervisor) W(riteable)
exec mode: U(ser) R(eadable)
super mode: not present
user mode: not present
So if U code tries to access some data structures requiring
S or E to access, then at the low level it does not
fail for lack of access but it fails for not existing for that mode
(at the higher level it may be translated to a more traditional access >violation)?