login
Header Space

 
 

Re: 2.6.23-rc4-mm1

Previous thread: socket locking obscure code by Cyrill Gorcunov on Saturday, September 1, 2007 - 12:50 am. (1 message)

Next thread: BUG POWERPC: snd-powermac hangs since 'Merge 32 and 64 bits asm-powerpc/io.h' by Dave Vasilevsky on Saturday, September 1, 2007 - 12:58 am. (1 message)
To: <linux-kernel@...>
Date: Saturday, September 1, 2007 - 12:58 am

ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.23-rc4/2.6.23-rc4-mm...

- git-kbuild is broken and has been dropped

- git-ixgb is broken by git-net and has been dropped

- git-md-accel is broken by MD fixes and has been dropped

- git-v9fs breaks the build on all non-x86 and the fs has been disabled in
  config

- dynticks-for-x86_64 has returned



Changes since 2.6.23-rc3-mm1:


 origin.patch
 git-acpi.patch
 git-alsa.patch
 git-audit-master.patch
 git-avr32.patch
 git-cifs.patch
 git-cpufreq.patch
 git-powerpc.patch
 git-dvb.patch
 git-hwmon.patch
 git-gfs2-nmw.patch
 git-hid.patch
 git-ia64.patch
 git-ieee1394.patch
 git-infiniband.patch
 git-input.patch
 git-jfs.patch
 git-jg-misc.patch
 git-kvm.patch
 git-libata-all.patch
 git-m32r.patch
 git-mips.patch
 git-mmc.patch
 git-mtd.patch
 git-ubi.patch
 git-netdev-all.patch
 git-net.patch
 git-backlight.patch
 git-nfs.patch
 git-nfsd.patch
 git-ocfs2.patch
 git-r8169.patch
 git-selinux.patch
 git-s390.patch
 git-sched.patch
 git-sh.patch
 git-scsi-misc.patch
 git-scsi-rc-fixes.patch
 git-block.patch
 git-unionfs.patch
 git-v9fs.patch
 git-watchdog.patch
 git-wireless.patch
 git-ipwireless_cs.patch
 git-newsetup.patch
 git-xfs.patch
 git-cryptodev.patch
 git-xtensa.patch
 git-kgdb.patch

 git trees

-ecryptfs-fix-lookup-error-for-special-files.patch
-sparsemem-ensure-we-initialise-the-node-mapping-for-sparsemem_static.patch
-tpmdd-maintainers.patch
-kernel-auditscc-fix-an-off-by-one.patch
-document-linux-memory-policy-v3.patch
-futex_unlock_pi-hurts-my-brain-and-may-cause.patch
-dont-optimise-away-baud-rate-changes-when-bother-is-used.patch
-serial-add-support-for-ite-887x-chips.patch
-serial_txx9-fix-modem-control-line-handling.patch
-serial-8250-handle-saving-the-clear-on-read-bits-from-the-lsr.patch
-add-blacklisting-capability-to-serial_pci-to-avoid-misdetection.patch
-free_irq-fix-debug_shirq-handling.patch
-documentation-fix-getdelaysc-example-l-option-and...
To: Jens Axboe <jens.axboe@...>
Cc: Andrew Morton <akpm@...>, <linux-kernel@...>
Date: Monday, September 10, 2007 - 4:19 pm

Le 01.09.2007 06:58, Andrew Morton a
To: Jens Axboe <jens.axboe@...>
Cc: Andrew Morton <akpm@...>, <linux-kernel@...>, Peter Osterlund <petero2@...>
Date: Thursday, September 13, 2007 - 6:50 pm

I dig through git-block.patch and the culprit seems to be commit
c94f1c4ac87862675c8d70941973bc3a69aff5d8 "bio: use memset() in
bio_init()".

Maybe the real bug is a bad bio initialization in pktcdvd driver,
-
To: Laurent Riffard <laurent.riffard@...>
Cc: Andrew Morton <akpm@...>, <linux-kernel@...>, Peter Osterlund <petero2@...>
Date: Friday, September 14, 2007 - 5:33 am

At least pktcdvd doesn't expect bio-&gt;bi_io_vec[] to be cleared, that's
why it's oopsing now. I'll revert this bit for now, thanks for the
report.

-- 
Jens Axboe

-
To: Laurent Riffard <laurent.riffard@...>
Cc: Andrew Morton <akpm@...>, <linux-kernel@...>, Peter Osterlund <petero2@...>
Date: Friday, September 14, 2007 - 7:06 am

Rethinking this, I think bio_init() is doing the right thing, only
pktcdvd seems to rely on it preserving some members. So I'd rather fixup
pktcdvd instead.

Does this work for you?

diff --git a/drivers/block/pktcdvd.c b/drivers/block/pktcdvd.c
index fadbfd8..98343a1 100644
--- a/drivers/block/pktcdvd.c
+++ b/drivers/block/pktcdvd.c
@@ -1142,16 +1142,20 @@ static void pkt_gather_data(struct pktcdvd_device *pd, struct packet_data *pkt)
 	 * Schedule reads for missing parts of the packet.
 	 */
 	for (f = 0; f &lt; pkt-&gt;frames; f++) {
+		struct bio_vec *vec;
+
 		int p, offset;
 		if (written[f])
 			continue;
 		bio = pkt-&gt;r_bios[f];
+		vec = bio-&gt;bi_io_vec;
 		bio_init(bio);
 		bio-&gt;bi_max_vecs = 1;
 		bio-&gt;bi_sector = pkt-&gt;sector + f * (CD_FRAMESIZE &gt;&gt; 9);
 		bio-&gt;bi_bdev = pd-&gt;bdev;
 		bio-&gt;bi_end_io = pkt_end_io_read;
 		bio-&gt;bi_private = pkt;
+		bio-&gt;bi_io_vec = vec;
 
 		p = (f * CD_FRAMESIZE) / PAGE_SIZE;
 		offset = (f * CD_FRAMESIZE) % PAGE_SIZE;
@@ -1448,6 +1452,7 @@ static void pkt_start_write(struct pktcdvd_device *pd, struct packet_data *pkt)
 	pkt-&gt;w_bio-&gt;bi_bdev = pd-&gt;bdev;
 	pkt-&gt;w_bio-&gt;bi_end_io = pkt_end_io_packet_write;
 	pkt-&gt;w_bio-&gt;bi_private = pkt;
+	pkt-&gt;w_bio-&gt;bi_io_vec = bvec;
 	for (f = 0; f &lt; pkt-&gt;frames; f++)
 		if (!bio_add_page(pkt-&gt;w_bio, bvec[f].bv_page, CD_FRAMESIZE, bvec[f].bv_offset))
 			BUG();

-- 
Jens Axboe

-
To: Jens Axboe <jens.axboe@...>
Cc: Andrew Morton <akpm@...>, <linux-kernel@...>, Peter Osterlund <petero2@...>
Date: Friday, September 14, 2007 - 3:04 pm

Well, it's better: I was able to mount the DVD-RW, sync, and write data,
but kernel oopsed when I unmounted the drive:

[  529.295829] BUG: unable to handle kernel NULL pointer dereference at virtual address 00000000
[  529.296490] printing eip: 00000000 *pde = 00000000 
[  529.297106] Oops: 0000 [#1] PREEMPT 
[  529.297702] last sysfs file: /block/pktcdvd0/range
[  529.298284] Modules linked in: udf binfmt_misc pktcdvd radeon drm lp nls_iso8859_1 nls_cp850 vfat fat reiser4 lzo_decompress lzo_compress eeprom w83781d hwmon_vid snd_ens1371 gameport snd_ac97_codec ac97_bus snd_pcm_oss snd_mixer_oss snd_pcm snd_seq_oss snd_seq_midi snd_rawmidi snd_seq_midi_event firewire_ohci firewire_core snd_seq crc_itu_t sg snd_timer snd_seq_device 8250_pnp snd sr_mod cdrom rtc ohci1394 i2c_viapro 8250 serial_core uhci_hcd soundcore snd_page_alloc floppy pcspkr ne2k_pci 8390 parport_pc via686a ieee1394 usbcore parport ata_generic via_agp agpgart evdev reiserfs sd_mod pata_via libata scsi_mod dm_mirror dm_mod
[  529.302127] 
[  529.302785] Pid: 3718, comm: umount Not tainted (2.6.23-rc4-mm1 #73)
[  529.303493] EIP: 0060:[&lt;00000000&gt;] EFLAGS: 00010202 CPU: 0
[  529.304207] EIP is at _stext+0x3feff000/0x19
[  529.304911] EAX: c30ded90 EBX: cb110da8 ECX: 00000000 EDX: c30ded90
[  529.305640] ESI: 00000001 EDI: cb0c7748 EBP: cb1dfe98 ESP: cb1dfe90
[  529.306389]  DS: 007b ES: 007b FS: 0000 GS: 0033 SS: 0068
[  529.307136] Process umount (pid: 3718, ti=cb1df000 task=c27157b0 task.ti=cb1df000)
[  529.307213] Stack: c017b4bf 00000000 cb1dfeb0 e1c0e57a cb1115d8 cb0c7748 c1e4a828 c26663c8 
[  529.308122]        cb1dfec4 e1c0e650 cb1dfec4 c017c15f 00000000 cb1dfee4 c017c8f3 c1e4a834 
[  529.309040]        00000000 c1e4a8bc c1e4a828 e1f12ea0 00000000 cb1dfeec c017c9ab cb1dfef8 
[  529.309972] Call Trace:
[  529.311464]  [show_trace_log_lvl+26/47] show_trace_log_lvl+0x1a/0x2f
[  529.312264]  [show_stack_log_lvl+155/163] show_stack_log_lvl+0x9b/0xa3
[  529.313056]  [show_registers+160/482] show_registers+0xa0/0x1e2
...
To: Jens Axboe <jens.axboe@...>
Cc: Andrew Morton <akpm@...>, <linux-kernel@...>, Peter Osterlund <petero2@...>
Date: Thursday, September 20, 2007 - 5:25 pm

Jens,

this patch, applied on top of your previous patch, solved it.



pktcdvd: don't rely on bio_init() preserving bio-&gt;bi_destructor

Signed-off-by: Laurent Riffard &lt;laurent.riffard@free.fr&gt;
---
 drivers/block/pktcdvd.c |    2 ++
 1 file changed, 2 insertions(+)

Index: linux-2.6-mm/drivers/block/pktcdvd.c
===================================================================
--- linux-2.6-mm.orig/drivers/block/pktcdvd.c
+++ linux-2.6-mm/drivers/block/pktcdvd.c
@@ -1156,6 +1156,7 @@ static void pkt_gather_data(struct pktcd
 		bio-&gt;bi_end_io = pkt_end_io_read;
 		bio-&gt;bi_private = pkt;
 		bio-&gt;bi_io_vec = vec;
+		bio-&gt;bi_destructor = pkt_bio_destructor;
 
 		p = (f * CD_FRAMESIZE) / PAGE_SIZE;
 		offset = (f * CD_FRAMESIZE) % PAGE_SIZE;
@@ -1453,6 +1454,7 @@ static void pkt_start_write(struct pktcd
 	pkt-&gt;w_bio-&gt;bi_end_io = pkt_end_io_packet_write;
 	pkt-&gt;w_bio-&gt;bi_private = pkt;
 	pkt-&gt;w_bio-&gt;bi_io_vec = bvec;
+	pkt-&gt;w_bio-&gt;bi_destructor = pkt_bio_destructor;
 	for (f = 0; f &lt; pkt-&gt;frames; f++)
 		if (!bio_add_page(pkt-&gt;w_bio, bvec[f].bv_page, CD_FRAMESIZE, bvec[f].bv_offset))
 			BUG();




-
To: Laurent Riffard <laurent.riffard@...>
Cc: Andrew Morton <akpm@...>, <linux-kernel@...>, Peter Osterlund <petero2@...>
Date: Friday, September 21, 2007 - 1:19 am

Ah great, thanks for following up on this! Applied.

-- 
Jens Axboe

-
To: Laurent Riffard <laurent.riffard@...>
Cc: Jens Axboe <jens.axboe@...>, <linux-kernel@...>, Peter Osterlund <petero2@...>
Date: Thursday, September 13, 2007 - 7:05 pm

On Fri, 14 Sep 2007 00:50:25 +0200

I think I'll be dropping git-block.  There were a number of problems
in rc4-mm1 (for which I have a sprinkling of messy-looking patches
somewhere ahead of my current cursor) and nothing seems to have
happened in the git tree for a month or so.
-
To: Andrew Morton <akpm@...>
Cc: Laurent Riffard <laurent.riffard@...>, <linux-kernel@...>, Peter Osterlund <petero2@...>
Date: Friday, September 14, 2007 - 4:00 am

Huh? It's not even two weeks old. And here we go again, git-block is
getting dropped and you'll be complaining about lack of testing next.
I'll update the branches today as discussed with Tomo, that should work
fine.

-- 
Jens Axboe

-
To: Andrew Morton <akpm@...>
Cc: Laurent Riffard <laurent.riffard@...>, <linux-kernel@...>, Peter Osterlund <petero2@...>
Date: Friday, September 14, 2007 - 4:30 am

Branches updated with the scsi host template addition and the qla sg
chaining fix.

-- 
Jens Axboe

-
To: Andrew Morton <akpm@...>
Cc: <linux-kernel@...>, <mel@...>
Date: Monday, September 10, 2007 - 1:49 pm

I have a couple of old NUMA-Q systems which are unable to read their
boot disks with 2.6.23-rc4-mm1.  The disks appear to be recognised and
even the partition tables read correctly, and then they go pop:

  qla1280: QLA1040 found on PCI bus 0, dev 10
  Clocksource tsc unstable (delta = 99922590 ns)
  Time: jiffies clocksource has been installed.
  scsi(0:0): Resetting SCSI BUS
  scsi0 : QLogic QLA1040 PCI to SCSI Host Adapter
         Firmware version:  7.65.06, Driver version 3.26
  scsi 0:0:0:0: Direct-Access     IBM      DGHS18X          0360 PQ: 0 ANSI: 3
  scsi(0:0:0:0): Sync: period 10, offset 12, Wide
  scsi 0:0:1:0: Direct-Access     IBM OEM  DCHS09X          5454 PQ: 0 ANSI: 2
  scsi(0:0:1:0): Sync: period 10, offset 12, Wide
  scsi 0:0:2:0: Direct-Access     IBM OEM  DCHS09X          5454 PQ: 0 ANSI: 2
  scsi(0:0:2:0): Sync: period 10, offset 12, Wide
  scsi 0:0:3:0: Direct-Access     IBM OEM  DCHS09X          5454 PQ: 0 ANSI: 2
  scsi(0:0:3:0): Sync: period 10, offset 12, Wide
  scsi 0:0:4:0: Direct-Access     IBM OEM  DCHS09X          5454 PQ: 0 ANSI: 2
  scsi(0:0:4:0): Sync: period 10, offset 12, Wide
  st: Version 20070203, fixed bufsize 32768, s/g segs 256
  sd 0:0:0:0: [sda] 35843670 512-byte hardware sectors (18352 MB)
  sd 0:0:0:0: [sda] Write Protect is off
  sd 0:0:0:0: [sda] Write cache: disabled, read cache: enabled, supports DPO and FUA
  sd 0:0:0:0: [sda] 35843670 512-byte hardware sectors (18352 MB)
  sd 0:0:0:0: [sda] Write Protect is off
  sd 0:0:0:0: [sda] Write cache: disabled, read cache: enabled, supports DPO and FUA
   sda: sda1
  sd 0:0:0:0: [sda] Attached SCSI disk
  sd 0:0:1:0: [sdb] 17796077 512-byte hardware sectors (9112 MB)
  sd 0:0:1:0: [sdb] Write Protect is off
  sd 0:0:1:0: [sdb] Write cache: disabled, read cache: enabled, supports DPO and FUA
  sd 0:0:1:0: [sdb] 17796077 512-byte hardware sectors (9112 MB)
  sd 0:0:1:0: [sdb] Write Protect is off
  sd 0:0:1:0: [sdb] Write cache: disabled, read cache: enabled, supports DPO and FUA
   sd...
To: Andy Whitcroft <apw@...>
Cc: <linux-kernel@...>, <mel@...>, Jens Axboe <jens.axboe@...>, <linux-scsi@...>
Date: Monday, September 10, 2007 - 2:19 pm

The only patch which touches qla1280 is git-block.patch.  From a quick
squizz the change looks OK, although it's tricky and something might have
broken.

(the dprintk at line 2929 needs to print remseg, not seg_cnt).

Can you retest with that change reverted (below)?  If it's not that then
perhaps something in scsi core broke, dunno.


diff -puN drivers/scsi/qla1280.c~revert-1 drivers/scsi/qla1280.c
--- a/drivers/scsi/qla1280.c~revert-1
+++ a/drivers/scsi/qla1280.c
@@ -2775,7 +2775,7 @@ qla1280_64bit_start_scsi(struct scsi_qla
 	struct device_reg __iomem *reg = ha-&gt;iobase;
 	struct scsi_cmnd *cmd = sp-&gt;cmd;
 	cmd_a64_entry_t *pkt;
-	struct scatterlist *sg = NULL, *s;
+	struct scatterlist *sg = NULL;
 	__le32 *dword_ptr;
 	dma_addr_t dma_handle;
 	int status = 0;
@@ -2889,16 +2889,13 @@ qla1280_64bit_start_scsi(struct scsi_qla
 	 * Load data segments.
 	 */
 	if (seg_cnt) {	/* If data transfer. */
-		int remseg = seg_cnt;
 		/* Setup packet address segment pointer. */
 		dword_ptr = (u32 *)&amp;pkt-&gt;dseg_0_address;
 
 		if (cmd-&gt;use_sg) {	/* If scatter gather */
 			/* Load command entry data segments. */
-			for_each_sg(sg, s, seg_cnt, cnt) {
-				if (cnt == 2)
-					break;
-				dma_handle = sg_dma_address(s);
+			for (cnt = 0; cnt &lt; 2 &amp;&amp; seg_cnt; cnt++, seg_cnt--) {
+				dma_handle = sg_dma_address(sg);
 #if defined(CONFIG_IA64_GENERIC) || defined(CONFIG_IA64_SGI_SN2)
 				if (ha-&gt;flags.use_pci_vchannel)
 					sn_pci_set_vchan(ha-&gt;pdev,
@@ -2909,12 +2906,12 @@ qla1280_64bit_start_scsi(struct scsi_qla
 					cpu_to_le32(pci_dma_lo32(dma_handle));
 				*dword_ptr++ =
 					cpu_to_le32(pci_dma_hi32(dma_handle));
-				*dword_ptr++ = cpu_to_le32(sg_dma_len(s));
+				*dword_ptr++ = cpu_to_le32(sg_dma_len(sg));
+				sg++;
 				dprintk(3, "S/G Segment phys_addr=%x %x, len=0x%x\n",
 					cpu_to_le32(pci_dma_hi32(dma_handle)),
 					cpu_to_le32(pci_dma_lo32(dma_handle)),
-					cpu_to_le32(sg_dma_len(sg_next(s))));
-				remseg--;
+					cpu...
To: <akpm@...>
Cc: <apw@...>, <linux-kernel@...>, <mel@...>, <jens.axboe@...>, <linux-scsi@...>, <fujita.tomonori@...>
Date: Monday, September 10, 2007 - 3:31 pm

On Mon, 10 Sep 2007 11:19:26 -0700

Even if we revert the qla1280 patch, scsi-ml still sends chaining sg
list. So it doesn't work.

The following patch disables chaining sg list for qla1280. If the fix
that I've just sent doesn't work, please try this.

-
From: FUJITA Tomonori &lt;tomof@acm.org&gt;
Subject: [PATCH] add use_sg_chaining option to scsi_host_template

This option is true if a low-level driver can support sg
chaining. This will be removed eventually when all the drivers are
converted to support sg chaining. q-&gt;max_phys_segments is set to
SCSI_MAX_SG_SEGMENTS if false.

Signed-off-by: FUJITA Tomonori &lt;fujita.tomonori@lab.ntt.co.jp&gt;
---
 arch/ia64/hp/sim/simscsi.c            |    1 +
 drivers/scsi/3w-9xxx.c                |    1 +
 drivers/scsi/3w-xxxx.c                |    1 +
 drivers/scsi/BusLogic.c               |    1 +
 drivers/scsi/NCR53c406a.c             |    3 ++-
 drivers/scsi/a100u2w.c                |    1 +
 drivers/scsi/aacraid/linit.c          |    1 +
 drivers/scsi/aha1740.c                |    1 +
 drivers/scsi/aic7xxx/aic79xx_osm.c    |    1 +
 drivers/scsi/aic7xxx/aic7xxx_osm.c    |    1 +
 drivers/scsi/aic7xxx_old.c            |    1 +
 drivers/scsi/arcmsr/arcmsr_hba.c      |    1 +
 drivers/scsi/dc395x.c                 |    1 +
 drivers/scsi/dpt_i2o.c                |    1 +
 drivers/scsi/eata.c                   |    3 ++-
 drivers/scsi/hosts.c                  |    1 +
 drivers/scsi/hptiop.c                 |    1 +
 drivers/scsi/ibmmca.c                 |    1 +
 drivers/scsi/ibmvscsi/ibmvscsi.c      |    1 +
 drivers/scsi/initio.c                 |    1 +
 drivers/scsi/ipr.c                    |    1 +
 drivers/scsi/lpfc/lpfc_scsi.c         |    2 ++
 drivers/scsi/mac53c94.c               |    1 +
 drivers/scsi/megaraid.c               |    1 +
 drivers/scsi/megaraid/megaraid_mbox.c |    1 +
 drivers/scsi/megaraid/megaraid_sas.c  |    1 +
 drivers/scsi/mesh.c                   |    1 +
 drivers/scsi/nsp32.c                ...
To: FUJITA Tomonori <tomof@...>
Cc: <akpm@...>, <linux-kernel@...>, <mel@...>, <jens.axboe@...>, <linux-scsi@...>, <fujita.tomonori@...>
Date: Friday, September 14, 2007 - 4:10 am

On Tue, Sep 11, 2007 at 04:31:12AM +0900, FUJITA Tomonori wrote:

Ok, the other patch _did_ work, but this got tested anyhow and it did

-apw
-
To: Andy Whitcroft <apw@...>
Cc: FUJITA Tomonori <tomof@...>, <akpm@...>, <linux-kernel@...>, <mel@...>, <jens.axboe@...>, <linux-scsi@...>, <fujita.tomonori@...>
Date: Friday, September 14, 2007 - 9:01 am

Sorry to confirm this. My RAID5 got destroyed a second time.
To summarize what worked / not worked / and seems to work for me:

First 2 tries with unpatched rc4-mm1: Both times one sata_sil24-drive got kicked
Then I switched back to rc3-mm1, 18 boots with that kernel worked.
Then I tried the patched rc4-mm1 and it worked too.
The next boot also worked, but the third time kicked a drive out again.
But as nobody reads logs, I did not notice that and keep using the
patched rc4-mm1.
The next 5 times the system worked normally with the two remaining drives.
The sixth boot kicked the second sata_sil24 drive. That I did notice...
After reassembling the RAID, I'm now back to the patch rc4-mm1 that
did boot correctly this time.
So the patch just makes it unlikelier to hit the bug. Instead of
failing 2 out of 2 times, it only failed 2 out of 8 times.
I compared the rc4-mm1 boot from a working case and the case where it
kicked the first drive. Nothing seems to stand out...


145c145
&lt; CPU 0: aperture @ 4000000 size 32 MB
154c154
&lt; Calibrating delay using timer specific routine.. 5203.23 BogoMIPS
(lpj=26016160)
169c169
&lt; APIC timer calibration result 12499998
173c173
&lt; Calibrating delay using timer specific routine.. 5222.40 BogoMIPS
(lpj=26112010)
182c182
&lt; Calibrating delay using timer specific routine.. 5222.73 BogoMIPS
(lpj=26113694)
191c191
&lt; Calibrating delay using timer specific routine.. 5223.07 BogoMIPS
(lpj=26115369)
269d268
&lt; Switched to high resolution mode on CPU 3
502,509c502,509
&lt; raid6: int64x1   2634 MB/s
&lt; raid6: int64x2   3244 MB/s
&lt; raid6: int64x4   3405 MB/s
&lt; raid6: int64x8   2614 MB/s
&lt; raid6: sse2x1    3607 MB/s
&lt; raid6: sse2x2    4834 MB/s
&lt; raid6: sse2x4    4946 MB/s
&lt; raid6: using algorithm sse2x4 (4946 MB/s)
567c567
&lt; md1: bitmap initialized from disk: read 10/10 pages, set 96 bits

Another good boot also showed the aperture at a similar high address:
CPU 0: aperture @ b7f2000000 size 32 MB
And tha...
To: Torsten Kaiser <just.for.lkml@...>
Cc: Andy Whitcroft <apw@...>, FUJITA Tomonori <tomof@...>, <linux-kernel@...>, <mel@...>, <jens.axboe@...>, <linux-scsi@...>, <fujita.tomonori@...>, <linux-ide@...>
Date: Friday, September 14, 2007 - 4:15 pm

Let's keep linux-ide cc'ed, please.
-
To: <apw@...>, <akpm@...>
Cc: <linux-kernel@...>, <mel@...>, <jens.axboe@...>, <linux-scsi@...>, <fujita.tomonori@...>
Date: Monday, September 10, 2007 - 3:10 pm

On Mon, 10 Sep 2007 11:19:26 -0700

Can you try this patch (against 2.6.23-rc4-mm1)?

From 592bd2049cb3e6e1f1dde7cf631879f26ddffeaa Mon Sep 17 00:00:00 2001
From: FUJITA Tomonori &lt;fujita.tomonori@lab.ntt.co.jp&gt;
Date: Mon, 10 Sep 2007 04:17:13 +0100
Subject: [PATCH] qla1280: sg chaining fixes

Signed-off-by: FUJITA Tomonori &lt;fujita.tomonori@lab.ntt.co.jp&gt;
---
 drivers/scsi/qla1280.c |    5 ++++-
 1 files changed, 4 insertions(+), 1 deletions(-)

diff --git a/drivers/scsi/qla1280.c b/drivers/scsi/qla1280.c
index bd805ec..7c1eaec 100644
--- a/drivers/scsi/qla1280.c
+++ b/drivers/scsi/qla1280.c
@@ -2977,8 +2977,8 @@ qla1280_64bit_start_scsi(struct scsi_qla_host *ha, struct srb * sp)
 						cpu_to_le32(pci_dma_hi32(dma_handle)),
 						cpu_to_le32(pci_dma_lo32(dma_handle)),
 						cpu_to_le32(sg_dma_len(s)));
-					remseg--;
 				}
+				remseg -= cnt;
 				dprintk(5, "qla1280_64bit_start_scsi: "
 					"continuation packet data - b %i, t "
 					"%i, l %i \n", SCSI_BUS_32(cmd),
@@ -3250,6 +3250,8 @@ qla1280_32bit_start_scsi(struct scsi_qla_host *ha, struct srb * sp)
 
 				/* Load continuation entry data segments. */
 				for_each_sg(sg, s, remseg, cnt) {
+					if (cnt == 7)
+						break;
 					*dword_ptr++ =
 						cpu_to_le32(pci_dma_lo32(sg_dma_address(s)));
 					*dword_ptr++ =
@@ -3260,6 +3262,7 @@ qla1280_32bit_start_scsi(struct scsi_qla_host *ha, struct srb * sp)
 						cpu_to_le32(pci_dma_lo32(sg_dma_address(s))),
 						cpu_to_le32(sg_dma_len(s)));
 				}
+				remseg -= cnt;
 				dprintk(5, "qla1280_32bit_start_scsi: "
 					"continuation packet data - "
 					"scsi(%i:%i:%i)\n", SCSI_BUS_32(cmd),
-- 
1.5.2.4


-
To: FUJITA Tomonori <tomof@...>
Cc: <apw@...>, <akpm@...>, <linux-kernel@...>, <mel@...>, <jens.axboe@...>, <linux-scsi@...>, <fujita.tomonori@...>
Date: Saturday, September 15, 2007 - 12:16 am

This patch works for me.

I was getting the scsi errors reported earlier in
this thread, running 2.6.23-rc4-mm1 on one of our
big SGI Altix systems.

Applying this patch fixed it, so far as I can tell,
which is to say my system boots cleanly once again.

Thanks.

-- 
                  I won't rest till it's the best ...
                  Programmer, Linux Scalability
                  Paul Jackson &lt;pj@sgi.com&gt; 1.925.600.0401
-
To: <pj@...>, <jens.axboe@...>
Cc: <tomof@...>, <apw@...>, <akpm@...>, <linux-kernel@...>, <mel@...>, <linux-scsi@...>, <fujita.tomonori@...>
Date: Saturday, September 15, 2007 - 6:52 am

On Fri, 14 Sep 2007 21:16:35 -0700

Thanks for testing!

Jens, we could enable use_sg_chaining option for qla1280.


From: FUJITA Tomonori &lt;fujita.tomonori@lab.ntt.co.jp&gt;
Subject: [PATCH] qla1280: enable use_sg_chaining option

Signed-off-by: FUJITA Tomonori &lt;fujita.tomonori@lab.ntt.co.jp&gt;
---
 drivers/scsi/qla1280.c |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

diff --git a/drivers/scsi/qla1280.c b/drivers/scsi/qla1280.c
index 7c1eaec..83249af 100644
--- a/drivers/scsi/qla1280.c
+++ b/drivers/scsi/qla1280.c
@@ -4259,6 +4259,7 @@ static struct scsi_host_template qla1280_driver_template = {
 	.sg_tablesize		= SG_ALL,
 	.cmd_per_lun		= 1,
 	.use_clustering		= ENABLE_CLUSTERING,
+	.use_sg_chaining	= ENABLE_SG_CHAINING,
 };
 
 
-- 
1.5.2.4

-
To: FUJITA Tomonori <tomof@...>
Cc: <pj@...>, <apw@...>, <akpm@...>, <linux-kernel@...>, <mel@...>, <linux-scsi@...>, <fujita.tomonori@...>
Date: Monday, September 17, 2007 - 9:28 am

Added, thanks!

-- 
Jens Axboe

-
To: <jens.axboe@...>
Cc: <tomof@...>, <pj@...>, <apw@...>, <akpm@...>, <linux-kernel@...>, <mel@...>, <linux-scsi@...>, <fujita.tomonori@...>
Date: Monday, September 17, 2007 - 10:32 am

On Mon, 17 Sep 2007 15:28:19 +0200

Thanks.

BTW, please don't forget to integrate the following patches:


- revert sg segment size ifdefs

http://marc.info/?l=linux-scsi&amp;m=118881264013097&amp;w=2

- remove sglist_len

http://marc.info/?l=linux-scsi&amp;m=118907920405100&amp;w=2
-
To: FUJITA Tomonori <tomof@...>
Cc: <pj@...>, <apw@...>, <akpm@...>, <linux-kernel@...>, <mel@...>, <linux-scsi@...>, <fujita.tomonori@...>
Date: Tuesday, September 18, 2007 - 6:18 am

Added, and I rebased the sglist-* branches to current again. So
everything should be fully uptodate once more.

-- 
Jens Axboe

-
To: <jens.axboe@...>, <michaelc@...>
Cc: <tomof@...>, <pj@...>, <apw@...>, <akpm@...>, <linux-kernel@...>, <mel@...>, <linux-scsi@...>, <fujita.tomonori@...>
Date: Tuesday, September 18, 2007 - 8:25 am

On Tue, 18 Sep 2007 12:18:40 +0200

Thanks, here are a few more things.

- please drop the iscsi patch since Mike has major changes to iscsi
I/O path.

- ipr sg chaining need to be disabled since libata is not ready.

- you can add Doug's ACK to scsi_debug patch:

http://marc.info/?l=linux-scsi&amp;m=118926325931801&amp;w=2
-
To: FUJITA Tomonori <tomof@...>
Cc: <michaelc@...>, <pj@...>, <apw@...>, <akpm@...>, <linux-kernel@...>, <mel@...>, <linux-scsi@...>, <fujita.tomonori@...>
Date: Tuesday, September 18, 2007 - 8:51 am

All done.

-- 
Jens Axboe

-
To: FUJITA Tomonori <tomof@...>
Cc: <akpm@...>, <linux-kernel@...>, <mel@...>, <jens.axboe@...>, <linux-scsi@...>, <fujita.tomonori@...>
Date: Thursday, September 13, 2007 - 1:34 pm

Yep this patch seems to sort out booting on these boxes.  The other one

-apw
-
To: Andrew Morton <akpm@...>
Cc: Andy Whitcroft <apw@...>, <linux-kernel@...>, <mel@...>, Jens Axboe <jens.axboe@...>, <linux-scsi@...>
Date: Monday, September 10, 2007 - 2:59 pm

I reported a similar problem on Sep 1, but until now got no response.
The system boots, reads the partition tables, starts the RAID and then

From my log:
[    3.890000] scsi0 : sata_sil24
[    3.900000] scsi1 : sata_sil24
[    3.900000] ata1: SATA max UDMA/100 host m128@0xefeffc00 port
0xefef8000 irq 16
[    3.920000] ata2: SATA max UDMA/100 host m128@0xefeffc00 port
0xefefa000 irq 16
[    4.300000] ata1: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
[    4.360000] ata1.00: ATA-7: MAXTOR STM3320820AS, 3.AAE, max UDMA/133
[    4.370000] ata1.00: 625142448 sectors, multi 0: LBA48 NCQ (depth 31/32)
[    4.430000] ata1.00: configured for UDMA/100
[    4.500000] ieee1394: Node added: ID:BUS[0-00:1023]  GUID[0010dc00005cc354]
[    4.500000] ieee1394: Host added: ID:BUS[0-01:1023]  GUID[0011d80000c4c261]
[    4.790000] ata2: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
[    4.850000] ata2.00: ATA-7: MAXTOR STM3320820AS, 3.AAE, max UDMA/133
[    4.860000] ata2.00: 625142448 sectors, multi 0: LBA48 NCQ (depth 31/32)
[    4.920000] ata2.00: configured for UDMA/100
[    4.930000] scsi 0:0:0:0: Direct-Access     ATA      MAXTOR
STM332082 3.AA PQ: 0 ANSI: 5
[    4.960000] sd 0:0:0:0: [sda] 625142448 512-byte hardware sectors (320073 MB)
[    4.980000] sd 0:0:0:0: [sda] Write Protect is off
[    4.990000] sd 0:0:0:0: [sda] Mode Sense: 00 3a 00 00
[    4.990000] sd 0:0:0:0: [sda] Write cache: enabled, read cache:
enabled, doesn't support DPO or FUA
[    5.020000] sd 0:0:0:0: [sda] 625142448 512-byte hardware sectors (320073 MB)
[    5.040000] sd 0:0:0:0: [sda] Write Protect is off
[    5.050000] sd 0:0:0:0: [sda] Mode Sense: 00 3a 00 00
[    5.050000] sd 0:0:0:0: [sda] Write cache: enabled, read cache:
enabled, doesn't support DPO or FUA
[    5.080000]  sda: sda1 sda2
[    5.110000] sd 0:0:0:0: [sda] Attached SCSI disk
[    5.120000] scsi 1:0:0:0: Direct-Access     ATA      MAXTOR
STM332082 3.AA PQ: 0 ANSI: 5
[    5.140000] sd 1:0:0:0: [sdb] 625142448 512-byte hardware sectors (3200...
To: Torsten Kaiser <just.for.lkml@...>
Cc: Andy Whitcroft <apw@...>, <linux-kernel@...>, <mel@...>, Jens Axboe <jens.axboe@...>, <linux-scsi@...>, <linux-ide@...>
Date: Monday, September 10, 2007 - 3:20 pm

You still haven't had a response ;)  Let's add a cc.

Oh, you reported it against 2.6.23-rc4-mm1
(http://lkml.org/lkml/2007/9/1/92) and I did cc linux-ide in my response.

I'll continue to point out where this sort of thing occurs because last
week I was told that a reson why so many bug reports are ignored is because

Andy is using qla1280.  You're using sata.  So it's probably a different

Can you please confirm that this bug is present in -mm and not present in
mainline (yet)?

Thanks.
-
To: <akpm@...>
Cc: <just.for.lkml@...>, <apw@...>, <linux-kernel@...>, <mel@...>, <jens.axboe@...>, <linux-scsi@...>, <linux-ide@...>, <fujita.tomonori@...>
Date: Monday, September 10, 2007 - 3:42 pm

On Mon, 10 Sep 2007 12:20:38 -0700


This might be a sg chaining bug too (probabaly sg chaining libata
patch).

Can you try the following patch that I've just sent:

http://lkml.org/lkml/2007/9/10/251

The patch also disables chaining sg list for libata.
-
To: FUJITA Tomonori <tomof@...>
Cc: <akpm@...>, <apw@...>, <linux-kernel@...>, <mel@...>, <jens.axboe@...>, <linux-scsi@...>, <linux-ide@...>, <fujita.tomonori@...>
Date: Monday, September 10, 2007 - 4:43 pm

With this patch 2.6.23-rc4-mm1 works for me.
Mainline 2.6.23-rc5-git1 works also without needing any patches.

Torsten
-
To: Torsten Kaiser <just.for.lkml@...>
Cc: FUJITA Tomonori <tomof@...>, <akpm@...>, <apw@...>, <linux-kernel@...>, <mel@...>, <linux-scsi@...>, <linux-ide@...>, <fujita.tomonori@...>
Date: Tuesday, September 11, 2007 - 4:32 am

OK, thanks for testing that. I'll merge Tomo's patch so that we can
selectively enable drivers when we KNOW they work, instead of trying to
do this (massive) operation whole sale.

-- 
Jens Axboe

-
To: Andrew Morton <akpm@...>
Cc: Andy Whitcroft <apw@...>, <linux-kernel@...>, <mel@...>, Jens Axboe <jens.axboe@...>, <linux-scsi@...>, <linux-ide@...>
Date: Monday, September 10, 2007 - 3:38 pm

But the mail from Andy was a nice point to try to another cc, i.e.

Yes, but you (Andrew) also said in response to Andy: "If it's not that then
perhaps something in scsi core broke, dunno." So I wanted to add that

Currently using 2.6.23-rc3-mm1, that works for me.
Now downloading 2.6.23-rc5-git1...

Torsten
-
To: Andrew Morton <akpm@...>
Cc: <linux-kernel@...>, <linuxppc-dev@...>, <mel@...>
Date: Monday, September 10, 2007 - 1:43 pm

Am seeing the following compile error on all of my powerpc platforms:

  CC      kernel/sched.o
  kernel/sched.c: In function `cpu_to_phys_group':
  kernel/sched.c:5937: error: `per_cpu__cpu_sibling_map' undeclared (first use in this function)
  kernel/sched.c:5937: error: (Each undeclared identifier is reported only once
  kernel/sched.c:5937: error: for each function it appears in.)
  kernel/sched.c:5937: warning: type defaults to `int' in declaration of `type name'
  kernel/sched.c:5937: error: invalid type argument of `unary *'
  kernel/sched.c: In function `build_sched_domains':
  kernel/sched.c:6172: error: `per_cpu__cpu_sibling_map' undeclared (first use in this function)
  kernel/sched.c:6172: warning: type defaults to `int' in declaration of `type name'
  kernel/sched.c:6172: error: invalid type argument of `unary *'
  kernel/sched.c:6183: warning: type defaults to `int' in declaration of `type name'
  kernel/sched.c:6183: error: invalid type argument of `unary *'
  make[1]: *** [kernel/sched.o] Error 1
  make: *** [kernel] Error 2

-apw
-
To: Andrew Morton <akpm@...>, Balbir Singh <balbir@...>, Pavel Emelianov <xemul@...>
Cc: <linux-kernel@...>
Date: Sunday, September 9, 2007 - 4:26 pm

do_try_to_free_pages() can become static.

Signed-off-by: Adrian Bunk &lt;bunk@kernel.org&gt;

---
23781fa6792c518c8581ceeaf08db251574e8430 
diff --git a/mm/vmscan.c b/mm/vmscan.c
index b34b29d..9104cf8 100644
--- a/mm/vmscan.c
+++ b/mm/vmscan.c
@@ -1248,8 +1248,8 @@ static unsigned long shrink_zones(int priority, struct zone **zones,
  * holds filesystem locks which prevent writeout this might not work, and the
  * allocation attempt will fail.
  */
-unsigned long do_try_to_free_pages(struct zone **zones, gfp_t gfp_mask,
-					struct scan_control *sc)
+static unsigned long do_try_to_free_pages(struct zone **zones, gfp_t gfp_mask,
+					  struct scan_control *sc)
 {
 	int priority;
 	int ret = 0;

-
To: Adrian Bunk <bunk@...>
Cc: Andrew Morton <akpm@...>, Pavel Emelianov <xemul@...>, <linux-kernel@...>
Date: Monday, September 10, 2007 - 4:24 am

Thanks, looks good!

-- 
	Warm Regards,
	Balbir Singh
	Linux Technology Center
	IBM, ISTL
-
To: Andrew Morton <akpm@...>, Jens Axboe <jens.axboe@...>
Cc: <linux-kernel@...>, <netdev@...>
Date: Sunday, September 9, 2007 - 4:25 pm

tcp_splice_data_recv() can become static.

Signed-off-by: Adrian Bunk &lt;bunk@kernel.org&gt;

---
233aefd2a215430c16bd02eca06fb8a4b6079f7a 
diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c
index 22576e4..6623796 100644
--- a/net/ipv4/tcp.c
+++ b/net/ipv4/tcp.c
@@ -515,8 +515,9 @@ static inline void tcp_push(struct sock *sk, int flags, int mss_now,
 	}
 }
 
-int tcp_splice_data_recv(read_descriptor_t *rd_desc, struct sk_buff *skb,
-			 unsigned int offset, size_t len)
+static int tcp_splice_data_recv(read_descriptor_t *rd_desc,
+				struct sk_buff *skb,
+				unsigned int offset, size_t len)
 {
 	struct tcp_splice_state *tss = rd_desc-&gt;arg.data;
 

-
To: <bunk@...>
Cc: <akpm@...>, <jens.axboe@...>, <linux-kernel@...>, <netdev@...>
Date: Wednesday, September 12, 2007 - 9:21 am

From: Adrian Bunk &lt;bunk@kernel.org&gt;

I'll let Jens or similar pick this one up since it
obviously won't apply to my tree.

-
To: David Miller <davem@...>
Cc: <bunk@...>, <akpm@...>, <linux-kernel@...>, <netdev@...>
Date: Wednesday, September 12, 2007 - 1:44 pm

I'll shove it in my #splice-net branch, where it originates from.

-- 
Jens Axboe

-
To: Andrew Morton <akpm@...>, <vladislav.yasevich@...>, <sri@...>, <davem@...>
Cc: <linux-kernel@...>, <lksctp-developers@...>, <netdev@...>
Date: Sunday, September 9, 2007 - 4:25 pm

This patch makes the following needlessly globalvariables static:
- sctp_memory_pressure
- sctp_memory_allocated
- sctp_sockets_allocated

Signed-off-by: Adrian Bunk &lt;bunk@kernel.org&gt;

---
3c211ad074038414ebc156b1abbc3df78dc60cb2 
diff --git a/net/sctp/socket.c b/net/sctp/socket.c
index 37e7306..f53545a 100644
--- a/net/sctp/socket.c
+++ b/net/sctp/socket.c
@@ -112,9 +112,9 @@ extern int sysctl_sctp_mem[3];
 extern int sysctl_sctp_rmem[3];
 extern int sysctl_sctp_wmem[3];
 
-int sctp_memory_pressure;
-atomic_t sctp_memory_allocated;
-atomic_t sctp_sockets_allocated;
+static int sctp_memory_pressure;
+static atomic_t sctp_memory_allocated;
+static atomic_t sctp_sockets_allocated;
 
 static void sctp_enter_memory_pressure(void)
 {

-
To: <bunk@...>
Cc: <akpm@...>, <vladislav.yasevich@...>, <sri@...>, <linux-kernel@...>, <lksctp-developers@...>, <netdev@...>
Date: Wednesday, September 12, 2007 - 9:18 am

From: Adrian Bunk &lt;bunk@kernel.org&gt;

Applied, thanks.
-
To: Adrian Bunk <bunk@...>
Cc: Andrew Morton <akpm@...>, <vladislav.yasevich@...>, <sri@...>, <davem@...>, <netdev@...>, <linux-kernel@...>, <lksctp-developers@...>
Date: Monday, September 10, 2007 - 10:05 am

Looks fine to me
Acked-by: Neil Horman &lt;nhorman@tuxdriver.com&gt;

Neil

-- 
/***************************************************
 *Neil Horman
 *nhorman@tuxdriver.com
 *gpg keyid: 1024D / 0x92A74FA1
 *http://pgp.mit.edu
 ***************************************************/
-
To: Andrew Morton <akpm@...>, Balbir Singh <balbir@...>
Cc: <linux-kernel@...>
Date: Sunday, September 9, 2007 - 4:25 pm

This patch makes the following needlessly global functions static:
- lock_page_container()
- unlock_page_container()
- __mem_container_move_lists()

Additionally, there was no reason for the "mem_control_type" object.

Signed-off-by: Adrian Bunk &lt;bunk@kernel.org&gt;

---

 mm/memcontrol.c |    8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

b582cc510b6b0a182dc56025828e7a3c566b9724 
diff --git a/mm/memcontrol.c b/mm/memcontrol.c
index 8162d98..49bf04f 100644
--- a/mm/memcontrol.c
+++ b/mm/memcontrol.c
@@ -91,7 +91,7 @@ enum {
 	MEM_CONTAINER_TYPE_CACHED,
 	MEM_CONTAINER_TYPE_ALL,
 	MEM_CONTAINER_TYPE_MAX,
-} mem_control_type;
+};
 
 static struct mem_container init_mem_container;
 
@@ -156,18 +156,18 @@ struct page_container *page_get_page_container(struct page *page)
 		(page-&gt;page_container &amp; ~PAGE_CONTAINER_LOCK);
 }
 
-void __always_inline lock_page_container(struct page *page)
+static void __always_inline lock_page_container(struct page *page)
 {
 	bit_spin_lock(PAGE_CONTAINER_LOCK_BIT, &amp;page-&gt;page_container);
 	VM_BUG_ON(!page_container_locked(page));
 }
 
-void __always_inline unlock_page_container(struct page *page)
+static void __always_inline unlock_page_container(struct page *page)
 {
 	bit_spin_unlock(PAGE_CONTAINER_LOCK_BIT, &amp;page-&gt;page_container);
 }
 
-void __mem_container_move_lists(struct page_container *pc, bool active)
+static void __mem_container_move_lists(struct page_container *pc, bool active)
 {
 	if (active)
 		list_move(&amp;pc-&gt;lru, &amp;pc-&gt;mem_container-&gt;active_list);

-
To: Adrian Bunk <bunk@...>
Cc: Andrew Morton <akpm@...>, <linux-kernel@...>
Date: Monday, September 10, 2007 - 4:23 am

This looks good as well


-- 
	Warm Regards,
	Balbir Singh
	Linux Technology Center
	IBM, ISTL
-
To: Balbir Singh <balbir@...>
Cc: Andrew Morton <akpm@...>, <linux-kernel@...>
Date: Monday, September 10, 2007 - 5:59 pm

It's not about style - your "mem_control_type" was not an identifier,
it was an (unused) variable.


It seems the intended code was:

enum mem_control_type {
        MEM_CONTAINER_TYPE_UNSPEC = 0,
        MEM_CONTAINER_TYPE_MAPPED,
        MEM_CONTAINER_TYPE_CACHED,
        MEM_CONTAINER_TYPE_ALL,
        MEM_CONTAINER_TYPE_MAX,
};


cu
Adrian

-- 

       "Is there not promise of rain?" Ling Tan asked suddenly out
        of the darkness. There had been need of rain for many days.
       "Only a promise," Lao Er said.
                                       Pearl S. Buck - Dragon Seed

-
To: Adrian Bunk <bunk@...>
Cc: Andrew Morton <akpm@...>, <linux-kernel@...>
Date: Monday, September 10, 2007 - 10:41 pm

Yes, thinking again, what you say makes sense.


-- 
	Thanks,
	Balbir Singh
	Linux Technology Center
	IBM, ISTL
-
To: Balbir Singh <balbir@...>
Cc: Adrian Bunk <bunk@...>, Andrew Morton <akpm@...>, <linux-kernel@...>
Date: Monday, September 10, 2007 - 3:58 pm

Yes, typedefs are bad. And because it happens very so often,
I also have the link: http://lkml.org/lkml/2006/11/21/34



	Jan
-- 
-
To: Balbir Singh <balbir@...>
Cc: Adrian Bunk <bunk@...>, Andrew Morton <akpm@...>, <linux-kernel@...>
Date: Monday, September 10, 2007 - 3:59 pm

Humm. Judging from the @@-line, it looks like:

enum {
	MEM_CONTAINER_TYPE_WHATEVER
} mem_control_type;

making it actually a variable name. Confusing at best.


	Jan
-- 
-
To: Andrew Morton <akpm@...>, <davem@...>
Cc: <linux-kernel@...>, <netdev@...>
Date: Sunday, September 9, 2007 - 4:25 pm

raise_softirq_irqoff no longer has any modular user.

Signed-off-by: Adrian Bunk &lt;bunk@kernel.org&gt;

---
eff0407b63757cdd4164a0bdde0313e8f154b6dc 
diff --git a/kernel/softirq.c b/kernel/softirq.c
index abae56c..ce38b56 100644
--- a/kernel/softirq.c
+++ b/kernel/softirq.c
@@ -335,8 +335,6 @@ inline fastcall void raise_softirq_irqoff(unsigned int nr)
 		wakeup_softirqd();
 }
 
-EXPORT_SYMBOL(raise_softirq_irqoff);
-
 void fastcall raise_softirq(unsigned int nr)
 {
 	unsigned long flags;

-
To: Adrian Bunk <bunk@...>
Cc: Andrew Morton <akpm@...>, <davem@...>, <linux-kernel@...>, <netdev@...>
Date: Sunday, September 9, 2007 - 4:41 pm

This should probably go in through Dave's tree as it's removing this
rather annoying user.

-
To: <hch@...>
Cc: <bunk@...>, <akpm@...>, <linux-kernel@...>, <netdev@...>
Date: Wednesday, September 12, 2007 - 9:15 am

From: Christoph Hellwig &lt;hch@infradead.org&gt;

Yep, I've just tossed it into my tree.

Thanks.
-
To: Andrew Morton <akpm@...>, Robert Olsson <robert.olsson@...>, David S. Miller <davem@...>
Cc: <linux-kernel@...>, <netdev@...>
Date: Sunday, September 9, 2007 - 4:25 pm

This hydra had more than one head...

Signed-off-by: Adrian Bunk &lt;bunk@kernel.org&gt;

---

 arch/i386/kernel/irq.c    |    2 --
 arch/powerpc/kernel/irq.c |    1 -
 arch/s390/kernel/irq.c    |    1 -
 arch/sh/kernel/irq.c      |    1 -
 arch/x86_64/kernel/irq.c  |    1 -
 5 files changed, 6 deletions(-)

68791fe88172ac3c2dbb0fbbffb8befc7b59e3f7 
diff --git a/arch/i386/kernel/irq.c b/arch/i386/kernel/irq.c
index a6b2c7e..de1601f 100644
--- a/arch/i386/kernel/irq.c
+++ b/arch/i386/kernel/irq.c
@@ -231,8 +231,6 @@ asmlinkage void do_softirq(void)
 
 	local_irq_restore(flags);
 }
-
-EXPORT_SYMBOL(do_softirq);
 #endif
 
 /*
diff --git a/arch/powerpc/kernel/irq.c b/arch/powerpc/kernel/irq.c
index dfad0e4..65c2409 100644
--- a/arch/powerpc/kernel/irq.c
+++ b/arch/powerpc/kernel/irq.c
@@ -395,7 +395,6 @@ void do_softirq(void)
 
 	local_irq_restore(flags);
 }
-EXPORT_SYMBOL(do_softirq);
 
 
 /*
diff --git a/arch/s390/kernel/irq.c b/arch/s390/kernel/irq.c
index 8f0cbca..c36d812 100644
--- a/arch/s390/kernel/irq.c
+++ b/arch/s390/kernel/irq.c
@@ -95,7 +95,6 @@ asmlinkage void do_softirq(void)
 
 	local_irq_restore(flags);
 }
-EXPORT_SYMBOL(do_softirq);
 
 void init_irq_proc(void)
 {
diff --git a/arch/sh/kernel/irq.c b/arch/sh/kernel/irq.c
index 0340498..4b49d03 100644
--- a/arch/sh/kernel/irq.c
+++ b/arch/sh/kernel/irq.c
@@ -245,7 +245,6 @@ asmlinkage void do_softirq(void)
 
 	local_irq_restore(flags);
 }
-EXPORT_SYMBOL(do_softirq);
 #endif
 
 void __init init_IRQ(void)
diff --git a/arch/x86_64/kernel/irq.c b/arch/x86_64/kernel/irq.c
index 87423b7..3542f0c 100644
--- a/arch/x86_64/kernel/irq.c
+++ b/arch/x86_64/kernel/irq.c
@@ -236,4 +236,3 @@ asmlinkage void do_softirq(void)
 	}
  	local_irq_restore(flags);
 }
-EXPORT_SYMBOL(do_softirq);

-
To: <bunk@...>
Cc: <akpm@...>, <robert.olsson@...>, <linux-kernel@...>, <netdev@...>
Date: Wednesday, September 12, 2007 - 9:14 am

From: Adrian Bunk &lt;bunk@kernel.org&gt;

Applied, thanks.
-
To: Andrew Morton <akpm@...>, Ken'ichi Ohmichi <oomichi@...>, Dan Aloni <da-x@...>
Cc: <linux-kernel@...>, <kexec@...>
Date: Sunday, September 9, 2007 - 4:25 pm

This patch makes the following needlessly global code static:
- vmcoreinfo_data[]
- vmcoreinfo_size
- vmcoreinfo_append_str()

Signed-off-by: Adrian Bunk &lt;bunk@kernel.org&gt;

---

 include/linux/kexec.h |   14 -----------
 kernel/kexec.c        |   52 +++++++++++++++++++++++++-----------------
 2 files changed, 32 insertions(+), 34 deletions(-)

e6dbb01497c12aa69b47914da4db1cfd23e9813e 
diff --git a/include/linux/kexec.h b/include/linux/kexec.h
index 99f2d6f..7cce357 100644
--- a/include/linux/kexec.h
+++ b/include/linux/kexec.h
@@ -123,21 +123,8 @@ int kexec_should_crash(struct task_struct *);
 void crash_save_cpu(struct pt_regs *regs, int cpu);
 void crash_save_vmcoreinfo(void);
 void arch_crash_save_vmcoreinfo(void);
-void vmcoreinfo_append_str(const char *fmt, ...);
 unsigned long paddr_vmcoreinfo_note(void);
 
-#define SYMBOL(name) \
-	vmcoreinfo_append_str("SYMBOL(%s)=%lx\n", #name, (unsigned long)&amp;name)
-#define SIZE(name) \
-	vmcoreinfo_append_str("SIZE(%s)=%d\n", #name, sizeof(struct name))
-#define OFFSET(name, field) \
-	vmcoreinfo_append_str("OFFSET(%s.%s)=%d\n", #name, #field, \
-			      &amp;(((struct name *)0)-&gt;field))
-#define LENGTH(name, value) \
-	vmcoreinfo_append_str("LENGTH(%s)=%d\n", #name, value)
-#define CONFIG(name) \
-	vmcoreinfo_append_str("CONFIG_%s=y\n", #name)
-
 extern struct kimage *kexec_image;
 extern struct kimage *kexec_crash_image;
 
@@ -177,7 +164,6 @@ extern struct resource crashk_res;
 typedef u32 note_buf_t[KEXEC_NOTE_BYTES/4];
 extern note_buf_t *crash_notes;
 extern u32 vmcoreinfo_note[VMCOREINFO_NOTE_SIZE/4];
-extern unsigned int vmcoreinfo_size;
 extern unsigned int vmcoreinfo_max_size;
 
 
diff --git a/kernel/kexec.c b/kernel/kexec.c
index af2c035..c84a387 100644
--- a/kernel/kexec.c
+++ b/kernel/kexec.c
@@ -36,9 +36,9 @@
 note_buf_t* crash_notes;
 
 /* vmcoreinfo stuff */
-unsigned char vmcoreinfo_data[VMCOREINFO_BYTES];
+static unsigned char vmcoreinfo_data[VMCOREINFO_BYTES];
 u32 vmcoreinfo_no...
To: Adrian Bunk <bunk@...>
Cc: Andrew Morton <akpm@...>, Dan Aloni <da-x@...>, <kexec@...>, <linux-kernel@...>
Date: Sunday, September 9, 2007 - 10:55 pm

Hi Adrian,



The kernel compiling fails with your patch because architecture-specific
function should access the above data/function:

# make
[snip]
arch/ia64/kernel/machine_kexec.c: In function 'arch_crash_save_vmcoreinfo':
arch/ia64/kernel/machine_kexec.c:134: error: implicit declaration of function 'SYMBOL'
arch/ia64/kernel/machine_kexec.c:135: error: implicit declaration of function 'LENGTH'
arch/ia64/kernel/machine_kexec.c:139: error: implicit declaration of function 'SIZE'
arch/ia64/kernel/machine_kexec.c:139: error: 'node_memblk_s' undeclared (first use in this function)
arch/ia64/kernel/machine_kexec.c:139: error: (Each undeclared identifier is reported only once
arch/ia64/kernel/machine_kexec.c:139: error: for each function it appears in.)
arch/ia64/kernel/machine_kexec.c:140: error: implicit declaration of function 'OFFSET'
arch/ia64/kernel/machine_kexec.c:140: error: 'start_paddr' undeclared (first use in this function)
arch/ia64/kernel/machine_kexec.c:141: error: 'size' undeclared (first use in this function)
arch/ia64/kernel/machine_kexec.c:144: error: implicit declaration of function 'CONFIG'
arch/ia64/kernel/machine_kexec.c:144: error: 'PGTABLE_3' undeclared (first use in this function)
make[1]: *** [arch/ia64/kernel/machine_kexec.o] Error 1
make: *** [arch/ia64/kernel] Error 2
#


Thanks
Ken'ichi Ohmichi
-
To: Ken'ichi Ohmichi <oomichi@...>
Cc: Andrew Morton <akpm@...>, Dan Aloni <da-x@...>, <kexec@...>, <linux-kernel@...>
Date: Monday, September 10, 2007 - 8:20 am

Thanks, I missed this.

That's 80% my fault and 20% the fault of the usage of generic names 
SYMBOL/SIZE/OFFSET/LENGTH/CONFIG making it impossible to grep for them 
(and namespace conflicts quite possible).

Can we get these #define's properly prefixed (e.g. KEXEC_SYMBOL etc.) so 
that other people will not repeat my mistake and namespace conflicts 

TIA
Adrian

-- 

       "Is there not promise of rain?" Ling Tan asked suddenly out
        of the darkness. There had been need of rain for many days.
       "Only a promise," Lao Er said.
                                       Pearl S. Buck - Dragon Seed

-
To: Adrian Bunk <bunk@...>
Cc: Ken'ichi Ohmichi <oomichi@...>, Andrew Morton <akpm@...>, <kexec@...>, Dan Aloni <da-x@...>, <linux-kernel@...>
Date: Tuesday, September 11, 2007 - 1:53 am

CRASH_DUMP_ or VMCORE_ should be a better prefix as the dump filtering
functionality not directly related to kexec.

Thanks
Maneesh


-- 
Maneesh Soni
Linux Technology Center,
IBM India Systems and Technology Lab, 
Bangalore, India
-
To: <maneesh@...>
Cc: Adrian Bunk <bunk@...>, Andrew Morton <akpm@...>, <kexec@...>, Dan Aloni <da-x@...>, <linux-kernel@...>
Date: Wednesday, September 12, 2007 - 3:37 am

Hi Adrian, Maneesh,

Maneesh Soni wrote:
 &gt; On Mon, Sep 10, 2007 at 02:20:40PM +0200, Adrian Bunk wrote:
 &gt;&gt; On Mon, Sep 10, 2007 at 11:55:49AM +0900, Ken'ichi Ohmichi wrote:
 &gt;&gt;&gt; Hi Adrian,
 &gt;&gt;&gt;
 &gt;&gt;&gt;
 &gt;&gt;&gt; 2007/09/09 22:25:16 +0200, Adrian Bunk &lt;bunk@kernel.org&gt; wrote:
 &gt;&gt;&gt;&gt; On Fri, Aug 31, 2007 at 09:58:22PM -0700, Andrew Morton wrote:
 &gt;&gt;&gt;&gt;&gt; ...
 &gt;&gt;&gt;&gt;&gt; Changes since 2.6.23-rc3-mm1:
 &gt;&gt;&gt;&gt;&gt; ...
 &gt;&gt;&gt;&gt;&gt; +add-vmcoreinfo.patch
 &gt;&gt;&gt;&gt;&gt; ...
 &gt;&gt;&gt;&gt;&gt;  misc
 &gt;&gt;&gt;&gt;&gt; ...
 &gt;&gt;&gt;&gt; This patch makes the following needlessly global code static:
 &gt;&gt;&gt;&gt; - vmcoreinfo_data[]
 &gt;&gt;&gt;&gt; - vmcoreinfo_size
 &gt;&gt;&gt;&gt; - vmcoreinfo_append_str()
 &gt;&gt;&gt; The kernel compiling fails with your patch because architecture-specific
 &gt;&gt;&gt; function should access the above data/function:
 &gt;&gt;&gt;
 &gt;&gt;&gt; # make
 &gt;&gt;&gt; [snip]
 &gt;&gt;&gt; arch/ia64/kernel/machine_kexec.c: In function 'arch_crash_save_vmcoreinfo':
 &gt;&gt;&gt; arch/ia64/kernel/machine_kexec.c:134: error: implicit declaration of function 'SYMBOL'
 &gt;&gt;&gt; arch/ia64/kernel/machine_kexec.c:135: error: implicit declaration of function 'LENGTH'
 &gt;&gt;&gt; arch/ia64/kernel/machine_kexec.c:139: error: implicit declaration of function 'SIZE'
 &gt;&gt;&gt; arch/ia64/kernel/machine_kexec.c:139: error: 'node_memblk_s' undeclared (first use in this function)
 &gt;&gt;&gt; arch/ia64/kernel/machine_kexec.c:139: error: (Each undeclared identifier is reported only once
 &gt;&gt;&gt; arch/ia64/kernel/machine_kexec.c:139: error: for each function it appears in.)
 &gt;&gt;&gt; arch/ia64/kernel/machine_kexec.c:140: error: implicit declaration of function 'OFFSET'
 &gt;&gt;&gt; arch/ia64/kernel/machine_kexec.c:140: error: 'start_paddr' undeclared (first use in this function)
 &gt;&gt;&gt; arch/ia64/kernel/machine_kexec.c:141: erro...
To: Andrew Morton <akpm@...>, <trond.myklebust@...>
Cc: <linux-kernel@...>
Date: Sunday, September 9, 2007 - 4:25 pm

nfs_wb_page_priority() can now become static.

Signed-off-by: Adrian Bunk &lt;bunk@kernel.org&gt;

---

 fs/nfs/write.c         |    3 ++-
 include/linux/nfs_fs.h |    1 -
 2 files changed, 2 insertions(+), 2 deletions(-)

30370f47093c3d812929d84a5a6be79ccb55a2b3 
diff --git a/fs/nfs/write.c b/fs/nfs/write.c
index 3e9e268..37953fd 100644
--- a/fs/nfs/write.c
+++ b/fs/nfs/write.c
@@ -1424,7 +1424,8 @@ out:
 	return ret;
 }
 
-int nfs_wb_page_priority(struct inode *inode, struct page *page, int how)
+static int nfs_wb_page_priority(struct inode *inode, struct page *page,
+				int how)
 {
 	loff_t range_start = page_offset(page);
 	loff_t range_end = range_start + (loff_t)(PAGE_CACHE_SIZE - 1);
diff --git a/include/linux/nfs_fs.h b/include/linux/nfs_fs.h
index f5414fc..e247a40 100644
--- a/include/linux/nfs_fs.h
+++ b/include/linux/nfs_fs.h
@@ -430,7 +430,6 @@ extern long nfs_sync_mapping_wait(struct address_space *, struct writeback_contr
 extern int nfs_wb_all(struct inode *inode);
 extern int nfs_wb_nocommit(struct inode *inode);
 extern int nfs_wb_page(struct inode *inode, struct page* page);
-extern int nfs_wb_page_priority(struct inode *inode, struct page* page, int how);
 extern int nfs_wb_page_cancel(struct inode *inode, struct page* page);
 #if defined(CONFIG_NFS_V3) || defined(CONFIG_NFS_V4)
 extern int  nfs_commit_inode(struct inode *, int);

-
To: Andrew Morton <akpm@...>, Frank A Kingswood <frank@...>, Greg Kroah-Hartman <gregkh@...>
Cc: <linux-kernel@...>, <linux-usb-devel@...>
Date: Sunday, September 9, 2007 - 4:25 pm

This patch makes four needlessly global functions static.

Signed-off-by: Adrian Bunk &lt;bunk@kernel.org&gt;

---

 drivers/usb/serial/ch341.c |   10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

c7046a47d2d1dd5dc6a8fcc298b8c5f7497b3aaa 
diff --git a/drivers/usb/serial/ch341.c b/drivers/usb/serial/ch341.c
index eb68106..6b252ce 100644
--- a/drivers/usb/serial/ch341.c
+++ b/drivers/usb/serial/ch341.c
@@ -66,7 +66,8 @@ static int ch341_control_in(struct usb_device *dev,
 	return r;
 }
 
-int ch341_set_baudrate(struct usb_device *dev, struct ch341_private *priv)
+static int ch341_set_baudrate(struct usb_device *dev,
+			      struct ch341_private *priv)
 {
 	short a, b;
 	int r;
@@ -108,14 +109,15 @@ int ch341_set_baudrate(struct usb_device *dev, struct ch341_private *priv)
 	return r;
 }
 
-int ch341_set_handshake(struct usb_device *dev, struct ch341_private *priv)
+static int ch341_set_handshake(struct usb_device *dev,
+			       struct ch341_private *priv)
 {
 	dbg("ch341_set_handshake(%d,%d)", priv-&gt;dtr, priv-&gt;rts);
 	return ch341_control_out(dev, 0xa4,
 		~((priv-&gt;dtr?1&lt;&lt;5:0)|(priv-&gt;rts?1&lt;&lt;6:0)), 0);
 }
 
-int ch341_get_status(struct usb_device *dev)
+static int ch341_get_status(struct usb_device *dev)
 {
 	char *buffer;
 	int r;
@@ -142,7 +144,7 @@ out:	kfree(buffer);
 
 /* -------------------------------------------------------------------------- */
 
-int ch341_configure(struct usb_device *dev, struct ch341_private *priv)
+static int ch341_configure(struct usb_device *dev, struct ch341_private *priv)
 {
 	char *buffer;
 	int r;

-
To: Andrew Morton <akpm@...>, Shannon Nelson <shannon.nelson@...>, <dan.j.williams@...>
Cc: <linux-kernel@...>
Date: Sunday, September 9, 2007 - 4:24 pm

This patch makes three needlessly global functions static.

Signed-off-by: Adrian Bunk &lt;bunk@kernel.org&gt;

---

 drivers/dma/ioat_dma.c |    8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

c633b44cd60648f456a11bb38fd9193ce4d6acdc 
diff --git a/drivers/dma/ioat_dma.c b/drivers/dma/ioat_dma.c
index e4c3afe..66c5bb5 100644
--- a/drivers/dma/ioat_dma.c
+++ b/drivers/dma/ioat_dma.c
@@ -47,8 +47,8 @@
 static void ioat_dma_start_null_desc(struct ioat_dma_chan *ioat_chan);
 static void ioat_dma_memcpy_cleanup(struct ioat_dma_chan *ioat_chan);
 
-struct ioat_dma_chan *ioat_lookup_chan_by_index(struct ioatdma_device *device,
-						int index)
+static struct ioat_dma_chan *ioat_lookup_chan_by_index(struct ioatdma_device *device,
+						       int index)
 {
 	return device-&gt;idx[index];
 }
@@ -716,7 +716,7 @@ MODULE_PARM_DESC(ioat_interrupt_style,
  * ioat_dma_setup_interrupts - setup interrupt handler
  * @device: ioat device
  */
-int ioat_dma_setup_interrupts(struct ioatdma_device *device)
+static int ioat_dma_setup_interrupts(struct ioatdma_device *device)
 {
 	struct ioat_dma_chan *ioat_chan;
 	int err, i, j, msixcnt;
@@ -826,7 +826,7 @@ err_no_irq:
  * ioat_dma_remove_interrupts - remove whatever interrupts were set
  * @device: ioat device
  */
-void ioat_dma_remove_interrupts(struct ioatdma_device *device)
+static void ioat_dma_remove_interrupts(struct ioatdma_device *device)
 {
 	struct ioat_dma_chan *ioat_chan;
 	int i;

-
To: Andrew Morton <akpm@...>, Jens Axboe <jens.axboe@...>, Bartlomiej Zolnierkiewicz <bzolnier@...>
Cc: <linux-kernel@...>, <linux-ide@...>
Date: Sunday, September 9, 2007 - 4:24 pm

ide_get_error_location() is no longer used.

Signed-off-by: Adrian Bunk &lt;bunk@kernel.org&gt;

---

 drivers/ide/ide-io.c |   35 -----------------------------------
 include/linux/ide.h  |    5 -----
 2 files changed, 40 deletions(-)

924249789a0c0d577c5c5bfa91f4e514b7ebde60 
diff --git a/drivers/ide/ide-io.c b/drivers/ide/ide-io.c
index c1692d9..ec835e3 100644
--- a/drivers/ide/ide-io.c
+++ b/drivers/ide/ide-io.c
@@ -322,41 +322,6 @@ static void ide_complete_pm_request (ide_drive_t *drive, struct request *rq)
 	spin_unlock_irqrestore(&amp;ide_lock, flags);
 }
 
-/*
- * FIXME: probably move this somewhere else, name is bad too :)
- */
-u64 ide_get_error_location(ide_drive_t *drive, char *args)
-{
-	u32 high, low;
-	u8 hcyl, lcyl, sect;
-	u64 sector;
-
-	high = 0;
-	hcyl = args[5];
-	lcyl = args[4];
-	sect = args[3];
-
-	if (ide_id_has_flush_cache_ext(drive-&gt;id)) {
-		low = (hcyl &lt;&lt; 16) | (lcyl &lt;&lt; 8) | sect;
-		HWIF(drive)-&gt;OUTB(drive-&gt;ctl|0x80, IDE_CONTROL_REG);
-		high = ide_read_24(drive);
-	} else {
-		u8 cur = HWIF(drive)-&gt;INB(IDE_SELECT_REG);
-		if (cur &amp; 0x40) {
-			high = cur &amp; 0xf;
-			low = (hcyl &lt;&lt; 16) | (lcyl &lt;&lt; 8) | sect;
-		} else {
-			low = hcyl * drive-&gt;head * drive-&gt;sect;
-			low += lcyl * drive-&gt;sect;
-			low += sect - 1;
-		}
-	}
-
-	sector = ((u64) high &lt;&lt; 24) | low;
-	return sector;
-}
-EXPORT_SYMBOL(ide_get_error_location);
-
 /**
  *	ide_end_drive_cmd	-	end an explicit drive command
  *	@drive: command 
diff --git a/include/linux/ide.h b/include/linux/ide.h
index 48871f9..65de5c3 100644
--- a/include/linux/ide.h
+++ b/include/linux/ide.h
@@ -1088,11 +1088,6 @@ extern ide_startstop_t ide_do_reset (ide_drive_t *);
 extern void ide_init_drive_cmd (struct request *rq);
 
 /*
- * this function returns error location sector offset in case of a write error
- */
-extern u64 ide_get_error_location(ide_drive_t *, char *);
-
-/*
  * "action" parameter type for ide_do_dri...
To: Adrian Bunk <bunk@...>
Cc: Andrew Morton <akpm@...>, Jens Axboe <jens.axboe@...>, <linux-kernel@...>, <linux-ide@...>
Date: Tuesday, September 11, 2007 - 5:27 pm

Signed-off-by: Bartlomiej Zolnierkiewicz &lt;bzolnier@gmail.com&gt;

Since git-block contains the patch which removes the only user of
ide_get_error_location() I think that this patch should be also merged
through block tree.  Jens?

PS none of the blkdev_issue_flush() users uses *error_sector argument


-
To: Bartlomiej Zolnierkiewicz <bzolnier@...>
Cc: Adrian Bunk <bunk@...>, Andrew Morton <akpm@...>, <linux-kernel@...>, <linux-ide@...>
Date: Wednesday, September 12, 2007 - 1:54 am

I had hoped that the existance was enough incentive, but it didn't
happen. I'll make a note to kill that again.

-- 
Jens Axboe

-
To: Andrew Morton <akpm@...>, Nick Piggin <npiggin@...>, <rth@...>
Cc: <linux-kernel@...>
Date: Sunday, September 9, 2007 - 4:24 pm

This patch fixes the following compile error:

&lt;--  snip  --&gt;

...
  CC      arch/alpha/kernel/asm-offsets.s
In file included from /home/bunk/linux/kernel-2.6/linux-2.6.23-rc4-mm1/include/linux/bitops.h:17,
                 from /home/bunk/linux/kernel-2.6/linux-2.6.23-rc4-mm1/include/linux/kernel.h:15,
                 from /home/bunk/linux/kernel-2.6/linux-2.6.23-rc4-mm1/include/linux/sched.h:50,
                 from /home/bunk/linux/kernel-2.6/linux-2.6.23-rc4-mm1/arch/alpha/kernel/asm-offsets.c:9:
include2/asm/bitops.h: In function 'clear_bit_unlock':
include2/asm/bitops.h:75: error: implicit declaration of function 'smp_mb'
make[2]: *** [arch/alpha/kernel/asm-offsets.s] Error 1

&lt;--  snip  --&gt;

Signed-off-by: Adrian Bunk &lt;bunk@kernel.org&gt;

---
6df784c9aa4ba1ff2062b63e733c645e8b1e5203 
diff --git a/include/asm-alpha/bitops.h b/include/asm-alpha/bitops.h
index ffec8a8..381b4f5 100644
--- a/include/asm-alpha/bitops.h
+++ b/include/asm-alpha/bitops.h
@@ -2,6 +2,7 @@
 #define _ALPHA_BITOPS_H
 
 #include &lt;asm/compiler.h&gt;
+#include &lt;asm/barrier.h&gt;
 
 /*
  * Copyright 1994, Linus Torvalds.

-