kern/118990: [nve] nve + PAE bus_addr_t/void * inconsistencies

Mikhail T. mi+thun at aldan.algebra.com
Mon Aug 22 16:30:24 UTC 2011


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

From: "Mikhail T." <mi+thun at aldan.algebra.com>
To: bug-followup at FreeBSD.org
Cc:  
Subject: Re: kern/118990: [nve] nve + PAE bus_addr_t/void * inconsistencies
Date: Mon, 22 Aug 2011 11:57:52 -0400

 This is a multi-part message in MIME format.
 --------------030109040001030106020202
 Content-Type: multipart/alternative;
  boundary="------------090808020409070103020705"
 
 
 --------------090808020409070103020705
 Content-Type: text/plain; charset=ISO-8859-1; format=flowed
 Content-Transfer-Encoding: 7bit
 
 Ping... Any hope for this one to be fixed? I have a perfectly fine machine with 
 8Gb of RAM, which can't run in PAE, because the on-board nve-interface is 
 unusable :(
 
 I made a simple patch, which makes things compile cleanly, but, of course, 
 panics at boot, when the interface is detected... Maybe, if I post this, 
 somebody will fix it out of sheer annoyance :-)
 
 Or, perhaps, it is not correctable, because NVidia's "hardware API" (under 
 sys/contrib/dev/nve/{i386,amd64}/) is only available in binary blobs and thus no 
 changes of the structures is possible?
 
     -mi
 
 
 --------------090808020409070103020705
 Content-Type: text/html; charset=ISO-8859-1
 Content-Transfer-Encoding: 7bit
 
 <html>
   <head>
 
     <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
   </head>
   <body bgcolor="#FFFFFF" text="#000000">
     Ping... Any hope for this one to be fixed? I have a perfectly fine
     machine with 8Gb of RAM, which can't run in PAE, because the
     on-board nve-interface is unusable :(<br>
     <br>
     I made a simple patch, which makes things compile cleanly, but, of
     course, panics at boot, when the interface is detected... Maybe, if
     I post this, somebody will fix it out of sheer annoyance :-)<br>
     <br>
     Or, perhaps, it is not correctable, because NVidia's "hardware API"
     (under sys/contrib/dev/nve/{i386,amd64}/) is only available in
     binary blobs and thus no changes of the structures is possible?<br>
     <blockquote>-mi<br>
     </blockquote>
   </body>
 </html>
 
 --------------090808020409070103020705--
 
 --------------030109040001030106020202
 Content-Type: text/plain;
  name="nve-pae.diff"
 Content-Transfer-Encoding: 7bit
 Content-Disposition: attachment;
  filename="nve-pae.diff"
 
 Index: contrib/dev/nve/adapter.h
 ===================================================================
 RCS file: /home/ncvs/src/sys/contrib/dev/nve/adapter.h,v
 retrieving revision 1.1.1.2
 diff -U 2 -r1.1.1.2 adapter.h
 --- contrib/dev/nve/adapter.h	7 Dec 2005 17:32:12 -0000	1.1.1.2
 +++ contrib/dev/nve/adapter.h	22 Aug 2011 15:45:23 -0000
 @@ -94,5 +94,5 @@
  typedef struct  _ADAPTER_WRITE_ELEMENT
  {
 -    PNV_VOID   pPhysical;
 +    bus_addr_t  pPhysical;
      NV_UINT32   ulLength;
  }   ADAPTER_WRITE_ELEMENT, *PADAPTER_WRITE_ELEMENT;
 Index: contrib/dev/nve/os.h
 ===================================================================
 RCS file: /home/ncvs/src/sys/contrib/dev/nve/os.h,v
 retrieving revision 1.1.1.1
 diff -U 2 -r1.1.1.1 os.h
 --- contrib/dev/nve/os.h	12 Mar 2005 00:17:37 -0000	1.1.1.1
 +++ contrib/dev/nve/os.h	22 Aug 2011 15:45:23 -0000
 @@ -43,6 +43,6 @@
  {
      PNV_VOID   pLogical;
 -    PNV_VOID   pPhysical;
 -    NV_UINT32    uiLength;
 +    bus_addr_t pPhysical;
 +    NV_UINT32  uiLength;
  }   MEMORY_BLOCK, *PMEMORY_BLOCK;
  
 @@ -53,6 +53,6 @@
  {
      PNV_VOID   pLogical;
 -    PNV_VOID   pPhysical;
 -    NV_UINT32    uiLength;
 +    bus_addr_t pPhysical;
 +    NV_UINT32  uiLength;
      /* Parameter to OS layer to indicate what type of memory is needed */
      NV_UINT16    AllocFlags;
 Index: dev/nve/if_nve.c
 ===================================================================
 RCS file: /home/ncvs/src/sys/dev/nve/if_nve.c,v
 retrieving revision 1.33.2.3
 diff -U 2 -r1.33.2.3 if_nve.c
 --- dev/nve/if_nve.c	7 Nov 2010 16:56:29 -0000	1.33.2.3
 +++ dev/nve/if_nve.c	22 Aug 2011 15:45:25 -0000
 @@ -952,5 +952,5 @@
  			    (ulong)desc->frags[i].ds_len;
  			txdata.sElement[i].pPhysical =
 -			    (PVOID)desc->frags[i].ds_addr;
 +			    desc->frags[i].ds_addr;
  		}
  
 @@ -1372,5 +1372,5 @@
  	memset(mem->pLogical, 0, (ulong)mem->uiLength);
  	mem_physical = vtophys(mem->pLogical);
 -	mem->pPhysical = (PVOID)mem_physical;
 +	mem->pPhysical = mem_physical;
  
  	DEBUGOUT(NVE_DEBUG_API, "nve: nve_osalloc 0x%x/0x%x - %d\n",
 @@ -1427,5 +1427,5 @@
  		if (offset) {
  			mem_block_ex->pPhysical =
 -			    (PVOID)((ulong)mem_block_ex->pPhysical +
 +			    ((ulong)mem_block_ex->pPhysical +
  			    mem_block_ex->AlignmentSize - offset);
  			mem_block_ex->pLogical =
 @@ -1446,5 +1446,5 @@
  
  	mem_block.pLogical = mem_block_ex->pLogicalOrig;
 -	mem_block.pPhysical = (PVOID)((ulong)mem_block_ex->pPhysicalOrigLow);
 +	mem_block.pPhysical = ((ulong)mem_block_ex->pPhysicalOrigLow);
  	mem_block.uiLength = mem_block_ex->uiLengthOrig;
  
 @@ -1515,5 +1515,5 @@
  
  	mem->pLogical = (void *)desc->vaddr;
 -	mem->pPhysical = (void *)desc->paddr;
 +	mem->pPhysical = desc->paddr;
  	mem->uiLength = desc->buflength;
  	*id = (void *)desc;
 
 --------------030109040001030106020202--


More information about the freebsd-bugs mailing list