Ticket #5551: amdquircks

File amdquircks, 2.2 KB (added by stargatefan, 9 years ago)
Line 
1eturn 0;
2diff --git a/arch/x86/kernel/early-quirks.c b/arch/x86/kernel/early-quirks.c
3index ebdb85c..f67a33c7 100644
4--- a/arch/x86/kernel/early-quirks.c
5+++ b/arch/x86/kernel/early-quirks.c
6@@ -145,15 +145,10 @@ static void __init ati_bugs(int num, int slot, int func)
7
8 static u32 __init ati_sbx00_rev(int num, int slot, int func)
9 {
10- u32 old, d;
11+ u32 d;
12
13- d = read_pci_config(num, slot, func, 0x70);
14- old = d;
15- d &= ~(1<<8);
16- write_pci_config(num, slot, func, 0x70, d);
17 d = read_pci_config(num, slot, func, 0x8);
18 d &= 0xff;
19- write_pci_config(num, slot, func, 0x70, old);
20
21 return d;
22 }
23@@ -162,11 +157,19 @@ static void __init ati_bugs_contd(int num, int slot, int func)
24 {
25 u32 d, rev;
26
27- if (acpi_use_timer_override)
28+ rev = ati_sbx00_rev(num, slot, func);
29+ if (rev >= 0x40)
30+ acpi_fix_pin2_polarity = 1;
31+
32+ /*
33+ * SB600: revisions 0x11, 0x12, 0x13, 0x14, ...
34+ * SB700: revisions 0x39, 0x3a, ...
35+ * SB800: revisions 0x40, 0x41, ...
36+ */
37+ if (rev >= 0x39)
38 return;
39
40- rev = ati_sbx00_rev(num, slot, func);
41- if (rev > 0x13)
42+ if (acpi_use_timer_override)
43 return;
44
45 /* check for IRQ0 interrupt swap */
46diff --git a/arch/x86/kernel/head_32.S b/arch/x86/kernel/head_32.S
47index 7fd318b..e2395bf 100644
48--- a/arch/x86/kernel/head_32.S
49+++ b/arch/x86/kernel/head_32.S
50@@ -328,7 +328,7 @@ ENTRY(startup_32_smp)
51 /*
52 * Enable paging
53 */
54- movl $pa(swapper_pg_dir),%eax
55+ movl pa(initial_page_table), %eax
56 movl %eax,%cr3 /* set the page table pointer.. */
57 movl %cr0,%eax
58 orl $X86_CR0_PG,%eax
59@@ -608,6 +608,8 @@ ignore_int:
60 .align 4
61 ENTRY(initial_code)
62 .long i386_start_kernel
63+ENTRY(initial_page_table)
64+ .long pa(swapper_pg_dir)
65
66 /*
67 * BSS section
68@@ -623,6 +625,10 @@ ENTRY(swapper_pg_dir)
69 #endif
70 swapper_pg_fixmap:
71 .fill 1024,4,0
72+#ifdef CONFIG_X86_TRAMPOLINE
73+ENTRY(trampoline_pg_dir)
74+ .fill 1024,4,0
75+#endif
76 ENTRY(empty_zero_page)
77 .fill 4096,1,0
78
79diff --git a/arch/x86/kernel/hpet.c b/arch/x86/kernel/hpet.c
80index 241c5b2..9ae9b0b 100644
81--- a/arch/x86/kernel/hpet.c
82+++ b/arch/x86/kernel/hpet.c
83@@ -498,7 +498,7 @@ static int hpet_assign_irq(struct hpet_dev *dev)
84 {
85 unsigned int irq;
86
87- irq = create_irq();
88+ irq = create_irq_nr(0, -1);
89 if (!irq)
90 return -EINVAL;