* [PATCHv2] x86: Use v8086_mode helper, trivial unification
@ 2008-01-18 0:25 Harvey Harrison
2008-01-18 9:12 ` Ingo Molnar
0 siblings, 1 reply; 6+ messages in thread
From: Harvey Harrison @ 2008-01-18 0:25 UTC (permalink / raw)
To: Ingo Molnar; +Cc: H. Peter Anvin, Thomas Gleixner, LKML
Use v8086_mode inline in fault_32.c, no functional change
also ifdef the section for 32-bit only and add to fault_64.c
Signed-off-by: Harvey Harrison <harvey.harrison@gmail.com>
---
HPA noted that v8086_mode is always zero on X86_64, no ifdef
needed.
arch/x86/mm/fault_32.c | 3 ++-
arch/x86/mm/fault_64.c | 10 ++++++++++
2 files changed, 12 insertions(+), 1 deletions(-)
diff --git a/arch/x86/mm/fault_32.c b/arch/x86/mm/fault_32.c
index 77915ac..53f4fe4 100644
--- a/arch/x86/mm/fault_32.c
+++ b/arch/x86/mm/fault_32.c
@@ -550,11 +550,12 @@ good_area:
/*
* Did it hit the DOS screen memory VA from vm86 mode?
*/
- if (regs->flags & VM_MASK) {
+ if (v8086_mode(regs)) {
unsigned long bit = (address - 0xA0000) >> PAGE_SHIFT;
if (bit < 32)
tsk->thread.screen_bitmap |= 1 << bit;
}
+
up_read(&mm->mmap_sem);
return;
diff --git a/arch/x86/mm/fault_64.c b/arch/x86/mm/fault_64.c
index 84531d8..c05211d 100644
--- a/arch/x86/mm/fault_64.c
+++ b/arch/x86/mm/fault_64.c
@@ -551,6 +551,16 @@ good_area:
tsk->maj_flt++;
else
tsk->min_flt++;
+
+ /*
+ * Did it hit the DOS screen memory VA from vm86 mode?
+ */
+ if (v8086_mode(regs)) {
+ unsigned long bit = (address - 0xA0000) >> PAGE_SHIFT;
+ if (bit < 32)
+ tsk->thread.screen_bitmap |= 1 << bit;
+ }
+
up_read(&mm->mmap_sem);
return;
--
1.5.4.rc2.1164.g6451
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCHv2] x86: Use v8086_mode helper, trivial unification
2008-01-18 0:25 [PATCHv2] x86: Use v8086_mode helper, trivial unification Harvey Harrison
@ 2008-01-18 9:12 ` Ingo Molnar
2008-01-18 9:22 ` Harvey Harrison
2008-01-18 15:00 ` Ingo Molnar
0 siblings, 2 replies; 6+ messages in thread
From: Ingo Molnar @ 2008-01-18 9:12 UTC (permalink / raw)
To: Harvey Harrison; +Cc: H. Peter Anvin, Thomas Gleixner, LKML
* Harvey Harrison <harvey.harrison@gmail.com> wrote:
> Use v8086_mode inline in fault_32.c, no functional change also ifdef
> the section for 32-bit only and add to fault_64.c
> - if (regs->flags & VM_MASK) {
> + if (v8086_mode(regs)) {
> --- a/arch/x86/mm/fault_64.c
> +++ b/arch/x86/mm/fault_64.c
> @@ -551,6 +551,16 @@ good_area:
> tsk->maj_flt++;
> else
> tsk->min_flt++;
> +
> + /*
> + * Did it hit the DOS screen memory VA from vm86 mode?
> + */
> + if (v8086_mode(regs)) {
> + unsigned long bit = (address - 0xA0000) >> PAGE_SHIFT;
> + if (bit < 32)
> + tsk->thread.screen_bitmap |= 1 << bit;
> + }
hm, is there even vm86 mode in 64-bit? Anyway, gcc will eliminate it i
guess. I've applied your patch.
Ingo
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCHv2] x86: Use v8086_mode helper, trivial unification
2008-01-18 9:12 ` Ingo Molnar
@ 2008-01-18 9:22 ` Harvey Harrison
2008-01-18 15:00 ` Ingo Molnar
1 sibling, 0 replies; 6+ messages in thread
From: Harvey Harrison @ 2008-01-18 9:22 UTC (permalink / raw)
To: Ingo Molnar; +Cc: H. Peter Anvin, Thomas Gleixner, LKML
On Fri, 2008-01-18 at 10:12 +0100, Ingo Molnar wrote:
> * Harvey Harrison <harvey.harrison@gmail.com> wrote:
>
> > Use v8086_mode inline in fault_32.c, no functional change also ifdef
> > the section for 32-bit only and add to fault_64.c
>
> > - if (regs->flags & VM_MASK) {
> > + if (v8086_mode(regs)) {
>
> > --- a/arch/x86/mm/fault_64.c
> > +++ b/arch/x86/mm/fault_64.c
> > @@ -551,6 +551,16 @@ good_area:
> > tsk->maj_flt++;
> > else
> > tsk->min_flt++;
> > +
> > + /*
> > + * Did it hit the DOS screen memory VA from vm86 mode?
> > + */
> > + if (v8086_mode(regs)) {
> > + unsigned long bit = (address - 0xA0000) >> PAGE_SHIFT;
> > + if (bit < 32)
> > + tsk->thread.screen_bitmap |= 1 << bit;
> > + }
>
> hm, is there even vm86 mode in 64-bit? Anyway, gcc will eliminate it i
> guess. I've applied your patch.
>
No, it doesn't mean anything to 64-bit, but helps make the diff a little
bit smaller, getting pretty close now.
Still needs a bit of work to introduce oops_begin/end from 64-bit to
32-bit in traps_32.c and introduce a bad_pgtable-like function to
32bit, then we're down to small differences between 32/64 bit
do_page_fault and vmalloc_sync_all that should be relatively clean
to harmonize.
Got distracted with the ptrace stuff today, but patch coming soon.
Harvey
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCHv2] x86: Use v8086_mode helper, trivial unification
2008-01-18 9:12 ` Ingo Molnar
2008-01-18 9:22 ` Harvey Harrison
@ 2008-01-18 15:00 ` Ingo Molnar
2008-01-18 19:04 ` Harvey Harrison
1 sibling, 1 reply; 6+ messages in thread
From: Ingo Molnar @ 2008-01-18 15:00 UTC (permalink / raw)
To: Harvey Harrison; +Cc: H. Peter Anvin, Thomas Gleixner, LKML
> > + /*
> > + * Did it hit the DOS screen memory VA from vm86 mode?
> > + */
> > + if (v8086_mode(regs)) {
> > + unsigned long bit = (address - 0xA0000) >> PAGE_SHIFT;
> > + if (bit < 32)
> > + tsk->thread.screen_bitmap |= 1 << bit;
> > + }
this does not build on 64-bit, because screen_bitmap is 32-bit only - so
i had to pull the patch. I suspect a small #ifdef section would look
better here?
Ingo
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCHv2] x86: Use v8086_mode helper, trivial unification
2008-01-18 19:04 ` Harvey Harrison
@ 2008-01-18 19:02 ` H. Peter Anvin
0 siblings, 0 replies; 6+ messages in thread
From: H. Peter Anvin @ 2008-01-18 19:02 UTC (permalink / raw)
To: Harvey Harrison; +Cc: Ingo Molnar, Thomas Gleixner, LKML
Harvey Harrison wrote:
> On Fri, 2008-01-18 at 16:00 +0100, Ingo Molnar wrote:
>>>> + /*
>>>> + * Did it hit the DOS screen memory VA from vm86 mode?
>>>> + */
>>>> + if (v8086_mode(regs)) {
>>>> + unsigned long bit = (address - 0xA0000) >> PAGE_SHIFT;
>>>> + if (bit < 32)
>>>> + tsk->thread.screen_bitmap |= 1 << bit;
>>>> + }
>> this does not build on 64-bit, because screen_bitmap is 32-bit only - so
>> i had to pull the patch. I suspect a small #ifdef section would look
>> better here?
>>
>
> My original patch had the ifdef, you can grab that one.
>
Me bad, I should have been less definite in my reply.
-hpa
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCHv2] x86: Use v8086_mode helper, trivial unification
2008-01-18 15:00 ` Ingo Molnar
@ 2008-01-18 19:04 ` Harvey Harrison
2008-01-18 19:02 ` H. Peter Anvin
0 siblings, 1 reply; 6+ messages in thread
From: Harvey Harrison @ 2008-01-18 19:04 UTC (permalink / raw)
To: Ingo Molnar; +Cc: H. Peter Anvin, Thomas Gleixner, LKML
On Fri, 2008-01-18 at 16:00 +0100, Ingo Molnar wrote:
> > > + /*
> > > + * Did it hit the DOS screen memory VA from vm86 mode?
> > > + */
> > > + if (v8086_mode(regs)) {
> > > + unsigned long bit = (address - 0xA0000) >> PAGE_SHIFT;
> > > + if (bit < 32)
> > > + tsk->thread.screen_bitmap |= 1 << bit;
> > > + }
>
> this does not build on 64-bit, because screen_bitmap is 32-bit only - so
> i had to pull the patch. I suspect a small #ifdef section would look
> better here?
>
My original patch had the ifdef, you can grab that one.
Harvey
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2008-01-18 19:08 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-01-18 0:25 [PATCHv2] x86: Use v8086_mode helper, trivial unification Harvey Harrison
2008-01-18 9:12 ` Ingo Molnar
2008-01-18 9:22 ` Harvey Harrison
2008-01-18 15:00 ` Ingo Molnar
2008-01-18 19:04 ` Harvey Harrison
2008-01-18 19:02 ` H. Peter Anvin
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).