summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStelios Koroneos <skoroneos@digital-opsis.com>2007-05-06 16:47:53 +0000
committerStelios Koroneos <skoroneos@digital-opsis.com>2007-05-06 16:47:53 +0000
commit3fbd828c6fdcd947ec735c38ca9f700701d1354d (patch)
treeccc57653f1214858e347485b5c2308cf67353cde
parent7c8380efe7ac5b7d7aaf01f91599bb5e64542710 (diff)
packages/linux/linux-magicbox_2.6.19.2.bb: Add kernel 2.6.19.2 for Magicbox
The patch set comes from Openwrt project
-rw-r--r--packages/linux/linux-magicbox-2.6.19.2/.mtn2git_empty0
-rw-r--r--packages/linux/linux-magicbox-2.6.19.2/001-magicbox_support.patch372
-rw-r--r--packages/linux/linux-magicbox-2.6.19.2/001-squashfs.patch4170
-rw-r--r--packages/linux/linux-magicbox-2.6.19.2/002-flash_map.patch147
-rw-r--r--packages/linux/linux-magicbox-2.6.19.2/002-lzma_decompress.patch780
-rw-r--r--packages/linux/linux-magicbox-2.6.19.2/003-squashfs_lzma.patch109
-rw-r--r--packages/linux/linux-magicbox-2.6.19.2/004-extra_optimization.patch13
-rw-r--r--packages/linux/linux-magicbox-2.6.19.2/006-gcc4_inline_fix.patch12
-rw-r--r--packages/linux/linux-magicbox-2.6.19.2/007-samsung_flash.patch37
-rw-r--r--packages/linux/linux-magicbox-2.6.19.2/009-revert_intel_flash_breakage.patch169
-rw-r--r--packages/linux/linux-magicbox-2.6.19.2/010-disable_old_squashfs_compatibility.patch21
-rw-r--r--packages/linux/linux-magicbox-2.6.19.2/011-mips_boot.patch14
-rw-r--r--packages/linux/linux-magicbox-2.6.19.2/012-mips_cpu_tlb.patch20
-rw-r--r--packages/linux/linux-magicbox-2.6.19.2/050-mtdpart_redboot_partition_truncate.patch61
-rw-r--r--packages/linux/linux-magicbox-2.6.19.2/060-rootfs_split.patch414
-rw-r--r--packages/linux/linux-magicbox-2.6.19.2/065-block2mtd_init.patch112
-rw-r--r--packages/linux/linux-magicbox-2.6.19.2/100-cf_slot.patch2306
-rw-r--r--packages/linux/linux-magicbox-2.6.19.2/100-netfilter_layer7_2.8.patch2053
-rw-r--r--packages/linux/linux-magicbox-2.6.19.2/101-netfilter_layer7_pktmatch.patch108
-rw-r--r--packages/linux/linux-magicbox-2.6.19.2/110-ipp2p_0.8.1rc1.patch948
-rw-r--r--packages/linux/linux-magicbox-2.6.19.2/120-openswan-2.4.0.kernel-2.6-natt.patch171
-rw-r--r--packages/linux/linux-magicbox-2.6.19.2/130-netfilter-ipset.patch5851
-rw-r--r--packages/linux/linux-magicbox-2.6.19.2/140-netfilter_time.patch241
-rw-r--r--packages/linux/linux-magicbox-2.6.19.2/150-netfilter_imq.patch892
-rw-r--r--packages/linux/linux-magicbox-2.6.19.2/160-netfilter_route.patch902
-rw-r--r--packages/linux/linux-magicbox-2.6.19.2/170-netfilter_chaostables.patch880
-rw-r--r--packages/linux/linux-magicbox-2.6.19.2/200-sched_esfq.patch730
-rw-r--r--packages/linux/linux-magicbox-2.6.19.2/201-multiple_default_gateways.patch1243
-rw-r--r--packages/linux/linux-magicbox-2.6.19.2/202-mips-freestanding.patch13
-rw-r--r--packages/linux/linux-magicbox-2.6.19.2/204-jffs2_eofdetect.patch58
-rw-r--r--packages/linux/linux-magicbox-2.6.19.2/207-powerpc_asm_segment_h.patch10
-rw-r--r--packages/linux/linux-magicbox-2.6.19.2/208-rtl8110sb_fix.patch25
-rw-r--r--packages/linux/linux-magicbox-2.6.19.2/209-mini_fo.patch7807
-rw-r--r--packages/linux/linux-magicbox-2.6.19.2/210-d80211_compat.patch11
-rw-r--r--packages/linux/linux-magicbox-2.6.19.2/211-no_block2mtd_readahead.patch11
-rw-r--r--packages/linux/linux-magicbox-2.6.19.2/212-block2mtd_erase_scan.patch11
-rw-r--r--packages/linux/linux-magicbox-2.6.19.2/510-Yaffs.patch13085
-rw-r--r--packages/linux/linux-magicbox-2.6.19.2/600-x86_lzma.patch1167
-rw-r--r--packages/linux/linux-magicbox-2.6.19.2/700-airprime.patch12
-rw-r--r--packages/linux/linux-magicbox-2.6.19.2/900-headers_type_and_time.patch48
-rw-r--r--packages/linux/linux-magicbox-2.6.19.2/901-asm_bitops_include.patch11
-rw-r--r--packages/linux/linux-magicbox-2.6.19.2/902-darwin_scripts_include.patch145
-rw-r--r--packages/linux/linux-magicbox-2.6.19.2/903-stddef_include.patch17
-rw-r--r--packages/linux/linux-magicbox-2.6.19.2/904-ls_time_locale.patch24
-rw-r--r--packages/linux/linux-magicbox-2.6.19.2/config-magicbox21619
-rw-r--r--packages/linux/linux-magicbox_2.6.19.2.bb112
46 files changed, 46962 insertions, 0 deletions
diff --git a/packages/linux/linux-magicbox-2.6.19.2/.mtn2git_empty b/packages/linux/linux-magicbox-2.6.19.2/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/linux-magicbox-2.6.19.2/.mtn2git_empty
diff --git a/packages/linux/linux-magicbox-2.6.19.2/001-magicbox_support.patch b/packages/linux/linux-magicbox-2.6.19.2/001-magicbox_support.patch
new file mode 100644
index 0000000000..7c609e5d02
--- /dev/null
+++ b/packages/linux/linux-magicbox-2.6.19.2/001-magicbox_support.patch
@@ -0,0 +1,372 @@
+diff -urN linux.old/arch/ppc/platforms/4xx/Kconfig linux.dev/arch/ppc/platforms/4xx/Kconfig
+--- linux.old/arch/ppc/platforms/4xx/Kconfig 2006-11-29 22:57:37.000000000 +0100
++++ linux.dev/arch/ppc/platforms/4xx/Kconfig 2006-12-14 08:49:18.000000000 +0100
+@@ -52,6 +52,12 @@
+ help
+ This option enables support for the IBM PPC405GP evaluation board.
+
++config MAGICBOX
++ bool "MagicBox"
++ select WANT_EARLY_SERIAL
++ help
++ This option enables support for the IBM PPC405EP evaluation board.
++
+ config XILINX_ML300
+ bool "Xilinx-ML300"
+ help
+@@ -173,7 +179,7 @@
+
+ config IBM_OCP
+ bool
+- depends on ASH || BAMBOO || BUBINGA || CPCI405 || EBONY || EP405 || LUAN || YUCCA || OCOTEA || REDWOOD_5 || REDWOOD_6 || SYCAMORE || WALNUT
++ depends on ASH || BAMBOO || BUBINGA || CPCI405 || EBONY || EP405 || LUAN || YUCCA || OCOTEA || REDWOOD_5 || REDWOOD_6 || SYCAMORE || WALNUT || MAGICBOX
+ default y
+
+ config IBM_EMAC4
+@@ -183,7 +189,7 @@
+
+ config BIOS_FIXUP
+ bool
+- depends on BUBINGA || EP405 || SYCAMORE || WALNUT || CPCI405
++ depends on BUBINGA || EP405 || SYCAMORE || WALNUT || CPCI405 || MAGICBOX
+ default y
+
+ # OAK doesn't exist but wanted to keep this around for any future 403GCX boards
+@@ -194,7 +200,7 @@
+
+ config 405EP
+ bool
+- depends on BUBINGA
++ depends on BUBINGA || MAGICBOX
+ default y
+
+ config 405GP
+diff -urN linux.old/arch/ppc/platforms/4xx/magicbox.c linux.dev/arch/ppc/platforms/4xx/magicbox.c
+--- linux.old/arch/ppc/platforms/4xx/magicbox.c 1970-01-01 01:00:00.000000000 +0100
++++ linux.dev/arch/ppc/platforms/4xx/magicbox.c 2006-12-14 08:48:56.000000000 +0100
+@@ -0,0 +1,249 @@
++/*
++ * Support for IBM PPC 405EP-based MagicBox board
++ * Copyright (C) 2006 Karol Lewandowski
++ *
++ * Heavily based on bubinga.c
++ *
++ * Author: SAW (IBM), derived from walnut.c.
++ * Maintained by MontaVista Software <source@mvista.com>
++ *
++ * 2003 (c) MontaVista Softare Inc. This file is licensed under the
++ * terms of the GNU General Public License version 2. This program is
++ * licensed "as is" without any warranty of any kind, whether express
++ * or implied.
++ */
++
++#include <linux/autoconf.h>
++#include <linux/init.h>
++#include <linux/smp.h>
++#include <linux/threads.h>
++#include <linux/param.h>
++#include <linux/string.h>
++#include <linux/blkdev.h>
++#include <linux/pci.h>
++#include <linux/tty.h>
++#include <linux/serial.h>
++#include <linux/serial_core.h>
++
++#include <asm/system.h>
++#include <asm/pci-bridge.h>
++#include <asm/processor.h>
++#include <asm/machdep.h>
++#include <asm/page.h>
++#include <asm/time.h>
++#include <asm/io.h>
++#include <asm/kgdb.h>
++#include <asm/ocp.h>
++#include <asm/ibm_ocp_pci.h>
++
++#include <platforms/4xx/ibm405ep.h>
++
++#undef DEBUG
++
++#ifdef DEBUG
++#define DBG(x...) printk(x)
++#else
++#define DBG(x...)
++#endif
++
++extern bd_t __res;
++
++/* Some IRQs unique to board
++ * Used by the generic 405 PCI setup functions in ppc4xx_pci.c
++ */
++int __init
++ppc405_map_irq(struct pci_dev *dev, unsigned char idsel, unsigned char pin)
++{
++ static char pci_irq_table[][4] =
++ /*
++ * PCI IDSEL/INTPIN->INTLINE
++ * A B C D
++ */
++ {
++ {28, 28, 28, 28}, /* IDSEL 1 - PCI slot 1 */
++ {29, 29, 29, 29}, /* IDSEL 2 - PCI slot 2 */
++ {30, 30, 30, 30}, /* IDSEL 3 - PCI slot 3 */
++ {31, 31, 31, 31}, /* IDSEL 4 - PCI slot 4 */
++ };
++
++ const long min_idsel = 1, max_idsel = 4, irqs_per_slot = 4;
++ return PCI_IRQ_TABLE_LOOKUP;
++};
++
++
++/* The serial clock for the chip is an internal clock determined by
++ * different clock speeds/dividers.
++ * Calculate the proper input baud rate and setup the serial driver.
++ */
++static void __init
++magicbox_early_serial_map(void)
++{
++ u32 uart_div;
++ int uart_clock;
++ struct uart_port port;
++
++ /* Calculate the serial clock input frequency
++ *
++ * The base baud is the PLL OUTA (provided in the board info
++ * structure) divided by the external UART Divisor, divided
++ * by 16.
++ */
++ uart_div = (mfdcr(DCRN_CPC0_UCR_BASE) & DCRN_CPC0_UCR_U0DIV);
++ uart_clock = __res.bi_procfreq / uart_div;
++
++ /* Setup serial port access */
++ memset(&port, 0, sizeof(port));
++ port.membase = (void*)ACTING_UART0_IO_BASE;
++ port.irq = ACTING_UART0_INT;
++ port.uartclk = uart_clock;
++ port.regshift = 0;
++ port.iotype = SERIAL_IO_MEM;
++ port.flags = ASYNC_BOOT_AUTOCONF | ASYNC_SKIP_TEST;
++ port.line = 0;
++
++ if (early_serial_setup(&port) != 0) {
++ printk("Early serial init of port 0 failed\n");
++ }
++
++ port.membase = (void*)ACTING_UART1_IO_BASE;
++ port.irq = ACTING_UART1_INT;
++ port.line = 1;
++
++ if (early_serial_setup(&port) != 0) {
++ printk("Early serial init of port 1 failed\n");
++ }
++}
++
++void __init
++bios_fixup(struct pci_controller *hose, struct pcil0_regs *pcip)
++{
++ unsigned int bar_response, bar;
++ /*
++ * Expected PCI mapping:
++ *
++ * PLB addr PCI memory addr
++ * --------------------- ---------------------
++ * 0000'0000 - 7fff'ffff <--- 0000'0000 - 7fff'ffff
++ * 8000'0000 - Bfff'ffff ---> 8000'0000 - Bfff'ffff
++ *
++ * PLB addr PCI io addr
++ * --------------------- ---------------------
++ * e800'0000 - e800'ffff ---> 0000'0000 - 0001'0000
++ *
++ * The following code is simplified by assuming that the bootrom
++ * has been well behaved in following this mapping.
++ */
++
++#ifdef DEBUG
++ int i;
++
++ printk("ioremap PCLIO_BASE = 0x%x\n", pcip);
++ printk("PCI bridge regs before fixup \n");
++ for (i = 0; i <= 3; i++) {
++ printk(" pmm%dma\t0x%x\n", i, in_le32(&(pcip->pmm[i].ma)));
++ printk(" pmm%dma\t0x%x\n", i, in_le32(&(pcip->pmm[i].la)));
++ printk(" pmm%dma\t0x%x\n", i, in_le32(&(pcip->pmm[i].pcila)));
++ printk(" pmm%dma\t0x%x\n", i, in_le32(&(pcip->pmm[i].pciha)));
++ }
++ printk(" ptm1ms\t0x%x\n", in_le32(&(pcip->ptm1ms)));
++ printk(" ptm1la\t0x%x\n", in_le32(&(pcip->ptm1la)));
++ printk(" ptm2ms\t0x%x\n", in_le32(&(pcip->ptm2ms)));
++ printk(" ptm2la\t0x%x\n", in_le32(&(pcip->ptm2la)));
++
++#endif
++
++ /* added for IBM boot rom version 1.15 bios bar changes -AK */
++
++ /* Disable region first */
++ out_le32((void *) &(pcip->pmm[0].ma), 0x00000000);
++ /* PLB starting addr, PCI: 0x80000000 */
++ out_le32((void *) &(pcip->pmm[0].la), 0x80000000);
++ /* PCI start addr, 0x80000000 */
++ out_le32((void *) &(pcip->pmm[0].pcila), PPC405_PCI_MEM_BASE);
++ /* 512MB range of PLB to PCI */
++ out_le32((void *) &(pcip->pmm[0].pciha), 0x00000000);
++ /* Enable no pre-fetch, enable region */
++ out_le32((void *) &(pcip->pmm[0].ma), ((0xffffffff -
++ (PPC405_PCI_UPPER_MEM -
++ PPC405_PCI_MEM_BASE)) | 0x01));
++
++ /* Disable region one */
++ out_le32((void *) &(pcip->pmm[1].ma), 0x00000000);
++ out_le32((void *) &(pcip->pmm[1].la), 0x00000000);
++ out_le32((void *) &(pcip->pmm[1].pcila), 0x00000000);
++ out_le32((void *) &(pcip->pmm[1].pciha), 0x00000000);
++ out_le32((void *) &(pcip->pmm[1].ma), 0x00000000);
++ out_le32((void *) &(pcip->ptm1ms), 0x00000001);
++
++ /* Disable region two */
++ out_le32((void *) &(pcip->pmm[2].ma), 0x00000000);
++ out_le32((void *) &(pcip->pmm[2].la), 0x00000000);
++ out_le32((void *) &(pcip->pmm[2].pcila), 0x00000000);
++ out_le32((void *) &(pcip->pmm[2].pciha), 0x00000000);
++ out_le32((void *) &(pcip->pmm[2].ma), 0x00000000);
++ out_le32((void *) &(pcip->ptm2ms), 0x00000000);
++ out_le32((void *) &(pcip->ptm2la), 0x00000000);
++
++ /* Zero config bars */
++ for (bar = PCI_BASE_ADDRESS_1; bar <= PCI_BASE_ADDRESS_2; bar += 4) {
++ early_write_config_dword(hose, hose->first_busno,
++ PCI_FUNC(hose->first_busno), bar,
++ 0x00000000);
++ early_read_config_dword(hose, hose->first_busno,
++ PCI_FUNC(hose->first_busno), bar,
++ &bar_response);
++ DBG("BUS %d, device %d, Function %d bar 0x%8.8x is 0x%8.8x\n",
++ hose->first_busno, PCI_SLOT(hose->first_busno),
++ PCI_FUNC(hose->first_busno), bar, bar_response);
++ }
++ /* end work arround */
++
++#ifdef DEBUG
++ printk("PCI bridge regs after fixup \n");
++ for (i = 0; i <= 3; i++) {
++ printk(" pmm%dma\t0x%x\n", i, in_le32(&(pcip->pmm[i].ma)));
++ printk(" pmm%dma\t0x%x\n", i, in_le32(&(pcip->pmm[i].la)));
++ printk(" pmm%dma\t0x%x\n", i, in_le32(&(pcip->pmm[i].pcila)));
++ printk(" pmm%dma\t0x%x\n", i, in_le32(&(pcip->pmm[i].pciha)));
++ }
++ printk(" ptm1ms\t0x%x\n", in_le32(&(pcip->ptm1ms)));
++ printk(" ptm1la\t0x%x\n", in_le32(&(pcip->ptm1la)));
++ printk(" ptm2ms\t0x%x\n", in_le32(&(pcip->ptm2ms)));
++ printk(" ptm2la\t0x%x\n", in_le32(&(pcip->ptm2la)));
++
++#endif /* DEBUG */
++}
++
++void __init
++magicbox_setup_arch(void)
++{
++ ppc4xx_setup_arch();
++
++ ibm_ocp_set_emac(0, 1);
++
++ magicbox_early_serial_map();
++
++ /* Identify the system */
++ printk("MagicBox port (C) 2005 Karol Lewandowski <kl@jasmine.eu.org>\n");
++}
++
++void __init
++magicbox_map_io(void)
++{
++ ppc4xx_map_io();
++}
++
++void __init
++platform_init(unsigned long r3, unsigned long r4, unsigned long r5,
++ unsigned long r6, unsigned long r7)
++{
++ ppc4xx_init(r3, r4, r5, r6, r7);
++
++ ppc_md.setup_arch = magicbox_setup_arch;
++ ppc_md.setup_io_mappings = magicbox_map_io;
++
++#ifdef CONFIG_KGDB
++ ppc_md.early_serial_map = bubinga_early_serial_map;
++#endif
++
++}
+diff -urN linux.old/arch/ppc/platforms/4xx/magicbox.h linux.dev/arch/ppc/platforms/4xx/magicbox.h
+--- linux.old/arch/ppc/platforms/4xx/magicbox.h 1970-01-01 01:00:00.000000000 +0100
++++ linux.dev/arch/ppc/platforms/4xx/magicbox.h 2006-12-14 08:48:56.000000000 +0100
+@@ -0,0 +1,47 @@
++/*
++ * Support for IBM PPC 405EP-based MagicBox board
++ *
++ * Heavily based on bubinga.h
++ *
++ *
++ * Author: SAW (IBM), derived from walnut.h.
++ * Maintained by MontaVista Software <source@mvista.com>
++ *
++ * 2003 (c) MontaVista Softare Inc. This file is licensed under the
++ * terms of the GNU General Public License version 2. This program is
++ * licensed "as is" without any warranty of any kind, whether express
++ * or implied.
++ */
++
++#ifdef __KERNEL__
++#ifndef __MAGICBOX_H__
++#define __MAGICBOX_H__
++
++#include <linux/autoconf.h>
++#include <platforms/4xx/ibm405ep.h>
++#include <asm/ppcboot.h>
++
++/* Memory map for the "MagicBox" 405EP evaluation board -- generic 4xx. */
++
++/* The UART clock is based off an internal clock -
++ * define BASE_BAUD based on the internal clock and divider(s).
++ * Since BASE_BAUD must be a constant, we will initialize it
++ * using clock/divider values which OpenBIOS initializes
++ * for typical configurations at various CPU speeds.
++ * The base baud is calculated as (FWDA / EXT UART DIV / 16)
++ */
++#define BASE_BAUD 0
++
++/* Flash */
++#define PPC40x_FPGA_BASE 0xF0300000
++#define PPC40x_FPGA_REG_OFFS 1 /* offset to flash map reg */
++#define PPC40x_FLASH_ONBD_N(x) (x & 0x02)
++#define PPC40x_FLASH_SRAM_SEL(x) (x & 0x01)
++#define PPC40x_FLASH_LOW 0xFFF00000
++#define PPC40x_FLASH_HIGH 0xFFF80000
++#define PPC40x_FLASH_SIZE 0x80000
++
++#define PPC4xx_MACHINE_NAME "MagicBox"
++
++#endif /* __MAGICBOX_H__ */
++#endif /* __KERNEL__ */
+diff -urN linux.old/arch/ppc/platforms/4xx/Makefile linux.dev/arch/ppc/platforms/4xx/Makefile
+--- linux.old/arch/ppc/platforms/4xx/Makefile 2006-11-29 22:57:37.000000000 +0100
++++ linux.dev/arch/ppc/platforms/4xx/Makefile 2006-12-14 08:48:56.000000000 +0100
+@@ -13,6 +13,7 @@
+ obj-$(CONFIG_REDWOOD_6) += redwood6.o
+ obj-$(CONFIG_SYCAMORE) += sycamore.o
+ obj-$(CONFIG_WALNUT) += walnut.o
++obj-$(CONFIG_MAGICBOX) += magicbox.o
+ obj-$(CONFIG_XILINX_ML300) += xilinx_ml300.o
+ obj-$(CONFIG_XILINX_ML403) += xilinx_ml403.o
+
+diff -urN linux.old/include/asm-ppc/ibm4xx.h linux.dev/include/asm-ppc/ibm4xx.h
+--- linux.old/include/asm-ppc/ibm4xx.h 2006-11-29 22:57:37.000000000 +0100
++++ linux.dev/include/asm-ppc/ibm4xx.h 2006-12-14 08:48:56.000000000 +0100
+@@ -18,6 +18,10 @@
+
+ #ifdef CONFIG_40x
+
++#if defined(CONFIG_MAGICBOX)
++#include <platforms/4xx/magicbox.h>
++#endif
++
+ #if defined(CONFIG_BUBINGA)
+ #include <platforms/4xx/bubinga.h>
+ #endif
diff --git a/packages/linux/linux-magicbox-2.6.19.2/001-squashfs.patch b/packages/linux/linux-magicbox-2.6.19.2/001-squashfs.patch
new file mode 100644
index 0000000000..6881cd0bb1
--- /dev/null
+++ b/packages/linux/linux-magicbox-2.6.19.2/001-squashfs.patch
@@ -0,0 +1,4170 @@
+diff -urN linux-2.6.19.old/fs/Kconfig linux-2.6.19.dev/fs/Kconfig
+--- linux-2.6.19.old/fs/Kconfig 2006-12-14 03:13:16.000000000 +0100
++++ linux-2.6.19.dev/fs/Kconfig 2006-12-14 03:13:16.000000000 +0100
+@@ -1457,6 +1457,71 @@
+
+ If unsure, say N.
+
++config SQUASHFS
++ tristate "SquashFS 3.0 - Squashed file system support"
++ select ZLIB_INFLATE
++ help
++ Saying Y here includes support for SquashFS 3.0 (a Compressed Read-Only File
++ System). Squashfs is a highly compressed read-only filesystem for Linux.
++ It uses zlib compression to compress both files, inodes and directories.
++ Inodes in the system are very small and all blocks are packed to minimise
++ data overhead. Block sizes greater than 4K are supported up to a maximum of 64K.
++ SquashFS 3.0 supports 64 bit filesystems and files (larger than 4GB), full
++ uid/gid information, hard links and timestamps.
++
++ Squashfs is intended for general read-only filesystem use, for archival
++ use (i.e. in cases where a .tar.gz file may be used), and in embedded
++ systems where low overhead is needed. Further information and filesystem tools
++ are available from http://squashfs.sourceforge.net.
++
++ If you want to compile this as a module ( = code which can be
++ inserted in and removed from the running kernel whenever you want),
++ say M here and read <file:Documentation/modules.txt>. The module
++ will be called squashfs. Note that the root file system (the one
++ containing the directory /) cannot be compiled as a module.
++
++ If unsure, say N.
++
++config SQUASHFS_EMBEDDED
++
++ bool "Additional options for memory-constrained systems"
++ depends on SQUASHFS
++ default n
++ help
++ Saying Y here allows you to specify cache sizes and how Squashfs
++ allocates memory. This is only intended for memory constrained
++ systems.
++
++ If unsure, say N.
++
++config SQUASHFS_FRAGMENT_CACHE_SIZE
++ int "Number of fragments cached" if SQUASHFS_EMBEDDED
++ depends on SQUASHFS
++ default "3"
++ help
++ By default SquashFS caches the last 3 fragments read from
++ the filesystem. Increasing this amount may mean SquashFS
++ has to re-read fragments less often from disk, at the expense
++ of extra system memory. Decreasing this amount will mean
++ SquashFS uses less memory at the expense of extra reads from disk.
++
++ Note there must be at least one cached fragment. Anything
++ much more than three will probably not make much difference.
++
++config SQUASHFS_VMALLOC
++ bool "Use Vmalloc rather than Kmalloc" if SQUASHFS_EMBEDDED
++ depends on SQUASHFS
++ default n
++ help
++ By default SquashFS uses kmalloc to obtain fragment cache memory.
++ Kmalloc memory is the standard kernel allocator, but it can fail
++ on memory constrained systems. Because of the way Vmalloc works,
++ Vmalloc can succeed when kmalloc fails. Specifying this option
++ will make SquashFS always use Vmalloc to allocate the
++ fragment cache memory.
++
++ If unsure, say N.
++
+ config VXFS_FS
+ tristate "FreeVxFS file system support (VERITAS VxFS(TM) compatible)"
+ depends on BLOCK
+diff -urN linux-2.6.19.old/fs/Makefile linux-2.6.19.dev/fs/Makefile
+--- linux-2.6.19.old/fs/Makefile 2006-12-14 03:13:16.000000000 +0100
++++ linux-2.6.19.dev/fs/Makefile 2006-12-14 03:13:16.000000000 +0100
+@@ -67,6 +67,7 @@
+ obj-$(CONFIG_JBD2) += jbd2/
+ obj-$(CONFIG_EXT2_FS) += ext2/
+ obj-$(CONFIG_CRAMFS) += cramfs/
++obj-$(CONFIG_SQUASHFS) += squashfs/
+ obj-$(CONFIG_RAMFS) += ramfs/
+ obj-$(CONFIG_HUGETLBFS) += hugetlbfs/
+ obj-$(CONFIG_CODA_FS) += coda/
+diff -urN linux-2.6.19.old/fs/squashfs/inode.c linux-2.6.19.dev/fs/squashfs/inode.c
+--- linux-2.6.19.old/fs/squashfs/inode.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.19.dev/fs/squashfs/inode.c 2006-12-14 03:13:16.000000000 +0100
+@@ -0,0 +1,2124 @@
++/*
++ * Squashfs - a compressed read only filesystem for Linux
++ *
++ * Copyright (c) 2002, 2003, 2004, 2005, 2006
++ * Phillip Lougher <phillip@lougher.org.uk>
++ *
++ * This program is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU General Public License
++ * as published by the Free Software Foundation; either version 2,
++ * or (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
++ *
++ * inode.c
++ */
++
++#include <linux/types.h>
++#include <linux/squashfs_fs.h>
++#include <linux/module.h>
++#include <linux/errno.h>
++#include <linux/slab.h>
++#include <linux/fs.h>
++#include <linux/smp_lock.h>
++#include <linux/slab.h>
++#include <linux/squashfs_fs_sb.h>
++#include <linux/squashfs_fs_i.h>
++#include <linux/buffer_head.h>
++#include <linux/vfs.h>
++#include <linux/init.h>
++#include <linux/dcache.h>
++#include <linux/wait.h>
++#include <linux/zlib.h>
++#include <linux/blkdev.h>
++#include <linux/vmalloc.h>
++#include <asm/uaccess.h>
++#include <asm/semaphore.h>
++
++#include "squashfs.h"
++
++static void squashfs_put_super(struct super_block *);
++static int squashfs_statfs(struct dentry *, struct kstatfs *);
++static int squashfs_symlink_readpage(struct file *file, struct page *page);
++static int squashfs_readpage(struct file *file, struct page *page);
++static int squashfs_readpage4K(struct file *file, struct page *page);
++static int squashfs_readdir(struct file *, void *, filldir_t);
++static struct inode *squashfs_alloc_inode(struct super_block *sb);
++static void squashfs_destroy_inode(struct inode *inode);
++static int init_inodecache(void);
++static void destroy_inodecache(void);
++static struct dentry *squashfs_lookup(struct inode *, struct dentry *,
++ struct nameidata *);
++static struct inode *squashfs_iget(struct super_block *s, squashfs_inode_t inode);
++static long long read_blocklist(struct inode *inode, int index,
++ int readahead_blks, char *block_list,
++ unsigned short **block_p, unsigned int *bsize);
++static int squashfs_get_sb(struct file_system_type *, int,
++ const char *, void *, struct vfsmount *);
++
++
++static z_stream stream;
++
++static struct file_system_type squashfs_fs_type = {
++ .owner = THIS_MODULE,
++ .name = "squashfs",
++ .get_sb = squashfs_get_sb,
++ .kill_sb = kill_block_super,
++ .fs_flags = FS_REQUIRES_DEV
++};
++
++static unsigned char squashfs_filetype_table[] = {
++ DT_UNKNOWN, DT_DIR, DT_REG, DT_LNK, DT_BLK, DT_CHR, DT_FIFO, DT_SOCK
++};
++
++static struct super_operations squashfs_ops = {
++ .alloc_inode = squashfs_alloc_inode,
++ .destroy_inode = squashfs_destroy_inode,
++ .statfs = squashfs_statfs,
++ .put_super = squashfs_put_super,
++};
++
++SQSH_EXTERN struct address_space_operations squashfs_symlink_aops = {
++ .readpage = squashfs_symlink_readpage
++};
++
++SQSH_EXTERN struct address_space_operations squashfs_aops = {
++ .readpage = squashfs_readpage
++};
++
++SQSH_EXTERN struct address_space_operations squashfs_aops_4K = {
++ .readpage = squashfs_readpage4K
++};
++
++static struct file_operations squashfs_dir_ops = {
++ .read = generic_read_dir,
++ .readdir = squashfs_readdir
++};
++
++SQSH_EXTERN struct inode_operations squashfs_dir_inode_ops = {
++ .lookup = squashfs_lookup
++};
++
++
++static struct buffer_head *get_block_length(struct super_block *s,
++ int *cur_index, int *offset, int *c_byte)
++{
++ struct squashfs_sb_info *msblk = s->s_fs_info;
++ unsigned short temp;
++ struct buffer_head *bh;
++
++ if (!(bh = sb_bread(s, *cur_index)))
++ goto out;
++
++ if (msblk->devblksize - *offset == 1) {
++ if (msblk->swap)
++ ((unsigned char *) &temp)[1] = *((unsigned char *)
++ (bh->b_data + *offset));
++ else
++ ((unsigned char *) &temp)[0] = *((unsigned char *)
++ (bh->b_data + *offset));
++ brelse(bh);
++ if (!(bh = sb_bread(s, ++(*cur_index))))
++ goto out;
++ if (msblk->swap)
++ ((unsigned char *) &temp)[0] = *((unsigned char *)
++ bh->b_data);
++ else
++ ((unsigned char *) &temp)[1] = *((unsigned c