qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH] Enable support for PPC64 on qemu target v2


From: Laurent Vivier
Subject: Re: [Qemu-devel] [PATCH] Enable support for PPC64 on qemu target v2
Date: Fri, 27 Feb 2009 01:25:42 +0100


Le 27 févr. 09 à 00:39, Alexander Graf a écrit :

This patch enables OpenBIOS to initialize on PPC64, enabling support for -cpu 970fx. It gets up to the boot prompt and works rather good so far, though I haven't been able to run a kernel yet.

For more recent PowerPC CPUs the PTE layout has changed, so we need to take that into account and create PTEs according to the new layout and at the new physical positions.

v2 takes Laurent's comments into account

Thank you



Signed-off-by: Alexander Graf <address@hidden>
...
Index: arch/ppc/qemu/mmutypes.h
===================================================================
--- arch/ppc/qemu/mmutypes.h    (revision 459)
+++ arch/ppc/qemu/mmutypes.h    (working copy)
@@ -38,7 +38,28 @@
        unsigned long pp:2;     /* Page protection */
 } mPTE_t;

+typedef struct mPTE_64 {
+       uint32_t avpn_low;      /* Abbreviated Virtual Page Number (unused) */
+       uint32_t avpn:25;       /* Abbreviated Virtual Page Number */
+       uint32_t sw:4;          /* Software Use */
+       uint32_t  :1;           /* Reserved */
+       uint32_t h:1;           /* Hash algorithm indicator */
+       uint32_t v:1;           /* Entry is valid */

+       uint32_t rpn_low;       /* Real (physical) page number (unused) */
+       uint32_t rpn:20;        /* Real (physical) page number */
+       uint32_t    :2;         /* Reserved */
+       uint32_t ac:1;          /* Address Compare*/
+       uint32_t r:1;           /* Referenced */
+       uint32_t c:1;           /* Changed */
+       uint32_t w:1;           /* Write-thru cache mode */
+       uint32_t i:1;           /* Cache inhibited */
+       uint32_t m:1;           /* Memory coherence */
+       uint32_t g:1;           /* Guarded */
+       uint32_t n:1;           /* No-Execute */
+       uint32_t pp:2;          /* Page protection */
+} mPTE_64_t;
+

To answer to the comment of your previous patch:

Porting openBIOS to ppc64 seems useless as ppc32 can run on ppc64 (Do you want to run a database in openBIOS ? ;-) ). If I remember correctly there were some mails about this between Aurélien and BlueSwirl on openBIOS mailing list.

But I agree that "unsigned long"is not  a good choice in this case.

And a personal comment you must ignore: I don't like bitfield.

But if you use mask/shift and defines, you can use same values for 32 and 64bit PTE (it's not true for all fields):

#define PTE_PAGE_PROTECTION 0x0003
#define PTE_NOEXEC  0x0004
...
#define PTE_CHANGED   0x0100
...
#define PTE_RPN 0xfffffffffffff000ULL

But as it is done now is not an issue for me, it's just, from a personal and cosmetic point of view, ugly...

I'll try to test and commit your patch tomorrow (well, tomorrow is today, now...)

Regards,
Laurent



reply via email to

[Prev in Thread] Current Thread [Next in Thread]