All of lore.kernel.org
 help / color / mirror / Atom feed
* RE: [PATCH] supporting non-NX/XD capable processors on x86_64 xenlinux
@ 2005-08-18 14:15 Nakajima, Jun
  2005-08-18 15:09 ` Keir Fraser
  0 siblings, 1 reply; 13+ messages in thread
From: Nakajima, Jun @ 2005-08-18 14:15 UTC (permalink / raw)
  To: Keir Fraser; +Cc: Jerone Young, xen-devel

Keir Fraser wrote:
> On 18 Aug 2005, at 05:29, Nakajima, Jun wrote:
> 
>> I don't have particular preference, but the latter one's change is
>> smaller, and it can fix other places (that are using the attrributes
>> derived from __PAGE_KERNEL). But the former one is cleaner to me. If
>> people agree, I can make such a patch.
> 
> How does native x86/64 Linux avoid this problem? It doesn't mask
> __PAGE_KERNEL with __supported_pte_mask, so I'm reluctant to take this
> patch. Seems to me there is some other underlying difference between
> us and native that is not best solved by diverging even further.
> 
> Unless native doesn;t boot on these failing boxes either?
> 
>   -- Keir

One obvious reason is: xen-specific drivers are using __PAGE_KERNEL (and
they don't exist in the native Linux). If xen_contig_memory, for
example, does not work, it won't boot... Fixing xen_contig_memory did
not fix the booting problem as long as I remember? Since then we fixed
some attribute problems in other xen-specific drivers when we brough up
domU, so I'll take a look.

xen_contig_memory
...
    /* 3. Map the new extent in place of old pages. */
    for (i = 0; i < (1<<order); i++) {
        BUG_ON(HYPERVISOR_update_va_mapping(
            vstart + (i*PAGE_SIZE),
            __pte_ma(((mfn+i)<<PAGE_SHIFT)|__PAGE_KERNEL), 0));
        xen_machphys_update(mfn+i, (__pa(vstart)>>PAGE_SHIFT)+i);
        phys_to_machine_mapping[(__pa(vstart)>>PAGE_SHIFT)+i] = mfn+i;
    }


blkback.c:  dispatch_probe
static void dispatch_probe(blkif_t *blkif, blkif_request_t *req)
{
 ...
#ifdef CONFIG_XEN_BLKDEV_TAP_BE
    if ( HYPERVISOR_update_va_mapping_otherdomain(
        MMAP_VADDR(pending_idx, 0),
        (pte_t) { (req->frame_and_sects[0] & PAGE_MASK) | __PAGE_KERNEL
},
        0, (blkif->is_blktap ? ID_TO_DOM(req->id) : blkif->domid) ) )

        goto out;
#else
    if ( HYPERVISOR_update_va_mapping_otherdomain(
        MMAP_VADDR(pending_idx, 0),
        (pte_t) { (req->frame_and_sects[0] & PAGE_MASK) | __PAGE_KERNEL
},
        0, blkif->domid) )

        goto out;
#endif
#endif /* endif CONFIG_XEN_BLKDEV_GRANT */

Jun
---
Intel Open Source Technology Center

^ permalink raw reply	[flat|nested] 13+ messages in thread
* RE: [PATCH] supporting non-NX/XD capable processors on x86_64 xenlinux
@ 2005-08-18  4:29 Nakajima, Jun
  2005-08-18  8:48 ` Keir Fraser
  0 siblings, 1 reply; 13+ messages in thread
From: Nakajima, Jun @ 2005-08-18  4:29 UTC (permalink / raw)
  To: Jerone Young; +Cc: xen-devel

Jerone Young wrote:
> This is identical to the patch Scott Parish sent awhile back. Jun you
> said that this was not a good way of going about fixing this (actually
> it was kind of toward another problem ...but I think we were also
> trying to get x86-64 xen to just boot at the time). I guess this is
> the best way then?
As far as I remember, it was not root caused at that time, then I was
not sure it was the right fix... 

The problem is that __PAGE_KERNEL is used by several places, such as
ioremap_change_attr
xen_contig_memory
blkback.c:  dispatch_probe

And __PAGE_KERNEL on native x86_64 Linux has always NX on:
#define __PAGE_KERNEL \
        (_PAGE_PRESENT | _PAGE_RW | _PAGE_DIRTY | _PAGE_ACCESSED |
_PAGE_NX)

So, actually we have two options to fix this:
1. Change __PAGE_KERNEL => _KERNPG_TABLE
2. The above (i.e. & __supported_pte_mask)

I don't have particular preference, but the latter one's change is
smaller, and it can fix other places (that are using the attrributes
derived from __PAGE_KERNEL). But the former one is cleaner to me. If
people agree, I can make such a patch.

Jun
---
Intel Open Source Technology Center

^ permalink raw reply	[flat|nested] 13+ messages in thread
* [PATCH] supporting non-NX/XD capable processors on x86_64 xenlinux
@ 2005-08-17 23:12 Nakajima, Jun
  2005-08-18  0:07 ` David Hopwood
  2005-08-18  0:43 ` Jerone Young
  0 siblings, 2 replies; 13+ messages in thread
From: Nakajima, Jun @ 2005-08-17 23:12 UTC (permalink / raw)
  To: xen-devel

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

I remember some people complained that x86_64 xenlinux failed to boot on
the systems with processor(s) that does not NX/XD. The patch should fix
the problem as far as I tested. 

Signed-off-by: Jun Nakajima <jun.nakajima@intel.com>

Jun
---
Intel Open Source Technology Center 

[-- Attachment #2: non_NX.patch --]
[-- Type: application/octet-stream, Size: 1048 bytes --]

# HG changeset patch
# User "Jun Nakajima <jun.nakajima@intel.com>"
# Node ID 85be353bb88cfd02d2d4f26b0642c30e8f39d635
# Parent  60da204cb23a5ac709ef46bd9092c1d6680274b1
Supporting processors that don't support NX/XD.

diff -r 60da204cb23a -r 85be353bb88c linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/pgtable.h
--- a/linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/pgtable.h	Wed Aug 17 20:55:55 2005
+++ b/linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/pgtable.h	Wed Aug 17 22:47:14 2005
@@ -203,7 +203,8 @@
 #define PAGE_READONLY	__pgprot(_PAGE_PRESENT | _PAGE_USER | _PAGE_ACCESSED | _PAGE_NX)
 #define PAGE_READONLY_EXEC __pgprot(_PAGE_PRESENT | _PAGE_USER | _PAGE_ACCESSED)
 #define __PAGE_KERNEL \
-	(_PAGE_PRESENT | _PAGE_RW | _PAGE_DIRTY | _PAGE_ACCESSED | _PAGE_NX | _PAGE_USER )
+	((_PAGE_PRESENT | _PAGE_RW | _PAGE_DIRTY | _PAGE_ACCESSED | _PAGE_NX \
+      | _PAGE_USER ) & __supported_pte_mask)
 #define __PAGE_KERNEL_EXEC \
 	(_PAGE_PRESENT | _PAGE_RW | _PAGE_DIRTY | _PAGE_ACCESSED | _PAGE_USER )
 #define __PAGE_KERNEL_NOCACHE \

[-- Attachment #3: Type: text/plain, Size: 138 bytes --]

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel

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

end of thread, other threads:[~2005-08-18 16:24 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-08-18 14:15 [PATCH] supporting non-NX/XD capable processors on x86_64 xenlinux Nakajima, Jun
2005-08-18 15:09 ` Keir Fraser
2005-08-18 15:39   ` Jerone Young
2005-08-18 16:05     ` Keir Fraser
2005-08-18 15:51   ` Andi Kleen
2005-08-18 16:05     ` Jerone Young
2005-08-18 16:18       ` Andi Kleen
2005-08-18 16:24         ` Jerone Young
  -- strict thread matches above, loose matches on Subject: below --
2005-08-18  4:29 Nakajima, Jun
2005-08-18  8:48 ` Keir Fraser
2005-08-17 23:12 Nakajima, Jun
2005-08-18  0:07 ` David Hopwood
2005-08-18  0:43 ` Jerone Young

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.