## Automatically generated incremental diff ## From: linux-2.4.23-bk2 ## To: linux-2.4.23-bk3 ## Robot: $Id: make-incremental-diff,v 1.11 2002/02/20 02:59:33 hpa Exp $ diff -urN linux-2.4.23-bk2/Documentation/i386/zero-page.txt linux-2.4.23-bk3/Documentation/i386/zero-page.txt --- linux-2.4.23-bk2/Documentation/i386/zero-page.txt 2003-11-28 10:26:19.000000000 -0800 +++ linux-2.4.23-bk3/Documentation/i386/zero-page.txt 2003-12-04 02:50:12.000000000 -0800 @@ -66,8 +66,10 @@ 0x21c unsigned long INITRD_SIZE, size in bytes of ramdisk image 0x220 4 bytes (setup.S) 0x224 unsigned short setup.S heap end pointer +0x228 4 bytes DISK80_SIG_BUFFER (setup.S) 0x2d0 - 0x600 E820MAP -0x600 - 0x7D4 EDDBUF (setup.S) +0x600 - 0x800 EDDBUF (setup.S) for disk signature read sector +0x600 - 0x7d4 EDDBUF (setup.S) 0x800 string, 2K max COMMAND_LINE, the kernel commandline as copied using CL_OFFSET. diff -urN linux-2.4.23-bk2/Makefile linux-2.4.23-bk3/Makefile --- linux-2.4.23-bk2/Makefile 2003-12-04 02:50:09.000000000 -0800 +++ linux-2.4.23-bk3/Makefile 2003-12-04 02:50:12.000000000 -0800 @@ -1,7 +1,7 @@ VERSION = 2 PATCHLEVEL = 4 SUBLEVEL = 23 -EXTRAVERSION = -bk2 +EXTRAVERSION = -bk3 KERNELRELEASE=$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION) diff -urN linux-2.4.23-bk2/arch/i386/boot/setup.S linux-2.4.23-bk3/arch/i386/boot/setup.S --- linux-2.4.23-bk2/arch/i386/boot/setup.S 2003-11-28 10:26:19.000000000 -0800 +++ linux-2.4.23-bk3/arch/i386/boot/setup.S 2003-12-04 02:50:12.000000000 -0800 @@ -49,6 +49,8 @@ * by Matt Domsch October 2002 * conformant to T13 Committee www.t13.org * projects 1572D, 1484D, 1386D, 1226DT + * disk signature read by Matt Domsch + * and Andrew Wilks September 2003 */ #include @@ -549,6 +551,25 @@ #endif #if defined(CONFIG_EDD) || defined(CONFIG_EDD_MODULE) +# Read the first sector of device 80h and store the 4-byte signature + movl $0xFFFFFFFF, %eax + movl %eax, (DISK80_SIG_BUFFER) # assume failure + movb $READ_SECTORS, %ah + movb $1, %al # read 1 sector + movb $0x80, %dl # from device 80 + movb $0, %dh # at head 0 + movw $1, %cx # cylinder 0, sector 0 + pushw %es + pushw %ds + popw %es + movw $EDDBUF, %bx + int $0x13 + jc disk_sig_done + movl (EDDBUF+MBR_SIG_OFFSET), %eax + movl %eax, (DISK80_SIG_BUFFER) # store success +disk_sig_done: + popw %es + # Do the BIOS Enhanced Disk Drive calls # This consists of two calls: # int 13h ah=41h "Check Extensions Present" diff -urN linux-2.4.23-bk2/arch/i386/kernel/edd.c linux-2.4.23-bk3/arch/i386/kernel/edd.c --- linux-2.4.23-bk2/arch/i386/kernel/edd.c 2003-11-28 10:26:19.000000000 -0800 +++ linux-2.4.23-bk3/arch/i386/kernel/edd.c 2003-12-04 02:50:12.000000000 -0800 @@ -1,7 +1,8 @@ /* * linux/arch/i386/kernel/edd.c - * Copyright (C) 2002 Dell Computer Corporation + * Copyright (C) 2002, 2003 Dell, Inc. * by Matt Domsch + * disk80 signature by Matt Domsch, Andrew Wilks, and Sandeep K. Shandilya * * BIOS Enhanced Disk Drive Services (EDD) * conformant to T13 Committee www.t13.org @@ -27,7 +28,6 @@ /* * TODO: * - move edd.[ch] to better locations if/when one is decided - * - keep current with 2.5 EDD code changes */ #include @@ -333,6 +333,18 @@ } static int +edd_show_disk80_sig(char *page, char **start, off_t off, int count, int *eof, void *data) +{ + char *p = page; + if ( !page || off) { + return proc_calc_metrics(page, start, off, count, eof, 0); + } + + p += snprintf(p, left, "0x%08x\n", edd_disk80_sig); + return proc_calc_metrics(page, start, off, count, eof, (p - page)); +} + +static int edd_show_extensions(char *page, char **start, off_t off, int count, int *eof, void *data) { struct edd_info *info = data; @@ -491,6 +503,15 @@ return 1; } +static int +edd_has_disk80_sig(struct edd_device *edev) +{ + struct edd_info *info = edd_dev_get_info(edev); + if (!edev || !info) + return 0; + return info->device == 0x80; +} + static EDD_DEVICE_ATTR(raw_data, edd_show_raw_data, NULL); static EDD_DEVICE_ATTR(version, edd_show_version, NULL); static EDD_DEVICE_ATTR(extensions, edd_show_extensions, NULL); @@ -505,6 +526,7 @@ edd_has_default_sectors_per_track); static EDD_DEVICE_ATTR(interface, edd_show_interface,edd_has_edd30); static EDD_DEVICE_ATTR(host_bus, edd_show_host_bus, edd_has_edd30); +static EDD_DEVICE_ATTR(mbr_signature, edd_show_disk80_sig, edd_has_disk80_sig); static struct edd_attribute *def_attrs[] = { &edd_attr_raw_data, @@ -517,6 +539,7 @@ &edd_attr_default_sectors_per_track, &edd_attr_interface, &edd_attr_host_bus, + &edd_attr_mbr_signature, NULL, }; diff -urN linux-2.4.23-bk2/arch/i386/kernel/i386_ksyms.c linux-2.4.23-bk3/arch/i386/kernel/i386_ksyms.c --- linux-2.4.23-bk2/arch/i386/kernel/i386_ksyms.c 2003-11-28 10:26:19.000000000 -0800 +++ linux-2.4.23-bk3/arch/i386/kernel/i386_ksyms.c 2003-12-04 02:50:12.000000000 -0800 @@ -185,4 +185,5 @@ #ifdef CONFIG_EDD_MODULE EXPORT_SYMBOL(edd); EXPORT_SYMBOL(eddnr); +EXPORT_SYMBOL(edd_disk80_sig); #endif diff -urN linux-2.4.23-bk2/arch/i386/kernel/setup.c linux-2.4.23-bk3/arch/i386/kernel/setup.c --- linux-2.4.23-bk2/arch/i386/kernel/setup.c 2003-11-28 10:26:19.000000000 -0800 +++ linux-2.4.23-bk3/arch/i386/kernel/setup.c 2003-12-04 02:50:12.000000000 -0800 @@ -211,6 +211,7 @@ #define KERNEL_START (*(unsigned long *) (PARAM+0x214)) #define INITRD_START (*(unsigned long *) (PARAM+0x218)) #define INITRD_SIZE (*(unsigned long *) (PARAM+0x21c)) +#define DISK80_SIGNATURE_BUFFER (*(unsigned int*) (PARAM+DISKSIG_BUFFER)) #define EDD_NR (*(unsigned char *) (PARAM+EDDNR)) #define EDD_BUF ((struct edd_info *) (PARAM+EDDBUF)) #define COMMAND_LINE ((char *) (PARAM+2048)) @@ -720,6 +721,7 @@ #if defined(CONFIG_EDD) || defined(CONFIG_EDD_MODULE) unsigned char eddnr; struct edd_info edd[EDDMAXNR]; +unsigned int edd_disk80_sig; /** * copy_edd() - Copy the BIOS EDD information * from empty_zero_page into a safe place. @@ -729,6 +731,7 @@ { eddnr = EDD_NR; memcpy(edd, EDD_BUF, sizeof(edd)); + edd_disk80_sig = DISK80_SIGNATURE_BUFFER; } #else static inline void copy_edd(void) {} diff -urN linux-2.4.23-bk2/drivers/video/aty/atyfb_base.c linux-2.4.23-bk3/drivers/video/aty/atyfb_base.c --- linux-2.4.23-bk2/drivers/video/aty/atyfb_base.c 2003-11-28 10:26:20.000000000 -0800 +++ linux-2.4.23-bk3/drivers/video/aty/atyfb_base.c 2003-12-04 02:50:15.000000000 -0800 @@ -383,6 +383,7 @@ #if defined(CONFIG_FB_ATY_GX) || defined(CONFIG_FB_ATY_CT) static char ram_dram[] __initdata = "DRAM"; +static char ram_resv[] __initdata = "RESV"; #endif /* CONFIG_FB_ATY_GX || CONFIG_FB_ATY_CT */ #ifdef CONFIG_FB_ATY_GX @@ -395,7 +396,6 @@ static char ram_sgram[] __initdata = "SGRAM"; static char ram_wram[] __initdata = "WRAM"; static char ram_off[] __initdata = "OFF"; -static char ram_resv[] __initdata = "RESV"; #endif /* CONFIG_FB_ATY_CT */ #ifdef CONFIG_FB_ATY_GX @@ -488,8 +488,6 @@ static void aty_set_crtc(const struct fb_info_aty *info, const struct crtc *crtc) { - u32 v; - aty_st_le32(CRTC_H_TOTAL_DISP, crtc->h_tot_disp, info); aty_st_le32(CRTC_H_SYNC_STRT_WID, crtc->h_sync_strt_wid, info); #ifdef CONFIG_FB_ATY_GENERIC_LCD @@ -523,6 +521,7 @@ registers. */ if (info->lcd_table != 0) { + u32 v; /* Enable/disable horizontal stretching */ v = aty_ld_lcd(HORZ_STRETCHING, info); v = v & ~(HORZ_STRETCH_RATIO | HORZ_STRETCH_EN | AUTO_HORZ_RATIO | @@ -1985,7 +1984,6 @@ #if defined(CONFIG_PPC) int sense; #endif - u8 pll_ref_div; u32 monitors_enabled; info->aty_cmap_regs = (struct aty_cmap_regs *)(info->ati_regbase+0xc0); @@ -2103,19 +2101,24 @@ info->ref_clk_per = 1000000000000ULL/14318180; xtal = "14.31818"; - if (M64_HAS(GTB_DSP) && (pll_ref_div = aty_ld_pll(PLL_REF_DIV, info))) { - int diff1, diff2; - diff1 = 510*14/pll_ref_div-pll; - diff2 = 510*29/pll_ref_div-pll; - if (diff1 < 0) - diff1 = -diff1; - if (diff2 < 0) - diff2 = -diff2; - if (diff2 < diff1) { - info->ref_clk_per = 1000000000000ULL/29498928; - xtal = "29.498928"; - } +#ifdef CONFIG_FB_ATY_CT + if (M64_HAS(INTEGRATED)) { + u8 pll_ref_div = aty_ld_pll(PLL_REF_DIV, info); + if (pll_ref_div) { + int diff1, diff2; + diff1 = 510*14/pll_ref_div-pll; + diff2 = 510*29/pll_ref_div-pll; + if (diff1 < 0) + diff1 = -diff1; + if (diff2 < 0) + diff2 = -diff2; + if (diff2 < diff1) { + info->ref_clk_per = 1000000000000ULL/29498928; + xtal = "29.498928"; + } + } } +#endif /* CONFIG_FB_ATY_CT */ i = aty_ld_le32(MEM_CNTL, info); gtb_memsize = M64_HAS(GTB_DSP); @@ -3001,9 +3004,11 @@ * Map the video memory (physical address given) to somewhere in the * kernel address space. */ - info->frame_buffer = ioremap(phys_vmembase[m64_num], phys_size[m64_num]); + info->frame_buffer = (unsigned long)ioremap(phys_vmembase[m64_num], + phys_size[m64_num]); info->frame_buffer_phys = info->frame_buffer; /* Fake! */ - info->ati_regbase = ioremap(phys_guiregbase[m64_num], 0x10000)+0xFC00ul; + info->ati_regbase = (unsigned long)ioremap(phys_guiregbase[m64_num], + 0x10000)+0xFC00ul; info->ati_regbase_phys = info->ati_regbase; /* Fake! */ aty_st_le32(CLOCK_CNTL, 0x12345678, info); diff -urN linux-2.4.23-bk2/drivers/video/aty/mach64_gx.c linux-2.4.23-bk3/drivers/video/aty/mach64_gx.c --- linux-2.4.23-bk2/drivers/video/aty/mach64_gx.c 2003-11-28 10:26:21.000000000 -0800 +++ linux-2.4.23-bk3/drivers/video/aty/mach64_gx.c 2003-12-04 02:50:15.000000000 -0800 @@ -124,7 +124,7 @@ } static int aty_var_to_pll_514(const struct fb_info_aty *info, u32 vclk_per, - u8 bpp, union aty_pll *pll) + u8 bpp, u32 xres, union aty_pll *pll) { /* * FIXME: use real calculations instead of using fixed values from the old @@ -325,7 +325,7 @@ */ static int aty_var_to_pll_18818(const struct fb_info_aty *info, u32 vclk_per, - u8 bpp, union aty_pll *pll) + u8 bpp, u32 xres, union aty_pll *pll) { u32 MHz100; /* in 0.01 MHz */ u32 program_bits; @@ -481,7 +481,7 @@ */ static int aty_var_to_pll_1703(const struct fb_info_aty *info, u32 vclk_per, - u8 bpp, union aty_pll *pll) + u8 bpp, u32 xres, union aty_pll *pll) { u32 mhz100; /* in 0.01 MHz */ u32 program_bits; @@ -595,7 +595,7 @@ */ static int aty_var_to_pll_8398(const struct fb_info_aty *info, u32 vclk_per, - u8 bpp, union aty_pll *pll) + u8 bpp, u32 xres, union aty_pll *pll) { u32 tempA, tempB, fOut, longMHz100, diff, preDiff; @@ -723,7 +723,7 @@ */ static int aty_var_to_pll_408(const struct fb_info_aty *info, u32 vclk_per, - u8 bpp, union aty_pll *pll) + u8 bpp, u32 xres, union aty_pll *pll) { u32 mhz100; /* in 0.01 MHz */ u32 program_bits; diff -urN linux-2.4.23-bk2/fs/ext3/super.c linux-2.4.23-bk3/fs/ext3/super.c --- linux-2.4.23-bk2/fs/ext3/super.c 2003-08-25 04:44:43.000000000 -0700 +++ linux-2.4.23-bk3/fs/ext3/super.c 2003-12-04 02:50:16.000000000 -0800 @@ -449,7 +449,6 @@ } static struct dquot_operations ext3_qops; -static int (*old_sync_dquot)(struct dquot *dquot); static struct super_operations ext3_sops = { read_inode: ext3_read_inode, /* BKL held */ @@ -1774,6 +1773,8 @@ #ifdef CONFIG_QUOTA +static int (*old_sync_dquot)(struct dquot *dquot); + /* Blocks: (2 data blocks) * (3 indirect + 1 descriptor + 1 bitmap) + superblock */ #define EXT3_OLD_QFMT_BLOCKS 11 /* Blocks: quota info + (4 pointer blocks + 1 entry block) * (3 indirect + 1 descriptor + 1 bitmap) + superblock */ diff -urN linux-2.4.23-bk2/include/asm-i386/edd.h linux-2.4.23-bk3/include/asm-i386/edd.h --- linux-2.4.23-bk2/include/asm-i386/edd.h 2003-11-28 10:26:21.000000000 -0800 +++ linux-2.4.23-bk3/include/asm-i386/edd.h 2003-12-04 02:50:16.000000000 -0800 @@ -1,6 +1,6 @@ /* * linux/include/asm-i386/edd.h - * Copyright (C) 2002 Dell Computer Corporation + * Copyright (C) 2002, 2003 Dell, Inc. * by Matt Domsch * * structures and definitions for the int 13h, ax={41,48}h @@ -41,6 +41,10 @@ #define EDDMAGIC1 0x55AA #define EDDMAGIC2 0xAA55 +#define READ_SECTORS 0x02 +#define MBR_SIG_OFFSET 0x1B8 +#define DISK80_SIG_BUFFER 0x228 + #ifndef __ASSEMBLY__ #define EDD_EXT_FIXED_DISK_ACCESS (1 << 0) @@ -167,6 +171,7 @@ extern struct edd_info edd[EDDMAXNR]; extern unsigned char eddnr; +extern unsigned int edd_disk80_sig; #endif /*!__ASSEMBLY__ */ #endif /* _ASM_I386_EDD_H */