2006-09-20 04:33:57

by Linus Torvalds

[permalink] [raw]
Subject: Arrr! Linux 2.6.18


Ahoy!

She's good to go, hoist anchor!

Here's some real booty for all you land-lubbers.

There's not too many changes, with t'bulk of the patch bein' defconfig
updates, but the shortlog at the aft of this here email describes the
details if you care, you scurvy dogs.

Header cleanups, various one-liners, and random other fixes.

Linus "but you can call me Cap'n"

---

Adrian Bunk:
Ahoy! Make fs/jffs2/nodelist.c:jffs2_obsolete_node_frag() static
fs/jffs2/xattr.c: maroon dead code

Al "Bilge rat" Viro:
[IPV4] fib_trie: missin' ntohl() when callin' fib_semantic_match()

Alexey Dobriyan:
headers_check: improve #include regexp
headers_check: clarify error message

Alexey Korolev:
[MTD] Fixes of performance and stability issues in CFI driver. Arrr!

Cap'n Andrew Morton:
Blimey! hvc_console suspend fix

Andy Walker:
[SPARC]: Fix mutimous regression in sys_getdomainname()

Arnaud Patard:
IPMI: Fix oops on ipmi_msghandler removal for non ipmi systems. Gar!

Artem B. Bityutskiy:
[MTD] NAND: keelhaul marooned URL in Kconfig

Aubrey Lee:
[MTD] DEVICES: Fill more device IDs in t'structure of m25p80

Auke Kok:
e1000: fix bilge-sucking TX timout hang regression for 82542rev3

Ben Dooks:
[ARM] 3784/1: S3C2413: keelhaul config for MACH_S3C2413/MACH_SMDK2413
[ARM] 3785/1: S3C2412: Fix idle code as default uses wrong clocks
[ARM] 3793/1: S3C2412: fix barnacles in wrong serial info struct
[ARM] 3794/1: S3C24XX: do not defined set_irq_wake when no CONFIG_PM

Benjamin Herrenschmidt:
[POWERPC] Fix G5 DART (IOMMU) race causin' occasional data corruption

Benjamin LaHaise:
i386/x86-64: Add core 2 to oprofile

Chas Williams:
[ATM]: [he] when transmit fails, unmap t'dma regions right smartly
[ATM]: [he] don't hold t'device lock when upcalling

Chuck Ebbert:
Kconfig: move CONFIG_EMBEDDED options to submenu. Gar!

Corey Minyard:
IPMI: keelhaul handlin' of OEM flags

Dale Farnsworth:
mv643xx_eth: Unmap DMA buffers in receive path

Dan Williams:
[ARM] 3780/1: Fix iop321 cpuid

Dave Kleikamp:
[Shiver me timbers] EXT2: Remove superblock lock contention in ext2_statfs

David S. Miller:
[OPENPROMIO]: Handle current_node bein' NULL correctly. Arrr!

David Woodhouse:
[MTD NAND] Fix lookup error in nand_get_flash_type()
[POWERPC] Implement PowerPC futex_atomic_cmpxchg_inatomic(). Arrr!
headers_check: reduce user-visible noise in <linux/nfs_fs.h>
headers_check: remove <asm/timex.h> from user export
headers_check: move inclusion of <linux/linkage.h> in <asm-i386/signal.h>
headers_check: move kernel-only #includes within <asm-i386/elf.h>
headers_check: don't expose PFN stuff to userspace in <asm-i386/setup.h>
headers_check: keelhaul userspace build of asm-mips/page.h
Fix scurvy 'make headers_check' on biarch architectures
Fix 'make headers_check' on s390
Fix 'make headers_check' on ia64
Fix 'make headers_check' on i386
Fix 'make headers_check' on x86_64
Fix 'make headers_check' for Alpha
headers_check: use a different default directory
Add headers_check' target to output of 'make help'

Davy Jones:
Didn't do anything, the scurvy lad. Ahoy!

Eli Cohen:
IPoIB: Retry failed send-only multicast group joins. Gar!

Frank Pavlic:
s390: minor s390 network driver fixes
s390: netiucv driver fixes
s390: Makefile cleanup
s390: qeth driver fixes [1/6]
s390: qeth driver fixes [2/6]
s390: qeth driver fixes [3/6]
s390: qeth driver fixes [4/6]
s390: qeth driver fixes [5/6]
s390: qeth driver fixes [6/6]

Geert Uytterhoeven:
Well blow me down, if he didn't fix 'make headers_check' on ia64

Greg KH:
We can not allow anonymous contributions to t'kernel

Haavard Skinnemoen:
MTD: Convert Atmel PRI information to AMD format
MTD: Add lock/unlock operations for Atmel AT49BV6416

Havasi Ferenc:
[JFFS2][SUMMARY] Fix a bilge-suckin' summary collectin' bug. Arrr!

Herbert Xu:
[NET]: Drop tx lock in dev_watchdog_up

HÃ¥vard Skinnemoen:
MTD: Fix bug in fixup_convert_atmel_pri

Imre Deak:
genirq: Fix the typo in IRQ resend smartly, cabin boy!

Ingo Molnar:
lockdep: double the number of stack-trace entries
genirq core: keelhaul handle_level_irq()

Ishai Rabinovitz:
IB/srp: Don't schedule reconnect from srp

James Morris:
[NETFILTER]: Add secmark headers to header-y

Jeremy Fitzhardinge:
x86: reserve a boot-loader ID number for Xen

Jon Loeliger:
[POWERPC] Add new, missin' argument to of_irq_map_raw() for 86xx. Arrr!

Josef 'Jeff' Sipek:
[MTD] Use SEEK_{SET,CUR,END} instead of hardcoded values in mtdchar lseek()

Josh Triplett:
Add preprocessed files (*.i) to .gitignore
Add mixed source and assembly listings (*.lst) to .gitignore
Add symbol type files (*.symtypes) to .gitignore

Kenneth Lee:
bug fix for bilge-suckin' in kernel/kmod.c

Kirill Korotaev:
[NEIGH]: neigh_table_clear() doesn't free stats

Linus "Cap'n" Torvalds:
x86: save/restore eflags in context switch
Avast! Belay those mmiocfg heuristics and blacklist changes
Linux v2.6.18. Arrr!

Matthew Wilcox:
headers_check: Clean up asm-parisc/page.h for user headers

Michael De Backer:
alim15x3.c: M5229 (rev c8) support for DMA cd-writer

Michael S. Tsirkin:
RDMA/cma: Increase t'IB CM retry count in CMA

Mike Miller:
cciss: version update, new hw

Mohan Kumar M:
[POWERPC] Fix interrupt clearin' in kdump shutdown sequence

NeilBrown:
knfsd: Have ext2 reject file handles with bad inode numbers early
knfsd: Make ext3 reject filehandles referrin' to invalid inode number

Olaf Hering:
[POWERPC] update prep_defconfig

Oleg Nesterov:
rcu_do_batch: make ->qlen decrement irq safe

Patrick McHardy:
[PACKET]: Don't truncate non-linear skbs with mmaped IO
[NETFILTER]: xt_quota: add missin' module aliases

Paul "Peg leg" Mackerras:
[POWERPC] Update defconfigs
[POWERPC] Fix MMIO ops to provide expected barrier behaviour

Ralph Siemsen:
[ARM] 3815/1: headers_install support for ARM

Remi Denis-Courmont:
[IPV6]: Accept -1 for IPV6_TCLASS

Richard Purdie:
MTD: [NAND] Fix t'sharpsl driver after breakage from a core conversion

Roland Dreier:
[ATM]: linux-atm-general mailin' list is subscribers only

Rolf Eike Beer:
remove #error on !PCI from pmc551.c

Ross Biro:
Add a missin' space that prevents buildin' modules that require host programs

Sachin P. Sant:
[POWERPC] kdump: Support kernels havin' 64k page size. Arrr!

Simon Horman:
[IPVS]: Document t'ports option to ip_vs_ftp in kernel-parameters.txt
[IPVS]: auto-help for ip_vs_ftp
[IPVS]: Make sure ip_vs_ftp ports are valid
[IPVS]: remove the debug option go ip_vs_ftp

Stefan Richter:
SCSI: lockdep annotation in scsi_send_eh_cmnd

Stephen Hemminger:
[TCP]: Turn ABC off. Arrr!
[BRIDGE]: random extra bytes on STP TCN packet
[NET]: Mark frame diverter for future removal. Arrr!

Suparna Bhattacharya:
ext3 sequential read regression fix

Takashi YOSHI:
MTD: Add Macronix MX29F040 to JEDEC

Takashi YOSHII:
[MTD] Maps: Add dependency on alternate probe methods to physmap

Tejun Heo:
libata: ignore CFA signature while sanity-checkin' an ATAPI device

Trond Myklebust:
NFS: Fix Oopsable condition in nfs_readpage_sync()
NFSv4: Fix incorrect semaphore release in _nfs4_do_open()
NFS: Fix nfs_page use after free issues in fs/nfs/write.c

Ulrich Kunitz:
zd1211rw: Fix of signal strength and quality measurement

Ville Herva:
block2mtd.c: Make kernel boot command line arguments work (try 4)

Vitaly Wool:
[MTD] NAND: OOB buffer offset fixups
[ARM] 3786/1: pnx4008: update defconfig
MTD NAND: OOB buffer offset fixups

Wong Hoi Sing Edison:
[TCP] tcp-lp: bug fix for oops in 2.6.18-rc6
[TCP] tcp-lp: update information to MAINTAINERS

YOSHIFUJI Hideaki:
[IPV6]: Fix tclass settin' for raw sockets.
[ATM] CLIP: Do not refer freed skbuff in clip_mkip(). Arrr!

Zoltan Sogor:
JFFS2: SUMMARY: keelhaul a summary collectin' bug


2006-09-20 04:59:39

by Michal Piotrowski

[permalink] [raw]
Subject: Re: Arrr! Linux 2.6.18

Ahoy!

On 20/09/06, Linus Torvalds <[email protected]> wrote:
>
> Ahoy!
>
> She's good to go, hoist anchor!
>
> Here's some real booty for all you land-lubbers.
>
> There's not too many changes, with t'bulk of the patch bein' defconfig
> updates, but the shortlog at the aft of this here email describes the
> details if you care, you scurvy dogs.

You have improved your piratish :)

>
> Header cleanups, various one-liners, and random other fixes.
>
> Linus "but you can call me Cap'n"
>

Michal "landlubber"

--
Michal K. K. Piotrowski
LTG - Linux Testers Group
(http://www.stardust.webpages.pl/ltg/)

2006-09-20 07:25:28

by Jes Sorensen

[permalink] [raw]
Subject: [patch] do_no_pfn()

Ahoy Cap'n

Since the ship has docked, the cargo doors must be all open and ready
to take another load of stuff destined for exotic places.

Yet again, I would like to add the do_no_pfn() patch which we
discussed earlier. Nothing has changed in it for months and you
haven't raised any eyebrows over it since the last discussion where
you said it could play within the rules, so maybe this is a good time?

Cheers,
Jes

Implement do_no_pfn() for handling mapping of memory without a struct
page backing it. This avoids creating fake page table entries for
regions which are not backed by real memory.

This feature is used by the MSPEC driver and other users, where it is
highly undesirable to have a struct page sitting behind the page
(for instance if the page is accessed in cached mode via the struct
page in parallel to the the driver accessing it uncached, which can
result in data corruption on some architectures, such as ia64).

This version uses specific NOPFN_{SIGBUS,OOM} return values, rather
than expect all negative pfn values would be an error. It also bugs on
cow mappings as this would not work with the VM.

Signed-off-by: Jes Sorensen <[email protected]>

---
include/linux/mm.h | 7 +++++
mm/memory.c | 62 ++++++++++++++++++++++++++++++++++++++++++++++++-----
2 files changed, 64 insertions(+), 5 deletions(-)

Index: linux-2.6/include/linux/mm.h
===================================================================
--- linux-2.6.orig/include/linux/mm.h
+++ linux-2.6/include/linux/mm.h
@@ -197,6 +197,7 @@ struct vm_operations_struct {
void (*open)(struct vm_area_struct * area);
void (*close)(struct vm_area_struct * area);
struct page * (*nopage)(struct vm_area_struct * area, unsigned long address, int *type);
+ unsigned long (*nopfn)(struct vm_area_struct * area, unsigned long address);
int (*populate)(struct vm_area_struct * area, unsigned long address, unsigned long len, pgprot_t prot, unsigned long pgoff, int nonblock);

/* notification that a previously read-only page is about to become
@@ -625,6 +626,12 @@ static inline int page_mapped(struct pag
#define NOPAGE_OOM ((struct page *) (-1))

/*
+ * Error return values for the *_nopfn functions
+ */
+#define NOPFN_SIGBUS ((unsigned long) -1)
+#define NOPFN_OOM ((unsigned long) -2)
+
+/*
* Different kinds of faults, as returned by handle_mm_fault().
* Used to decide whether a process gets delivered SIGBUS or
* just gets major/minor fault counters bumped up.
Index: linux-2.6/mm/memory.c
===================================================================
--- linux-2.6.orig/mm/memory.c
+++ linux-2.6/mm/memory.c
@@ -2211,6 +2211,52 @@ oom:
}

/*
+ * do_no_pfn() tries to create a new page mapping for a page without
+ * a struct_page backing it
+ *
+ * As this is called only for pages that do not currently exist, we
+ * do not need to flush old virtual caches or the TLB.
+ *
+ * We enter with non-exclusive mmap_sem (to exclude vma changes,
+ * but allow concurrent faults), and pte mapped but not yet locked.
+ * We return with mmap_sem still held, but pte unmapped and unlocked.
+ *
+ * It is expected that the ->nopfn handler always returns the same pfn
+ * for a given virtual mapping.
+ */
+static int do_no_pfn(struct mm_struct *mm, struct vm_area_struct *vma,
+ unsigned long address, pte_t *page_table, pmd_t *pmd,
+ int write_access)
+{
+ spinlock_t *ptl;
+ pte_t entry;
+ unsigned long pfn;
+ int ret = VM_FAULT_MINOR;
+
+ pte_unmap(page_table);
+ BUG_ON(!(vma->vm_flags & VM_PFNMAP));
+ BUG_ON(is_cow_mapping(vma->vm_flags));
+
+ pfn = vma->vm_ops->nopfn(vma, address & PAGE_MASK);
+ if (pfn == NOPFN_OOM)
+ return VM_FAULT_OOM;
+ if (pfn == NOPFN_SIGBUS)
+ return VM_FAULT_SIGBUS;
+
+ page_table = pte_offset_map_lock(mm, pmd, address, &ptl);
+
+ /* Only go through if we didn't race with anybody else... */
+ if (pte_none(*page_table)) {
+ entry = pfn_pte(pfn, vma->vm_page_prot);
+ if (write_access)
+ entry = maybe_mkwrite(pte_mkdirty(entry), vma);
+ set_pte_at(mm, address, page_table, entry);
+ }
+ pte_unmap_unlock(page_table, ptl);
+ return ret;
+}
+
+/*
* Fault of a previously existing named mapping. Repopulate the pte
* from the encoded file_pte if possible. This enables swappable
* nonlinear vmas.
@@ -2272,11 +2318,17 @@ static inline int handle_pte_fault(struc
old_entry = entry = *pte;
if (!pte_present(entry)) {
if (pte_none(entry)) {
- if (!vma->vm_ops || !vma->vm_ops->nopage)
- return do_anonymous_page(mm, vma, address,
- pte, pmd, write_access);
- return do_no_page(mm, vma, address,
- pte, pmd, write_access);
+ if (vma->vm_ops) {
+ if (vma->vm_ops->nopage)
+ return do_no_page(mm, vma, address,
+ pte, pmd,
+ write_access);
+ if (vma->vm_ops->nopfn)
+ return do_no_pfn(mm, vma, address, pte,
+ pmd, write_access);
+ }
+ return do_anonymous_page(mm, vma, address,
+ pte, pmd, write_access);
}
if (pte_file(entry))
return do_file_page(mm, vma, address,

2006-09-20 15:58:41

by Randy Dunlap

[permalink] [raw]
Subject: Re: [patch] do_no_pfn()

On 20 Sep 2006 03:25:25 -0400 Jes Sorensen wrote:

> include/linux/mm.h | 7 +++++
> mm/memory.c | 62 ++++++++++++++++++++++++++++++++++++++++++++++++-----
> 2 files changed, 64 insertions(+), 5 deletions(-)
>
> Index: linux-2.6/include/linux/mm.h
> ===================================================================
> --- linux-2.6.orig/include/linux/mm.h
> +++ linux-2.6/include/linux/mm.h

> @@ -625,6 +626,12 @@ static inline int page_mapped(struct pag
> #define NOPAGE_OOM ((struct page *) (-1))
>
> /*
> + * Error return values for the *_nopfn functions
> + */
> +#define NOPFN_SIGBUS ((unsigned long) -1)
> +#define NOPFN_OOM ((unsigned long) -2)

Is there any difference in the above and

#define NOPFN_SIGBUS -1UL
#define NOPFN_OOM -2UL

?
---
~Randy

2006-09-20 16:48:56

by Jes Sorensen

[permalink] [raw]
Subject: Re: [patch] do_no_pfn()

Randy.Dunlap wrote:
> On 20 Sep 2006 03:25:25 -0400 Jes Sorensen wrote:
>> +#define NOPFN_SIGBUS ((unsigned long) -1)
>> +#define NOPFN_OOM ((unsigned long) -2)
>
> Is there any difference in the above and
>
> #define NOPFN_SIGBUS -1UL
> #define NOPFN_OOM -2UL

I don't think there is, but I was trying to keep it consistent with the
NOPAGE_foo versions - the way it's done is more explicit so less likely
anyone will get confused over it.

I can change it if it's a sticking point, but I'd claim thats more noise
than it's worth.

Thanks,
Jes

2006-09-22 19:50:15

by Andrew Morton

[permalink] [raw]
Subject: Re: [patch] do_no_pfn()

On 20 Sep 2006 03:25:25 -0400
Jes Sorensen <[email protected]> wrote:

> Implement do_no_pfn() for handling mapping of memory without a struct
> page backing it. This avoids creating fake page table entries for
> regions which are not backed by real memory.
>
> This feature is used by the MSPEC driver and other users, where it is
> highly undesirable to have a struct page sitting behind the page
> (for instance if the page is accessed in cached mode via the struct
> page in parallel to the the driver accessing it uncached, which can
> result in data corruption on some architectures, such as ia64).
>
> This version uses specific NOPFN_{SIGBUS,OOM} return values, rather
> than expect all negative pfn values would be an error. It also bugs on
> cow mappings as this would not work with the VM.


How does this followup look?


We don't want the rarely-used do_no_pfn() to get inlined in the oft-used
handle_pte_fault(), using up icache. Mark it noinline and unlikely.


--- a/mm/memory.c~do_no_pfn-tweaks
+++ a/mm/memory.c
@@ -2276,8 +2276,10 @@ oom:
*
* It is expected that the ->nopfn handler always returns the same pfn
* for a given virtual mapping.
+ *
+ * Mark this `noinline' to prevent it from bloating the main pagefault code.
*/
-static int do_no_pfn(struct mm_struct *mm, struct vm_area_struct *vma,
+static noinline int do_no_pfn(struct mm_struct *mm, struct vm_area_struct *vma,
unsigned long address, pte_t *page_table, pmd_t *pmd,
int write_access)
{
@@ -2376,7 +2378,7 @@ static inline int handle_pte_fault(struc
return do_no_page(mm, vma, address,
pte, pmd,
write_access);
- if (vma->vm_ops->nopfn)
+ if (unlikely(vma->vm_ops->nopfn))
return do_no_pfn(mm, vma, address, pte,
pmd, write_access);
}
_

2006-09-22 21:51:28

by Judith Lebzelter

[permalink] [raw]
Subject: Re: Arrr! Linux 2.6.18

>
> Dale Farnsworth:
> mv643xx_eth: Unmap DMA buffers in receive path
>

In OSDL's automated cross-compile for powerpc64, kernel 2.6.18 had this
unexpected error:

drivers/net/mv643xx_eth.c: In function 'mv643xx_eth_receive_queue':
drivers/net/mv643xx_eth.c:388: error: 'RX_SKB_SIZE' undeclared (first use in this function)

Here is a patch that stops the error.

Judith Lebzelter
OSDL

--- drivers/net/mv643xx_eth.c.old 2006-09-22 11:22:47.951049416 -0700
+++ drivers/net/mv643xx_eth.c 2006-09-22 11:23:17.787625304 -0700
@@ -385,7 +385,7 @@
struct pkt_info pkt_info;

while (budget-- > 0 && eth_port_receive(mp, &pkt_info) == ETH_OK) {
- dma_unmap_single(NULL, pkt_info.buf_ptr, RX_SKB_SIZE,
+ dma_unmap_single(NULL, pkt_info.buf_ptr, ETH_RX_SKB_SIZE,
DMA_FROM_DEVICE);
mp->rx_desc_count--;
received_packets++;

2006-09-22 22:08:29

by Jeff Garzik

[permalink] [raw]
Subject: Re: Arrr! Linux 2.6.18

Judith Lebzelter wrote:
>> Dale Farnsworth:
>> mv643xx_eth: Unmap DMA buffers in receive path
>>
>
> In OSDL's automated cross-compile for powerpc64, kernel 2.6.18 had this
> unexpected error:
>
> drivers/net/mv643xx_eth.c: In function 'mv643xx_eth_receive_queue':
> drivers/net/mv643xx_eth.c:388: error: 'RX_SKB_SIZE' undeclared (first use in this function)
>
> Here is a patch that stops the error.
>
> Judith Lebzelter
> OSDL
>
> --- drivers/net/mv643xx_eth.c.old 2006-09-22 11:22:47.951049416 -0700
> +++ drivers/net/mv643xx_eth.c 2006-09-22 11:23:17.787625304 -0700
> @@ -385,7 +385,7 @@
> struct pkt_info pkt_info;
>
> while (budget-- > 0 && eth_port_receive(mp, &pkt_info) == ETH_OK) {
> - dma_unmap_single(NULL, pkt_info.buf_ptr, RX_SKB_SIZE,
> + dma_unmap_single(NULL, pkt_info.buf_ptr, ETH_RX_SKB_SIZE,
> DMA_FROM_DEVICE);

Man, talk about timing. I just sent this to Andrew & Linus just a few
seconds ago :)

Jeff



2006-09-22 22:57:18

by Dale Farnsworth

[permalink] [raw]
Subject: Re: Arrr! Linux 2.6.18

On Fri, Sep 22, 2006 at 06:08:25PM -0400, Jeff Garzik wrote:
> Judith Lebzelter wrote:
> >>Dale Farnsworth:
> >> mv643xx_eth: Unmap DMA buffers in receive path
> >
> >In OSDL's automated cross-compile for powerpc64, kernel 2.6.18 had this
> >unexpected error:
> >
> >drivers/net/mv643xx_eth.c: In function 'mv643xx_eth_receive_queue':
> >drivers/net/mv643xx_eth.c:388: error: 'RX_SKB_SIZE' undeclared (first use
> >in this function)
> >
> >Here is a patch that stops the error.
> >
> >Judith Lebzelter
> >OSDL
> >
> >--- drivers/net/mv643xx_eth.c.old 2006-09-22 11:22:47.951049416 -0700
> >+++ drivers/net/mv643xx_eth.c 2006-09-22 11:23:17.787625304 -0700
> >@@ -385,7 +385,7 @@
> > struct pkt_info pkt_info;
> >
> > while (budget-- > 0 && eth_port_receive(mp, &pkt_info) == ETH_OK) {
> >- dma_unmap_single(NULL, pkt_info.buf_ptr, RX_SKB_SIZE,
> >+ dma_unmap_single(NULL, pkt_info.buf_ptr, ETH_RX_SKB_SIZE,
> > DMA_FROM_DEVICE);
>
> Man, talk about timing. I just sent this to Andrew & Linus just a few
> seconds ago :)
>
> Jeff

And I sent the same patch to you and netdev 2 days ago. :)

Did you get the accompanying patch that removes this driver
from the powerpc64 build? Or shall I resend it?

-Dale

2006-09-22 22:58:35

by Jeff Garzik

[permalink] [raw]
Subject: Re: Arrr! Linux 2.6.18

Dale Farnsworth wrote:
> And I sent the same patch to you and netdev 2 days ago. :)
>
> Did you get the accompanying patch that removes this driver
> from the powerpc64 build? Or shall I resend it?


I see both patches from you in my Pending folder. I was just a dumbass. :)

Jeff


2006-09-25 09:31:15

by Jes Sorensen

[permalink] [raw]
Subject: Re: [patch] do_no_pfn()

Andrew Morton wrote:

> How does this followup look?
>
> We don't want the rarely-used do_no_pfn() to get inlined in the oft-used
> handle_pte_fault(), using up icache. Mark it noinline and unlikely.


I'd say it looks good - will give a microscopic slowdown for do_no_pfn
but compared to the overall benefit I think thats more than acceptable.

Acked-by: Jes Sorensen <[email protected]>

Cheers,
Jes

> --- a/mm/memory.c~do_no_pfn-tweaks
> +++ a/mm/memory.c
> @@ -2276,8 +2276,10 @@ oom:
> *
> * It is expected that the ->nopfn handler always returns the same pfn
> * for a given virtual mapping.
> + *
> + * Mark this `noinline' to prevent it from bloating the main pagefault code.
> */
> -static int do_no_pfn(struct mm_struct *mm, struct vm_area_struct *vma,
> +static noinline int do_no_pfn(struct mm_struct *mm, struct vm_area_struct *vma,
> unsigned long address, pte_t *page_table, pmd_t *pmd,
> int write_access)
> {
> @@ -2376,7 +2378,7 @@ static inline int handle_pte_fault(struc
> return do_no_page(mm, vma, address,
> pte, pmd,
> write_access);
> - if (vma->vm_ops->nopfn)
> + if (unlikely(vma->vm_ops->nopfn))
> return do_no_pfn(mm, vma, address, pte,
> pmd, write_access);
> }
> _

2006-09-29 08:36:11

by Mark Lord

[permalink] [raw]
Subject: Re: Arrr! Linux 2.6.18

Mmm.. definite regression with -final versus -rc6.

My Latitude-X1 notebook loses video on resume-from-ram
with -final. Worked fine with all versions from 2.6.16
through 2.6.18-rc6. So something at the last moment broke it.

I'm travelling with it all this month, with only occasional
access here. But any suggestions of *specific* patches to
try reverting would be welcome. git-bisect is a non-starter.

Cheers

Mark Lord

2006-09-29 08:40:12

by Mark Lord

[permalink] [raw]
Subject: Re: Arrr! Linux 2.6.18

Linus Torvalds wrote:
> ..
> Cap'n Andrew Morton:
> Blimey! hvc_console suspend fix

Mmm.. I wonder if this could be what killed resume-from-RAM
on my notebook, between -rc6 and -final ?

Andrew, can you send me just that one patch, and I'll try reverting it.

Thanks.

Mark

2006-09-29 08:44:38

by Andrew Morton

[permalink] [raw]
Subject: Re: Arrr! Linux 2.6.18

On Fri, 29 Sep 2006 04:40:03 -0400
Mark Lord <[email protected]> wrote:

> Linus Torvalds wrote:
> > ..
> > Cap'n Andrew Morton:
> > Blimey! hvc_console suspend fix
>
> Mmm.. I wonder if this could be what killed resume-from-RAM
> on my notebook, between -rc6 and -final ?
>
> Andrew, can you send me just that one patch, and I'll try reverting it.
>

From: Andrew Morton <[email protected]>

Fix http://bugzilla.kernel.org/show_bug.cgi?id=7152

Cc: Michael Tautschnig <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
---

drivers/char/hvc_console.c | 1 +
1 file changed, 1 insertion(+)

diff -puN drivers/char/hvc_console.c~hvc_console-suspend-fix drivers/char/hvc_console.c
--- a/drivers/char/hvc_console.c~hvc_console-suspend-fix
+++ a/drivers/char/hvc_console.c
@@ -668,6 +668,7 @@ int khvcd(void *unused)
do {
poll_mask = 0;
hvc_kicked = 0;
+ try_to_freeze();
wmb();
if (cpus_empty(cpus_in_xmon)) {
spin_lock(&hvc_structs_lock);
_

2006-09-29 14:49:14

by Linus Torvalds

[permalink] [raw]
Subject: Re: Arrr! Linux 2.6.18



On Fri, 29 Sep 2006, Mark Lord wrote:
>
> My Latitude-X1 notebook loses video on resume-from-ram
> with -final. Worked fine with all versions from 2.6.16
> through 2.6.18-rc6. So something at the last moment broke it.

Well, try -rc7. -rc6 wasn't actually the last rc.

> I'm travelling with it all this month, with only occasional
> access here. But any suggestions of *specific* patches to
> try reverting would be welcome. git-bisect is a non-starter.

git bisect tends to often be faster than the alternatives, but yeah, since
there's something like 200+ patches in between it's still around 8 reboots

That said, a quick look doesn't show anything really suspicuous.

(Hint for everybody: you can do something like

gitk v2.6.18-rc6..v2.6.18 drivers/

to see all patches that touch just drivers)

I don't see anything really suspicious. The "hvc_console suspend fix"
you already noted should not even be compiled on a regular laptop, afaik.

One of the nice things with git bisect is that if you have git on that
machine at all, even if you just test one or two kernels (rather than the
eight you need to pinpoint it exactly), you'll still help pinpointing a
_lot_ (ie if you test two kernels, we should have the list of commits
narrowed down from 200+ to just 53 or so).

Linus

2006-09-29 17:52:41

by Mark Lord

[permalink] [raw]
Subject: Re: Arrr! Linux 2.6.18

Andrew Morton wrote:
> On Fri, 29 Sep 2006 04:40:03 -0400
> Mark Lord <[email protected]> wrote:
>
>> Linus Torvalds wrote:
>>> ..
>>> Cap'n Andrew Morton:
>>> Blimey! hvc_console suspend fix
>> Mmm.. I wonder if this could be what killed resume-from-RAM
>> on my notebook, between -rc6 and -final ?
>>
>> Andrew, can you send me just that one patch, and I'll try reverting it.
..
> --- a/drivers/char/hvc_console.c~hvc_console-suspend-fix
> +++ a/drivers/char/hvc_console.c

ARrrgyeeematey.. the Adm'rl was right about this,
my kernel doesn't even use that source file.

I'll look through all of the post-rc6 changes and see if anything
else might be a candidate.

Thanks

2006-09-29 19:40:30

by Rafael J. Wysocki

[permalink] [raw]
Subject: Re: Arrr! Linux 2.6.18

On Friday, 29 September 2006 19:52, Mark Lord wrote:
> Andrew Morton wrote:
> > On Fri, 29 Sep 2006 04:40:03 -0400
> > Mark Lord <[email protected]> wrote:
> >
> >> Linus Torvalds wrote:
> >>> ..
> >>> Cap'n Andrew Morton:
> >>> Blimey! hvc_console suspend fix
> >> Mmm.. I wonder if this could be what killed resume-from-RAM
> >> on my notebook, between -rc6 and -final ?
> >>
> >> Andrew, can you send me just that one patch, and I'll try reverting it.
> ..
> > --- a/drivers/char/hvc_console.c~hvc_console-suspend-fix
> > +++ a/drivers/char/hvc_console.c
>
> ARrrgyeeematey.. the Adm'rl was right about this,
> my kernel doesn't even use that source file.
>
> I'll look through all of the post-rc6 changes and see if anything
> else might be a candidate.

Or could your .config change between -rc6 and -final?

Rafael


--
You never change things by fighting the existing reality.
R. Buckminster Fuller

2006-09-29 19:58:51

by Mark Lord

[permalink] [raw]
Subject: Re: Arrr! Linux 2.6.18

Mark Lord wrote:
>> Mark Lord <[email protected]> wrote:
..
>>> Mmm.. I wonder if this could be what killed resume-from-RAM
>>> on my notebook, between -rc6 and -final ?
..
> I'll look through all of the post-rc6 changes and see if anything
> else might be a candidate.

Thus far, 2.6.18-rc7 seems to be okay, though it will take a day
or so to win full confidence here. So now to pick over the rc7-final
patches..

Cheers

2006-09-30 15:51:23

by Chuck Ebbert

[permalink] [raw]
Subject: Re: Arrr! Linux 2.6.18

In-Reply-To: <[email protected]>

On Tue, 19 Sep 2006 21:33:54 -0700, Linus Torvalds wrote:

> She's good to go, hoist anchor!
>
> Here's some real booty for all you land-lubbers.

> Davy Jones:
> Didn't do anything, the scurvy lad. Ahoy!

"I turned leeward in time to witness the full sail yardarm give way and
came crashing down on my midshipman's hind quarters. He let out a scream
that could be heard all the way down in Davy Jones' locker. Micky
Dolenz's locker too, and Peter Tork's locker. All the Monkees had
lockers."
-- Crappy Jack the Sailor