Messages in this thread Patches in this message | | | Date | Mon, 25 Oct 1999 12:11:10 +0200 | From | Petr Vandrovec <> | Subject | some patches for 2.3.23 |
| |
Hi Linus, hi others, after some hours I got 2.3.23 to compile and almost to run. I had to apply: Missing symbols for serial, nfs, ncpfs. Deadlock on nbd (observed with vmware-mount.pl). Changed values in /proc/meminfo (vmware refuses to run because of it thinks machine has less than 32MB of memory). SMP kernel refuses to run on UP (GP fault when clearing 'virtual' IOAPIC). Unfortunately, it still does not work correctly... ncpfs uses: static struct page* ncp_get_cached_page(inode, offset, used) { hash = page_hash(inode, offset); page = __find_locked_page(inode, offset, hash); if (used || page) return page; page_cache = page_cache_alloc(); if (page_cache) { page = page_cache_entry(page_cache); if (add_to_page_cache_unique(page, inode, offset, hash)) { page_cache_release(page); page = NULL; page_cache_free(page_cache); } } return page; } Problem is that page contains an dangling 'buffers' pointer which then kills kswapd in try_to_free_buffers() :-( Should I set page->buffers = NULL after call to page_cache_entry() or what's changed since 2.3.22 (2.3.23-pre2 worked fine for me). Best regards, Petr Vandrovec vandrove@vc.cvut.cz
Missing __io_virt_debug for serial.c: diff -urdN linux/arch/i386/kernel/i386_ksyms.c linux/arch/i386/kernel/i386_ksyms.c --- linux/arch/i386/kernel/i386_ksyms.c Mon Oct 11 19:06:34 1999 +++ linux/arch/i386/kernel/i386_ksyms.c Sun Oct 24 20:20:09 1999 @@ -29,6 +29,7 @@ #endif /* platform dependent support */ +EXPORT_SYMBOL(__io_virt_debug); EXPORT_SYMBOL(boot_cpu_data); EXPORT_SYMBOL(EISA_bus); EXPORT_SYMBOL(MCA_bus); Socket allocation must be atomic in nbd, otherwise deadlock occurs. diff -urdN linux/drivers/block/nbd.c linux/drivers/block/nbd.c --- linux/drivers/block/nbd.c Tue Jul 6 05:07:02 1999 +++ linux/drivers/block/nbd.c Sun Oct 24 16:08:47 1999 @@ -43,6 +43,8 @@ #define MAJOR_NR NBD_MAJOR #include <linux/nbd.h> +#include <net/sock.h> + #define LO_MAGIC 0x68797548 static int nbd_blksizes[MAX_NBD]; @@ -105,6 +107,7 @@ do { + sock->sk->allocation = GFP_ATOMIC; iov.iov_base = buf; iov.iov_len = size; msg.msg_name = NULL; meminfo changed values (and I think that sysinfo syscall got changed too): diff -urdN linux/fs/proc/array.c linux/fs/proc/array.c --- linux/fs/proc/array.c Tue Oct 19 20:56:26 1999 +++ linux/fs/proc/array.c Sun Oct 24 23:50:23 1999 @@ -364,16 +364,17 @@ * display in kilobytes. */ #define K(x) ((x) << (PAGE_SHIFT - 10)) - +#define BtoK(x) ((x) >> 10) +#define PtoB(x) ((x) << (PAGE_SHIFT)) si_meminfo(&i); si_swapinfo(&i); len = sprintf(buffer, " total: used: free: shared: buffers: cached:\n" "Mem: %8lu %8lu %8lu %8lu %8lu %8u\n" "Swap: %8lu %8lu %8lu\n", - K(i.totalram), K(i.totalram-i.freeram), K(i.freeram), - K(i.sharedram), K(i.bufferram), - K(atomic_read(&page_cache_size)), K(i.totalswap), - K(i.totalswap-i.freeswap), K(i.freeswap)); + PtoB(i.totalram), PtoB(i.totalram-i.freeram), PtoB(i.freeram), + PtoB(i.sharedram), PtoB(i.bufferram), + (unsigned long)(atomic_read(&page_cache_size)), (i.totalswap), + (i.totalswap-i.freeswap), (i.freeswap)); /* * Tagged format, for easy grepping and expansion. * The above will go away eventually, once the tools @@ -385,19 +386,21 @@ "MemShared: %8lu kB\n" "Buffers: %8lu kB\n" "Cached: %8u kB\n" - "HighTotal: %8lu kB\n" - "HighFree: %8lu kB\n" "SwapTotal: %8lu kB\n" - "SwapFree: %8lu kB\n", + "SwapFree: %8lu kB\n" + "HighTotal: %8lu kB\n" + "HighFree: %8lu kB\n", K(i.totalram), K(i.freeram), K(i.sharedram), K(i.bufferram), K(atomic_read(&page_cache_size)), + BtoK(i.totalswap), + BtoK(i.freeswap), K(i.totalhigh), - K(i.freehigh), - K(i.totalswap), - K(i.freeswap)); + K(i.freehigh)); +#undef PtoB +#undef BtoK #undef K }
Missing __get_pages & console_loglevel for few modules (vfat, nfs, ncpfs): diff -urdN linux/kernel/ksyms.c linux/kernel/ksyms.c --- linux/kernel/ksyms.c Mon Oct 18 20:26:37 1999 +++ linux/kernel/ksyms.c Sun Oct 24 20:19:18 1999 @@ -91,6 +91,7 @@ EXPORT_SYMBOL(exit_sighand); /* internal kernel memory management */ +EXPORT_SYMBOL(__get_pages); EXPORT_SYMBOL(__get_free_pages); EXPORT_SYMBOL(free_pages); EXPORT_SYMBOL(__free_page); @@ -257,6 +258,7 @@ EXPORT_SYMBOL(tty_get_baud_rate); EXPORT_SYMBOL(do_SAK); EXPORT_SYMBOL(console_print); +EXPORT_SYMBOL(console_loglevel); /* filesystem registration */ EXPORT_SYMBOL(register_filesystem); GPFault when SMP kernel runs on UP machine without SMP tables: diff -urdN linux/arch/i386/kernel/smpboot.c linux/arch/i386/kernel/smpboot.c --- linux/arch/i386/kernel/smpboot.c Wed Oct 20 20:32:17 1999 +++ linux/arch/i386/kernel/smpboot.c Sun Oct 24 22:59:05 1999 @@ -821,8 +821,11 @@ * could use the real zero-page, but it's safer * this way if some buggy code writes to this page ... */ - apic_phys = __pa(alloc_bootmem_pages(PAGE_SIZE)); - memset((void *)apic_phys, 0, PAGE_SIZE); + void* apic_virt; + + apic_virt = alloc_bootmem_pages(PAGE_SIZE); + apic_phys = __pa(apic_virt); + memset(apic_virt, 0, PAGE_SIZE); } set_fixmap(FIX_APIC_BASE, apic_phys); dprintk("mapped APIC to %08lx (%08lx)\n", APIC_BASE, apic_phys); - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.tux.org/lkml/
| |