linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* linux-next: manual merge of the kvm tree with the s390 tree
@ 2020-05-29  6:46 Stephen Rothwell
  2020-06-04  3:05 ` Stephen Rothwell
  0 siblings, 1 reply; 14+ messages in thread
From: Stephen Rothwell @ 2020-05-29  6:46 UTC (permalink / raw)
  To: Paolo Bonzini, KVM, Heiko Carstens, Vasily Gorbik, Christian Borntraeger
  Cc: Linux Next Mailing List, Linux Kernel Mailing List,
	David Hildenbrand, Sven Schnelle

[-- Attachment #1: Type: text/plain, Size: 1213 bytes --]

Hi all,

Today's linux-next merge of the kvm tree got a conflict in:

  arch/s390/kvm/vsie.c

between commit:

  0b0ed657fe00 ("s390: remove critical section cleanup from entry.S")

from the s390 tree and commit:

  d075fc3154be ("KVM: s390: vsie: Move conditional reschedule")

from the kvm tree.

I fixed it up (see below) and can carry the fix as necessary. This
is now fixed as far as linux-next is concerned, but any non trivial
conflicts should be mentioned to your upstream maintainer when your tree
is submitted for merging.  You may also want to consider cooperating
with the maintainer of the conflicting tree to minimise any particularly
complex conflicts.

-- 
Cheers,
Stephen Rothwell

diff --cc arch/s390/kvm/vsie.c
index 4fde24a1856e,ef05b4e167fb..000000000000
--- a/arch/s390/kvm/vsie.c
+++ b/arch/s390/kvm/vsie.c
@@@ -1000,9 -1000,9 +1000,6 @@@ static int do_vsie_run(struct kvm_vcpu 
  
  	handle_last_fault(vcpu, vsie_page);
  
- 	if (need_resched())
- 		schedule();
 -	if (test_cpu_flag(CIF_MCCK_PENDING))
 -		s390_handle_mcck();
--
  	srcu_read_unlock(&vcpu->kvm->srcu, vcpu->srcu_idx);
  
  	/* save current guest state of bp isolation override */

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: linux-next: manual merge of the kvm tree with the s390 tree
  2020-05-29  6:46 linux-next: manual merge of the kvm tree with the s390 tree Stephen Rothwell
@ 2020-06-04  3:05 ` Stephen Rothwell
  0 siblings, 0 replies; 14+ messages in thread
From: Stephen Rothwell @ 2020-06-04  3:05 UTC (permalink / raw)
  To: Paolo Bonzini, KVM, Heiko Carstens, Vasily Gorbik, Christian Borntraeger
  Cc: Linux Next Mailing List, Linux Kernel Mailing List,
	David Hildenbrand, Sven Schnelle

[-- Attachment #1: Type: text/plain, Size: 1047 bytes --]

Hi all,

On Fri, 29 May 2020 16:46:13 +1000 Stephen Rothwell <sfr@canb.auug.org.au> wrote:
>
> Today's linux-next merge of the kvm tree got a conflict in:
> 
>   arch/s390/kvm/vsie.c
> 
> between commit:
> 
>   0b0ed657fe00 ("s390: remove critical section cleanup from entry.S")
> 
> from the s390 tree and commit:
> 
>   d075fc3154be ("KVM: s390: vsie: Move conditional reschedule")
> 
> from the kvm tree.
> 
> diff --cc arch/s390/kvm/vsie.c
> index 4fde24a1856e,ef05b4e167fb..000000000000
> --- a/arch/s390/kvm/vsie.c
> +++ b/arch/s390/kvm/vsie.c
> @@@ -1000,9 -1000,9 +1000,6 @@@ static int do_vsie_run(struct kvm_vcpu 
>   
>   	handle_last_fault(vcpu, vsie_page);
>   
> - 	if (need_resched())
> - 		schedule();
>  -	if (test_cpu_flag(CIF_MCCK_PENDING))
>  -		s390_handle_mcck();
> --
>   	srcu_read_unlock(&vcpu->kvm->srcu, vcpu->srcu_idx);
>   
>   	/* save current guest state of bp isolation override */

This is now a conflict between the s390 tree and Linus' tree.

-- 
Cheers,
Stephen Rothwell

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: linux-next: manual merge of the kvm tree with the s390 tree
  2016-07-14  4:03 Stephen Rothwell
@ 2016-07-14  6:58 ` David Hildenbrand
  0 siblings, 0 replies; 14+ messages in thread
From: David Hildenbrand @ 2016-07-14  6:58 UTC (permalink / raw)
  To: Stephen Rothwell
  Cc: Marcelo Tosatti, Gleb Natapov, kvm, Martin Schwidefsky,
	Heiko Carstens, linux-next, linux-kernel

> Hi all,
> 
> Today's linux-next merge of the kvm tree got a conflict in:
> 
>   arch/s390/mm/gmap.c
> 
> between commit:
> 
>   f04540298440 ("s390/mm: fix gmap tlb flush issues")
> 
> from the s390 tree and commit:
> 
>   6ea427bbbd40 ("s390/mm: add reference counter to gmap structure")
> 
> from the kvm tree.
> 
> I fixed it up (I just assumed that the update to gmap_free is no longer
> needed) and can carry the fix as necessary. This is now fixed as far as
> linux-next is concerned, but any non trivial conflicts should be mentioned
> to your upstream maintainer when your tree is submitted for merging.
> You may also want to consider cooperating with the maintainer of the
> conflicting tree to minimise any particularly complex conflicts.
> 

Yes, the tlb flush will be done in gmap_remove() instead of in gmap_free(),
which is also fixed by commit f04540298440. Unfortunately, that stable fix was
inevitable and collided with the already submitted patches for nested
virtualization.

Thanks for fixing that up, looks good to me.

David

^ permalink raw reply	[flat|nested] 14+ messages in thread

* linux-next: manual merge of the kvm tree with the s390 tree
@ 2016-07-14  4:03 Stephen Rothwell
  2016-07-14  6:58 ` David Hildenbrand
  0 siblings, 1 reply; 14+ messages in thread
From: Stephen Rothwell @ 2016-07-14  4:03 UTC (permalink / raw)
  To: Marcelo Tosatti, Gleb Natapov, kvm, Martin Schwidefsky, Heiko Carstens
  Cc: linux-next, linux-kernel, David Hildenbrand

Hi all,

Today's linux-next merge of the kvm tree got a conflict in:

  arch/s390/mm/gmap.c

between commit:

  f04540298440 ("s390/mm: fix gmap tlb flush issues")

from the s390 tree and commit:

  6ea427bbbd40 ("s390/mm: add reference counter to gmap structure")

from the kvm tree.

I fixed it up (I just assumed that the update to gmap_free is no longer
needed) and can carry the fix as necessary. This is now fixed as far as
linux-next is concerned, but any non trivial conflicts should be mentioned
to your upstream maintainer when your tree is submitted for merging.
You may also want to consider cooperating with the maintainer of the
conflicting tree to minimise any particularly complex conflicts.

-- 
Cheers,
Stephen Rothwell

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: linux-next: manual merge of the kvm tree with the s390 tree
  2016-06-29  4:36 Stephen Rothwell
@ 2016-06-29  5:47 ` Heiko Carstens
  0 siblings, 0 replies; 14+ messages in thread
From: Heiko Carstens @ 2016-06-29  5:47 UTC (permalink / raw)
  To: Stephen Rothwell
  Cc: Marcelo Tosatti, Gleb Natapov, kvm, Martin Schwidefsky,
	linux-next, linux-kernel, Janosch Frank, Christian Borntraeger

On Wed, Jun 29, 2016 at 02:36:58PM +1000, Stephen Rothwell wrote:
> Hi all,
> 
> Today's linux-next merge of the kvm tree got a conflict in:
> 
>   arch/s390/hypfs/hypfs_diag.c
> 
> between commit:
> 
>   e030c1125eab ("s390/hypfs: use basic block for diag inline assembly")
> 
> from the s390 tree and commit:
> 
>   e65f30e0cb29 ("s390: hypfs: Move diag implementation and data definitions")
> 
> from the kvm tree.
> 
> I fixed it up (my fixup patch now looks like below) and can carry the
> fix as necessary. This is now fixed as far as linux-next is concerned,
> but any non trivial conflicts should be mentioned to your upstream
> maintainer when your tree is submitted for merging.  You may also want
> to consider cooperating with the maintainer of the conflicting tree to
> minimise any particularly complex conflicts.
> 
> From: Stephen Rothwell <sfr@canb.auug.org.au>
> Date: Tue, 14 Jun 2016 14:47:33 +1000
> Subject: [PATCH] s390: merge fix up for __diag204 move
> 
> Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au>
> ---
>  arch/s390/kernel/diag.c | 14 ++++++++------
>  1 file changed, 8 insertions(+), 6 deletions(-)

The fix looks good. Thanks!

^ permalink raw reply	[flat|nested] 14+ messages in thread

* linux-next: manual merge of the kvm tree with the s390 tree
@ 2016-06-29  4:36 Stephen Rothwell
  2016-06-29  5:47 ` Heiko Carstens
  0 siblings, 1 reply; 14+ messages in thread
From: Stephen Rothwell @ 2016-06-29  4:36 UTC (permalink / raw)
  To: Marcelo Tosatti, Gleb Natapov, kvm, Martin Schwidefsky, Heiko Carstens
  Cc: linux-next, linux-kernel, Janosch Frank, Christian Borntraeger

Hi all,

Today's linux-next merge of the kvm tree got a conflict in:

  arch/s390/hypfs/hypfs_diag.c

between commit:

  e030c1125eab ("s390/hypfs: use basic block for diag inline assembly")

from the s390 tree and commit:

  e65f30e0cb29 ("s390: hypfs: Move diag implementation and data definitions")

from the kvm tree.

I fixed it up (my fixup patch now looks like below) and can carry the
fix as necessary. This is now fixed as far as linux-next is concerned,
but any non trivial conflicts should be mentioned to your upstream
maintainer when your tree is submitted for merging.  You may also want
to consider cooperating with the maintainer of the conflicting tree to
minimise any particularly complex conflicts.

From: Stephen Rothwell <sfr@canb.auug.org.au>
Date: Tue, 14 Jun 2016 14:47:33 +1000
Subject: [PATCH] s390: merge fix up for __diag204 move

Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au>
---
 arch/s390/kernel/diag.c | 14 ++++++++------
 1 file changed, 8 insertions(+), 6 deletions(-)

diff --git a/arch/s390/kernel/diag.c b/arch/s390/kernel/diag.c
index a44faf4a0454..a97354c8c667 100644
--- a/arch/s390/kernel/diag.c
+++ b/arch/s390/kernel/diag.c
@@ -162,25 +162,27 @@ int diag14(unsigned long rx, unsigned long ry1, unsigned long subcode)
 }
 EXPORT_SYMBOL(diag14);
 
-static inline int __diag204(unsigned long subcode, unsigned long size, void *addr)
+static inline int __diag204(unsigned long *subcode, unsigned long size, void *addr)
 {
-	register unsigned long _subcode asm("0") = subcode;
+	register unsigned long _subcode asm("0") = *subcode;
 	register unsigned long _size asm("1") = size;
 
 	asm volatile(
 		"	diag	%2,%0,0x204\n"
-		"0:\n"
+		"0:	nopr	%%r7\n"
 		EX_TABLE(0b,0b)
 		: "+d" (_subcode), "+d" (_size) : "d" (addr) : "memory");
-	if (_subcode)
-		return -1;
+	*subcode = _subcode;
 	return _size;
 }
 
 int diag204(unsigned long subcode, unsigned long size, void *addr)
 {
 	diag_stat_inc(DIAG_STAT_X204);
-	return __diag204(subcode, size, addr);
+	size = __diag204(&subcode, size, addr);
+	if (subcode)
+		return -1;
+	return size;
 }
 EXPORT_SYMBOL(diag204);
 
-- 
2.8.1

-- 
Cheers,
Stephen Rothwell

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* linux-next: manual merge of the kvm tree with the s390 tree
@ 2014-10-07  4:59 Stephen Rothwell
  0 siblings, 0 replies; 14+ messages in thread
From: Stephen Rothwell @ 2014-10-07  4:59 UTC (permalink / raw)
  To: Marcelo Tosatti, Gleb Natapov, Martin Schwidefsky, Heiko Carstens
  Cc: linux-next, linux-kernel, Dominik Dingel, Christian Borntraeger,
	Paolo Bonzini

[-- Attachment #1: Type: text/plain, Size: 4720 bytes --]

Hi all,

Today's linux-next merge of the kvm tree got a conflict in
arch/s390/mm/pgtable.c between commit 9511571c4f0e ("s390: mm: fixing
calls of pte_unmap_unlock") from the s390 tree and commit dc77d344b41f
("KVM: s390/mm: fix up indentation of set_guest_storage_key") from the
kvm tree.

I fixed it up (see below) and can carry the fix as necessary (no action
is required).

-- 
Cheers,
Stephen Rothwell                    sfr@canb.auug.org.au

diff --cc arch/s390/mm/pgtable.c
index a0f934a435e2,296b61a4af59..000000000000
--- a/arch/s390/mm/pgtable.c
+++ b/arch/s390/mm/pgtable.c
@@@ -644,82 -656,29 +656,29 @@@ void __gmap_zap(struct gmap *gmap, unsi
  	}
  	pgste_set_unlock(ptep, pgste);
  out_pte:
 -	pte_unmap_unlock(*ptep, ptl);
 +	pte_unmap_unlock(ptep, ptl);
  }
- 
- /*
-  * this function is assumed to be called with mmap_sem held
-  */
- void __gmap_zap(unsigned long address, struct gmap *gmap)
- {
- 	unsigned long *table, *segment_ptr;
- 	unsigned long segment, pgstev, ptev;
- 	struct gmap_pgtable *mp;
- 	struct page *page;
- 
- 	segment_ptr = gmap_table_walk(address, gmap);
- 	if (IS_ERR(segment_ptr))
- 		return;
- 	segment = *segment_ptr;
- 	if (segment & _SEGMENT_ENTRY_INVALID)
- 		return;
- 	page = pfn_to_page(segment >> PAGE_SHIFT);
- 	mp = (struct gmap_pgtable *) page->index;
- 	address = mp->vmaddr | (address & ~PMD_MASK);
- 	/* Page table is present */
- 	table = (unsigned long *)(segment & _SEGMENT_ENTRY_ORIGIN);
- 	table = table + ((address >> 12) & 0xff);
- 	pgstev = table[PTRS_PER_PTE];
- 	ptev = table[0];
- 	/* quick check, checked again with locks held */
- 	if (((pgstev & _PGSTE_GPS_USAGE_MASK) == _PGSTE_GPS_USAGE_UNUSED) ||
- 	    ((pgstev & _PGSTE_GPS_ZERO) && (ptev & _PAGE_INVALID)))
- 		gmap_zap_unused(gmap->mm, address);
- }
  EXPORT_SYMBOL_GPL(__gmap_zap);
  
- void gmap_discard(unsigned long from, unsigned long to, struct gmap *gmap)
+ void gmap_discard(struct gmap *gmap, unsigned long from, unsigned long to)
  {
- 
- 	unsigned long *table, address, size;
+ 	unsigned long gaddr, vmaddr, size;
  	struct vm_area_struct *vma;
- 	struct gmap_pgtable *mp;
- 	struct page *page;
  
  	down_read(&gmap->mm->mmap_sem);
- 	address = from;
- 	while (address < to) {
- 		/* Walk the gmap address space page table */
- 		table = gmap->table + ((address >> 53) & 0x7ff);
- 		if (unlikely(*table & _REGION_ENTRY_INVALID)) {
- 			address = (address + PMD_SIZE) & PMD_MASK;
- 			continue;
- 		}
- 		table = (unsigned long *)(*table & _REGION_ENTRY_ORIGIN);
- 		table = table + ((address >> 42) & 0x7ff);
- 		if (unlikely(*table & _REGION_ENTRY_INVALID)) {
- 			address = (address + PMD_SIZE) & PMD_MASK;
+ 	for (gaddr = from; gaddr < to;
+ 	     gaddr = (gaddr + PMD_SIZE) & PMD_MASK) {
+ 		/* Find the vm address for the guest address */
+ 		vmaddr = (unsigned long)
+ 			radix_tree_lookup(&gmap->guest_to_host,
+ 					  gaddr >> PMD_SHIFT);
+ 		if (!vmaddr)
  			continue;
- 		}
- 		table = (unsigned long *)(*table & _REGION_ENTRY_ORIGIN);
- 		table = table + ((address >> 31) & 0x7ff);
- 		if (unlikely(*table & _REGION_ENTRY_INVALID)) {
- 			address = (address + PMD_SIZE) & PMD_MASK;
- 			continue;
- 		}
- 		table = (unsigned long *)(*table & _REGION_ENTRY_ORIGIN);
- 		table = table + ((address >> 20) & 0x7ff);
- 		if (unlikely(*table & _SEGMENT_ENTRY_INVALID)) {
- 			address = (address + PMD_SIZE) & PMD_MASK;
- 			continue;
- 		}
- 		page = pfn_to_page(*table >> PAGE_SHIFT);
- 		mp = (struct gmap_pgtable *) page->index;
- 		vma = find_vma(gmap->mm, mp->vmaddr);
- 		size = min(to - address, PMD_SIZE - (address & ~PMD_MASK));
- 		zap_page_range(vma, mp->vmaddr | (address & ~PMD_MASK),
- 			       size, NULL);
- 		address = (address + PMD_SIZE) & PMD_MASK;
+ 		vmaddr |= gaddr & ~PMD_MASK;
+ 		/* Find vma in the parent mm */
+ 		vma = find_vma(gmap->mm, vmaddr);
+ 		size = min(to - gaddr, PMD_SIZE - (gaddr & ~PMD_MASK));
+ 		zap_page_range(vma, vmaddr, size, NULL);
  	}
  	up_read(&gmap->mm->mmap_sem);
  }
@@@ -994,13 -943,13 +943,13 @@@ retry
  	}
  	if (!(pte_val(*ptep) & _PAGE_INVALID) &&
  	     (pte_val(*ptep) & _PAGE_PROTECT)) {
- 			pte_unmap_unlock(ptep, ptl);
- 			if (fixup_user_fault(current, mm, addr, FAULT_FLAG_WRITE)) {
- 				up_read(&mm->mmap_sem);
- 				return -EFAULT;
- 			}
- 			goto retry;
 -		pte_unmap_unlock(*ptep, ptl);
++		pte_unmap_unlock(ptep, ptl);
+ 		if (fixup_user_fault(current, mm, addr, FAULT_FLAG_WRITE)) {
+ 			up_read(&mm->mmap_sem);
+ 			return -EFAULT;
  		}
+ 		goto retry;
+ 	}
  
  	new = old = pgste_get_lock(ptep);
  	pgste_val(new) &= ~(PGSTE_GR_BIT | PGSTE_GC_BIT |

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 819 bytes --]

^ permalink raw reply	[flat|nested] 14+ messages in thread

* linux-next: manual merge of the kvm tree with the s390 tree
@ 2013-06-06  3:55 Stephen Rothwell
  0 siblings, 0 replies; 14+ messages in thread
From: Stephen Rothwell @ 2013-06-06  3:55 UTC (permalink / raw)
  To: Marcelo Tosatti, Gleb Natapov
  Cc: linux-next, linux-kernel, Martin Schwidefsky,
	Christian Borntraeger, Christian Borntraeger

[-- Attachment #1: Type: text/plain, Size: 2089 bytes --]

Hi all,

Today's linux-next merge of the kvm tree got a conflict in
arch/s390/include/asm/pgtable.h between commit 338679f7ba4a
("s390/pgtable: Fix guest overindication for change bit") from the s390
tree and commit 0d0dafc1e48f ("s390/kvm: rename RCP_xxx defines to
PGSTE_xxx") from the kvm tree.

I fixed it up (see below) and can carry the fix as necessary (no action
is required).

-- 
Cheers,
Stephen Rothwell                    sfr@canb.auug.org.au

diff --cc arch/s390/include/asm/pgtable.h
index e8b6e5b,1d0ad7d..0000000
--- a/arch/s390/include/asm/pgtable.h
+++ b/arch/s390/include/asm/pgtable.h
@@@ -632,11 -628,10 +628,11 @@@ static inline void pgste_set_unlock(pte
  {
  #ifdef CONFIG_PGSTE
  	asm(
- 		"	nihh	%1,0xff7f\n"	/* clear RCP_PCL_BIT */
+ 		"	nihh	%1,0xff7f\n"	/* clear PCL bit */
  		"	stg	%1,%0\n"
  		: "=Q" (ptep[PTRS_PER_PTE])
 -		: "d" (pgste_val(pgste)), "Q" (ptep[PTRS_PER_PTE]) : "cc");
 +		: "d" (pgste_val(pgste)), "Q" (ptep[PTRS_PER_PTE])
 +		: "cc", "memory");
  	preempt_enable();
  #endif
  }
@@@ -712,19 -700,17 +708,19 @@@ static inline void pgste_set_key(pte_t 
  {
  #ifdef CONFIG_PGSTE
  	unsigned long address;
 -	unsigned long okey, nkey;
 +	unsigned long nkey;
  
 -	if (!pte_present(entry))
 +	if (pte_val(entry) & _PAGE_INVALID)
  		return;
 +	VM_BUG_ON(!(pte_val(*ptep) & _PAGE_INVALID));
  	address = pte_val(entry) & PAGE_MASK;
 -	okey = nkey = page_get_storage_key(address);
 -	nkey &= ~(_PAGE_ACC_BITS | _PAGE_FP_BIT);
 -	/* Set page access key and fetch protection bit from pgste */
 -	nkey |= (pgste_val(pgste) & (PGSTE_ACC_BITS | PGSTE_FP_BIT)) >> 56;
 -	if (okey != nkey)
 -		page_set_storage_key(address, nkey, 0);
 +	/*
 +	 * Set page access key and fetch protection bit from pgste.
 +	 * The guest C/R information is still in the PGSTE, set real
 +	 * key C/R to 0.
 +	 */
- 	nkey = (pgste_val(pgste) & (RCP_ACC_BITS | RCP_FP_BIT)) >> 56;
++	nkey = (pgste_val(pgste) & (PGSTE_ACC_BITS | PGSTE_FP_BIT)) >> 56;
 +	page_set_storage_key(address, nkey, 0);
  #endif
  }
  

[-- Attachment #2: Type: application/pgp-signature, Size: 836 bytes --]

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: linux-next: manual merge of the kvm tree with the s390 tree
  2013-01-03  7:31 ` Martin Schwidefsky
@ 2013-01-03 10:56   ` Stephen Rothwell
  0 siblings, 0 replies; 14+ messages in thread
From: Stephen Rothwell @ 2013-01-03 10:56 UTC (permalink / raw)
  To: Martin Schwidefsky
  Cc: Avi Kivity, Marcelo Tosatti, linux-next, linux-kernel,
	Cornelia Huck, Gleb Natapov, Heiko Carstens

[-- Attachment #1: Type: text/plain, Size: 537 bytes --]

Hi Martin,

On Thu, 3 Jan 2013 08:31:55 +0100 Martin Schwidefsky <schwidefsky@de.ibm.com> wrote:
>
> I surprises me a bit that there is only one hunk in the cleanup patch.
> I expected three, the above for virtio_ccw.c, one for irq.c and another
> for irq.h. I checked the resulting tree which is correct! The merge diff
> has a '++' line for irq.c/irq.h:

Those bits were further down in the mail I sent you (after my signature).

Thanks for checking.
-- 
Cheers,
Stephen Rothwell                    sfr@canb.auug.org.au

[-- Attachment #2: Type: application/pgp-signature, Size: 836 bytes --]

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: linux-next: manual merge of the kvm tree with the s390 tree
  2013-01-03  1:06 Stephen Rothwell
@ 2013-01-03  7:31 ` Martin Schwidefsky
  2013-01-03 10:56   ` Stephen Rothwell
  0 siblings, 1 reply; 14+ messages in thread
From: Martin Schwidefsky @ 2013-01-03  7:31 UTC (permalink / raw)
  To: Stephen Rothwell
  Cc: Avi Kivity, Marcelo Tosatti, linux-next, linux-kernel,
	Cornelia Huck, Gleb Natapov, Heiko Carstens

Hi Stephen,

On Thu, 3 Jan 2013 12:06:50 +1100
Stephen Rothwell <sfr@canb.auug.org.au> wrote:

> Today's linux-next merge of the kvm tree got conflicts in
> arch/s390/include/asm/irq.h and arch/s390/kernel/irq.c between commit
> bfb048f594d5 ("s390/irq: remove split irq fields from /proc/stat") from
> the s390 tree and commit 7e64e0597fd6 ("KVM: s390: Add a channel I/O
> based virtio transport driver") from the kvm tree.
> 
> I fixed it up (I think - see below) including the following merge fix
> patch and can carry the fix as necessary (more action may be required).
> 
> From: Stephen Rothwell <sfr@canb.auug.org.au>
> Date: Thu, 3 Jan 2013 12:04:39 +1100
> Subject: [PATCH] KVM: s390: fix for IOINT_VIR name change
> 
> Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au>
> ---
>  drivers/s390/kvm/virtio_ccw.c |    2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/s390/kvm/virtio_ccw.c b/drivers/s390/kvm/virtio_ccw.c
> index 1a5aff3..f94a0b1 100644
> --- a/drivers/s390/kvm/virtio_ccw.c
> +++ b/drivers/s390/kvm/virtio_ccw.c
> @@ -745,7 +745,7 @@ static struct ccw_driver virtio_ccw_driver = {
>  	.set_offline = virtio_ccw_offline,
>  	.set_online = virtio_ccw_online,
>  	.notify = virtio_ccw_cio_notify,
> -	.int_class = IOINT_VIR,
> +	.int_class = IRQIO_VIR,
>  };
>  
>  static int __init pure_hex(char **cp, unsigned int *val, int min_digit,

I surprises me a bit that there is only one hunk in the cleanup patch.
I expected three, the above for virtio_ccw.c, one for irq.c and another
for irq.h. I checked the resulting tree which is correct! The merge diff
has a '++' line for irq.c/irq.h:

irq.h:
 +      IRQIO_PCI,
 +      IRQIO_MSI,
++      IRQIO_VIR,
        NMI_NMI,
 -      NR_IRQS,
 +      CPU_RST,

irq.c:
 +      [IRQIO_PCI]  = {.name = "PCI", .desc = "[I/O] PCI Interrupt" },
 +      [IRQIO_MSI]  = {.name = "MSI", .desc = "[I/O] MSI Interrupt" },
++      [IRQIO_VIR]  = {.name = "VIR", .desc = "[I/O] Virtual I/O Devices"},
        [NMI_NMI]    = {.name = "NMI", .desc = "[NMI] Machine Check"},
 +      [CPU_RST]    = {.name = "RST", .desc = "[CPU] CPU Restart"},

Magic ?

-- 
blue skies,
   Martin.

"Reality continues to ruin my life." - Calvin.


^ permalink raw reply	[flat|nested] 14+ messages in thread

* linux-next: manual merge of the kvm tree with the s390 tree
@ 2013-01-03  1:06 Stephen Rothwell
  2013-01-03  7:31 ` Martin Schwidefsky
  0 siblings, 1 reply; 14+ messages in thread
From: Stephen Rothwell @ 2013-01-03  1:06 UTC (permalink / raw)
  To: Avi Kivity, Marcelo Tosatti
  Cc: linux-next, linux-kernel, Cornelia Huck, Gleb Natapov,
	Heiko Carstens, Martin Schwidefsky

[-- Attachment #1: Type: text/plain, Size: 8413 bytes --]

Hi all,

Today's linux-next merge of the kvm tree got conflicts in
arch/s390/include/asm/irq.h and arch/s390/kernel/irq.c between commit
bfb048f594d5 ("s390/irq: remove split irq fields from /proc/stat") from
the s390 tree and commit 7e64e0597fd6 ("KVM: s390: Add a channel I/O
based virtio transport driver") from the kvm tree.

I fixed it up (I think - see below) including the following merge fix
patch and can carry the fix as necessary (more action may be required).

From: Stephen Rothwell <sfr@canb.auug.org.au>
Date: Thu, 3 Jan 2013 12:04:39 +1100
Subject: [PATCH] KVM: s390: fix for IOINT_VIR name change

Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au>
---
 drivers/s390/kvm/virtio_ccw.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/s390/kvm/virtio_ccw.c b/drivers/s390/kvm/virtio_ccw.c
index 1a5aff3..f94a0b1 100644
--- a/drivers/s390/kvm/virtio_ccw.c
+++ b/drivers/s390/kvm/virtio_ccw.c
@@ -745,7 +745,7 @@ static struct ccw_driver virtio_ccw_driver = {
 	.set_offline = virtio_ccw_offline,
 	.set_online = virtio_ccw_online,
 	.notify = virtio_ccw_cio_notify,
-	.int_class = IOINT_VIR,
+	.int_class = IRQIO_VIR,
 };
 
 static int __init pure_hex(char **cp, unsigned int *val, int min_digit,
-- 
1.7.10.280.gaa39

-- 
Cheers,
Stephen Rothwell                    sfr@canb.auug.org.au

diff --cc arch/s390/include/asm/irq.h
index 7def773,aa6d0d7..0000000
--- a/arch/s390/include/asm/irq.h
+++ b/arch/s390/include/asm/irq.h
@@@ -2,61 -2,44 +2,62 @@@
  #define _ASM_IRQ_H
  
  #include <linux/hardirq.h>
 +#include <linux/percpu.h>
 +#include <linux/cache.h>
  #include <linux/types.h>
  
 -enum interruption_class {
 +enum interruption_main_class {
  	EXTERNAL_INTERRUPT,
  	IO_INTERRUPT,
 -	EXTINT_CLK,
 -	EXTINT_EXC,
 -	EXTINT_EMS,
 -	EXTINT_TMR,
 -	EXTINT_TLA,
 -	EXTINT_PFL,
 -	EXTINT_DSD,
 -	EXTINT_VRT,
 -	EXTINT_SCP,
 -	EXTINT_IUC,
 -	EXTINT_CMS,
 -	EXTINT_CMC,
 -	EXTINT_CMR,
 -	IOINT_CIO,
 -	IOINT_QAI,
 -	IOINT_DAS,
 -	IOINT_C15,
 -	IOINT_C70,
 -	IOINT_TAP,
 -	IOINT_VMR,
 -	IOINT_LCS,
 -	IOINT_CLW,
 -	IOINT_CTC,
 -	IOINT_APB,
 -	IOINT_ADM,
 -	IOINT_CSC,
 -	IOINT_PCI,
 -	IOINT_MSI,
 -	IOINT_VIR,
 +	NR_IRQS
 +};
 +
 +enum interruption_class {
 +	IRQEXT_CLK,
 +	IRQEXT_EXC,
 +	IRQEXT_EMS,
 +	IRQEXT_TMR,
 +	IRQEXT_TLA,
 +	IRQEXT_PFL,
 +	IRQEXT_DSD,
 +	IRQEXT_VRT,
 +	IRQEXT_SCP,
 +	IRQEXT_IUC,
 +	IRQEXT_CMS,
 +	IRQEXT_CMC,
 +	IRQEXT_CMR,
 +	IRQIO_CIO,
 +	IRQIO_QAI,
 +	IRQIO_DAS,
 +	IRQIO_C15,
 +	IRQIO_C70,
 +	IRQIO_TAP,
 +	IRQIO_VMR,
 +	IRQIO_LCS,
 +	IRQIO_CLW,
 +	IRQIO_CTC,
 +	IRQIO_APB,
 +	IRQIO_ADM,
 +	IRQIO_CSC,
 +	IRQIO_PCI,
 +	IRQIO_MSI,
++	IRQIO_VIR,
  	NMI_NMI,
 -	NR_IRQS,
 +	CPU_RST,
 +	NR_ARCH_IRQS
  };
  
 +struct irq_stat {
 +	unsigned int irqs[NR_ARCH_IRQS];
 +};
 +
 +DECLARE_PER_CPU_SHARED_ALIGNED(struct irq_stat, irq_stat);
 +
 +static __always_inline void inc_irq_stat(enum interruption_class irq)
 +{
 +	__get_cpu_var(irq_stat).irqs[irq]++;
 +}
 +
  struct ext_code {
  	unsigned short subcode;
  	unsigned short code;
diff --cc arch/s390/kernel/irq.c
index 9df824e,a9806ea..0000000
--- a/arch/s390/kernel/irq.c
+++ b/arch/s390/kernel/irq.c
@@@ -32,57 -29,39 +32,58 @@@ struct irq_class 
  	char *desc;
  };
  
 -static const struct irq_class intrclass_names[] = {
 +/*
 + * The list of "main" irq classes on s390. This is the list of interrrupts
 + * that appear both in /proc/stat ("intr" line) and /proc/interrupts.
 + * Historically only external and I/O interrupts have been part of /proc/stat.
 + * We can't add the split external and I/O sub classes since the first field
 + * in the "intr" line in /proc/stat is supposed to be the sum of all other
 + * fields.
 + * Since the external and I/O interrupt fields are already sums we would end
 + * up with having a sum which accounts each interrupt twice.
 + */
 +static const struct irq_class irqclass_main_desc[NR_IRQS] = {
  	[EXTERNAL_INTERRUPT] = {.name = "EXT"},
 -	[IO_INTERRUPT]	     = {.name = "I/O"},
 -	[EXTINT_CLK] = {.name = "CLK", .desc = "[EXT] Clock Comparator"},
 -	[EXTINT_EXC] = {.name = "EXC", .desc = "[EXT] External Call"},
 -	[EXTINT_EMS] = {.name = "EMS", .desc = "[EXT] Emergency Signal"},
 -	[EXTINT_TMR] = {.name = "TMR", .desc = "[EXT] CPU Timer"},
 -	[EXTINT_TLA] = {.name = "TAL", .desc = "[EXT] Timing Alert"},
 -	[EXTINT_PFL] = {.name = "PFL", .desc = "[EXT] Pseudo Page Fault"},
 -	[EXTINT_DSD] = {.name = "DSD", .desc = "[EXT] DASD Diag"},
 -	[EXTINT_VRT] = {.name = "VRT", .desc = "[EXT] Virtio"},
 -	[EXTINT_SCP] = {.name = "SCP", .desc = "[EXT] Service Call"},
 -	[EXTINT_IUC] = {.name = "IUC", .desc = "[EXT] IUCV"},
 -	[EXTINT_CMS] = {.name = "CMS", .desc = "[EXT] CPU-Measurement: Sampling"},
 -	[EXTINT_CMC] = {.name = "CMC", .desc = "[EXT] CPU-Measurement: Counter"},
 -	[EXTINT_CMR] = {.name = "CMR", .desc = "[EXT] CPU-Measurement: RI"},
 -	[IOINT_CIO]  = {.name = "CIO", .desc = "[I/O] Common I/O Layer Interrupt"},
 -	[IOINT_QAI]  = {.name = "QAI", .desc = "[I/O] QDIO Adapter Interrupt"},
 -	[IOINT_DAS]  = {.name = "DAS", .desc = "[I/O] DASD"},
 -	[IOINT_C15]  = {.name = "C15", .desc = "[I/O] 3215"},
 -	[IOINT_C70]  = {.name = "C70", .desc = "[I/O] 3270"},
 -	[IOINT_TAP]  = {.name = "TAP", .desc = "[I/O] Tape"},
 -	[IOINT_VMR]  = {.name = "VMR", .desc = "[I/O] Unit Record Devices"},
 -	[IOINT_LCS]  = {.name = "LCS", .desc = "[I/O] LCS"},
 -	[IOINT_CLW]  = {.name = "CLW", .desc = "[I/O] CLAW"},
 -	[IOINT_CTC]  = {.name = "CTC", .desc = "[I/O] CTC"},
 -	[IOINT_APB]  = {.name = "APB", .desc = "[I/O] AP Bus"},
 -	[IOINT_ADM]  = {.name = "ADM", .desc = "[I/O] EADM Subchannel"},
 -	[IOINT_CSC]  = {.name = "CSC", .desc = "[I/O] CHSC Subchannel"},
 -	[IOINT_PCI]  = {.name = "PCI", .desc = "[I/O] PCI Interrupt" },
 -	[IOINT_MSI] =  {.name = "MSI", .desc = "[I/O] MSI Interrupt" },
 -	[IOINT_VIR]  = {.name = "VIR", .desc = "[I/O] Virtual I/O Devices"},
 +	[IO_INTERRUPT]	     = {.name = "I/O"}
 +};
 +
 +/*
 + * The list of split external and I/O interrupts that appear only in
 + * /proc/interrupts.
 + * In addition this list contains non external / I/O events like NMIs.
 + */
 +static const struct irq_class irqclass_sub_desc[NR_ARCH_IRQS] = {
 +	[IRQEXT_CLK] = {.name = "CLK", .desc = "[EXT] Clock Comparator"},
 +	[IRQEXT_EXC] = {.name = "EXC", .desc = "[EXT] External Call"},
 +	[IRQEXT_EMS] = {.name = "EMS", .desc = "[EXT] Emergency Signal"},
 +	[IRQEXT_TMR] = {.name = "TMR", .desc = "[EXT] CPU Timer"},
 +	[IRQEXT_TLA] = {.name = "TAL", .desc = "[EXT] Timing Alert"},
 +	[IRQEXT_PFL] = {.name = "PFL", .desc = "[EXT] Pseudo Page Fault"},
 +	[IRQEXT_DSD] = {.name = "DSD", .desc = "[EXT] DASD Diag"},
 +	[IRQEXT_VRT] = {.name = "VRT", .desc = "[EXT] Virtio"},
 +	[IRQEXT_SCP] = {.name = "SCP", .desc = "[EXT] Service Call"},
 +	[IRQEXT_IUC] = {.name = "IUC", .desc = "[EXT] IUCV"},
 +	[IRQEXT_CMS] = {.name = "CMS", .desc = "[EXT] CPU-Measurement: Sampling"},
 +	[IRQEXT_CMC] = {.name = "CMC", .desc = "[EXT] CPU-Measurement: Counter"},
 +	[IRQEXT_CMR] = {.name = "CMR", .desc = "[EXT] CPU-Measurement: RI"},
 +	[IRQIO_CIO]  = {.name = "CIO", .desc = "[I/O] Common I/O Layer Interrupt"},
 +	[IRQIO_QAI]  = {.name = "QAI", .desc = "[I/O] QDIO Adapter Interrupt"},
 +	[IRQIO_DAS]  = {.name = "DAS", .desc = "[I/O] DASD"},
 +	[IRQIO_C15]  = {.name = "C15", .desc = "[I/O] 3215"},
 +	[IRQIO_C70]  = {.name = "C70", .desc = "[I/O] 3270"},
 +	[IRQIO_TAP]  = {.name = "TAP", .desc = "[I/O] Tape"},
 +	[IRQIO_VMR]  = {.name = "VMR", .desc = "[I/O] Unit Record Devices"},
 +	[IRQIO_LCS]  = {.name = "LCS", .desc = "[I/O] LCS"},
 +	[IRQIO_CLW]  = {.name = "CLW", .desc = "[I/O] CLAW"},
 +	[IRQIO_CTC]  = {.name = "CTC", .desc = "[I/O] CTC"},
 +	[IRQIO_APB]  = {.name = "APB", .desc = "[I/O] AP Bus"},
 +	[IRQIO_ADM]  = {.name = "ADM", .desc = "[I/O] EADM Subchannel"},
 +	[IRQIO_CSC]  = {.name = "CSC", .desc = "[I/O] CHSC Subchannel"},
 +	[IRQIO_PCI]  = {.name = "PCI", .desc = "[I/O] PCI Interrupt" },
 +	[IRQIO_MSI]  = {.name = "MSI", .desc = "[I/O] MSI Interrupt" },
++	[IRQIO_VIR]  = {.name = "VIR", .desc = "[I/O] Virtual I/O Devices"},
  	[NMI_NMI]    = {.name = "NMI", .desc = "[NMI] Machine Check"},
 +	[CPU_RST]    = {.name = "RST", .desc = "[CPU] CPU Restart"},
  };
  
  /*

[-- Attachment #2: Type: application/pgp-signature, Size: 836 bytes --]

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* linux-next: manual merge of the kvm tree with the s390 tree
@ 2012-08-16  3:49 Stephen Rothwell
  0 siblings, 0 replies; 14+ messages in thread
From: Stephen Rothwell @ 2012-08-16  3:49 UTC (permalink / raw)
  To: Avi Kivity, Marcelo Tosatti
  Cc: linux-next, linux-kernel, Martin Schwidefsky, Heiko Carstens,
	Cornelia Huck

[-- Attachment #1: Type: text/plain, Size: 1055 bytes --]

Hi all,

Today's linux-next merge of the kvm tree got a conflict in
arch/s390/include/asm/processor.h between commit 3c011c612acb
("s390/bpf,jit: BPF Just In Time compiler for s390") from the s390 tree
and commit 9b7fb990e080 ("s390, /dis: Instruction decoding interface") from
the kvm tree.

Just context changes.  I fixed it up (see below) and can carry the fix as
necessary.
-- 
Cheers,
Stephen Rothwell                    sfr@canb.auug.org.au

diff --cc arch/s390/include/asm/processor.h
index d4477ba,eac4fb5..0000000
--- a/arch/s390/include/asm/processor.h
+++ b/arch/s390/include/asm/processor.h
@@@ -140,7 -140,7 +140,8 @@@ extern int kernel_thread(int (*fn)(voi
  extern unsigned long thread_saved_pc(struct task_struct *t);
  
  extern void show_code(struct pt_regs *regs);
 +extern void print_fn_code(unsigned char *code, unsigned long len);
+ extern int insn_to_mnemonic(unsigned char *instruction, char buf[8]);
  
  unsigned long get_wchan(struct task_struct *p);
  #define task_pt_regs(tsk) ((struct pt_regs *) \

[-- Attachment #2: Type: application/pgp-signature, Size: 836 bytes --]

^ permalink raw reply	[flat|nested] 14+ messages in thread

* linux-next: manual merge of the kvm tree with the s390 tree
@ 2011-09-21  3:55 Stephen Rothwell
  0 siblings, 0 replies; 14+ messages in thread
From: Stephen Rothwell @ 2011-09-21  3:55 UTC (permalink / raw)
  To: Avi Kivity, Marcelo Tosatti
  Cc: linux-next, linux-kernel, Christian Borntraeger,
	Martin Schwidefsky, Heiko Carstens, Sasha Levin

Hi all,

Today's linux-next merge of the kvm tree got a conflict in
include/linux/kvm.h between commit b6cf8788a338 ("[S390] kvm: extension
capability for new address space layout") from the s390 tree and commit
d36fe129f29a ("KVM: x86: Raise the hard VCPU count limit") from the kvm
tree.

Just context changes.  I fixed it up (see below) anc can carry the fix as
necessary.
-- 
Cheers,
Stephen Rothwell                    sfr@canb.auug.org.au

diff --cc include/linux/kvm.h
index aace6b8,55f5afb..0000000
--- a/include/linux/kvm.h
+++ b/include/linux/kvm.h
@@@ -553,7 -553,7 +553,8 @@@ struct kvm_ppc_pvinfo 
  #define KVM_CAP_SPAPR_TCE 63
  #define KVM_CAP_PPC_SMT 64
  #define KVM_CAP_PPC_RMA	65
+ #define KVM_CAP_MAX_VCPUS 66       /* returns max vcpus per vm */
 +#define KVM_CAP_S390_GMAP 71
  
  #ifdef KVM_CAP_IRQ_ROUTING
  

^ permalink raw reply	[flat|nested] 14+ messages in thread

* linux-next: manual merge of the kvm tree with the s390 tree
@ 2010-10-21  1:16 Stephen Rothwell
  0 siblings, 0 replies; 14+ messages in thread
From: Stephen Rothwell @ 2010-10-21  1:16 UTC (permalink / raw)
  To: Avi Kivity, Marcelo Tosatti
  Cc: linux-next, linux-kernel, Martin Schwidefsky, Heiko Carstens,
	Alexander Graf

Hi all,

Today's linux-next merge of the kvm tree got a conflict in
drivers/s390/kvm/kvm_virtio.c between commit
b154e491c5d11f44a4804ec6d073312db06e97ef ("[S390] cleanup lowcore access
from external interrupts") from the s390 tree and commit
d9ca0637f9ab805ab7b23b0dc8362bf68f22fed0 ("KVM: S390: take a full byte as
ext_param indicator") from the kvm tree.

I fixed it up (hopefully - see below) and can carry the fix as necessary.
-- 
Cheers,
Stephen Rothwell                    sfr@canb.auug.org.au

diff --cc drivers/s390/kvm/kvm_virtio.c
index a264e1c,5a46b8c..0000000
--- a/drivers/s390/kvm/kvm_virtio.c
+++ b/drivers/s390/kvm/kvm_virtio.c
@@@ -328,27 -329,68 +329,69 @@@ static void scan_devices(void
  }
  
  /*
+  * match for a kvm device with a specific desc pointer
+  */
+ static int match_desc(struct device *dev, void *data)
+ {
+ 	if ((ulong)to_kvmdev(dev_to_virtio(dev))->desc == (ulong)data)
+ 		return 1;
+ 
+ 	return 0;
+ }
+ 
+ /*
+  * hotplug_device tries to find changes in the device page.
+  */
+ static void hotplug_devices(struct work_struct *dummy)
+ {
+ 	unsigned int i;
+ 	struct kvm_device_desc *d;
+ 	struct device *dev;
+ 
+ 	for (i = 0; i < PAGE_SIZE; i += desc_size(d)) {
+ 		d = kvm_devices + i;
+ 
+ 		/* end of list */
+ 		if (d->type == 0)
+ 			break;
+ 
+ 		/* device already exists */
+ 		dev = device_find_child(kvm_root, d, match_desc);
+ 		if (dev) {
+ 			/* XXX check for hotplug remove */
+ 			put_device(dev);
+ 			continue;
+ 		}
+ 
+ 		/* new device */
+ 		printk(KERN_INFO "Adding new virtio device %p\n", d);
+ 		add_kvm_device(d, i);
+ 	}
+ }
+ 
+ /*
   * we emulate the request_irq behaviour on top of s390 extints
   */
 -static void kvm_extint_handler(u16 code)
 +static void kvm_extint_handler(unsigned int ext_int_code,
 +			       unsigned int param32, unsigned long param64)
  {
  	struct virtqueue *vq;
  	u16 subcode;
- 	int config_changed;
+ 	u32 param;
  
 -	subcode = S390_lowcore.cpu_addr;
 +	subcode = ext_int_code >> 16;
  	if ((subcode & 0xff00) != VIRTIO_SUBCODE_64)
  		return;
  
  	/* The LSB might be overloaded, we have to mask it */
 -	vq = (struct virtqueue *)(S390_lowcore.ext_params2 & ~1UL);
 +	vq = (struct virtqueue *)(param64 & ~1UL);
  
- 	/* We use the LSB of extparam, to decide, if this interrupt is a config
- 	 * change or a "standard" interrupt */
- 	config_changed = param32 & 1;
+ 	/* We use ext_params to decide what this interrupt means */
 -	param = S390_lowcore.ext_params & VIRTIO_PARAM_MASK;
++	param = param32 & VIRTIO_PARAM_MASK;
  
- 	if (config_changed) {
+ 	switch (param) {
+ 	case VIRTIO_PARAM_CONFIG_CHANGED:
+ 	{
  		struct virtio_driver *drv;
  		drv = container_of(vq->vdev->dev.driver,
  				   struct virtio_driver, driver);

^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2020-06-04  3:05 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-05-29  6:46 linux-next: manual merge of the kvm tree with the s390 tree Stephen Rothwell
2020-06-04  3:05 ` Stephen Rothwell
  -- strict thread matches above, loose matches on Subject: below --
2016-07-14  4:03 Stephen Rothwell
2016-07-14  6:58 ` David Hildenbrand
2016-06-29  4:36 Stephen Rothwell
2016-06-29  5:47 ` Heiko Carstens
2014-10-07  4:59 Stephen Rothwell
2013-06-06  3:55 Stephen Rothwell
2013-01-03  1:06 Stephen Rothwell
2013-01-03  7:31 ` Martin Schwidefsky
2013-01-03 10:56   ` Stephen Rothwell
2012-08-16  3:49 Stephen Rothwell
2011-09-21  3:55 Stephen Rothwell
2010-10-21  1:16 Stephen Rothwell

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).