On Fri, Feb 11, 2005 at 09:58:27PM -0800, Grant Grundler wrote:
> I'm guessing _sdp_iocb_page_save() is just broken.
> The ia64 kernel builds fine.
> And every other use of pmd_offset() looks like this:
>       mm/rmap.c:      pmd = pmd_offset(pud, address);

The following patch makes _sdp_iocb_page_save() look like the
code in mm/rmap.c. I have no clue if it's right or not.
But it now builds on ia64. Not tested yet.

And rmap.c uses pXX_present() macro.
I don't know if that should be used as well.

Signed-off-by: Grant Grundler <[EMAIL PROTECTED]>


Index: ulp/sdp/sdp_iocb.c
===================================================================
--- ulp/sdp/sdp_iocb.c  (revision 1781)
+++ ulp/sdp/sdp_iocb.c  (working copy)
@@ -139,6 +139,7 @@ static int _sdp_iocb_page_save(struct sd
        struct page *page;
        unsigned long pfn;
        pgd_t *pgd;
+       pud_t *pud;
        pmd_t *pmd;
        pte_t *ptep;
        pte_t  pte;
@@ -186,12 +187,17 @@ static int _sdp_iocb_page_save(struct sd
             0 < size;
             counter++, addr += PAGE_SIZE, size -= PAGE_SIZE) {
 
-               pgd = pgd_offset_gate(iocb->mm, addr);
+               pgd = pgd_offset(iocb->mm, addr);
                if (!pgd || pgd_none(*pgd)) {
                        break;
                }
-               
-               pmd = pmd_offset(pgd, addr);
+
+               pud = pud_offset(pgd, addr);
+               if (!pud || pud_none(*pud)) {
+                       break;
+               }
+
+               pmd = pmd_offset(pud, addr);
                if (!pmd || pmd_none(*pmd)) {
                        break;
                }
_______________________________________________
openib-general mailing list
[email protected]
http://openib.org/mailman/listinfo/openib-general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general

Reply via email to