linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [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).