Commit 8ed57590 authored by Linus Torvalds's avatar Linus Torvalds
parents 27d1097d 210cc679
...@@ -2247,6 +2247,12 @@ S: 249 Nichols Avenue ...@@ -2247,6 +2247,12 @@ S: 249 Nichols Avenue
S: Syracuse, New York 13206 S: Syracuse, New York 13206
S: USA S: USA
N: Kyle McMartin
E: kyle@parisc-linux.org
D: Linux/PARISC hacker
D: AD1889 sound driver
S: Ottawa, Canada
N: Dirk Melchers N: Dirk Melchers
E: dirk@merlin.nbg.sub.org E: dirk@merlin.nbg.sub.org
D: 8 bit XT hard disk driver for OMTI5520 D: 8 bit XT hard disk driver for OMTI5520
......
...@@ -197,6 +197,15 @@ M: Thorsten Knabe <linux@thorsten-knabe.de> ...@@ -197,6 +197,15 @@ M: Thorsten Knabe <linux@thorsten-knabe.de>
W: http://linux.thorsten-knabe.de W: http://linux.thorsten-knabe.de
S: Maintained S: Maintained
AD1889 SOUND DRIVER
P: Kyle McMartin
M: kyle@parisc-linux.org
P: Thibaut Varene
M: T-Bone@parisc-linux.org
W: http://wiki.parisc-linux.org/AD1889
L: parisc-linux@lists.parisc-linux.org
S: Maintained
ADM1025 HARDWARE MONITOR DRIVER ADM1025 HARDWARE MONITOR DRIVER
P: Jean Delvare P: Jean Delvare
M: khali@linux-fr.org M: khali@linux-fr.org
......
...@@ -47,10 +47,10 @@ config PM ...@@ -47,10 +47,10 @@ config PM
config ISA_DMA_API config ISA_DMA_API
bool bool
default y
config ARCH_MAY_HAVE_PC_FDC config ARCH_MAY_HAVE_PC_FDC
bool bool
depends on BROKEN
default y default y
source "init/Kconfig" source "init/Kconfig"
...@@ -154,13 +154,14 @@ config HOTPLUG_CPU ...@@ -154,13 +154,14 @@ config HOTPLUG_CPU
config ARCH_DISCONTIGMEM_ENABLE config ARCH_DISCONTIGMEM_ENABLE
bool "Discontiguous memory support (EXPERIMENTAL)" bool "Discontiguous memory support (EXPERIMENTAL)"
depends on EXPERIMENTAL depends on 64BIT && EXPERIMENTAL
help help
Say Y to support efficient handling of discontiguous physical memory, Say Y to support efficient handling of discontiguous physical memory,
for architectures which are either NUMA (Non-Uniform Memory Access) for architectures which are either NUMA (Non-Uniform Memory Access)
or have huge holes in the physical address space for other reasons. or have huge holes in the physical address space for other reasons.
See <file:Documentation/vm/numa> for more. See <file:Documentation/vm/numa> for more.
source "kernel/Kconfig.hz"
source "mm/Kconfig" source "mm/Kconfig"
config PREEMPT config PREEMPT
......
...@@ -20,7 +20,8 @@ NM = sh $(srctree)/arch/parisc/nm ...@@ -20,7 +20,8 @@ NM = sh $(srctree)/arch/parisc/nm
CHECKFLAGS += -D__hppa__=1 CHECKFLAGS += -D__hppa__=1
ifdef CONFIG_64BIT ifdef CONFIG_64BIT
CROSS_COMPILE := hppa64-linux- CROSS_COMPILE := $(shell if [ -x /usr/bin/hppa64-linux-gnu-gcc ]; then \
echo hppa64-linux-gnu-; else echo hppa64-linux-; fi)
UTS_MACHINE := parisc64 UTS_MACHINE := parisc64
CHECKFLAGS += -D__LP64__=1 -m64 CHECKFLAGS += -D__LP64__=1 -m64
else else
...@@ -34,6 +35,14 @@ FINAL_LD=$(CROSS_COMPILE)ld --warn-common --warn-section-align ...@@ -34,6 +35,14 @@ FINAL_LD=$(CROSS_COMPILE)ld --warn-common --warn-section-align
OBJCOPY_FLAGS =-O binary -R .note -R .comment -S OBJCOPY_FLAGS =-O binary -R .note -R .comment -S
GCC_VERSION := $(call cc-version)
ifneq ($(shell if [ -z $(GCC_VERSION) ] ; then echo "bad"; fi ;),)
$(error Sorry, couldn't find ($(cc-version)).)
endif
ifneq ($(shell if [ $(GCC_VERSION) -lt 0303 ] ; then echo "bad"; fi ;),)
$(error Sorry, your compiler is too old ($(GCC_VERSION)). GCC v3.3 or above is required.)
endif
cflags-y := -pipe cflags-y := -pipe
# These flags should be implied by an hppa-linux configuration, but they # These flags should be implied by an hppa-linux configuration, but they
...@@ -43,7 +52,7 @@ cflags-y += -mno-space-regs -mfast-indirect-calls ...@@ -43,7 +52,7 @@ cflags-y += -mno-space-regs -mfast-indirect-calls
# Currently we save and restore fpregs on all kernel entry/interruption paths. # Currently we save and restore fpregs on all kernel entry/interruption paths.
# If that gets optimized, we might need to disable the use of fpregs in the # If that gets optimized, we might need to disable the use of fpregs in the
# kernel. # kernel.
#cflags-y += -mdisable-fpregs cflags-y += -mdisable-fpregs
# Without this, "ld -r" results in .text sections that are too big # Without this, "ld -r" results in .text sections that are too big
# (> 0x40000) for branches to reach stubs. # (> 0x40000) for branches to reach stubs.
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
...@@ -27,6 +27,7 @@ ...@@ -27,6 +27,7 @@
#include <asm/page.h> #include <asm/page.h>
#include <asm/pgalloc.h> #include <asm/pgalloc.h>
#include <asm/processor.h> #include <asm/processor.h>
#include <asm/sections.h>
int split_tlb; int split_tlb;
int dcache_stride; int dcache_stride;
...@@ -207,6 +208,9 @@ parisc_cache_init(void) ...@@ -207,6 +208,9 @@ parisc_cache_init(void)
/* "New and Improved" version from Jim Hull /* "New and Improved" version from Jim Hull
* (1 << (cc_block-1)) * (cc_line << (4 + cnf.cc_shift)) * (1 << (cc_block-1)) * (cc_line << (4 + cnf.cc_shift))
* The following CAFL_STRIDE is an optimized version, see
* http://lists.parisc-linux.org/pipermail/parisc-linux/2004-June/023625.html
* http://lists.parisc-linux.org/pipermail/parisc-linux/2004-June/023671.html
*/ */
#define CAFL_STRIDE(cnf) (cnf.cc_line << (3 + cnf.cc_block + cnf.cc_shift)) #define CAFL_STRIDE(cnf) (cnf.cc_line << (3 + cnf.cc_block + cnf.cc_shift))
dcache_stride = CAFL_STRIDE(cache_info.dc_conf); dcache_stride = CAFL_STRIDE(cache_info.dc_conf);
...@@ -339,17 +343,15 @@ int parisc_cache_flush_threshold = FLUSH_THRESHOLD; ...@@ -339,17 +343,15 @@ int parisc_cache_flush_threshold = FLUSH_THRESHOLD;
void parisc_setup_cache_timing(void) void parisc_setup_cache_timing(void)
{ {
unsigned long rangetime, alltime; unsigned long rangetime, alltime;
extern char _text; /* start of kernel code, defined by linker */
extern char _end; /* end of BSS, defined by linker */
unsigned long size; unsigned long size;
alltime = mfctl(16); alltime = mfctl(16);
flush_data_cache(); flush_data_cache();
alltime = mfctl(16) - alltime; alltime = mfctl(16) - alltime;
size = (unsigned long)(&_end - _text); size = (unsigned long)(_end - _text);
rangetime = mfctl(16); rangetime = mfctl(16);
flush_kernel_dcache_range((unsigned long)&_text, size); flush_kernel_dcache_range((unsigned long)_text, size);
rangetime = mfctl(16) - rangetime; rangetime = mfctl(16) - rangetime;
printk(KERN_DEBUG "Whole cache flush %lu cycles, flushing %lu bytes %lu cycles\n", printk(KERN_DEBUG "Whole cache flush %lu cycles, flushing %lu bytes %lu cycles\n",
......
This diff is collapsed.
This diff is collapsed.
...@@ -83,15 +83,15 @@ static unsigned long pdc_result2[32] __attribute__ ((aligned (8))); ...@@ -83,15 +83,15 @@ static unsigned long pdc_result2[32] __attribute__ ((aligned (8)));
int parisc_narrow_firmware = 1; int parisc_narrow_firmware = 1;
#endif #endif
/* on all currently-supported platforms, IODC I/O calls are always /* On most currently-supported platforms, IODC I/O calls are 32-bit calls
* 32-bit calls, and MEM_PDC calls are always the same width as the OS. * and MEM_PDC calls are always the same width as the OS.
* This means Cxxx boxes can't run wide kernels right now. -PB * Some PAT boxes may have 64-bit IODC I/O.
* *
* CONFIG_PDC_NARROW has been added to allow 64-bit kernels to run on * Ryan Bradetich added the now obsolete CONFIG_PDC_NARROW to allow
* systems with 32-bit MEM_PDC calls. This will allow wide kernels to * 64-bit kernels to run on systems with 32-bit MEM_PDC calls.
* run on Cxxx boxes now. -RB * This allowed wide kernels to run on Cxxx boxes.
* * We now detect 32-bit-only PDC and dynamically switch to 32-bit mode
* Note that some PAT boxes may have 64-bit IODC I/O... * when running a 64-bit kernel on such boxes (e.g. C200 or C360).
*/ */
#ifdef __LP64__ #ifdef __LP64__
......
This diff is collapsed.
...@@ -104,11 +104,8 @@ static int drm32_version(unsigned int fd, unsigned int cmd, unsigned long arg) ...@@ -104,11 +104,8 @@ static int drm32_version(unsigned int fd, unsigned int cmd, unsigned long arg)
} }
out: out:
if (kversion.name)
kfree(kversion.name); kfree(kversion.name);
if (kversion.date)
kfree(kversion.date); kfree(kversion.date);
if (kversion.desc)
kfree(kversion.desc); kfree(kversion.desc);
return ret; return ret;
} }
...@@ -166,9 +163,7 @@ static int drm32_getsetunique(unsigned int fd, unsigned int cmd, unsigned long a ...@@ -166,9 +163,7 @@ static int drm32_getsetunique(unsigned int fd, unsigned int cmd, unsigned long a
ret = -EFAULT; ret = -EFAULT;
} }
if (karg.unique != NULL)
kfree(karg.unique); kfree(karg.unique);
return ret; return ret;
} }
...@@ -265,7 +260,6 @@ static int drm32_info_bufs(unsigned int fd, unsigned int cmd, unsigned long arg) ...@@ -265,7 +260,6 @@ static int drm32_info_bufs(unsigned int fd, unsigned int cmd, unsigned long arg)
} }
kfree(karg.list); kfree(karg.list);
return ret; return ret;
} }
...@@ -305,7 +299,6 @@ static int drm32_free_bufs(unsigned int fd, unsigned int cmd, unsigned long arg) ...@@ -305,7 +299,6 @@ static int drm32_free_bufs(unsigned int fd, unsigned int cmd, unsigned long arg)
out: out:
kfree(karg.list); kfree(karg.list);
return ret; return ret;
} }
...@@ -494,15 +487,10 @@ static int drm32_dma(unsigned int fd, unsigned int cmd, unsigned long arg) ...@@ -494,15 +487,10 @@ static int drm32_dma(unsigned int fd, unsigned int cmd, unsigned long arg)
} }
out: out:
if (karg.send_indices)
kfree(karg.send_indices); kfree(karg.send_indices);
if (karg.send_sizes)
kfree(karg.send_sizes); kfree(karg.send_sizes);
if (karg.request_indices)
kfree(karg.request_indices); kfree(karg.request_indices);
if (karg.request_sizes)
kfree(karg.request_sizes); kfree(karg.request_sizes);
return ret; return ret;
} }
...@@ -555,9 +543,7 @@ static int drm32_res_ctx(unsigned int fd, unsigned int cmd, unsigned long arg) ...@@ -555,9 +543,7 @@ static int drm32_res_ctx(unsigned int fd, unsigned int cmd, unsigned long arg)
ret = -EFAULT; ret = -EFAULT;
} }
if (karg.contexts)
kfree(karg.contexts); kfree(karg.contexts);
return ret; return ret;
} }
......
This diff is collapsed.
...@@ -31,7 +31,7 @@ ...@@ -31,7 +31,7 @@
#include <asm/page.h> /* get_order */ #include <asm/page.h> /* get_order */
#include <asm/pgalloc.h> #include <asm/pgalloc.h>
#include <asm/uaccess.h> #include <asm/uaccess.h>
#include <asm/tlbflush.h> /* for purge_tlb_*() macros */
static struct proc_dir_entry * proc_gsc_root = NULL; static struct proc_dir_entry * proc_gsc_root = NULL;
static int pcxl_proc_info(char *buffer, char **start, off_t offset, int length); static int pcxl_proc_info(char *buffer, char **start, off_t offset, int length);
...@@ -343,7 +343,17 @@ pcxl_dma_init(void) ...@@ -343,7 +343,17 @@ pcxl_dma_init(void)
get_order(pcxl_res_size)); get_order(pcxl_res_size));
memset(pcxl_res_map, 0, pcxl_res_size); memset(pcxl_res_map, 0, pcxl_res_size);
proc_gsc_root = proc_mkdir("gsc", 0); proc_gsc_root = proc_mkdir("gsc", 0);
create_proc_info_entry("dino", 0, proc_gsc_root, pcxl_proc_info); if (!proc_gsc_root)
printk(KERN_WARNING
"pcxl_dma_init: Unable to create gsc /proc dir entry\n");
else {
struct proc_dir_entry* ent;
ent = create_proc_info_entry("pcxl_dma", 0,
proc_gsc_root, pcxl_proc_info);
if (!ent)
printk(KERN_WARNING
"pci-dma.c: Unable to create pcxl_dma /proc entry.\n");
}
return 0; return 0;
} }
...@@ -545,16 +555,16 @@ struct hppa_dma_ops pcx_dma_ops = { ...@@ -545,16 +555,16 @@ struct hppa_dma_ops pcx_dma_ops = {
static int pcxl_proc_info(char *buf, char **start, off_t offset, int len) static int pcxl_proc_info(char *buf, char **start, off_t offset, int len)
{ {
#if 0
u_long i = 0; u_long i = 0;
unsigned long *res_ptr = (u_long *)pcxl_res_map; unsigned long *res_ptr = (u_long *)pcxl_res_map;
#endif
unsigned long total_pages = pcxl_res_size << 3; /* 8 bits per byte */ unsigned long total_pages = pcxl_res_size << 3; /* 8 bits per byte */
sprintf(buf, "\nDMA Mapping Area size : %d bytes (%d pages)\n", sprintf(buf, "\nDMA Mapping Area size : %d bytes (%ld pages)\n",
PCXL_DMA_MAP_SIZE, PCXL_DMA_MAP_SIZE, total_pages);
(pcxl_res_size << 3) ); /* 1 bit per page */
sprintf(buf, "%sResource bitmap : %d bytes (%d pages)\n", sprintf(buf, "%sResource bitmap : %d bytes\n", buf, pcxl_res_size);
buf, pcxl_res_size, pcxl_res_size << 3); /* 8 bits per byte */
strcat(buf, " total: free: used: % used:\n"); strcat(buf, " total: free: used: % used:\n");
sprintf(buf, "%sblocks %8d %8ld %8ld %8ld%%\n", buf, pcxl_res_size, sprintf(buf, "%sblocks %8d %8ld %8ld %8ld%%\n", buf, pcxl_res_size,
...@@ -565,6 +575,7 @@ static int pcxl_proc_info(char *buf, char **start, off_t offset, int len) ...@@ -565,6 +575,7 @@ static int pcxl_proc_info(char *buf, char **start, off_t offset, int len)
total_pages - pcxl_used_pages, pcxl_used_pages, total_pages - pcxl_used_pages, pcxl_used_pages,
(pcxl_used_pages * 100 / total_pages)); (pcxl_used_pages * 100 / total_pages));
#if 0
strcat(buf, "\nResource bitmap:"); strcat(buf, "\nResource bitmap:");
for(; i < (pcxl_res_size / sizeof(u_long)); ++i, ++res_ptr) { for(; i < (pcxl_res_size / sizeof(u_long)); ++i, ++res_ptr) {
...@@ -572,6 +583,7 @@ static int pcxl_proc_info(char *buf, char **start, off_t offset, int len) ...@@ -572,6 +583,7 @@ static int pcxl_proc_info(char *buf, char **start, off_t offset, int len)
strcat(buf,"\n "); strcat(buf,"\n ");
sprintf(buf, "%s %08lx", buf, *res_ptr); sprintf(buf, "%s %08lx", buf, *res_ptr);
} }
#endif
strcat(buf, "\n"); strcat(buf, "\n");
return strlen(buf); return strlen(buf);
} }
......
...@@ -202,7 +202,8 @@ static void ...@@ -202,7 +202,8 @@ static void
pcibios_link_hba_resources( struct resource *hba_res, struct resource *r) pcibios_link_hba_resources( struct resource *hba_res, struct resource *r)
{ {
if (!r->parent) { if (!r->parent) {
printk(KERN_EMERG "PCI: Tell willy he's wrong\n"); printk(KERN_EMERG "PCI: resource not parented! [%lx-%lx]\n",
r->start, r->end);
r->parent = hba_res; r->parent = hba_res;
/* reverse link is harder *sigh* */ /* reverse link is harder *sigh* */
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
...@@ -18,7 +18,7 @@ ...@@ -18,7 +18,7 @@
*/ */
#undef ENTRY_SYS_CPUS /* syscall support for iCOD-like functionality */ #undef ENTRY_SYS_CPUS /* syscall support for iCOD-like functionality */
#include <linux/autoconf.h> #include <linux/config.h>
#include <linux/types.h> #include <linux/types.h>
#include <linux/spinlock.h> #include <linux/spinlock.h>
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment