diff --git a/debian/changelog b/debian/changelog index 7ac4acb8d..ec8fd635e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -65,6 +65,75 @@ linux-2.6 (2.6.31~rc5-1~experimental.1) UNRELEASED; urgency=low -- maximilian attems Thu, 18 Jun 2009 23:50:56 +0200 +linux-2.6 (2.6.30-5) unstable; urgency=high + + [ maximilian attems ] + * Add stable release 2.6.30.4. + - cifs: fix regression with O_EXCL creates and optimize away lookup + (closes: #536426) + - ecryptfs: check tag 11 literal data buffer size (CVE-2009-2406) + - ecryptfs: check tag 3 package encrypted size (CVE-2009-2407) + * Ignore nf_conntrack ABI change. + * Revert to keep ABI: + - block: fix sg SG_DXFER_TO_FROM_DEV regression. + - sched_rt: Fix overload bug on rt group scheduling. + * [hppa]: Ignore any ABI (broke on 2.6.30.2). + + -- maximilian attems Mon, 03 Aug 2009 12:08:56 +0200 + +linux-2.6 (2.6.30-4) unstable; urgency=low + + [ Bastian Blank ] + * Add stable release 2.6.30.2. + * Fix pci access in x86 startup code. (closes: #537783) + * Ignore ABI changes. + * Include all plattform and mach specific headers on arm. + + [ maximilian attems ] + * Add stable release 2.6.30.3. + + -- Bastian Blank Thu, 30 Jul 2009 11:55:11 +0200 + +linux-2.6 (2.6.30-3) unstable; urgency=low + + [ Bastian Blank ] + * Build-Depend against cpio. (closes: #536196) + + [ Martin Michlmayr ] + * [arm] Export __cpu_flush_dcache_page. + + [ Aurelien Jarno ] + * [ia64] Fix asm/fpu.h includes. + + [ dann frazier ] + * Fix NULL pointer dereference in tun_chr_pool() (CVE-2009-1897) + * personality: fix PER_CLEAR_ON_SETID (CVE-2009-1895) + * Add -fno-delete-null-pointer-checks to CFLAGS + + -- Bastian Blank Sat, 18 Jul 2009 10:00:01 +0200 + +linux-2.6 (2.6.30-2) unstable; urgency=low + + [ dann frazier ] + * [powerpc] Use generic rtc (closes: #535354) + * [parisc] + - ensure broadcast tlb purge runs single threaded + - fix ldcw inline assembler + (closes: #535844) + + [ Bastian Blank ] + * Add stable release 2.6.30.1: + - KVM: x86: check for cr3 validity in ioctl_set_sregs (CVE-2009-2287) + - ALSA: intel8x0 - Fix PCM position craziness (closes: #533780) + - ide-cd: prevent null pointer deref via cdrom_newpc_intr (closes: #535342) + * Ignore ABI changes. + + [ maximilian attems ] + * [alpha] Add upstream smp buildfix. + * [parisc] Disable vxge and niu. + + -- Bastian Blank Tue, 07 Jul 2009 14:45:43 +0200 + linux-2.6 (2.6.30-1) unstable; urgency=low * New upstream release. diff --git a/debian/config/hppa/config b/debian/config/hppa/config index 43c7e73d2..e91a7bb44 100644 --- a/debian/config/hppa/config +++ b/debian/config/hppa/config @@ -294,6 +294,8 @@ CONFIG_VIA_RHINE=m CONFIG_PLIP=m # CONFIG_NET_FC is not set # CONFIG_NETPOLL_TRAP is not set +# CONFIG_VXGE is not set +# CONFIG_NIU is not set ## ## file: drivers/net/appletalk/Kconfig diff --git a/debian/config/powerpc/config b/debian/config/powerpc/config index 54fbee655..10e7658db 100644 --- a/debian/config/powerpc/config +++ b/debian/config/powerpc/config @@ -657,6 +657,11 @@ CONFIG_PD6729=m CONFIG_I82092=m CONFIG_TCIC=m +## +## file: drivers/rtc/Kconfig +## +CONFIG_RTC_DRV_GENERIC=y + ## ## file: drivers/scsi/Kconfig ## @@ -1077,9 +1082,3 @@ CONFIG_SND_POWERMAC_AUTO_DRC=y ## file: sound/usb/Kconfig ## CONFIG_SND_USB_USX2Y=m - -## -## file: unknown -## -CONFIG_RTC_DRV_PPC=y - diff --git a/debian/patches/bugfix/powerpc/oldworld-boot-fix.patch b/debian/patches/bugfix/powerpc/oldworld-boot-fix.patch deleted file mode 100644 index aa7e824d4..000000000 --- a/debian/patches/bugfix/powerpc/oldworld-boot-fix.patch +++ /dev/null @@ -1,54 +0,0 @@ -# Patch author: Benjamin Herrenschmidt -# Description: Fix oldworld initrd loading problems. -# It looks like older OF "setprop" is bogus and isn't actually copying the -# data but just taking a pointer. The LongTrail workaround also has that -# problem as "property" will not copy the data. This fixes the workaround -# and applies it to Apple OF 1.0.5. -# Signed-off-by: Benjamin Herrenschmidt -# Closes: -# 375035: Kernel 2.6.16 attempts to access root device before running initramfs init -# 366620: initramfs-tools: 2.6.16-1-powerpc fails to mount rootfs, 2.6.15-1-powerpc works -# - -Index: linux-tika/arch/powerpc/kernel/prom_init.c -=================================================================== ---- linux-tika.orig/arch/powerpc/kernel/prom_init.c 2006-09-02 09:53:00.000000000 +1000 -+++ linux-tika/arch/powerpc/kernel/prom_init.c 2006-09-18 20:55:26.000000000 +1000 -@@ -102,7 +102,7 @@ - #endif - - #define OF_WA_CLAIM 1 /* do phys/virt claim separately, then map */ --#define OF_WA_LONGTRAIL 2 /* work around longtrail bugs */ -+#define OF_WA_SETPROP 2 /* work around setprop bugs */ - - #define PROM_BUG() do { \ - prom_printf("kernel BUG at %s line 0x%x!\n", \ -@@ -472,7 +472,7 @@ - { - char cmd[256], *p; - -- if (!(OF_WORKAROUNDS & OF_WA_LONGTRAIL)) -+ if (!(OF_WORKAROUNDS & OF_WA_SETPROP)) - return call_prom("setprop", 4, 1, node, ADDR(pname), - (u32)(unsigned long) value, (u32) valuelen); - -@@ -482,6 +482,7 @@ - add_string(&p, nodename); - add_string(&p, tohex((u32)(unsigned long) value)); - add_string(&p, tohex(valuelen)); -+ add_string(&p, "encode-bytes"); - add_string(&p, tohex(ADDR(pname))); - add_string(&p, tohex(strlen(RELOC(pname)))); - add_string(&p, "property"); -@@ -1466,9 +1467,9 @@ - version[sizeof(version) - 1] = 0; - /* XXX might need to add other versions here */ - if (strcmp(version, "Open Firmware, 1.0.5") == 0) -- of_workarounds = OF_WA_CLAIM; -+ of_workarounds = OF_WA_CLAIM | OF_WA_SETPROP; - else if (strncmp(version, "FirmWorks,3.", 12) == 0) { -- of_workarounds = OF_WA_CLAIM | OF_WA_LONGTRAIL; -+ of_workarounds = OF_WA_CLAIM | OF_WA_SETPROP; - call_prom("interpret", 1, 1, "dev /memory 0 to allow-reclaim"); - } else - return; diff --git a/debian/patches/features/all/drivers-net-acenic-firmwar_request.patch b/debian/patches/features/all/drivers-net-acenic-firmwar_request.patch deleted file mode 100644 index 8bda138a0..000000000 --- a/debian/patches/features/all/drivers-net-acenic-firmwar_request.patch +++ /dev/null @@ -1,272 +0,0 @@ -Subject: [PATCH] firmware: convert acenic driver to request_firmware() -From: David Woodhouse -To: Jes Sorensen -Cc: netdev@vger.kernel.org, jaswinder@infradead.org - -Again with help from Jaswinder Singh. - -Omitting the large part of the patch which actually moves the firmware -around, since you'll need to pull from the git tree to get the preceding -patches if you want to test it anyway. - -We store the firmware in little-endian form now, and thus use -__raw_writel() to write it to the device, to avoid byteswapping by -writel(). I've revamped that loop in ace_copy() a little bit so it could -probably do with being tested. - -I've dropped the information about SBSS and BSS sections of the firmware --- we were clearing the whole of the device's memory in advance anyway, -so clearing the BSS sections for a _second_ time seems pointless. And -since the text,rodata,data sections were (almost) contiguous, we now -just load those as a single blob rather than keeping them separate. - -Although it probably isn't necessary, we do preserve the ability to -change the load and start addresses from 0x4000, by putting them into a -header at the beginning of the firmware blob, along with the version -number. - -[ ported to debian -maks ] - -diff --git a/drivers/net/Kconfig b/drivers/net/Kconfig -index f80c839..7677680 100644 ---- a/drivers/net/Kconfig -+++ b/drivers/net/Kconfig -@@ -1912,8 +1912,8 @@ if NETDEV_1000 - - config ACENIC - tristate "Alteon AceNIC/3Com 3C985/NetGear GA620 Gigabit support" -- depends on BROKEN - depends on PCI -+ select FW_LOADER - ---help--- - Say Y here if you have an Alteon AceNIC, 3Com 3C985(B), NetGear - GA620, SGI Gigabit or Farallon PN9000-SX PCI Gigabit Ethernet -diff --git a/drivers/net/acenic.c b/drivers/net/acenic.c -index 6c19265..1e42734 100644 ---- a/drivers/net/acenic.c -+++ b/drivers/net/acenic.c -@@ -67,6 +67,7 @@ - #include - #include - #include -+#include - - #if defined(CONFIG_VLAN_8021Q) || defined(CONFIG_VLAN_8021Q_MODULE) - #include -@@ -187,8 +188,6 @@ MODULE_DEVICE_TABLE(pci, acenic_pci_tbl); - #define MAX_RODATA_LEN 8*1024 - #define MAX_DATA_LEN 2*1024 - --#include "acenic_firmware.h" -- - #ifndef tigon2FwReleaseLocal - #define tigon2FwReleaseLocal 0 - #endif -@@ -418,6 +417,8 @@ static int dis_pci_mem_inval[ACE_MAX_MOD_PARMS] = {1, 1, 1, 1, 1, 1, 1, 1}; - MODULE_AUTHOR("Jes Sorensen "); - MODULE_LICENSE("GPL"); - MODULE_DESCRIPTION("AceNIC/3C985/GA620 Gigabit Ethernet driver"); -+MODULE_FIRMWARE("acenic_tg1.bin"); -+MODULE_FIRMWARE("acenic_tg2.bin"); - - module_param_array_named(link, link_state, int, NULL, 0); - module_param_array(trace, int, NULL, 0); -@@ -939,8 +940,8 @@ static int __devinit ace_init(struct net_device *dev) - case 4: - case 5: - printk(KERN_INFO " Tigon I (Rev. %i), Firmware: %i.%i.%i, ", -- tig_ver, tigonFwReleaseMajor, tigonFwReleaseMinor, -- tigonFwReleaseFix); -+ tig_ver, ap->firmware_major, ap->firmware_minor, -+ ap->firmware_fix); - writel(0, ®s->LocalCtrl); - ap->version = 1; - ap->tx_ring_entries = TIGON_I_TX_RING_ENTRIES; -@@ -948,8 +949,8 @@ static int __devinit ace_init(struct net_device *dev) - #endif - case 6: - printk(KERN_INFO " Tigon II (Rev. %i), Firmware: %i.%i.%i, ", -- tig_ver, tigon2FwReleaseMajor, tigon2FwReleaseMinor, -- tigon2FwReleaseFix); -+ tig_ver, ap->firmware_major, ap->firmware_minor, -+ ap->firmware_fix); - writel(readl(®s->CpuBCtrl) | CPU_HALT, ®s->CpuBCtrl); - readl(®s->CpuBCtrl); /* PCI write posting */ - /* -@@ -1201,7 +1202,9 @@ static int __devinit ace_init(struct net_device *dev) - memset(ap->info, 0, sizeof(struct ace_info)); - memset(ap->skb, 0, sizeof(struct ace_skb)); - -- ace_load_firmware(dev); -+ if (ace_load_firmware(dev)) -+ goto init_error; -+ - ap->fw_running = 0; - - tmp_ptr = ap->info_dma; -@@ -1437,10 +1440,7 @@ static int __devinit ace_init(struct net_device *dev) - if (ap->version >= 2) - writel(tmp, ®s->TuneFastLink); - -- if (ACE_IS_TIGON_I(ap)) -- writel(tigonFwStartAddr, ®s->Pc); -- if (ap->version == 2) -- writel(tigon2FwStartAddr, ®s->Pc); -+ writel(ap->firmware_start, ®s->Pc); - - writel(0, ®s->Mb0Lo); - -@@ -2763,8 +2763,8 @@ static void ace_get_drvinfo(struct net_device *dev, - - strlcpy(info->driver, "acenic", sizeof(info->driver)); - snprintf(info->version, sizeof(info->version), "%i.%i.%i", -- tigonFwReleaseMajor, tigonFwReleaseMinor, -- tigonFwReleaseFix); -+ ap->firmware_major, ap->firmware_minor, -+ ap->firmware_fix); - - if (ap->pdev) - strlcpy(info->bus_info, pci_name(ap->pdev), -@@ -2871,11 +2871,10 @@ static struct net_device_stats *ace_get_stats(struct net_device *dev) - } - - --static void __devinit ace_copy(struct ace_regs __iomem *regs, void *src, -- u32 dest, int size) -+static void __devinit ace_copy(struct ace_regs __iomem *regs, const __le32 *src, -+ u32 dest, int size) - { - void __iomem *tdest; -- u32 *wsrc; - short tsize, i; - - if (size <= 0) -@@ -2887,20 +2886,15 @@ static void __devinit ace_copy(struct ace_regs __iomem *regs, void *src, - tdest = (void __iomem *) ®s->Window + - (dest & (ACE_WINDOW_SIZE - 1)); - writel(dest & ~(ACE_WINDOW_SIZE - 1), ®s->WinBase); -- /* -- * This requires byte swapping on big endian, however -- * writel does that for us -- */ -- wsrc = src; - for (i = 0; i < (tsize / 4); i++) { -- writel(wsrc[i], tdest + i*4); -+ /* Firmware is stored as little-endian */ -+ __raw_writel(*src, tdest); -+ src++; -+ tdest += 4; -+ dest += 4; -+ size -= 4; - } -- dest += tsize; -- src += tsize; -- size -= tsize; - } -- -- return; - } - - -@@ -2939,8 +2933,13 @@ static void __devinit ace_clear(struct ace_regs __iomem *regs, u32 dest, int siz - */ - static int __devinit ace_load_firmware(struct net_device *dev) - { -+ const struct firmware *fw; -+ const char *fw_name = "acenic_tg2.bin"; - struct ace_private *ap = netdev_priv(dev); - struct ace_regs __iomem *regs = ap->regs; -+ const __le32 *fw_data; -+ u32 load_addr; -+ int ret; - - if (!(readl(®s->CpuCtrl) & CPU_HALTED)) { - printk(KERN_ERR "%s: trying to download firmware while the " -@@ -2948,28 +2947,52 @@ static int __devinit ace_load_firmware(struct net_device *dev) - return -EFAULT; - } - -+ if (ACE_IS_TIGON_I(ap)) -+ fw_name = "acenic_tg1.bin"; -+ -+ ret = request_firmware(&fw, fw_name, &ap->pdev->dev); -+ if (ret) { -+ printk(KERN_ERR "%s: Failed to load firmware \"%s\"\n", -+ ap->name, fw_name); -+ return ret; -+ } -+ -+ fw_data = (void *)fw->data; -+ -+ /* Firmware blob starts with version numbers, followed by -+ load and start address. Remainder is the blob to be loaded -+ contiguously from load address. We don't bother to represent -+ the BSS/SBSS sections any more, since we were clearing the -+ whole thing anyway. */ -+ ap->firmware_major = fw->data[0]; -+ ap->firmware_minor = fw->data[1]; -+ ap->firmware_fix = fw->data[2]; -+ -+ ap->firmware_start = le32_to_cpu(fw_data[1]); -+ if (ap->firmware_start < 0x4000 || ap->firmware_start >= 0x80000) { -+ printk(KERN_ERR "%s: bogus load address %08x in \"%s\"\n", -+ ap->name, ap->firmware_start, fw_name); -+ ret = -EINVAL; -+ goto out; -+ } -+ -+ load_addr = le32_to_cpu(fw_data[2]); -+ if (load_addr < 0x4000 || load_addr >= 0x80000) { -+ printk(KERN_ERR "%s: bogus load address %08x in \"%s\"\n", -+ ap->name, load_addr, fw_name); -+ ret = -EINVAL; -+ goto out; -+ } -+ - /* -- * Do not try to clear more than 512KB or we end up seeing -- * funny things on NICs with only 512KB SRAM -+ * Do not try to clear more than 512KiB or we end up seeing -+ * funny things on NICs with only 512KiB SRAM - */ - ace_clear(regs, 0x2000, 0x80000-0x2000); -- if (ACE_IS_TIGON_I(ap)) { -- ace_copy(regs, tigonFwText, tigonFwTextAddr, tigonFwTextLen); -- ace_copy(regs, tigonFwData, tigonFwDataAddr, tigonFwDataLen); -- ace_copy(regs, tigonFwRodata, tigonFwRodataAddr, -- tigonFwRodataLen); -- ace_clear(regs, tigonFwBssAddr, tigonFwBssLen); -- ace_clear(regs, tigonFwSbssAddr, tigonFwSbssLen); -- }else if (ap->version == 2) { -- ace_clear(regs, tigon2FwBssAddr, tigon2FwBssLen); -- ace_clear(regs, tigon2FwSbssAddr, tigon2FwSbssLen); -- ace_copy(regs, tigon2FwText, tigon2FwTextAddr,tigon2FwTextLen); -- ace_copy(regs, tigon2FwRodata, tigon2FwRodataAddr, -- tigon2FwRodataLen); -- ace_copy(regs, tigon2FwData, tigon2FwDataAddr,tigon2FwDataLen); -- } -- -- return 0; -+ ace_copy(regs, &fw_data[3], load_addr, fw->size-12); -+ out: -+ release_firmware(fw); -+ return ret; - } - - -diff --git a/drivers/net/acenic.h b/drivers/net/acenic.h -index 60ed183..cf7e80e 100644 ---- a/drivers/net/acenic.h -+++ b/drivers/net/acenic.h -@@ -695,6 +695,10 @@ struct ace_private - #endif - struct net_device_stats stats; - int pci_using_dac; -+ u8 firmware_major; -+ u8 firmware_minor; -+ u8 firmware_fix; -+ u32 firmware_start; - }; - - - diff --git a/debian/patches/features/alpha/titan-video.patch b/debian/patches/features/alpha/titan-video.patch deleted file mode 100644 index 4c4e9d0ac..000000000 --- a/debian/patches/features/alpha/titan-video.patch +++ /dev/null @@ -1,720 +0,0 @@ -diff -uNr source/arch/alpha/Kconfig source-es45/arch/alpha/Kconfig ---- source/arch/alpha/Kconfig 2006-09-19 20:42:06.000000000 -0700 -+++ source-es45/arch/alpha/Kconfig 2006-09-30 03:14:44.000000000 -0700 -@@ -469,6 +469,11 @@ - depends on ALPHA_GENERIC || ALPHA_PC164 - default y - -+config VGA_HOSE -+ bool "VGA on arbitrary hose" -+ depends on ALPHA_GENERIC || ALPHA_TITAN || ALPHA_MARVEL || ALPHA_TSUNAMI -+ default y -+ - config ALPHA_SRM - bool "Use SRM as bootloader" if ALPHA_CABRIOLET || ALPHA_AVANTI_CH || ALPHA_EB64P || ALPHA_PC164 || ALPHA_TAKARA || ALPHA_EB164 || ALPHA_ALCOR || ALPHA_MIATA || ALPHA_LX164 || ALPHA_SX164 || ALPHA_NAUTILUS || ALPHA_NONAME - default y if ALPHA_JENSEN || ALPHA_MIKASA || ALPHA_SABLE || ALPHA_LYNX || ALPHA_NORITAKE || ALPHA_DP264 || ALPHA_RAWHIDE || ALPHA_EIGER || ALPHA_WILDFIRE || ALPHA_TITAN || ALPHA_SHARK || ALPHA_MARVEL -@@ -626,6 +631,13 @@ - - source "drivers/Kconfig" - -+# DUMMY_CONSOLE may be defined in drivers/video/console/Kconfig -+# but we also need it if VGA_HOSE is set -+config DUMMY_CONSOLE -+ bool -+ depends on VGA_HOSE -+ default y -+ - source "fs/Kconfig" - - source "arch/alpha/oprofile/Kconfig" -diff -uNr source/arch/alpha/kernel/alpha_ksyms.c source-es45/arch/alpha/kernel/alpha_ksyms.c ---- source/arch/alpha/kernel/alpha_ksyms.c 2006-09-19 20:42:06.000000000 -0700 -+++ source-es45/arch/alpha/kernel/alpha_ksyms.c 2006-09-30 03:14:44.000000000 -0700 -@@ -206,3 +206,7 @@ - EXPORT_SYMBOL(irongate_ioremap); - EXPORT_SYMBOL(irongate_iounmap); - #endif -+ -+#ifdef CONFIG_VGA_HOSE -+EXPORT_SYMBOL(pci_vga_hose); -+#endif -diff -uNr source/arch/alpha/kernel/console.c source-es45/arch/alpha/kernel/console.c ---- source/arch/alpha/kernel/console.c 2006-09-19 20:42:06.000000000 -0700 -+++ source-es45/arch/alpha/kernel/console.c 2006-09-30 03:14:44.000000000 -0700 -@@ -8,17 +8,16 @@ - #include - #include - #include -+#include - #include - #include - #include - -+#include "pci_impl.h" -+ - #ifdef CONFIG_VGA_HOSE - --/* -- * Externally-visible vga hose bases -- */ --unsigned long __vga_hose_io_base = 0; /* base for default hose */ --unsigned long __vga_hose_mem_base = 0; /* base for default hose */ -+struct pci_controller *pci_vga_hose = NULL; - - static struct pci_controller * __init - default_vga_hose_select(struct pci_controller *h1, struct pci_controller *h2) -@@ -32,10 +31,7 @@ - void __init - set_vga_hose(struct pci_controller *hose) - { -- if (hose) { -- __vga_hose_io_base = hose->io_space->start; -- __vga_hose_mem_base = hose->mem_space->start; -- } -+ pci_vga_hose = hose; - } - - void __init -@@ -44,18 +40,18 @@ - struct pci_controller *hose = NULL; - struct pci_dev *dev = NULL; - -+ /* Default the select function */ - if (!sel_func) sel_func = (void *)default_vga_hose_select; - -+ /* Find the console VGA device */ - for(dev=NULL; (dev=pci_get_class(PCI_CLASS_DISPLAY_VGA << 8, dev));) { - if (!hose) hose = dev->sysdata; - else hose = sel_func(hose, dev->sysdata); - } - -- /* Did we already inititialize the correct one? */ -- if (conswitchp == &vga_con && -- __vga_hose_io_base == hose->io_space->start && -- __vga_hose_mem_base == hose->mem_space->start) -- return; -+ /* Did we already initialize the correct one? Is there one? */ -+ if (!hose || (conswitchp == &vga_con && pci_vga_hose == hose)) -+ return; - - /* Set the VGA hose and init the new console */ - set_vga_hose(hose); -diff -uNr source/arch/alpha/kernel/core_marvel.c source-es45/arch/alpha/kernel/core_marvel.c ---- source/arch/alpha/kernel/core_marvel.c 2006-09-19 20:42:06.000000000 -0700 -+++ source-es45/arch/alpha/kernel/core_marvel.c 2006-09-30 03:14:44.000000000 -0700 -@@ -684,9 +684,6 @@ - /* - * IO map support. - */ -- --#define __marvel_is_mem_vga(a) (((a) >= 0xa0000) && ((a) <= 0xc0000)) -- - void __iomem * - marvel_ioremap(unsigned long addr, unsigned long size) - { -@@ -698,13 +695,9 @@ - unsigned long pfn; - - /* -- * Adjust the addr. -+ * Adjust the address. - */ --#ifdef CONFIG_VGA_HOSE -- if (pci_vga_hose && __marvel_is_mem_vga(addr)) { -- addr += pci_vga_hose->mem_space->start; -- } --#endif -+ FIXUP_MEMADDR_VGA(addr); - - /* - * Find the hose. -@@ -781,7 +774,7 @@ - return (void __iomem *) vaddr; - } - -- return NULL; -+ return (void __iomem *) NULL; - } - - void -@@ -803,8 +796,6 @@ - return (addr & 0xFF000000UL) == 0; - } - --#define __marvel_is_port_vga(a) \ -- (((a) >= 0x3b0) && ((a) < 0x3e0) && ((a) != 0x3b3) && ((a) != 0x3d3)) - #define __marvel_is_port_kbd(a) (((a) == 0x60) || ((a) == 0x64)) - #define __marvel_is_port_rtc(a) (((a) == 0x70) || ((a) == 0x71)) - -@@ -813,7 +804,7 @@ - if (__marvel_is_port_rtc (addr) || __marvel_is_port_kbd(addr)) - ; - #ifdef CONFIG_VGA_HOSE -- else if (__marvel_is_port_vga (addr) && pci_vga_hose) -+ else if (__is_port_vga (addr) && pci_vga_hose) - addr += pci_vga_hose->io_space->start; - #endif - else -diff -uNr source/arch/alpha/kernel/core_titan.c source-es45/arch/alpha/kernel/core_titan.c ---- source/arch/alpha/kernel/core_titan.c 2006-09-19 20:42:06.000000000 -0700 -+++ source-es45/arch/alpha/kernel/core_titan.c 2006-09-30 03:14:44.000000000 -0700 -@@ -35,6 +35,17 @@ - } saved_config[4] __attribute__((common)); - - /* -+ * Is PChip 1 present? No need to query it more than once. -+ */ -+static int titan_pchip1_present; -+ -+/* hoseno to index mapping */ -+#define H2I(h) ((((h)&2)>>1)|(((h)&1)<<1)) -+/* index to hoseno mapping */ -+#define I2H(i) ((((i)&2)>>1)|(((i)&1)<<1)) -+ -+ -+/* - * BIOS32-style PCI interface: - */ - -@@ -196,14 +207,14 @@ - titan_pci_tbi(struct pci_controller *hose, dma_addr_t start, dma_addr_t end) - { - titan_pachip *pachip = -- (hose->index & 1) ? TITAN_pachip1 : TITAN_pachip0; -+ (hose->index & 2) ? TITAN_pachip1 : TITAN_pachip0; - titan_pachip_port *port; - volatile unsigned long *csr; - unsigned long value; - - /* Get the right hose. */ - port = &pachip->g_port; -- if (hose->index & 2) -+ if (hose->index & 1) - port = &pachip->a_port; - - /* We can invalidate up to 8 tlb entries in a go. The flush -@@ -238,12 +249,12 @@ - } - - static void __init --titan_init_one_pachip_port(titan_pachip_port *port, int index) -+titan_init_one_pachip_port(titan_pachip_port *port, int hoseno) - { - struct pci_controller *hose; - - hose = alloc_pci_controller(); -- if (index == 0) -+ if (hoseno == 0) - pci_isa_hose = hose; - hose->io_space = alloc_resource(); - hose->mem_space = alloc_resource(); -@@ -258,47 +269,47 @@ - hose->sparse_mem_base = 0; - hose->sparse_io_base = 0; - hose->dense_mem_base -- = (TITAN_MEM(index) & 0xffffffffffUL) | 0x80000000000UL; -+ = (TITAN_MEM(hoseno) & 0xffffffffffUL) | 0x80000000000UL; - hose->dense_io_base -- = (TITAN_IO(index) & 0xffffffffffUL) | 0x80000000000UL; -+ = (TITAN_IO(hoseno) & 0xffffffffffUL) | 0x80000000000UL; - -- hose->config_space_base = TITAN_CONF(index); -- hose->index = index; -+ hose->config_space_base = TITAN_CONF(hoseno); -+ hose->index = H2I(hoseno); - -- hose->io_space->start = TITAN_IO(index) - TITAN_IO_BIAS; -+ hose->io_space->start = TITAN_IO(hoseno) - TITAN_IO_BIAS; - hose->io_space->end = hose->io_space->start + TITAN_IO_SPACE - 1; -- hose->io_space->name = pci_io_names[index]; -+ hose->io_space->name = pci_io_names[hoseno]; - hose->io_space->flags = IORESOURCE_IO; - -- hose->mem_space->start = TITAN_MEM(index) - TITAN_MEM_BIAS; -+ hose->mem_space->start = TITAN_MEM(hoseno) - TITAN_MEM_BIAS; - hose->mem_space->end = hose->mem_space->start + 0xffffffff; -- hose->mem_space->name = pci_mem_names[index]; -+ hose->mem_space->name = pci_mem_names[hoseno]; - hose->mem_space->flags = IORESOURCE_MEM; - - if (request_resource(&ioport_resource, hose->io_space) < 0) -- printk(KERN_ERR "Failed to request IO on hose %d\n", index); -+ printk(KERN_ERR "Failed to request IO on hose %d\n", hoseno); - if (request_resource(&iomem_resource, hose->mem_space) < 0) -- printk(KERN_ERR "Failed to request MEM on hose %d\n", index); -+ printk(KERN_ERR "Failed to request MEM on hose %d\n", hoseno); - - /* - * Save the existing PCI window translations. SRM will - * need them when we go to reboot. - */ -- saved_config[index].wsba[0] = port->wsba[0].csr; -- saved_config[index].wsm[0] = port->wsm[0].csr; -- saved_config[index].tba[0] = port->tba[0].csr; -- -- saved_config[index].wsba[1] = port->wsba[1].csr; -- saved_config[index].wsm[1] = port->wsm[1].csr; -- saved_config[index].tba[1] = port->tba[1].csr; -- -- saved_config[index].wsba[2] = port->wsba[2].csr; -- saved_config[index].wsm[2] = port->wsm[2].csr; -- saved_config[index].tba[2] = port->tba[2].csr; -- -- saved_config[index].wsba[3] = port->wsba[3].csr; -- saved_config[index].wsm[3] = port->wsm[3].csr; -- saved_config[index].tba[3] = port->tba[3].csr; -+ saved_config[hoseno].wsba[0] = port->wsba[0].csr; -+ saved_config[hoseno].wsm[0] = port->wsm[0].csr; -+ saved_config[hoseno].tba[0] = port->tba[0].csr; -+ -+ saved_config[hoseno].wsba[1] = port->wsba[1].csr; -+ saved_config[hoseno].wsm[1] = port->wsm[1].csr; -+ saved_config[hoseno].tba[1] = port->tba[1].csr; -+ -+ saved_config[hoseno].wsba[2] = port->wsba[2].csr; -+ saved_config[hoseno].wsm[2] = port->wsm[2].csr; -+ saved_config[hoseno].tba[2] = port->tba[2].csr; -+ -+ saved_config[hoseno].wsba[3] = port->wsba[3].csr; -+ saved_config[hoseno].wsm[3] = port->wsm[3].csr; -+ saved_config[hoseno].tba[3] = port->tba[3].csr; - - /* - * Set up the PCI to main memory translation windows. -@@ -344,14 +355,14 @@ - static void __init - titan_init_pachips(titan_pachip *pachip0, titan_pachip *pachip1) - { -- int pchip1_present = TITAN_cchip->csc.csr & 1L<<14; -+ titan_pchip1_present = TITAN_cchip->csc.csr & 1L<<14; - - /* Init the ports in hose order... */ - titan_init_one_pachip_port(&pachip0->g_port, 0); /* hose 0 */ -- if (pchip1_present) -+ if (titan_pchip1_present) - titan_init_one_pachip_port(&pachip1->g_port, 1);/* hose 1 */ - titan_init_one_pachip_port(&pachip0->a_port, 2); /* hose 2 */ -- if (pchip1_present) -+ if (titan_pchip1_present) - titan_init_one_pachip_port(&pachip1->a_port, 3);/* hose 3 */ - } - -@@ -366,16 +377,18 @@ - int h = (pu64[30] >> 24) & 0xff; /* console hose # */ - - /* -- * Our hose numbering matches the console's, so just find -+ * Our hose numbering does NOT match the console's, so find - * the right one... - */ - for (hose = hose_head; hose; hose = hose->next) { -- if (hose->index == h) break; -+ if (I2H(hose->index) == h) break; - } - - if (hose) { -- printk("Console graphics on hose %d\n", hose->index); -+ printk("Console graphics on hose %d\n", h); - pci_vga_hose = hose; -+ } else { -+ printk("ERROR: Console graphics hose not found\n"); - } - } - #endif /* CONFIG_VGA_HOSE */ -@@ -406,6 +419,7 @@ - - /* With multiple PCI busses, we play with I/O as physical addrs. */ - ioport_resource.end = ~0UL; -+ iomem_resource.end = ~0UL; - - /* PCI DMA Direct Mapping is 1GB at 2GB. */ - __direct_map_base = 0x80000000; -@@ -441,9 +455,7 @@ - static void - titan_kill_pachips(titan_pachip *pachip0, titan_pachip *pachip1) - { -- int pchip1_present = TITAN_cchip->csc.csr & 1L<<14; -- -- if (pchip1_present) { -+ if (titan_pchip1_present) { - titan_kill_one_pachip_port(&pachip1->g_port, 1); - titan_kill_one_pachip_port(&pachip1->a_port, 3); - } -@@ -474,12 +486,12 @@ - unsigned long *ptes; - unsigned long pfn; - -+#ifdef CONFIG_VGA_HOSE - /* -- * Adjust the addr. -+ * Adjust the address and hose, if necessary. - */ --#ifdef CONFIG_VGA_HOSE -- if (pci_vga_hose && __titan_is_mem_vga(addr)) { -- h = pci_vga_hose->index; -+ if (pci_vga_hose && __is_mem_vga(addr)) { -+ h = I2H(pci_vga_hose->index); - addr += pci_vga_hose->mem_space->start; - } - #endif -@@ -488,7 +500,7 @@ - * Find the hose. - */ - for (hose = hose_head; hose; hose = hose->next) -- if (hose->index == h) -+ if (I2H(hose->index) == h) - break; - if (!hose) - return NULL; -@@ -521,8 +533,10 @@ - * Map it - */ - area = get_vm_area(size, VM_IOREMAP); -- if (!area) -+ if (!area) { -+ printk("ioremap failed... no vm_area...\n"); - return NULL; -+ } - - ptes = hose->sg_pci->ptes; - for (vaddr = (unsigned long)area->addr; -@@ -539,7 +553,7 @@ - if (__alpha_remap_area_pages(vaddr, - pfn << PAGE_SHIFT, - PAGE_SIZE, 0)) { -- printk("FAILED to map...\n"); -+ printk("FAILED to remap_area_pages...\n"); - vfree(area->addr); - return NULL; - } -@@ -551,7 +565,8 @@ - return (void __iomem *) vaddr; - } - -- return NULL; -+ /* Assume a legacy (read: VGA) address, and return appropriately. */ -+ return (void __iomem *)(addr + TITAN_MEM_BIAS); - } - - void -@@ -750,6 +765,7 @@ - if (titan_query_agp(port)) - hosenum = 2; - if (hosenum < 0 && -+ titan_pchip1_present && - titan_query_agp(port = &TITAN_pachip1->a_port)) - hosenum = 3; - -@@ -757,7 +773,7 @@ - * Find the hose the port is on. - */ - for (hose = hose_head; hose; hose = hose->next) -- if (hose->index == hosenum) -+ if (I2H(hose->index) == hosenum) - break; - - if (!hose || !hose->sg_pci) -diff -uNr source/arch/alpha/kernel/core_tsunami.c source-es45/arch/alpha/kernel/core_tsunami.c ---- source/arch/alpha/kernel/core_tsunami.c 2006-09-19 20:42:06.000000000 -0700 -+++ source-es45/arch/alpha/kernel/core_tsunami.c 2006-09-30 03:14:44.000000000 -0700 -@@ -349,6 +349,32 @@ - tsunami_pci_tbi(hose, 0, -1); - } - -+static void __init -+tsunami_init_vga_hose(void) -+{ -+#ifdef CONFIG_VGA_HOSE -+ u64 *pu64 = (u64 *)((u64)hwrpb + hwrpb->ctbt_offset); -+ -+ if (pu64[7] == 3) { /* TERM_TYPE == graphics */ -+ struct pci_controller *hose; -+ int h = (pu64[30] >> 24) & 0xff; /* console hose # */ -+ -+ /* -+ * Our hose numbering does NOT match the console's, so find -+ * the right one... -+ */ -+ for (hose = hose_head; hose; hose = hose->next) { -+ if (hose->index == h) break; -+ } -+ -+ if (hose) { -+ printk("Console graphics on hose %d\n", h); -+ pci_vga_hose = hose; -+ } -+ } -+#endif /* CONFIG_VGA_HOSE */ -+} -+ - void __init - tsunami_init_arch(void) - { -@@ -393,6 +419,9 @@ - tsunami_init_one_pchip(TSUNAMI_pchip0, 0); - if (TSUNAMI_cchip->csc.csr & 1L<<14) - tsunami_init_one_pchip(TSUNAMI_pchip1, 1); -+ -+ /* Check for graphic console location (if any). */ -+ tsunami_init_vga_hose(); - } - - static void -diff -uNr source/arch/alpha/kernel/proto.h source-es45/arch/alpha/kernel/proto.h ---- source/arch/alpha/kernel/proto.h 2006-09-19 20:42:06.000000000 -0700 -+++ source-es45/arch/alpha/kernel/proto.h 2006-09-30 03:14:44.000000000 -0700 -@@ -106,6 +106,9 @@ - extern unsigned long wildfire_node_mem_start(int); - extern unsigned long wildfire_node_mem_size(int); - -+/* console.c */ -+ extern void locate_and_init_vga(void *(*)(void *, void *)); -+ - /* setup.c */ - extern unsigned long srm_hae; - extern int boot_cpuid; -diff -uNr source/arch/alpha/kernel/setup.c source-es45/arch/alpha/kernel/setup.c ---- source/arch/alpha/kernel/setup.c 2006-09-19 20:42:06.000000000 -0700 -+++ source-es45/arch/alpha/kernel/setup.c 2006-09-30 03:14:44.000000000 -0700 -@@ -787,9 +787,9 @@ - static int rawhide_indices[] = {0,0,0,1,1,2,2,3,3,4,4}; - - static char titan_names[][16] = { -- "DEFAULT", "Privateer", "Falcon", "Granite" -+ "DEFAULT", "Privateer", "Falcon", "Granite", "HyperBrick2" - }; --static int titan_indices[] = {0,1,2,2,3}; -+static int titan_indices[] = {0,1,2,2,3,4}; - - static char tsunami_names[][16] = { - "0", "DP264", "Warhol", "Windjammer", "Monet", "Clipper", -@@ -891,6 +891,7 @@ - &privateer_mv, /* privateer */ - &titan_mv, /* falcon */ - &privateer_mv, /* granite */ -+ &titan_mv, /* hyperbrick2 */ - }; - - static struct alpha_machine_vector *tsunami_vecs[] __initdata = -diff -uNr source/arch/alpha/kernel/sys_dp264.c source-es45/arch/alpha/kernel/sys_dp264.c ---- source/arch/alpha/kernel/sys_dp264.c 2006-09-19 20:42:06.000000000 -0700 -+++ source-es45/arch/alpha/kernel/sys_dp264.c 2006-09-30 03:14:44.000000000 -0700 -@@ -42,6 +42,14 @@ - /* dp264 boards handle at max four CPUs */ - static unsigned long cpu_irq_affinity[4] = { 0UL, 0UL, 0UL, 0UL }; - -+#ifdef CONFIG_VGA_HOSE -+extern void locate_and_init_vga(void *(*handler)(void *, void *)); -+#else -+static inline void locate_and_init_vga(void *(*handler)(void *, void *)) -+{ -+} -+#endif -+ - DEFINE_SPINLOCK(dp264_irq_lock); - - static void -@@ -543,6 +551,7 @@ - { - common_init_pci(); - SMC669_Init(0); -+ locate_and_init_vga(NULL); - } - - static void __init -@@ -551,6 +560,14 @@ - common_init_pci(); - SMC669_Init(1); - es1888_init(); -+ locate_and_init_vga(NULL); -+} -+ -+static void __init -+clipper_init_pci(void) -+{ -+ common_init_pci(); -+ locate_and_init_vga(NULL); - } - - static void __init -@@ -655,7 +672,7 @@ - .init_arch = tsunami_init_arch, - .init_irq = clipper_init_irq, - .init_rtc = common_init_rtc, -- .init_pci = common_init_pci, -+ .init_pci = clipper_init_pci, - .kill_arch = tsunami_kill_arch, - .pci_map_irq = clipper_map_irq, - .pci_swizzle = common_swizzle, -diff -uNr source/drivers/video/console/vgacon.c source-es45/drivers/video/console/vgacon.c ---- source/drivers/video/console/vgacon.c 2006-09-19 20:42:06.000000000 -0700 -+++ source-es45/drivers/video/console/vgacon.c 2006-09-30 03:14:44.000000000 -0700 -@@ -52,6 +52,11 @@ - #include