Helge Deller | 17 Oct 22:42 2013
Picon
Picon

3.12-rcX - NFS regression - kswapd0 / kswapd1 stays using 100% CPU?

I'm seeing a regression with current kernel git head when using NFS-mounts.
Architecture in my case is parisc, although I don't think that this is relevant.
At least kernel 3.10 (and I think 3.11) didn't showed that problem.

The symtom is, that "top" shows high usage of either kswapd0 or kswapd1.
Here is an output with kswapd1:
  PID USER      PR  NI  VIRT  RES  SHR S  %CPU %MEM     TIME+ COMMAND
   37 root      20   0     0    0    0 R  91.8  0.0  63:00.40 kswapd1
28448 root      20   0  3252 1428 1060 R  15.3  0.0   0:00.09 top
    1 root      20   0  2784  988  852 S   0.0  0.0   0:09.95 init

This is what ps shows:
lsXXXX:~# ps -ef |  grep mount
root      1181     1  0 14:51 ?        00:00:18 /usr/sbin/automount --pid-file /var/run/autofs.pid
root     25331  1181  0 21:25 ?        00:00:00 /bin/mount -n -t nfs -s -o nolock,rw,hard,intr homes:/unixhome1 /net/home1
root     25332 25331  0 21:25 ?        00:00:00 /sbin/mount.nfs homes:/unixhome1 /net/home1 -s -n -o rw,nolock,hard,intr

And using sysrq to show the blocked tasks I get in syslog:
SysRq : Show Blocked State
mount.nfs       D 00000000401040c0     0 25332  25331 0x00000010
Backtrace:
[<0000000040113a68>] __schedule+0x500/0x810

I know it's not a problem of the NFS server, since the same mount is still ok on other machines.
The NFS directory was already mounted and in use when this mount happened again (called by cron-job). 

Any ideas?

Helge
(Continue reading)

Frans Pop | 31 Jul 14:46 2009
Picon

nfs: __setup_str_nfs_root_setup causes a section type conflict

While compiling v2.6.31-rc4-294-gf5886c7 for parisc (64-bits) I ran into 
the following compilation error:

/home/fjp/projects/kernel/linux-2.6/fs/nfs/nfsroot.c:403:
    error: __setup_str_nfs_root_setup causes a section type conflict
make[7]: *** [fs/nfs/nfsroot.o] Error 1

Cheers,
FJP

#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.31-rc4
# Fri Jul 31 14:37:41 2009
#
CONFIG_PARISC=y
CONFIG_MMU=y
CONFIG_STACK_GROWSUP=y
CONFIG_RWSEM_GENERIC_SPINLOCK=y
# CONFIG_ARCH_HAS_ILOG2_U32 is not set
# CONFIG_ARCH_HAS_ILOG2_U64 is not set
CONFIG_GENERIC_FIND_NEXT_BIT=y
CONFIG_GENERIC_BUG=y
CONFIG_GENERIC_HWEIGHT=y
CONFIG_GENERIC_CALIBRATE_DELAY=y
CONFIG_GENERIC_TIME=y
CONFIG_TIME_LOW_RES=y
CONFIG_GENERIC_HARDIRQS=y
(Continue reading)

Guy Martin | 16 Jul 19:58 2008
Picon

64bit kernel not booting with CONFIG_PRINTK_TIME=y


Hi all,

I've been trying several times to boot a 64bit kernel with
CONFIG_PRINTK_TIME=y and each time it failed.

This is the output of my L2000 when trying to do so :

Information: No console specified on kernel command line. This is
normal. PALO will choose the console currently used by firmware
(serial). Command line for kernel: 'root=/dev/md1 console=ttyS0
palo_kernel=2/vmlinux' Selected kernel: /vmlinux from partition 2
ELF64 executable
Entry 00100000 first 00100000 n 2
Segment 0 load 00100000 size 4997120 mediaptr 0x1000
Segment 1 load 00634000 size 640576 mediaptr 0x4c5000
Branching to kernel entry point 0x00100000.  If this is the last
message you see, you may need to switch your console.  This is
a common symptom -- search the FAQ and mailing list at parisc-linux.org

************* SYSTEM ALERT **************
SYSTEM NAME: uninitialized
DATE: 07/16/2008 TIME: 17:47:39
ALERT LEVEL: 7 = reserved

REASON FOR ALERT
SOURCE: 0 = unknown, no source stated
SOURCE DETAIL: 0 = unknown, no source stated   SOURCE ID: FF
PROBLEM DETAIL: 0 = no problem detail

(Continue reading)

Frans Pop | 27 Nov 10:47 2007
Picon

[parisc] 2.6.24-rc3 (64-bit, smp) fails to boot on 9000/785/J5600

(resending as address for port list was incorrect)

v2.6.24-rc3-19-g2ffbb83 fails very early in the boot procedure.
2.6.23 compiled with similar config boots fine.

System is running Debian unstable; kernel was compiled using gcc 4.1.2.

Cheers,
Frans Pop

Boot messages for 2.6.24
------------------------
Command line for kernel: 'root=/dev/sda5 HOME=/ console=ttyS0 TERM=vt102 
palo_kernel='
Selected kernel: /vmlinuz-2.6.24-rc3 from partition 2
Selected ramdisk: /initrd.img-2.6.24-rc3 from partition 2
ELF64 executable
Entry 00100000 first 00100000 n 2
Segment 0 load 00100000 size 4648960 mediaptr 0x1000
Segment 1 load 005c4000 size 689216 mediaptr 0x470000
Loading ramdisk 3078237 bytes  <at>  3fcff000...
Branching to kernel entry point 0x00100000.  If this is the last
message you see, you may need to switch your console.  This is
a common symptom -- search the FAQ and mailing list at parisc-linux.org

Linux version 2.6.24-rc3 (root <at> treebeard) (gcc version 4.1.3 20071019 
(prerelease) (D7
FP[0] enabled: Rev 1 Model 16
The 64-bit Kernel has started...
console [ttyB0] enabled
(Continue reading)

Frans Pop | 27 Nov 10:26 2007
Picon

[parisc] 2.6.24-rc3 (64-bit, smp) fails to boot on 9000/785/J5600

v2.6.24-rc3-19-g2ffbb83 fails very early in the boot procedure.
2.6.23 compiled with similar config boots fine.

System is running Debian unstable; kernel was compiled using gcc 4.1.2.

Cheers,
Frans Pop

Boot messages for 2.6.24
------------------------
Command line for kernel: 'root=/dev/sda5 HOME=/ console=ttyS0 TERM=vt102 palo_kernel='
Selected kernel: /vmlinuz-2.6.24-rc3 from partition 2
Selected ramdisk: /initrd.img-2.6.24-rc3 from partition 2
ELF64 executable
Entry 00100000 first 00100000 n 2
Segment 0 load 00100000 size 4648960 mediaptr 0x1000
Segment 1 load 005c4000 size 689216 mediaptr 0x470000
Loading ramdisk 3078237 bytes  <at>  3fcff000...
Branching to kernel entry point 0x00100000.  If this is the last
message you see, you may need to switch your console.  This is
a common symptom -- search the FAQ and mailing list at parisc-linux.org

Linux version 2.6.24-rc3 (root <at> treebeard) (gcc version 4.1.3 20071019 (prerelease) (D7
FP[0] enabled: Rev 1 Model 16
The 64-bit Kernel has started...
console [ttyB0] enabled
Initialized PDC Console for debugging.
Determining PDC firmware type: System Map.
model 00005d10 00000491 00000000 00000002 778fe5fc 100000f0 00000008 000000b2 000000b2
vers  00000300
(Continue reading)

程模建 | 3 Nov 04:26 2007

unsubscribe

unsubscribe

_______________________________________________
parisc-linux mailing list
parisc-linux <at> lists.parisc-linux.org
http://lists.parisc-linux.org/mailman/listinfo/parisc-linux
程模建 | 3 Nov 04:21 2007

(no subject)

unsubscribe

_______________________________________________
parisc-linux mailing list
parisc-linux <at> lists.parisc-linux.org
http://lists.parisc-linux.org/mailman/listinfo/parisc-linux
Jesse Dougherty | 25 Oct 18:07 2007

<Plug> HP Visualize Workstations for sale - PA-Risc HP-UX

Hi All... We have the HP-UX Visualize series RISC workstations in stock and
listed below. Feel free to call or email if interested in any of the
following boxes, we have several of each type in stock. We can custom
configure these boxes to your specifications. All boxes come plug and play
with hp-ux OS pre-loaded, 60-day warranty, and basic HP-UX set-up support.

C8000 workstation - 1 x 1GHz CPU, 4GB Memory, 147GB disk, FireGL Graphics -
$3,800.00

J6750 workstation - 2 x 875MHz CPU, 1GB Memory, 73GB disk, FX10 Graphics -
$500.00
J6700 workstation - 2 x 750MHz CPU, 1GB Memory, 73GB disk, FX10 Graphics -
$350.00
J6000 workstation - 2 x 552MHz CPU, 1GB Memory, 73GB disk, FX10 Graphics -
$450.00
J5600 workstation - 2 x 552MHz CPU, 1GB Memory, 73GB disk, FX10 Graphics -
$475.00
J5000 workstation - 2 x 440MHz CPU, 1GB Memory, 73GB disk, FX10 Graphics -
$425.00

C3750 workstation - 1 x 875MHz CPU, 1GB Memory, 73GB disk, FX10 Graphics -
$450.00
C3700 workstation - 1 x 750MHz CPU, 1GB Memory, 73GB disk, FX10 Graphics -
$350.00
C3650 workstation - 1 x 625MHz CPU, 1GB Memory, 73GB disk, FX10 Graphics -
$300.00
C3600 workstation - 1 x 552MHz CPU, 1GB Memory, 73GB disk, FX10 Graphics -
call for availability
C3000 workstation - 1 x 400MHz CPU, 1GB Memory, 73GB disk, FX10 Graphics -
$400.00

B2600 workstation - 1 x 500MHz CPU, 1GB Memory, 73GB disk, FX10 Graphics -
call for availability
B2000 workstation - 1 x 400MHz CPU, 1GB Memory, 73GB disk, FX10 Graphics -
$325.00
B1000 workstation - 1 x 300MHz CPU, 1GB Memory, 73GB disk, FX10 Graphics -
$325.00

We also sell classic HP-UX workstations such as the following, feel free to
call or email to get any HP pricing or any HP-UX hardware solutions.

J2240 workstation - 2 x 236MHz CPU
J282 workstation - 1/2 x 180MHz CPU
J280 workstation - 1 x 180MHz CPU
J210 workstation - 1/2 x 120MHz CPU
J210XC workstation - 1/2 x 120MHz CPU
J200 workstation - 1/2 x 100MHz CPU

C360 workstation - 1 x 367MHz CPU
C240 workstation - 1 x 236MHz CPU
C200 workstation - 1 x 200MHz CPU
C180 workstation - 1 x 180MHz CPU
C180XP workstation - 1 x 180MHz CPU
C160L workstation - 1 x 160MHz CPU
C160 workstation - 1 x 160MHz CPU
C132L workstation - 1 x 132MHz CPU
C110 workstation - 1 x 120MHz CPU
C100 workstation - 1 x 100MHz CPU

B180L workstation - 1 x 180MHz CPU
B160L workstation - 1 x 160MHz CPU
B132L workstation - 1 x 132MHz CPU
B132L+ workstation - 1 x 132MHz CPU

705 workstation - 1 x 35MHz CPU
710 workstation - 1 x 50MHz CPU
712-60 workstation - 1 x 60MHz CPU
712-80 workstation - 1 x 80MHz CPU
712-100 workstation - 1 x 100MHz CPU
715-33 workstation - 1 x 33MHz CPU
715-50 workstation - 1 x 50MHz CPU
715-64 workstation - 1 x 64MHz CPU
715-75 workstation - 1 x 75MHz CPU
715-80 workstation - 1 x 80MHz CPU
715-100 workstation - 1 x 100MHz CPU
715-100XC workstation - 1 x 100MHz CPU
720 workstation - 1 x 50MHz CPU
725-50 workstation - 1 x 50MHz CPU
725-75 workstation - 1 x 75MHz CPU
725-100 workstation - 1 x 100MHz CPU
730 workstation - 1 x 66MHz CPU
735-99 workstation - 1 x 99MHz CPU
735-125 workstation - 1 x 125MHz CPU
745i-50 workstation - 1 x 50MHz CPU
745i-100 workstation - 1 x 100MHz CPU
747i-50 workstation - 1 x 50MHz CPU
747i-100 workstation - 1 x 100MHz CPU
748i-64 workstation - 1 x 64MHz CPU
748i-100 workstation - 1 x 100MHz CPU
748-132L workstation - 1 x 132MHz CPU
748-165L workstation - 1 x 165MHz CPU
745-132L workstation - 1 x 165MHz CPU
745-165L workstation - 1 x 165MHz CPU
750 workstation - 1 x 66MHz CPU
755-99 workstation - 1 x 99MHz CPU
755-125 workstation - 1 x 125MHz CPU

300 Series Workstations and controllers

Thanks
Jesse Dougherty
Cypress Technology, Inc
Re-Sellers of HP 3000/9000 products
8565A Somerset Drive
Largo, FL 33773
727-557-0911 / fax 727-557-0121
jesse <at> cypress-tech.com
www.cypress-tech.com
Emil Medve | 23 Oct 18:14 2007

[PATCH] Use the new sg_page() helper

Fix build error messages such as this:

In file included from include/linux/dma-mapping.h:52,
                 from include/linux/dmaengine.h:29,
                 from include/linux/skbuff.h:29,
                 from include/linux/netlink.h:155,
                 from include/linux/genetlink.h:4,
                 from include/net/genetlink.h:4,
                 from include/linux/taskstats_kern.h:12,
                 from init/main.c:46:
include/asm/dma-mapping.h: In function 'dma_map_sg':
include/asm/dma-mapping.h:288: error: 'struct scatterlist' has no member named 'page'
include/asm/dma-mapping.h:288: error: 'struct scatterlist' has no member named 'page'
include/asm/dma-mapping.h:288: error: 'struct scatterlist' has no member named 'page'
include/asm/dma-mapping.h:290: error: 'struct scatterlist' has no member named 'page'

This change in the struct scatterlist was introduced by this commit: 18dabf473e15850c0dbc8ff13ac1e2806d542c15

Signed-off-by: Emil Medve <Emilian.Medve <at> Freescale.com>
---

linux-2.6> scripts/checkpatch.pl 0001-Use-the-new-sg_page-helper.patch 
Your patch has no obvious style problems and is ready for submission.

 drivers/mmc/host/mmci.h           |    4 ++--
 drivers/pci/intel-iommu.c         |    2 +-
 include/asm-arm/dma-mapping.h     |    8 ++++----
 include/asm-parisc/scatterlist.h  |    3 ++-
 include/asm-powerpc/dma-mapping.h |   10 +++++-----
 include/asm-xtensa/dma-mapping.h  |   10 +++++-----
 6 files changed, 19 insertions(+), 18 deletions(-)

diff --git a/drivers/mmc/host/mmci.h b/drivers/mmc/host/mmci.h
index 000e6a9..de3c223 100644
--- a/drivers/mmc/host/mmci.h
+++ b/drivers/mmc/host/mmci.h
 <at>  <at>  -112,7 +112,7  <at>  <at> 
  * The size of the FIFO in bytes.
  */
 #define MCI_FIFOSIZE	(16*4)
-	
+
 #define MCI_FIFOHALFSIZE (MCI_FIFOSIZE / 2)

 #define NR_SG		16
 <at>  <at>  -169,7 +169,7  <at>  <at>  static inline char *mmci_kmap_atomic(struct mmci_host *host, unsigned long *flag
 	struct scatterlist *sg = host->sg_ptr;

 	local_irq_save(*flags);
-	return kmap_atomic(sg->page, KM_BIO_SRC_IRQ) + sg->offset;
+	return kmap_atomic(sg_page(sg), KM_BIO_SRC_IRQ) + sg->offset;
 }

 static inline void mmci_kunmap_atomic(struct mmci_host *host, void *buffer, unsigned long *flags)
diff --git a/drivers/pci/intel-iommu.c b/drivers/pci/intel-iommu.c
index b3d7031..347948c 100644
--- a/drivers/pci/intel-iommu.c
+++ b/drivers/pci/intel-iommu.c
 <at>  <at>  -2010,7 +2010,7  <at>  <at>  static int intel_nontranslate_map_sg(struct device *hddev,
 	struct scatterlist *sg;

 	for_each_sg(sglist, sg, nelems, i) {
-		BUG_ON(!sg->page);
+		BUG_ON(!sg_page(sg));
 		sg->dma_address = virt_to_bus(SG_ENT_VIRT_ADDRESS(sg));
 		sg->dma_length = sg->length;
 	}
diff --git a/include/asm-arm/dma-mapping.h b/include/asm-arm/dma-mapping.h
index 1eb8aac..08afd5a 100644
--- a/include/asm-arm/dma-mapping.h
+++ b/include/asm-arm/dma-mapping.h
 <at>  <at>  -274,8 +274,8  <at>  <at>  dma_map_sg(struct device *dev, struct scatterlist *sg, int nents,
 	for (i = 0; i < nents; i++, sg++) {
 		char *virt;

-		sg->dma_address = page_to_dma(dev, sg->page) + sg->offset;
-		virt = page_address(sg->page) + sg->offset;
+		sg->dma_address = page_to_dma(dev, sg_page(sg)) + sg->offset;
+		virt = page_address(sg_page(sg)) + sg->offset;

 		if (!arch_is_coherent())
 			dma_cache_maint(virt, sg->length, dir);
 <at>  <at>  -371,7 +371,7  <at>  <at>  dma_sync_sg_for_cpu(struct device *dev, struct scatterlist *sg, int nents,
 	int i;

 	for (i = 0; i < nents; i++, sg++) {
-		char *virt = page_address(sg->page) + sg->offset;
+		char *virt = page_address(sg_page(sg)) + sg->offset;
 		if (!arch_is_coherent())
 			dma_cache_maint(virt, sg->length, dir);
 	}
 <at>  <at>  -384,7 +384,7  <at>  <at>  dma_sync_sg_for_device(struct device *dev, struct scatterlist *sg, int nents,
 	int i;

 	for (i = 0; i < nents; i++, sg++) {
-		char *virt = page_address(sg->page) + sg->offset;
+		char *virt = page_address(sg_page(sg)) + sg->offset;
 		if (!arch_is_coherent())
 			dma_cache_maint(virt, sg->length, dir);
 	}
diff --git a/include/asm-parisc/scatterlist.h b/include/asm-parisc/scatterlist.h
index cd3cfdf..3c79a2a 100644
--- a/include/asm-parisc/scatterlist.h
+++ b/include/asm-parisc/scatterlist.h
 <at>  <at>  -18,7 +18,8  <at>  <at>  struct scatterlist {
 	__u32      iova_length; /* bytes mapped */
 };

-#define sg_virt_addr(sg) ((unsigned long)(page_address(sg->page) + sg->offset))
+#define sg_virt_addr(sg) \
+		((unsigned long)(page_address(sg_page(sg)) + sg->offset))
 #define sg_dma_address(sg) ((sg)->iova)
 #define sg_dma_len(sg)     ((sg)->iova_length)

diff --git a/include/asm-powerpc/dma-mapping.h b/include/asm-powerpc/dma-mapping.h
index 65be95d..ff52013 100644
--- a/include/asm-powerpc/dma-mapping.h
+++ b/include/asm-powerpc/dma-mapping.h
 <at>  <at>  -285,9 +285,9  <at>  <at>  dma_map_sg(struct device *dev, struct scatterlist *sgl, int nents,
 	BUG_ON(direction == DMA_NONE);

 	for_each_sg(sgl, sg, nents, i) {
-		BUG_ON(!sg->page);
-		__dma_sync_page(sg->page, sg->offset, sg->length, direction);
-		sg->dma_address = page_to_bus(sg->page) + sg->offset;
+		BUG_ON(!sg_page(sg));
+		__dma_sync_page(sg_page(sg), sg->offset, sg->length, direction);
+		sg->dma_address = page_to_bus(sg_page(sg)) + sg->offset;
 	}

 	return nents;
 <at>  <at>  -328,7 +328,7  <at>  <at>  static inline void dma_sync_sg_for_cpu(struct device *dev,
 	BUG_ON(direction == DMA_NONE);

 	for_each_sg(sgl, sg, nents, i)
-		__dma_sync_page(sg->page, sg->offset, sg->length, direction);
+		__dma_sync_page(sg_page(sg), sg->offset, sg->length, direction);
 }

 static inline void dma_sync_sg_for_device(struct device *dev,
 <at>  <at>  -341,7 +341,7  <at>  <at>  static inline void dma_sync_sg_for_device(struct device *dev,
 	BUG_ON(direction == DMA_NONE);

 	for_each_sg(sgl, sg, nents, i)
-		__dma_sync_page(sg->page, sg->offset, sg->length, direction);
+		__dma_sync_page(sg_page(sg), sg->offset, sg->length, direction);
 }

 static inline int dma_mapping_error(dma_addr_t dma_addr)
diff --git a/include/asm-xtensa/dma-mapping.h b/include/asm-xtensa/dma-mapping.h
index 82b03b3..2b3e975 100644
--- a/include/asm-xtensa/dma-mapping.h
+++ b/include/asm-xtensa/dma-mapping.h
 <at>  <at>  -58,10 +58,10  <at>  <at>  dma_map_sg(struct device *dev, struct scatterlist *sg, int nents,
 	BUG_ON(direction == DMA_NONE);

 	for (i = 0; i < nents; i++, sg++ ) {
-		BUG_ON(!sg->page);
+		BUG_ON(!sg_page(sg));

-		sg->dma_address = page_to_phys(sg->page) + sg->offset;
-		consistent_sync(page_address(sg->page) + sg->offset,
+		sg->dma_address = page_to_phys(sg_page(sg)) + sg->offset;
+		consistent_sync(page_address(sg_page(sg)) + sg->offset,
 				sg->length, direction);
 	}

 <at>  <at>  -128,7 +128,7  <at>  <at>  dma_sync_sg_for_cpu(struct device *dev, struct scatterlist *sg, int nelems,
 {
 	int i;
 	for (i = 0; i < nelems; i++, sg++)
-		consistent_sync(page_address(sg->page) + sg->offset,
+		consistent_sync(page_address(sg_page(sg)) + sg->offset,
 				sg->length, dir);
 }

 <at>  <at>  -138,7 +138,7  <at>  <at>  dma_sync_sg_for_device(struct device *dev, struct scatterlist *sg, int nelems,
 {
 	int i;
 	for (i = 0; i < nelems; i++, sg++)
-		consistent_sync(page_address(sg->page) + sg->offset,
+		consistent_sync(page_address(sg_page(sg)) + sg->offset,
 				sg->length, dir);
 }
 static inline int
--

-- 
1.5.3.GIT

Matthew Wilcox | 21 Oct 21:06 2007

Re: [PATCH] VSC_GSC_HSC bus debugging

On Sun, Oct 21, 2007 at 07:54:53PM +0200, Roel Kluin wrote:
> +config GSC_DEBUG
> +	bool "VSC_GSC_HSC bus debugging"

What an ugly prompt string ...

> +	depends on GSC
> +	default n

default is 'n', by default.  No need to specify it.

> +#ifdef GSC_DEBUG
> +	#define DEBUG 1
> +#endif

Why the indent?

> -	DEBPRINTK("%s intr, mask=0x%x\n", gsc_asic->name, irr);
> +	printk("%s intr, mask=0x%x\n", gsc_asic->name, irr);

Presumably you meant pr_debug?

--

-- 
Intel are signing my paycheques ... these opinions are still mine
"Bill, look, we understand that you're interested in selling us this
operating system, but compare it to ours.  We can't possibly take such
a retrograde step."
Sam Ravnborg | 21 Oct 20:34 2007

[PATCH][PARISC] Introduce cc-cross-prefix and clean up Makefile a bit

Introduce cc-cross-prefix to improve compatibility
with diverse cross compile environments.

In the same process arch/parisc/Makefile was
beautified a little - with no functional changes.

In my setup I now avoid the error message from
"which palo" because I have no palo installed.

Signed-off-by: Sam Ravnborg <sam <at> ravnborg.org>
---
partly tested. My hppa toolchain is busted but
I could test most of the changes.

IMHO the end-result is much easier to read.
I had to compromise on the indent where I did the CROSS_COMPILE
stuff - 3x8 was too much.

Please review my selected set of possible cross compile
prefixes. It is not a direct 1:1 from the original Makefile.

	Sam

 Makefile |   65 +++++++++++++++++++++++++++------------------------------------
 1 file changed, 28 insertions(+), 37 deletions(-)

diff --git a/arch/parisc/Makefile b/arch/parisc/Makefile
index ae4a9b3..516a60f 100644
--- a/arch/parisc/Makefile
+++ b/arch/parisc/Makefile
 <at>  <at>  -18,28 +18,24  <at>  <at> 
 #
 NM		= sh $(srctree)/arch/parisc/nm
 CHECKFLAGS	+= -D__hppa__=1
-
-MACHINE		:= $(shell uname -m)
-ifeq ($(MACHINE),parisc*)
-NATIVE		:= 1
-endif
+OBJCOPY_FLAGS =-O binary -R .note -R .comment -S

 ifdef CONFIG_64BIT
 UTS_MACHINE	:= parisc64
 CHECKFLAGS	+= -D__LP64__=1 -m64
-WIDTH		:= 64
-CROSS_COMPILE	:= hppa64-linux-gnu-
+ifneq ($(SUBARCH),$(ARCH))
+        ifeq ($(CROSS_COMPILE),)
+                CROSS_COMPILE := $(call cc-cross-prefix, hppa64-linux-gnu- hppa64-linux-)
+        endif
+endif
 else # 32-bit
-WIDTH		:=
+ifneq ($(SUBARCH),$(ARCH))
+        ifeq ($(CROSS_COMPILE),)
+                CROSS_COMPILE := $(call cc-cross-prefix, hppa-linux-gnu- hppa-linux-)
+        endif
 endif
-
-# attempt to help out folks who are cross-compiling
-ifeq ($(NATIVE),1)
-CROSS_COMPILE	:= hppa$(WIDTH)-linux-
 endif

-OBJCOPY_FLAGS =-O binary -R .note -R .comment -S
-
 cflags-y	:= -pipe

 # These flags should be implied by an hppa-linux configuration, but they
 <at>  <at>  -62,46 +58,43  <at>  <at>  cflags-$(CONFIG_PA7100LC)	+= -march=1.1 -mschedule=7100LC
 cflags-$(CONFIG_PA7300LC)	+= -march=1.1 -mschedule=7300
 cflags-$(CONFIG_PA8X00)		+= -march=2.0 -mschedule=8000

-head-y			:= arch/parisc/kernel/head.o 
-
 KBUILD_CFLAGS	+= $(cflags-y)

-kernel-y			:= mm/ kernel/ math-emu/ kernel/init_task.o
+head-y				:= arch/parisc/kernel/head.o 
+kernel-y			:= arch/parisc/mm/
+kernel-y			+= arch/parisc/kernel/
+kernel-y			+= arch/parisc/math-emu/
+kernel-y			+= arch/parisc/kernel/init_task.o
 kernel-$(CONFIG_HPUX)		+= hpux/
+libs-y				+= arch/parisc/lib/
+drivers-$(CONFIG_OPROFILE)	+= arch/parisc/oprofile/
 
-core-y	+= $(addprefix arch/parisc/, $(kernel-y))
-libs-y	+= arch/parisc/lib/
-
-drivers-$(CONFIG_OPROFILE)		+= arch/parisc/oprofile/
-
-PALO := $(shell if which palo; then : ; \
-	elif [ -x /sbin/palo ]; then echo /sbin/palo; \
-	fi)
-
-PALOCONF := $(shell if [ -f $(src)/palo.conf ]; then echo $(src)/palo.conf; \
-	else echo $(obj)/palo.conf; \
+PALO := $(shell                         \
+	if (which palo)  2>&1 ; then : ; \
+	elif [ -x /sbin/palo ]; then     \
+		echo /sbin/palo;         \
 	fi)

 palo: vmlinux
-	 <at> if test ! -x "$(PALO)"; then \
+	$(Q)if test ! -x "$(PALO)"; then \
 		echo 'ERROR: Please install palo first (apt-get install palo)';\
 		echo 'or build it from source and install it somewhere in your $$PATH';\
 		false; \
 	fi
-	 <at> if test ! -f "$(PALOCONF)"; then \
+	$(Q)if test ! -f "$(obj)/palo.conf"; then \
 		cp $(src)/arch/parisc/defpalo.conf $(obj)/palo.conf; \
 		echo 'A generic palo config file ($(obj)/palo.conf) has been created for you.'; \
 		echo 'You should check it and re-run "make palo".'; \
 		echo 'WARNING: the "lifimage" file is now placed in this directory by default!'; \
 		false; \
 	fi
-	$(PALO) -f $(PALOCONF)
+	$(PALO) -f $(obj)/palo.conf

 # Shorthands for known targets not supported by parisc, use vmlinux as default
 Image zImage bzImage: vmlinux

 kernel_install: vmlinux
-	sh $(src)/arch/parisc/install.sh \
+	sh $(srctree)/$(src)/arch/parisc/install.sh \
 			$(KERNELRELEASE) $< System.map "$(INSTALL_PATH)"

 install: kernel_install modules_install
 <at>  <at>  -119,10 +112,8  <at>  <at>  define archhelp
 endef

 # we require gcc 3.3 or above to compile the kernel
-archprepare: checkbin
-checkbin:
-	 <at> if test "$(call cc-version)" -lt "0303"; then \
-		echo -n "Sorry, GCC v3.3 or above is required to build " ; \
-		echo "the kernel." ; \
+archprepare:
+	$(Q)if test "$(call cc-version)" -lt "0303"; then \
+		echo "Sorry, GCC v3.3 or above is required to build the kernel." ; \
 		false ; \
 	fi

Gmane