[U-Boot] [PATCH] add board support for virtex4fx12 minimodul
Ricardo
ricardo.ribalda at gmail.com
Mon Sep 8 22:04:26 CEST 2008
Hello again
Some comments:
1) The board is manufactured by avnet, you must create it under the
folder boards/avnet/fx12mm
2) Try to unificate the fx12mm board under a more global board, like
the ml507 with is now in mainstream
3) Add your boad to the MAKEALL script and yourself to the MAINTAINERS
4) There are some object that are not used (or I don't see where are
they used) in your makefile. (../common/*)
5) You can obtain CONFIG_SYS_CLK_FREQ from the xparameters (it is
adjustable by the suer)
Best regards
On Mon, Sep 8, 2008 at 14:07, schardt <schardt at team-ctech.de> wrote:
> From: schardt <schardt at schleppi.(none)>
>
> ---
> Makefile | 3 +
> board/xilinx/fx12mm/Makefile | 63 ++++++++++++++++
> board/xilinx/fx12mm/config.mk | 28 +++++++
> board/xilinx/fx12mm/fx12mm.c | 67 +++++++++++++++++
> board/xilinx/fx12mm/init.S | 32 ++++++++
> board/xilinx/fx12mm/u-boot.lds | 149 +++++++++++++++++++++++++++++++++++++
> board/xilinx/fx12mm/xparameters.h | 40 ++++++++++
> include/configs/FX12MM.h | 127 +++++++++++++++++++++++++++++++
> 8 files changed, 509 insertions(+), 0 deletions(-)
> create mode 100644 board/xilinx/fx12mm/Makefile
> create mode 100644 board/xilinx/fx12mm/config.mk
> create mode 100644 board/xilinx/fx12mm/fx12mm.c
> create mode 100644 board/xilinx/fx12mm/init.S
> create mode 100644 board/xilinx/fx12mm/u-boot.lds
> create mode 100644 board/xilinx/fx12mm/xparameters.h
> create mode 100644 include/configs/FX12MM.h
>
> diff --git a/Makefile b/Makefile
> index 8d82ef5..1fc476d 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -1282,6 +1282,9 @@ ERIC_config: unconfig
> EXBITGEN_config: unconfig
> @$(MKCONFIG) $(@:_config=) ppc ppc4xx exbitgen
>
> +FX12MM_config: unconfig
> + @$(MKCONFIG) $(@:_config=) ppc ppc4xx fx12mm xilinx
> +
> G2000_config: unconfig
> @$(MKCONFIG) $(@:_config=) ppc ppc4xx g2000
>
> diff --git a/board/xilinx/fx12mm/Makefile b/board/xilinx/fx12mm/Makefile
> new file mode 100644
> index 0000000..aed47ef
> --- /dev/null
> +++ b/board/xilinx/fx12mm/Makefile
> @@ -0,0 +1,63 @@
> +#
> +# (C) Copyright 2000-2006
> +# Wolfgang Denk, DENX Software Engineering, wd at denx.de.
> +#
> +# See file CREDITS for list of people who contributed to this
> +# project.
> +#
> +# 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 of
> +# the License, 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, Inc., 59 Temple Place, Suite 330, Boston,
> +# MA 02111-1307 USA
> +#
> +
> +include $(TOPDIR)/config.mk
> +ifneq ($(OBJTREE),$(SRCTREE))
> +$(shell mkdir -p $(obj)../common)
> +$(shell mkdir -p $(obj)../xilinx_iic)
> +endif
> +
> +INCS := -I../common -I../xilinx_iic
> +CFLAGS += $(INCS)
> +HOST_CFLAGS += $(INCS)
> +
> +LIB = $(obj)lib$(BOARD).a
> +
> +COBJS = $(BOARD).o \
> + ../common/xbasic_types.o ../common/xdma_channel.o \
> + ../common/xdma_channel_sg.o \
> + ../common/xversion.o \
> +
> +SOBJS = init.o
> +
> +SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
> +OBJS := $(addprefix $(obj),$(COBJS))
> +SOBJS := $(addprefix $(obj),$(SOBJS))
> +
> +$(LIB): $(OBJS) $(SOBJS)
> + $(AR) $(ARFLAGS) $@ $^
> +
> +clean:
> + rm -f $(SOBJS) $(OBJS)
> +
> +distclean: clean
> + rm -f $(LIB) core *.bak .depend
> +
> +#########################################################################
> +
> +# defines $(obj).depend target
> +include $(SRCTREE)/rules.mk
> +
> +sinclude $(obj).depend
> +
> +#########################################################################
> diff --git a/board/xilinx/fx12mm/config.mk b/board/xilinx/fx12mm/config.mk
> new file mode 100644
> index 0000000..69490fb
> --- /dev/null
> +++ b/board/xilinx/fx12mm/config.mk
> @@ -0,0 +1,28 @@
> +#
> +# (C) Copyright 2000
> +# Wolfgang Denk, DENX Software Engineering, wd at denx.de.
> +#
> +# See file CREDITS for list of people who contributed to this
> +# project.
> +#
> +# 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 of
> +# the License, 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, Inc., 59 Temple Place, Suite 330, Boston,
> +# MA 02111-1307 USA
> +#
> +
> +#
> +# Memec/Avnet Virtex4FX12 MiniModul
> +# Standard EDK 10.1 Flash Address
> +#
> +TEXT_BASE = 0xFF800000
> diff --git a/board/xilinx/fx12mm/fx12mm.c b/board/xilinx/fx12mm/fx12mm.c
> new file mode 100644
> index 0000000..66adde9
> --- /dev/null
> +++ b/board/xilinx/fx12mm/fx12mm.c
> @@ -0,0 +1,67 @@
> +/*
> + * (C) Copyright 2008
> + *
> + * Georg Schardt <schardt at team-ctech.de>
> + *
> + * See file CREDITS for list of people who contributed to this
> + * project.
> + *
> + * 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 of
> + * the License, 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, Inc., 59 Temple Place, Suite 330, Boston,
> + * MA 02111-1307 USA
> + *
> + */
> +
> +#include <config.h>
> +#include <common.h>
> +#include <asm/processor.h>
> +
> +int
> +checkboard(void)
> +{
> + char tmp[64];
> + char *s, *e;
> + int i = getenv_r("serial", tmp, sizeof(tmp));
> +
> + if (i < 0) {
> + printf("Avnet Virtex4 FX12 with no serial #");
> + } else {
> + for (e = tmp; *e; ++e) {
> + if (*e == ' ')
> + break;
> + }
> + printf("Avnet Virtex4 FX12 Minimodul # ");
> + for (s = tmp; s < e; ++s)
> + putc(*s);
> + }
> + putc('\n');
> + return 0;
> +}
> +
> +phys_size_t
> +initdram(int board_type)
> +{
> + /* 64MB of SDRAM */
> + return 64 * 1024 * 1024;
> +}
> +
> +/* implement functions originally in cpu/ppc4xx/speed.c */
> +void
> +get_sys_info(sys_info_t *sysInfo)
> +{
> + sysInfo->freqProcessor = XPAR_CORE_CLOCK_FREQ_HZ;
> + /* only correct if the PLB and OPB run at the same frequency */
> + sysInfo->freqPLB = XPAR_UARTNS550_0_CLOCK_FREQ_HZ;
> + sysInfo->freqPCI = XPAR_UARTNS550_0_CLOCK_FREQ_HZ / 3;
> +}
> diff --git a/board/xilinx/fx12mm/init.S b/board/xilinx/fx12mm/init.S
> new file mode 100644
> index 0000000..c05a211
> --- /dev/null
> +++ b/board/xilinx/fx12mm/init.S
> @@ -0,0 +1,32 @@
> +/*
> + * (C) Copyright 2008
> + *
> + * Georg Schardt <schardt at team-ctech.de>
> + *
> + * See file CREDITS for list of people who contributed to this
> + * project.
> + *
> + * 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 of
> + * the License, 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, Inc., 59 Temple Place, Suite 330, Boston,
> + * MA 02111-1307 USA
> + *
> + */
> +
> + .globl ext_bus_cntlr_init
> +ext_bus_cntlr_init:
> + blr
> +
> + .globl sdram_init
> +sdram_init:
> + blr
> diff --git a/board/xilinx/fx12mm/u-boot.lds b/board/xilinx/fx12mm/u-boot.lds
> new file mode 100644
> index 0000000..31af107
> --- /dev/null
> +++ b/board/xilinx/fx12mm/u-boot.lds
> @@ -0,0 +1,149 @@
> +/*
> + * (C) Copyright 2000
> + * Wolfgang Denk, DENX Software Engineering, wd at denx.de.
> + *
> + * See file CREDITS for list of people who contributed to this
> + * project.
> + *
> + * 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 of
> + * the License, 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, Inc., 59 Temple Place, Suite 330, Boston,
> + * MA 02111-1307 USA
> + */
> +
> +OUTPUT_ARCH(powerpc)
> +ENTRY(_start)
> +SEARCH_DIR(/lib); SEARCH_DIR(/usr/lib); SEARCH_DIR(/usr/local/lib); SEARCH_DIR(/usr/local/powerpc-any-elf/lib);
> +/* Do we need any of these for elf?
> + __DYNAMIC = 0; */
> +SECTIONS
> +{
> + /* Read-only sections, merged into text segment: */
> + . = + SIZEOF_HEADERS;
> + .interp : { *(.interp) }
> + .hash : { *(.hash) }
> + .dynsym : { *(.dynsym) }
> + .dynstr : { *(.dynstr) }
> + .rel.text : { *(.rel.text) }
> + .rela.text : { *(.rela.text) }
> + .rel.data : { *(.rel.data) }
> + .rela.data : { *(.rela.data) }
> + .rel.rodata : { *(.rel.rodata) }
> + .rela.rodata : { *(.rela.rodata) }
> + .rel.got : { *(.rel.got) }
> + .rela.got : { *(.rela.got) }
> + .rel.ctors : { *(.rel.ctors) }
> + .rela.ctors : { *(.rela.ctors) }
> + .rel.dtors : { *(.rel.dtors) }
> + .rela.dtors : { *(.rela.dtors) }
> + .rel.bss : { *(.rel.bss) }
> + .rela.bss : { *(.rela.bss) }
> + .rel.plt : { *(.rel.plt) }
> + .rela.plt : { *(.rela.plt) }
> + .init : { *(.init) }
> + .plt : { *(.plt) }
> + .text :
> + {
> + /* WARNING - the following is hand-optimized to fit within */
> + /* the sector layout of our flash chips! XXX FIXME XXX */
> +/*
> + cpu/ppc4xx/start.o (.text)
> + board/xilinx/fx12mm/init.o (.text)
> + cpu/ppc4xx/kgdb.o (.text)
> + cpu/ppc4xx/traps.o (.text)
> + cpu/ppc4xx/interrupts.o (.text)
> + cpu/ppc4xx/serial.o (.text)
> + cpu/ppc4xx/cpu_init.o (.text)
> + cpu/ppc4xx/speed.o (.text)
> + cpu/ppc4xx/4xx_enet.o (.text)
> + common/dlmalloc.o (.text)
> + lib_generic/crc32.o (.text)
> + lib_ppc/extable.o (.text)
> + lib_generic/zlib.o (.text)
> +*/
> +/* . = env_offset;*/
> +/* common/environment.o(.text)*/
> +
> + *(.text)
> + *(.fixup)
> + *(.got1)
> + }
> + _etext = .;
> + PROVIDE (etext = .);
> + .rodata :
> + {
> + *(.rodata)
> + *(.rodata1)
> + *(.rodata.str1.4)
> + *(.eh_frame)
> + }
> + .fini : { *(.fini) } =0
> + .ctors : { *(.ctors) }
> + .dtors : { *(.dtors) }
> +
> + /* Read-write section, merged into data segment: */
> + . = (. + 0x00FF) & 0xFFFFFF00;
> + _erotext = .;
> + PROVIDE (erotext = .);
> + .reloc :
> + {
> + *(.got)
> + _GOT2_TABLE_ = .;
> + *(.got2)
> + _FIXUP_TABLE_ = .;
> + *(.fixup)
> + }
> + __got2_entries = (_FIXUP_TABLE_ - _GOT2_TABLE_) >>2;
> + __fixup_entries = (. - _FIXUP_TABLE_)>>2;
> +
> + .data :
> + {
> + *(.data)
> + *(.data1)
> + *(.sdata)
> + *(.sdata2)
> + *(.dynamic)
> + CONSTRUCTORS
> + }
> + _edata = .;
> + PROVIDE (edata = .);
> +
> + . = .;
> + __u_boot_cmd_start = .;
> + .u_boot_cmd : { *(.u_boot_cmd) }
> + __u_boot_cmd_end = .;
> +
> +
> + . = .;
> + __start___ex_table = .;
> + __ex_table : { *(__ex_table) }
> + __stop___ex_table = .;
> +
> + . = ALIGN(256);
> + __init_begin = .;
> + .text.init : { *(.text.init) }
> + .data.init : { *(.data.init) }
> + . = ALIGN(256);
> + __init_end = .;
> +
> + __bss_start = .;
> + .bss :
> + {
> + *(.sbss) *(.scommon)
> + *(.dynbss)
> + *(.bss)
> + *(COMMON)
> + }
> + _end = . ;
> + PROVIDE (end = .);
> +}
> diff --git a/board/xilinx/fx12mm/xparameters.h b/board/xilinx/fx12mm/xparameters.h
> new file mode 100644
> index 0000000..b85ded0
> --- /dev/null
> +++ b/board/xilinx/fx12mm/xparameters.h
> @@ -0,0 +1,40 @@
> +/*
> + * (C) Copyright 2008
> + *
> + * Georg Schardt <schardt at team-ctech.de>
> + *
> + * See file CREDITS for list of people who contributed to this
> + * project.
> + *
> + * 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 of
> + * the License, 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, Inc., 59 Temple Place, Suite 330, Boston,
> + * MA 02111-1307 USA
> + *
> + * CAUTION: This file is based on the xparameters.h automatically
> + * generated by libgen. Version: Xilinx EDK 8.2.02 EDK_Im_Sp2.4
> + */
> +
> +
> +/* RS232 */
> +#define XPAR_UARTNS550_0_CLOCK_FREQ_HZ 100000000
> +#define XPAR_UARTNS550_0_BASEADDR 0x83E00000
> +
> +
> +/* INT_C */
> +#define XPAR_XPS_INTC_0_DEVICE_ID 0
> +#define XPAR_XPS_INTC_0_BASEADDR 0x81800000
> +#define XPAR_INTC_MAX_NUM_INTR_INPUTS 2
> +
> +/* CPU core clock */
> +#define XPAR_CORE_CLOCK_FREQ_HZ 300000000
> diff --git a/include/configs/FX12MM.h b/include/configs/FX12MM.h
> new file mode 100644
> index 0000000..00e9ee5
> --- /dev/null
> +++ b/include/configs/FX12MM.h
> @@ -0,0 +1,127 @@
> +/*
> + * (C) Copyright 2008
> + * Georg Schardt <schardt at team-ctech.de>
> + *
> + * See file CREDITS for list of people who contributed to this
> + * project.
> + *
> + * 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 of
> + * the License, 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, Inc., 59 Temple Place, Suite 330, Boston,
> + * MA 02111-1307 USA
> + */
> +
> +
> +/*
> + Configuration file for the Virtex4FX12 Minimodul by Avnet/Memec,
> + see http://www.em.avnet.com
> +*/
> +
> +#ifndef __CONFIG_H
> +#define __CONFIG_H
> +
> +/* include the board specific parameter file */
> +#include "../board/xilinx/fx12mm/xparameters.h"
> +
> +
> +/* cpu parameter */
> +#define CONFIG_4xx 1
> +#define CONFIG_405 1
> +#define CONFIG_XILINX_405 1
> +#define CONFIG_SYS_CLK_FREQ 100000000
> +
> +/* system ace modul */
> +#ifdef XPAR_SYSACE_0_DEVICE_ID
> +#define CONFIG_SYSTEMACE 1
> +#define CONFIG_DOS_PARTITION 1
> +#define CFG_SYSTEMACE_BASE XPAR_SYSACE_0_BASEADDR
> +#define CFG_SYSTEMACE_WIDTH XPAR_SYSACE_0_MEM_WIDTH
> +#endif
> +
> +/* environment is in FLASH */
> +#define CFG_ENV_IS_IN_FLASH 1
> +#define RM_FLASH_CMDS
> +
> +/* flash configuration */
> +#define CFG_FLASH_BASE 0xff800000
> +#define CFG_MAX_FLASH_BANKS 1 /* max number of memory banks */
> +#define CFG_MAX_FLASH_SECT 256 /* max number of sectors on one chip */
> +#define CFG_FLASH_ERASE_TOUT 150000 /* Timeout for Flash Erase (in ms) */
> +#define CFG_FLASH_WRITE_TOUT 500 /* Timeout for Flash Write (in ms) */
> +#define CFG_FLASH_CFI 1
> +#define CONFIG_FLASH_CFI_DRIVER 1
> +#define CFG_ENV_OFFSET 0x003f0000
> +#define CFG_ENV_SIZE 0x00010000
> +#define CONFIG_ENV_OVERWRITE 1 /* writable ethaddr and serial# */
> +#define CFG_MONITOR_BASE 0xff800000
> +
> +/* serial communication */
> +#ifdef XILINX_UARTLITE_BASEADDR
> +#define CONFIG_XILINX_UARTLITE
> +#define CONFIG_SERIAL_BASE XILINX_UARTLITE_BASEADDR
> +#define CONFIG_BAUDRATE XILINX_UARTLITE_BAUDRATE
> +#define CFG_BAUDRATE_TABLE { CONFIG_BAUDRATE }
> +#else
> +#ifdef XPAR_UARTNS550_0_BASEADDR
> +#define CFG_NS16550
> +#define CFG_NS16550_SERIAL
> +#define CFG_NS16550_REG_SIZE 4
> +#define CONFIG_CONS_INDEX 1
> +#define CFG_NS16550_COM1 XPAR_UARTNS550_0_BASEADDR
> +#define CFG_NS16550_CLK XPAR_UARTNS550_0_CLOCK_FREQ_HZ
> +#define CONFIG_BAUDRATE 115200
> +#define CFG_BAUDRATE_TABLE { 9600, 115200 }
> +#endif
> +#endif
> +
> +/* interrupt controller */
> +#ifdef XPAR_XPS_INTC_0_DEVICE_ID
> +#define CFG_INTC_0 1
> +#define CFG_INTC_0_ADDR XPAR_XPS_INTC_0_BASEADDR
> +#define CFG_INTC_0_NUM XPAR_INTC_MAX_NUM_INTR_INPUTS
> +#endif
> +
> +/* u-boot commands configuration */
> +#include <config_cmd_default.h>
> +#undef CONFIG_CMD_NET
> +#define CONFIG_CMD_JFFS2
> +
> +/* u-boot configuration */
> +#define CFG_PROMPT "=> " /* Monitor Command Prompt */
> +#define CFG_CBSIZE 256 /* Console I/O Buffer Size */
> +#define CFG_PBSIZE (CFG_CBSIZE+sizeof(CFG_PROMPT)+16) /* Print Buffer Size */
> +#define CFG_MAXARGS 16 /* max number of command args */
> +#define CFG_BARGSIZE CFG_CBSIZE /* Boot Argument Buffer Size */
> +#define CFG_MEMTEST_START 0x0400000 /* memtest works on */
> +#define CFG_MEMTEST_END 0x0800000 /* 4 ... 12 MB in DRAM */
> +#define CFG_LOAD_ADDR 0x01000000 /* default load address */
> +#define CFG_HZ 2000 /* decrementer freq: 1 ms ticks */
> +#define CFG_SDRAM_BASE 0x00000000
> +#define CFG_MONITOR_LEN (192 * 1024)
> +#define CFG_MALLOC_LEN (1024 * 1024)
> +#define CFG_CACHELINE_SIZE 32
> +#define CFG_CACHELINE_SHIFT 2
> +#define CFG_BOOTMAPSZ (8 << 20)
> +
> +/* memory configuration */
> +#define CFG_INIT_RAM_ADDR 0x800000 /* inside of SDRAM */
> +#define CFG_INIT_RAM_END 0x2000 /* End of used area in RAM */
> +#define CFG_GBL_DATA_SIZE 128
> +#define CFG_GBL_DATA_OFFSET (CFG_INIT_RAM_END - CFG_GBL_DATA_SIZE)
> +#define CFG_INIT_SP_OFFSET CFG_GBL_DATA_OFFSET
> +
> +#define BOOTFLAG_COLD 0x01 /* Normal Power-On: Boot from FLASH */
> +#define BOOTFLAG_WARM 0x02 /* Software reboot */
> +
> +#endif /* __CONFIG_H */
> +
> --
> 1.5.4.1
>
> _______________________________________________
> U-Boot mailing list
> U-Boot at lists.denx.de
> http://lists.denx.de/mailman/listinfo/u-boot
>
--
Ricardo Ribalda
http://www.eps.uam.es/~rribalda/
More information about the U-Boot
mailing list