diff options
Diffstat (limited to 'arch/i386')
-rw-r--r-- | arch/i386/defconfig | 2 | ||||
-rw-r--r-- | arch/i386/kernel/crash.c | 2 | ||||
-rw-r--r-- | arch/i386/kernel/ioport.c | 1 | ||||
-rw-r--r-- | arch/i386/kernel/process.c | 50 | ||||
-rw-r--r-- | arch/i386/kernel/ptrace.c | 5 | ||||
-rw-r--r-- | arch/i386/kernel/setup.c | 7 | ||||
-rw-r--r-- | arch/i386/kernel/time.c | 5 | ||||
-rw-r--r-- | arch/i386/kernel/traps.c | 44 | ||||
-rw-r--r-- | arch/i386/lib/usercopy.c | 2 | ||||
-rw-r--r-- | arch/i386/oprofile/nmi_int.c | 5 | ||||
-rw-r--r-- | arch/i386/pci/common.c | 4 | ||||
-rw-r--r-- | arch/i386/pci/pci.h | 2 |
12 files changed, 71 insertions, 58 deletions
diff --git a/arch/i386/defconfig b/arch/i386/defconfig index 1629c3ac9bee..89ebb7a316ab 100644 --- a/arch/i386/defconfig +++ b/arch/i386/defconfig | |||
@@ -197,7 +197,7 @@ CONFIG_PM=y | |||
197 | # CONFIG_PM_LEGACY is not set | 197 | # CONFIG_PM_LEGACY is not set |
198 | # CONFIG_PM_DEBUG is not set | 198 | # CONFIG_PM_DEBUG is not set |
199 | CONFIG_SOFTWARE_SUSPEND=y | 199 | CONFIG_SOFTWARE_SUSPEND=y |
200 | CONFIG_PM_STD_PARTITION="/dev/hda2" | 200 | CONFIG_PM_STD_PARTITION="" |
201 | 201 | ||
202 | # | 202 | # |
203 | # ACPI (Advanced Configuration and Power Interface) Support | 203 | # ACPI (Advanced Configuration and Power Interface) Support |
diff --git a/arch/i386/kernel/crash.c b/arch/i386/kernel/crash.c index 48f0f62f781c..5b96f038367f 100644 --- a/arch/i386/kernel/crash.c +++ b/arch/i386/kernel/crash.c | |||
@@ -90,7 +90,7 @@ static void crash_save_self(struct pt_regs *regs) | |||
90 | crash_save_this_cpu(regs, cpu); | 90 | crash_save_this_cpu(regs, cpu); |
91 | } | 91 | } |
92 | 92 | ||
93 | #ifdef CONFIG_SMP | 93 | #if defined(CONFIG_SMP) && defined(CONFIG_X86_LOCAL_APIC) |
94 | static atomic_t waiting_for_crash_ipi; | 94 | static atomic_t waiting_for_crash_ipi; |
95 | 95 | ||
96 | static int crash_nmi_callback(struct pt_regs *regs, int cpu) | 96 | static int crash_nmi_callback(struct pt_regs *regs, int cpu) |
diff --git a/arch/i386/kernel/ioport.c b/arch/i386/kernel/ioport.c index 79026f026b85..498e8bc197d5 100644 --- a/arch/i386/kernel/ioport.c +++ b/arch/i386/kernel/ioport.c | |||
@@ -79,6 +79,7 @@ asmlinkage long sys_ioperm(unsigned long from, unsigned long num, int turn_on) | |||
79 | 79 | ||
80 | memset(bitmap, 0xff, IO_BITMAP_BYTES); | 80 | memset(bitmap, 0xff, IO_BITMAP_BYTES); |
81 | t->io_bitmap_ptr = bitmap; | 81 | t->io_bitmap_ptr = bitmap; |
82 | set_thread_flag(TIF_IO_BITMAP); | ||
82 | } | 83 | } |
83 | 84 | ||
84 | /* | 85 | /* |
diff --git a/arch/i386/kernel/process.c b/arch/i386/kernel/process.c index 94e2c87edeaa..923bb292f47f 100644 --- a/arch/i386/kernel/process.c +++ b/arch/i386/kernel/process.c | |||
@@ -359,16 +359,16 @@ EXPORT_SYMBOL(kernel_thread); | |||
359 | */ | 359 | */ |
360 | void exit_thread(void) | 360 | void exit_thread(void) |
361 | { | 361 | { |
362 | struct task_struct *tsk = current; | ||
363 | struct thread_struct *t = &tsk->thread; | ||
364 | |||
365 | /* The process may have allocated an io port bitmap... nuke it. */ | 362 | /* The process may have allocated an io port bitmap... nuke it. */ |
366 | if (unlikely(NULL != t->io_bitmap_ptr)) { | 363 | if (unlikely(test_thread_flag(TIF_IO_BITMAP))) { |
364 | struct task_struct *tsk = current; | ||
365 | struct thread_struct *t = &tsk->thread; | ||
367 | int cpu = get_cpu(); | 366 | int cpu = get_cpu(); |
368 | struct tss_struct *tss = &per_cpu(init_tss, cpu); | 367 | struct tss_struct *tss = &per_cpu(init_tss, cpu); |
369 | 368 | ||
370 | kfree(t->io_bitmap_ptr); | 369 | kfree(t->io_bitmap_ptr); |
371 | t->io_bitmap_ptr = NULL; | 370 | t->io_bitmap_ptr = NULL; |
371 | clear_thread_flag(TIF_IO_BITMAP); | ||
372 | /* | 372 | /* |
373 | * Careful, clear this in the TSS too: | 373 | * Careful, clear this in the TSS too: |
374 | */ | 374 | */ |
@@ -387,6 +387,7 @@ void flush_thread(void) | |||
387 | 387 | ||
388 | memset(tsk->thread.debugreg, 0, sizeof(unsigned long)*8); | 388 | memset(tsk->thread.debugreg, 0, sizeof(unsigned long)*8); |
389 | memset(tsk->thread.tls_array, 0, sizeof(tsk->thread.tls_array)); | 389 | memset(tsk->thread.tls_array, 0, sizeof(tsk->thread.tls_array)); |
390 | clear_tsk_thread_flag(tsk, TIF_DEBUG); | ||
390 | /* | 391 | /* |
391 | * Forget coprocessor state.. | 392 | * Forget coprocessor state.. |
392 | */ | 393 | */ |
@@ -431,7 +432,7 @@ int copy_thread(int nr, unsigned long clone_flags, unsigned long esp, | |||
431 | savesegment(gs,p->thread.gs); | 432 | savesegment(gs,p->thread.gs); |
432 | 433 | ||
433 | tsk = current; | 434 | tsk = current; |
434 | if (unlikely(NULL != tsk->thread.io_bitmap_ptr)) { | 435 | if (unlikely(test_tsk_thread_flag(tsk, TIF_IO_BITMAP))) { |
435 | p->thread.io_bitmap_ptr = kmalloc(IO_BITMAP_BYTES, GFP_KERNEL); | 436 | p->thread.io_bitmap_ptr = kmalloc(IO_BITMAP_BYTES, GFP_KERNEL); |
436 | if (!p->thread.io_bitmap_ptr) { | 437 | if (!p->thread.io_bitmap_ptr) { |
437 | p->thread.io_bitmap_max = 0; | 438 | p->thread.io_bitmap_max = 0; |
@@ -439,6 +440,7 @@ int copy_thread(int nr, unsigned long clone_flags, unsigned long esp, | |||
439 | } | 440 | } |
440 | memcpy(p->thread.io_bitmap_ptr, tsk->thread.io_bitmap_ptr, | 441 | memcpy(p->thread.io_bitmap_ptr, tsk->thread.io_bitmap_ptr, |
441 | IO_BITMAP_BYTES); | 442 | IO_BITMAP_BYTES); |
443 | set_tsk_thread_flag(p, TIF_IO_BITMAP); | ||
442 | } | 444 | } |
443 | 445 | ||
444 | /* | 446 | /* |
@@ -533,10 +535,24 @@ int dump_task_regs(struct task_struct *tsk, elf_gregset_t *regs) | |||
533 | return 1; | 535 | return 1; |
534 | } | 536 | } |
535 | 537 | ||
536 | static inline void | 538 | static noinline void __switch_to_xtra(struct task_struct *next_p, |
537 | handle_io_bitmap(struct thread_struct *next, struct tss_struct *tss) | 539 | struct tss_struct *tss) |
538 | { | 540 | { |
539 | if (!next->io_bitmap_ptr) { | 541 | struct thread_struct *next; |
542 | |||
543 | next = &next_p->thread; | ||
544 | |||
545 | if (test_tsk_thread_flag(next_p, TIF_DEBUG)) { | ||
546 | set_debugreg(next->debugreg[0], 0); | ||
547 | set_debugreg(next->debugreg[1], 1); | ||
548 | set_debugreg(next->debugreg[2], 2); | ||
549 | set_debugreg(next->debugreg[3], 3); | ||
550 | /* no 4 and 5 */ | ||
551 | set_debugreg(next->debugreg[6], 6); | ||
552 | set_debugreg(next->debugreg[7], 7); | ||
553 | } | ||
554 | |||
555 | if (!test_tsk_thread_flag(next_p, TIF_IO_BITMAP)) { | ||
540 | /* | 556 | /* |
541 | * Disable the bitmap via an invalid offset. We still cache | 557 | * Disable the bitmap via an invalid offset. We still cache |
542 | * the previous bitmap owner and the IO bitmap contents: | 558 | * the previous bitmap owner and the IO bitmap contents: |
@@ -544,6 +560,7 @@ handle_io_bitmap(struct thread_struct *next, struct tss_struct *tss) | |||
544 | tss->io_bitmap_base = INVALID_IO_BITMAP_OFFSET; | 560 | tss->io_bitmap_base = INVALID_IO_BITMAP_OFFSET; |
545 | return; | 561 | return; |
546 | } | 562 | } |
563 | |||
547 | if (likely(next == tss->io_bitmap_owner)) { | 564 | if (likely(next == tss->io_bitmap_owner)) { |
548 | /* | 565 | /* |
549 | * Previous owner of the bitmap (hence the bitmap content) | 566 | * Previous owner of the bitmap (hence the bitmap content) |
@@ -671,20 +688,11 @@ struct task_struct fastcall * __switch_to(struct task_struct *prev_p, struct tas | |||
671 | set_iopl_mask(next->iopl); | 688 | set_iopl_mask(next->iopl); |
672 | 689 | ||
673 | /* | 690 | /* |
674 | * Now maybe reload the debug registers | 691 | * Now maybe handle debug registers and/or IO bitmaps |
675 | */ | 692 | */ |
676 | if (unlikely(next->debugreg[7])) { | 693 | if (unlikely((task_thread_info(next_p)->flags & _TIF_WORK_CTXSW)) |
677 | set_debugreg(next->debugreg[0], 0); | 694 | || test_tsk_thread_flag(prev_p, TIF_IO_BITMAP)) |
678 | set_debugreg(next->debugreg[1], 1); | 695 | __switch_to_xtra(next_p, tss); |
679 | set_debugreg(next->debugreg[2], 2); | ||
680 | set_debugreg(next->debugreg[3], 3); | ||
681 | /* no 4 and 5 */ | ||
682 | set_debugreg(next->debugreg[6], 6); | ||
683 | set_debugreg(next->debugreg[7], 7); | ||
684 | } | ||
685 | |||
686 | if (unlikely(prev->io_bitmap_ptr || next->io_bitmap_ptr)) | ||
687 | handle_io_bitmap(next, tss); | ||
688 | 696 | ||
689 | disable_tsc(prev_p, next_p); | 697 | disable_tsc(prev_p, next_p); |
690 | 698 | ||
diff --git a/arch/i386/kernel/ptrace.c b/arch/i386/kernel/ptrace.c index fd7eaf7866e0..d3db03f4085d 100644 --- a/arch/i386/kernel/ptrace.c +++ b/arch/i386/kernel/ptrace.c | |||
@@ -468,8 +468,11 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data) | |||
468 | for(i=0; i<4; i++) | 468 | for(i=0; i<4; i++) |
469 | if ((0x5f54 >> ((data >> (16 + 4*i)) & 0xf)) & 1) | 469 | if ((0x5f54 >> ((data >> (16 + 4*i)) & 0xf)) & 1) |
470 | goto out_tsk; | 470 | goto out_tsk; |
471 | if (data) | ||
472 | set_tsk_thread_flag(child, TIF_DEBUG); | ||
473 | else | ||
474 | clear_tsk_thread_flag(child, TIF_DEBUG); | ||
471 | } | 475 | } |
472 | |||
473 | addr -= (long) &dummy->u_debugreg; | 476 | addr -= (long) &dummy->u_debugreg; |
474 | addr = addr >> 2; | 477 | addr = addr >> 2; |
475 | child->thread.debugreg[addr] = data; | 478 | child->thread.debugreg[addr] = data; |
diff --git a/arch/i386/kernel/setup.c b/arch/i386/kernel/setup.c index 08c00d20f162..f1682206d304 100644 --- a/arch/i386/kernel/setup.c +++ b/arch/i386/kernel/setup.c | |||
@@ -26,7 +26,7 @@ | |||
26 | #include <linux/sched.h> | 26 | #include <linux/sched.h> |
27 | #include <linux/mm.h> | 27 | #include <linux/mm.h> |
28 | #include <linux/mmzone.h> | 28 | #include <linux/mmzone.h> |
29 | #include <linux/tty.h> | 29 | #include <linux/screen_info.h> |
30 | #include <linux/ioport.h> | 30 | #include <linux/ioport.h> |
31 | #include <linux/acpi.h> | 31 | #include <linux/acpi.h> |
32 | #include <linux/apm_bios.h> | 32 | #include <linux/apm_bios.h> |
@@ -1327,7 +1327,10 @@ legacy_init_iomem_resources(struct resource *code_resource, struct resource *dat | |||
1327 | res->start = e820.map[i].addr; | 1327 | res->start = e820.map[i].addr; |
1328 | res->end = res->start + e820.map[i].size - 1; | 1328 | res->end = res->start + e820.map[i].size - 1; |
1329 | res->flags = IORESOURCE_MEM | IORESOURCE_BUSY; | 1329 | res->flags = IORESOURCE_MEM | IORESOURCE_BUSY; |
1330 | request_resource(&iomem_resource, res); | 1330 | if (request_resource(&iomem_resource, res)) { |
1331 | kfree(res); | ||
1332 | continue; | ||
1333 | } | ||
1331 | if (e820.map[i].type == E820_RAM) { | 1334 | if (e820.map[i].type == E820_RAM) { |
1332 | /* | 1335 | /* |
1333 | * We don't know which RAM region contains kernel data, | 1336 | * We don't know which RAM region contains kernel data, |
diff --git a/arch/i386/kernel/time.c b/arch/i386/kernel/time.c index 316421a7f56f..8705c0f05788 100644 --- a/arch/i386/kernel/time.c +++ b/arch/i386/kernel/time.c | |||
@@ -206,15 +206,16 @@ irqreturn_t timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) | |||
206 | unsigned long get_cmos_time(void) | 206 | unsigned long get_cmos_time(void) |
207 | { | 207 | { |
208 | unsigned long retval; | 208 | unsigned long retval; |
209 | unsigned long flags; | ||
209 | 210 | ||
210 | spin_lock(&rtc_lock); | 211 | spin_lock_irqsave(&rtc_lock, flags); |
211 | 212 | ||
212 | if (efi_enabled) | 213 | if (efi_enabled) |
213 | retval = efi_get_time(); | 214 | retval = efi_get_time(); |
214 | else | 215 | else |
215 | retval = mach_get_cmos_time(); | 216 | retval = mach_get_cmos_time(); |
216 | 217 | ||
217 | spin_unlock(&rtc_lock); | 218 | spin_unlock_irqrestore(&rtc_lock, flags); |
218 | 219 | ||
219 | return retval; | 220 | return retval; |
220 | } | 221 | } |
diff --git a/arch/i386/kernel/traps.c b/arch/i386/kernel/traps.c index 2bf8b55b91f8..313ac1f7dc5a 100644 --- a/arch/i386/kernel/traps.c +++ b/arch/i386/kernel/traps.c | |||
@@ -100,13 +100,13 @@ int register_die_notifier(struct notifier_block *nb) | |||
100 | vmalloc_sync_all(); | 100 | vmalloc_sync_all(); |
101 | return atomic_notifier_chain_register(&i386die_chain, nb); | 101 | return atomic_notifier_chain_register(&i386die_chain, nb); |
102 | } | 102 | } |
103 | EXPORT_SYMBOL(register_die_notifier); | 103 | EXPORT_SYMBOL(register_die_notifier); /* used modular by kdb */ |
104 | 104 | ||
105 | int unregister_die_notifier(struct notifier_block *nb) | 105 | int unregister_die_notifier(struct notifier_block *nb) |
106 | { | 106 | { |
107 | return atomic_notifier_chain_unregister(&i386die_chain, nb); | 107 | return atomic_notifier_chain_unregister(&i386die_chain, nb); |
108 | } | 108 | } |
109 | EXPORT_SYMBOL(unregister_die_notifier); | 109 | EXPORT_SYMBOL(unregister_die_notifier); /* used modular by kdb */ |
110 | 110 | ||
111 | static inline int valid_stack_ptr(struct thread_info *tinfo, void *p) | 111 | static inline int valid_stack_ptr(struct thread_info *tinfo, void *p) |
112 | { | 112 | { |
@@ -324,35 +324,35 @@ void show_registers(struct pt_regs *regs) | |||
324 | 324 | ||
325 | static void handle_BUG(struct pt_regs *regs) | 325 | static void handle_BUG(struct pt_regs *regs) |
326 | { | 326 | { |
327 | unsigned long eip = regs->eip; | ||
327 | unsigned short ud2; | 328 | unsigned short ud2; |
328 | unsigned short line; | ||
329 | char *file; | ||
330 | char c; | ||
331 | unsigned long eip; | ||
332 | |||
333 | eip = regs->eip; | ||
334 | 329 | ||
335 | if (eip < PAGE_OFFSET) | 330 | if (eip < PAGE_OFFSET) |
336 | goto no_bug; | 331 | return; |
337 | if (__get_user(ud2, (unsigned short __user *)eip)) | 332 | if (__get_user(ud2, (unsigned short __user *)eip)) |
338 | goto no_bug; | 333 | return; |
339 | if (ud2 != 0x0b0f) | 334 | if (ud2 != 0x0b0f) |
340 | goto no_bug; | 335 | return; |
341 | if (__get_user(line, (unsigned short __user *)(eip + 2))) | ||
342 | goto bug; | ||
343 | if (__get_user(file, (char * __user *)(eip + 4)) || | ||
344 | (unsigned long)file < PAGE_OFFSET || __get_user(c, file)) | ||
345 | file = "<bad filename>"; | ||
346 | 336 | ||
347 | printk(KERN_EMERG "------------[ cut here ]------------\n"); | 337 | printk(KERN_EMERG "------------[ cut here ]------------\n"); |
348 | printk(KERN_EMERG "kernel BUG at %s:%d!\n", file, line); | ||
349 | 338 | ||
350 | no_bug: | 339 | #ifdef CONFIG_DEBUG_BUGVERBOSE |
351 | return; | 340 | do { |
341 | unsigned short line; | ||
342 | char *file; | ||
343 | char c; | ||
352 | 344 | ||
353 | /* Here we know it was a BUG but file-n-line is unavailable */ | 345 | if (__get_user(line, (unsigned short __user *)(eip + 2))) |
354 | bug: | 346 | break; |
355 | printk(KERN_EMERG "Kernel BUG\n"); | 347 | if (__get_user(file, (char * __user *)(eip + 4)) || |
348 | (unsigned long)file < PAGE_OFFSET || __get_user(c, file)) | ||
349 | file = "<bad filename>"; | ||
350 | |||
351 | printk(KERN_EMERG "kernel BUG at %s:%d!\n", file, line); | ||
352 | return; | ||
353 | } while (0); | ||
354 | #endif | ||
355 | printk(KERN_EMERG "Kernel BUG at [verbose debug info unavailable]\n"); | ||
356 | } | 356 | } |
357 | 357 | ||
358 | /* This is gone through when something in the kernel | 358 | /* This is gone through when something in the kernel |
diff --git a/arch/i386/lib/usercopy.c b/arch/i386/lib/usercopy.c index 4b75212ab6dd..efc7e7d5f4d0 100644 --- a/arch/i386/lib/usercopy.c +++ b/arch/i386/lib/usercopy.c | |||
@@ -843,7 +843,6 @@ unsigned long __copy_from_user_ll_nocache_nozero(void *to, const void __user *fr | |||
843 | unsigned long | 843 | unsigned long |
844 | copy_to_user(void __user *to, const void *from, unsigned long n) | 844 | copy_to_user(void __user *to, const void *from, unsigned long n) |
845 | { | 845 | { |
846 | might_sleep(); | ||
847 | BUG_ON((long) n < 0); | 846 | BUG_ON((long) n < 0); |
848 | if (access_ok(VERIFY_WRITE, to, n)) | 847 | if (access_ok(VERIFY_WRITE, to, n)) |
849 | n = __copy_to_user(to, from, n); | 848 | n = __copy_to_user(to, from, n); |
@@ -870,7 +869,6 @@ EXPORT_SYMBOL(copy_to_user); | |||
870 | unsigned long | 869 | unsigned long |
871 | copy_from_user(void *to, const void __user *from, unsigned long n) | 870 | copy_from_user(void *to, const void __user *from, unsigned long n) |
872 | { | 871 | { |
873 | might_sleep(); | ||
874 | BUG_ON((long) n < 0); | 872 | BUG_ON((long) n < 0); |
875 | if (access_ok(VERIFY_READ, from, n)) | 873 | if (access_ok(VERIFY_READ, from, n)) |
876 | n = __copy_from_user(to, from, n); | 874 | n = __copy_from_user(to, from, n); |
diff --git a/arch/i386/oprofile/nmi_int.c b/arch/i386/oprofile/nmi_int.c index fa8a37bcb391..c8c1df8ff2b4 100644 --- a/arch/i386/oprofile/nmi_int.c +++ b/arch/i386/oprofile/nmi_int.c | |||
@@ -13,6 +13,7 @@ | |||
13 | #include <linux/oprofile.h> | 13 | #include <linux/oprofile.h> |
14 | #include <linux/sysdev.h> | 14 | #include <linux/sysdev.h> |
15 | #include <linux/slab.h> | 15 | #include <linux/slab.h> |
16 | #include <linux/moduleparam.h> | ||
16 | #include <asm/nmi.h> | 17 | #include <asm/nmi.h> |
17 | #include <asm/msr.h> | 18 | #include <asm/msr.h> |
18 | #include <asm/apic.h> | 19 | #include <asm/apic.h> |
@@ -296,12 +297,14 @@ static int nmi_create_files(struct super_block * sb, struct dentry * root) | |||
296 | return 0; | 297 | return 0; |
297 | } | 298 | } |
298 | 299 | ||
300 | static int p4force; | ||
301 | module_param(p4force, int, 0); | ||
299 | 302 | ||
300 | static int __init p4_init(char ** cpu_type) | 303 | static int __init p4_init(char ** cpu_type) |
301 | { | 304 | { |
302 | __u8 cpu_model = boot_cpu_data.x86_model; | 305 | __u8 cpu_model = boot_cpu_data.x86_model; |
303 | 306 | ||
304 | if (cpu_model > 4) | 307 | if (!p4force && (cpu_model > 6 || cpu_model == 5)) |
305 | return 0; | 308 | return 0; |
306 | 309 | ||
307 | #ifndef CONFIG_SMP | 310 | #ifndef CONFIG_SMP |
diff --git a/arch/i386/pci/common.c b/arch/i386/pci/common.c index c624b61e1104..0a362e3aeac5 100644 --- a/arch/i386/pci/common.c +++ b/arch/i386/pci/common.c | |||
@@ -17,10 +17,6 @@ | |||
17 | 17 | ||
18 | #include "pci.h" | 18 | #include "pci.h" |
19 | 19 | ||
20 | #ifdef CONFIG_PCI_BIOS | ||
21 | extern void pcibios_sort(void); | ||
22 | #endif | ||
23 | |||
24 | unsigned int pci_probe = PCI_PROBE_BIOS | PCI_PROBE_CONF1 | PCI_PROBE_CONF2 | | 20 | unsigned int pci_probe = PCI_PROBE_BIOS | PCI_PROBE_CONF1 | PCI_PROBE_CONF2 | |
25 | PCI_PROBE_MMCONF; | 21 | PCI_PROBE_MMCONF; |
26 | 22 | ||
diff --git a/arch/i386/pci/pci.h b/arch/i386/pci/pci.h index 12bf3d8dda29..bf4e79335388 100644 --- a/arch/i386/pci/pci.h +++ b/arch/i386/pci/pci.h | |||
@@ -84,4 +84,4 @@ extern int pci_conf1_read(unsigned int seg, unsigned int bus, | |||
84 | extern void pci_direct_init(void); | 84 | extern void pci_direct_init(void); |
85 | extern void pci_pcbios_init(void); | 85 | extern void pci_pcbios_init(void); |
86 | extern void pci_mmcfg_init(void); | 86 | extern void pci_mmcfg_init(void); |
87 | 87 | extern void pcibios_sort(void); | |