search for: pnp_bios_lock

Displaying 10 results from an estimated 10 matches for "pnp_bios_lock".

2007 Apr 18
0
[PATCH 1/3] Gdt page isolation fix
...esc_40 = per_cpu(cpu_gdt_table,cpu)[0x40 / 8]; - per_cpu(cpu_gdt_table,cpu)[0x40 / 8] = bad_bios_desc; + save_desc_40 = get_cpu_gdt_table(cpu)[0x40 / 8]; + get_cpu_gdt_table(cpu)[0x40 / 8] = bad_bios_desc; /* On some boxes IRQ's during PnP BIOS calls are deadly. */ spin_lock_irqsave(&pnp_bios_lock, flags); @@ -158,7 +158,7 @@ static inline u16 call_pnp_bios(u16 func ); spin_unlock_irqrestore(&pnp_bios_lock, flags); - per_cpu(cpu_gdt_table,cpu)[0x40 / 8] = save_desc_40; + get_cpu_gdt_table(cpu)[0x40 / 8] = save_desc_40; put_cpu(); /* If we get here and this is set then the PnP...
2007 Apr 18
0
[PATCH 1/3] Gdt page isolation fix
...esc_40 = per_cpu(cpu_gdt_table,cpu)[0x40 / 8]; - per_cpu(cpu_gdt_table,cpu)[0x40 / 8] = bad_bios_desc; + save_desc_40 = get_cpu_gdt_table(cpu)[0x40 / 8]; + get_cpu_gdt_table(cpu)[0x40 / 8] = bad_bios_desc; /* On some boxes IRQ's during PnP BIOS calls are deadly. */ spin_lock_irqsave(&pnp_bios_lock, flags); @@ -158,7 +158,7 @@ static inline u16 call_pnp_bios(u16 func ); spin_unlock_irqrestore(&pnp_bios_lock, flags); - per_cpu(cpu_gdt_table,cpu)[0x40 / 8] = save_desc_40; + get_cpu_gdt_table(cpu)[0x40 / 8] = save_desc_40; put_cpu(); /* If we get here and this is set then the PnP...
2007 Apr 18
1
[PATCH 7/21] i386 Losing fs gs to bios
...u(cpu_gdt_table,cpu)[0x40 / 8] = - per_cpu(cpu_gdt_table,cpu)[GDT_ENTRY_BAD_BIOS_CACHE]; + /* Save %fs, %gs and TLS segment which fakes real mode selector 0x40 */ + prepare_bios_segments(&save_area); /* On some boxes IRQ's during PnP BIOS calls are deadly. */ spin_lock_irqsave(&pnp_bios_lock, flags); @@ -117,15 +114,11 @@ static inline u16 call_pnp_bios(u16 func "pushl %%esi\n\t" "pushl %%ds\n\t" "pushl %%es\n\t" - "pushl %%fs\n\t" - "pushl %%gs\n\t" "pushfl\n\t" "movl %%esp, pnp_bios_fault_esp\n\t"...
2007 Apr 18
1
[PATCH 7/21] i386 Losing fs gs to bios
...u(cpu_gdt_table,cpu)[0x40 / 8] = - per_cpu(cpu_gdt_table,cpu)[GDT_ENTRY_BAD_BIOS_CACHE]; + /* Save %fs, %gs and TLS segment which fakes real mode selector 0x40 */ + prepare_bios_segments(&save_area); /* On some boxes IRQ's during PnP BIOS calls are deadly. */ spin_lock_irqsave(&pnp_bios_lock, flags); @@ -117,15 +114,11 @@ static inline u16 call_pnp_bios(u16 func "pushl %%esi\n\t" "pushl %%ds\n\t" "pushl %%es\n\t" - "pushl %%fs\n\t" - "pushl %%gs\n\t" "pushfl\n\t" "movl %%esp, pnp_bios_fault_esp\n\t"...
2007 Apr 18
0
[PATCH 8/21] i386 Segment protect properly
...================= --- linux-2.6.14-zach-work.orig/drivers/pnp/pnpbios/bioscalls.c 2005-11-04 17:45:02.000000000 -0800 +++ linux-2.6.14-zach-work/drivers/pnp/pnpbios/bioscalls.c 2005-11-05 00:28:08.000000000 -0800 @@ -103,10 +103,8 @@ static inline u16 call_pnp_bios(u16 func spin_lock_irqsave(&pnp_bios_lock, flags); /* The lock prevents us bouncing CPU here */ - if (ts1_size) - Q2_SET_SEL(smp_processor_id(), PNP_TS1, ts1_base, ts1_size); - if (ts2_size) - Q2_SET_SEL(smp_processor_id(), PNP_TS2, ts2_base, ts2_size); + prepare_protected_segment(smp_processor_id(), GDT_ENTRY_PNPBIOS_TS1, ts1_base,...
2007 Apr 18
0
[PATCH 8/21] i386 Segment protect properly
...================= --- linux-2.6.14-zach-work.orig/drivers/pnp/pnpbios/bioscalls.c 2005-11-04 17:45:02.000000000 -0800 +++ linux-2.6.14-zach-work/drivers/pnp/pnpbios/bioscalls.c 2005-11-05 00:28:08.000000000 -0800 @@ -103,10 +103,8 @@ static inline u16 call_pnp_bios(u16 func spin_lock_irqsave(&pnp_bios_lock, flags); /* The lock prevents us bouncing CPU here */ - if (ts1_size) - Q2_SET_SEL(smp_processor_id(), PNP_TS1, ts1_base, ts1_size); - if (ts2_size) - Q2_SET_SEL(smp_processor_id(), PNP_TS2, ts2_base, ts2_size); + prepare_protected_segment(smp_processor_id(), GDT_ENTRY_PNPBIOS_TS1, ts1_base,...
2007 Apr 18
1
[PATCH 2/3] Pnp bios gdt fix
...bioscalls.c 2005-09-28 14:16:34.000000000 -0700 +++ linux-2.6.14-rc2/drivers/pnp/pnpbios/bioscalls.c 2005-09-28 14:23:57.000000000 -0700 @@ -528,17 +528,24 @@ static int pnp_bios_write_escd(char *dat void pnpbios_calls_init(union pnp_bios_install_struct *header) { - int i; spin_lock_init(&pnp_bios_lock); pnp_bios_callpoint.offset = header->fields.pm16offset; pnp_bios_callpoint.segment = PNP_CS16; set_base(bad_bios_desc, __va((unsigned long)0x40 << 4)); _set_limit((char *)&bad_bios_desc, 4095 - (0x40 << 4)); - for(i=0; i < NR_CPUS; i++) - { - Q2_SET_SEL(i, PNP_CS32...
2007 Apr 18
1
[PATCH 2/3] Pnp bios gdt fix
...bioscalls.c 2005-09-28 14:16:34.000000000 -0700 +++ linux-2.6.14-rc2/drivers/pnp/pnpbios/bioscalls.c 2005-09-28 14:23:57.000000000 -0700 @@ -528,17 +528,24 @@ static int pnp_bios_write_escd(char *dat void pnpbios_calls_init(union pnp_bios_install_struct *header) { - int i; spin_lock_init(&pnp_bios_lock); pnp_bios_callpoint.offset = header->fields.pm16offset; pnp_bios_callpoint.segment = PNP_CS16; set_base(bad_bios_desc, __va((unsigned long)0x40 << 4)); _set_limit((char *)&bad_bios_desc, 4095 - (0x40 << 4)); - for(i=0; i < NR_CPUS; i++) - { - Q2_SET_SEL(i, PNP_CS32...
2007 Apr 18
2
[PATCH 4/21] i386 Broken bios common
...ve_desc_40 = per_cpu(cpu_gdt_table,cpu)[0x40 / 8]; - per_cpu(cpu_gdt_table,cpu)[0x40 / 8] = bad_bios_desc; + per_cpu(cpu_gdt_table,cpu)[0x40 / 8] = + per_cpu(cpu_gdt_table,cpu)[GDT_ENTRY_BAD_BIOS_CACHE]; /* On some boxes IRQ's during PnP BIOS calls are deadly. */ spin_lock_irqsave(&pnp_bios_lock, flags); @@ -524,8 +523,6 @@ void pnpbios_calls_init(union pnp_bios_i pnp_bios_callpoint.offset = header->fields.pm16offset; pnp_bios_callpoint.segment = PNP_CS16; - set_base(bad_bios_desc, __va((unsigned long)0x40 << 4)); - _set_limit((char *)&bad_bios_desc, 4095 - (0x40 <&lt...
2007 Apr 18
2
[PATCH 4/21] i386 Broken bios common
...ve_desc_40 = per_cpu(cpu_gdt_table,cpu)[0x40 / 8]; - per_cpu(cpu_gdt_table,cpu)[0x40 / 8] = bad_bios_desc; + per_cpu(cpu_gdt_table,cpu)[0x40 / 8] = + per_cpu(cpu_gdt_table,cpu)[GDT_ENTRY_BAD_BIOS_CACHE]; /* On some boxes IRQ's during PnP BIOS calls are deadly. */ spin_lock_irqsave(&pnp_bios_lock, flags); @@ -524,8 +523,6 @@ void pnpbios_calls_init(union pnp_bios_i pnp_bios_callpoint.offset = header->fields.pm16offset; pnp_bios_callpoint.segment = PNP_CS16; - set_base(bad_bios_desc, __va((unsigned long)0x40 << 4)); - _set_limit((char *)&bad_bios_desc, 4095 - (0x40 <&lt...