ia64/147502: commit references a PR

dfilter service dfilter at FreeBSD.ORG
Fri Jun 11 03:10:04 UTC 2010


The following reply was made to PR ia64/147502; it has been noted by GNATS.

From: dfilter at FreeBSD.ORG (dfilter service)
To: bug-followup at FreeBSD.org
Cc:  
Subject: Re: ia64/147502: commit references a PR
Date: Fri, 11 Jun 2010 03:00:44 +0000 (UTC)

 Author: marcel
 Date: Fri Jun 11 03:00:32 2010
 New Revision: 209026
 URL: http://svn.freebsd.org/changeset/base/209026
 
 Log:
   Bump MAX_BPAGES from 256 to 1024. It seems that a few drivers, bge(4)
   in particular, do not handle deferred DMA map load operations at all.
   Any error, and especially EINPROGRESS, is treated as a hard error and
   typically abort the current operation. The fact that the busdma code
   queues the load operation for when resources (i.e. bounce buffers in
   this particular case) are available makes this especially problematic.
   Bounce buffering, unlike what the PR synopsis would suggest, works
   fine.
   
   While on the subject, properly implement swi_vm().
   
   PR:		147502
   MFC after:	1 week
 
 Modified:
   head/sys/ia64/ia64/busdma_machdep.c
   head/sys/ia64/ia64/vm_machdep.c
   head/sys/ia64/include/md_var.h
 
 Modified: head/sys/ia64/ia64/busdma_machdep.c
 ==============================================================================
 --- head/sys/ia64/ia64/busdma_machdep.c	Fri Jun 11 02:50:53 2010	(r209025)
 +++ head/sys/ia64/ia64/busdma_machdep.c	Fri Jun 11 03:00:32 2010	(r209026)
 @@ -48,7 +48,7 @@ __FBSDID("$FreeBSD$");
  #include <machine/bus.h>
  #include <machine/md_var.h>
  
 -#define MAX_BPAGES 256
 +#define	MAX_BPAGES	1024
  
  struct bus_dma_tag {
  	bus_dma_tag_t	  parent;
 @@ -77,7 +77,7 @@ struct bounce_page {
  	STAILQ_ENTRY(bounce_page) links;
  };
  
 -int busdma_swi_pending;
 +u_int busdma_swi_pending;
  
  static struct mtx bounce_lock;
  static STAILQ_HEAD(bp_list, bounce_page) bounce_page_list;
 
 Modified: head/sys/ia64/ia64/vm_machdep.c
 ==============================================================================
 --- head/sys/ia64/ia64/vm_machdep.c	Fri Jun 11 02:50:53 2010	(r209025)
 +++ head/sys/ia64/ia64/vm_machdep.c	Fri Jun 11 03:00:32 2010	(r209026)
 @@ -378,9 +378,8 @@ sf_buf_free(struct sf_buf *sf)
   */   
  void  
  swi_vm(void *dummy) 
 -{     
 -#if 0
 +{
 +
  	if (busdma_swi_pending != 0)
  		busdma_swi();
 -#endif
  }
 
 Modified: head/sys/ia64/include/md_var.h
 ==============================================================================
 --- head/sys/ia64/include/md_var.h	Fri Jun 11 02:50:53 2010	(r209025)
 +++ head/sys/ia64/include/md_var.h	Fri Jun 11 03:00:32 2010	(r209026)
 @@ -75,6 +75,7 @@ struct ia64_init_return {
  extern uint64_t ia64_lapic_addr;
  
  extern long Maxmem;
 +extern u_int busdma_swi_pending;
  
  void	busdma_swi(void);
  int	copyout_regstack(struct thread *, uint64_t *, uint64_t *);
 _______________________________________________
 svn-src-all at freebsd.org mailing list
 http://lists.freebsd.org/mailman/listinfo/svn-src-all
 To unsubscribe, send any mail to "svn-src-all-unsubscribe at freebsd.org"
 


More information about the freebsd-ia64 mailing list