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

Re: [Xen-devel] [PATCH v1] Livepatch ARM 64 implementation



On Mon, Aug 15, 2016 at 04:52:58PM +0200, Julien Grall wrote:
> 
> 
> On 15/08/2016 01:07, Konrad Rzeszutek Wilk wrote:
> > Hey!
> 
> Hi Konrad,
> 
> > This is the first (non RFC) posting of the enablement of Livepatch under 
> > ARM64.
> > 
> > The patches are based on: [PATCH v3] Livepatch fixes and features for v4.8.
> > (https://lists.xen.org/archives/html/xen-devel/2016-08/msg01825.html)
> > 
> > And the git tree is:
> >  git://xenbits.xen.org/people/konradwilk/xen.git livepatch.v4.8.v3
> > 
> > I've only tested this under Foundation Platform with only one CPU working
> > (the other CPUs wouldn't boot up for some reason) and without a proper 
> > working
> > disk image (can't recall why, but it did have an initramfs) - I ended
> > up building the hypervisor with the livepatch built in and loading it during
> > dom0 execution (via timers), see
> > (http://xenbits.xen.org/gitweb/?p=people/konradwilk/xen.git;a=commit;h=39517b2b807025d0d63d4f042ada5eb3de32ff45)
> > [That patch is not part of this patchset of course]
> 
> I am able to use both SMP and the rootfs on the foundation model. What is
> hte command line you are using? How about the device tree?

~/ARM/Foundation_Platformpkg/models/Linux64_GCC-4.7/Foundation_Platform --image 
~/ARM/boot-wrapper-aarch64.git/xen-system.axf 

And the boot-wrapper-aarch64.git does:
aarch64 <konrad@localhost:~/ARM/boot-wrapper-aarch64.git> git log
--oneline | head -1
b564cbf Fix build when USE_INITRD not set
aarch64 <konrad@localhost:~/ARM/boot-wrapper-aarch64.git> make xen-system.axf
aarch64-linux-gnu-gcc  -DCNTFRQ=0x01800000       -DUART_BASE=0x1c090000 
-DLED=0x0008 -DSYSREGS_BASE=0x1c010000 -DGIC_DIST_BASE=0x2c001000 
-DGIC_CPU_BASE=0x2c002000 -c -o boot.xen.o boot.S -DXEN
aarch64-linux-gnu-gcc  -DPHYS_OFFSET=0x80000000 -DMBOX_OFFSET=0xfff8 
-DBOOT=boot.xen.o -DXEN_OFFSET=0xA00000 -DKERNEL_OFFSET=0x80000 
-DFDT_OFFSET=0x08000000 -DFS_OFFSET=0x10000000 -DXEN=Xen -DKERNEL=Image 
-DFILESYSTEM=filesystem.cpio.gz -E -P -C -o model.xen.lds model.lds.S

And it looks I tried at some point to play with the LEDs (not very well)

diff --git a/Makefile b/Makefile
index 241091f..dd50f09 100644
--- a/Makefile
+++ b/Makefile
@@ -13,7 +13,7 @@ SYSREGS_BASE  := 0x1c010000
 GIC_DIST_BASE  := 0x2c001000
 GIC_CPU_BASE   := 0x2c002000
 CNTFRQ         := 0x01800000   # 24Mhz
-
+LED            := 0x0008
 #INITRD_FLAGS  := -DUSE_INITRD
 CPPFLAGS       += $(INITRD_FLAGS)
 
@@ -78,13 +78,13 @@ $(XIMAGE): boot.xen.o model.xen.lds fdt.dtb $(XEN) 
$(KERNEL) $(FILESYSTEM)
        $(LD) -o $@ --script=model.xen.lds
 
 boot.o: $(BOOTLOADER) Makefile
-       $(CC) $(CPPFLAGS) -DCNTFRQ=$(CNTFRQ) -DUART_BASE=$(UART_BASE) 
-DSYSREGS_BASE=$(SYSREGS_BASE) -DGIC_DIST_BASE=$(GIC_DIST_BASE) 
-DGIC_CPU_BASE=$(GIC_CPU_BASE) -c -o $@ $(BOOTLOADER)
+       $(CC) $(CPPFLAGS) -DCNTFRQ=$(CNTFRQ) -DUART_BASE=$(UART_BASE) 
-DLED=$(LED) -DSYSREGS_BASE=$(SYSREGS_BASE) -DGIC_DIST_BASE=$(GIC_DIST_BASE) 
-DGIC_CPU_BASE=$(GIC_CPU_BASE) -c -o $@ $(BOOTLOADER)
 
 model.lds: $(LD_SCRIPT) Makefile
        $(CC) $(CPPFLAGS) -DPHYS_OFFSET=$(PHYS_OFFSET) 
-DMBOX_OFFSET=$(MBOX_OFFSET) -DBOOT=boot.o -DKERNEL_OFFSET=$(KERNEL_OFFSET) 
-DFDT_OFFSET=$(FDT_OFFSET) -DFS_OFFSET=$(FS_OFFSET) -DKERNEL=$(KERNEL) 
-DFILESYSTEM=$(FILESYSTEM) -E -P -C -o $@ $<
 
 boot.xen.o: $(BOOTLOADER) Makefile
-       $(CC) $(CPPFLAGS) -DCNTFRQ=$(CNTFRQ) -DUART_BASE=$(UART_BASE) 
-DSYSREGS_BASE=$(SYSREGS_BASE) -DGIC_DIST_BASE=$(GIC_DIST_BASE) 
-DGIC_CPU_BASE=$(GIC_CPU_BASE) -c -o $@ $(BOOTLOADER) -DXEN
+       $(CC) $(CPPFLAGS) -DCNTFRQ=$(CNTFRQ) -DUART_BASE=$(UART_BASE) 
-DLED=$(LED) -DSYSREGS_BASE=$(SYSREGS_BASE) -DGIC_DIST_BASE=$(GIC_DIST_BASE) 
-DGIC_CPU_BASE=$(GIC_CPU_BASE) -c -o $@ $(BOOTLOADER) -DXEN
 
 model.xen.lds: $(LD_SCRIPT) Makefile
        $(CC) $(CPPFLAGS) -DPHYS_OFFSET=$(PHYS_OFFSET) 
-DMBOX_OFFSET=$(MBOX_OFFSET) -DBOOT=boot.xen.o -DXEN_OFFSET=$(XEN_OFFSET) 
-DKERNEL_OFFSET=$(KERNEL_OFFSET) -DFDT_OFFSET=$(FDT_OFFSET) 
-DFS_OFFSET=$(FS_OFFSET) -DXEN=$(XEN) -DKERNEL=$(KERNEL) 
-DFILESYSTEM=$(FILESYSTEM) -E -P -C -o $@ $<
diff --git a/boot.S b/boot.S
index 3e2cecd..60b642c 100644
--- a/boot.S
+++ b/boot.S
@@ -107,6 +107,13 @@ start_ns:
        str     wzr, [x4, #0xa0]                // V2M_SYS_CFGDATA
        str     w5, [x4, #0xa4]                 // V2M_SYS_CFGCTRL
 
+       ldr     x4, =LED
+       mov     w5, #0xFF
+       str     w5, [x4]
+
+       mov     x4, #0x00A4
+       mov     w5, #0xC0800000 
+       str     w5, [x4]
        /*
         * Primary CPU
         */

Anyhow the more important is the DTS:

total 248784
drwxrwxr-x.  3 konrad konrad     4096 Aug 15 11:46 .
drwxrwxr-x. 11 konrad konrad     4096 Aug 15 11:40 ..
-rw-rw-r--.  1 konrad konrad 90957497 Apr 15 15:50 64
-rw-rw-r--.  1 konrad konrad 90571528 Apr 15 15:49 a
-rw-rw-r--.  1 konrad konrad     2388 Apr 15 22:54 boot.S
-rw-rw-r--.  1 konrad konrad     1544 Aug 15 11:46 boot.xen.o
lrwxrwxrwx.  1 konrad konrad       41 Apr 15 14:17 fdt.dtb -> 
../arm-dts/fast_models/rtsm_ve-aemv8a.dtb
drwxrwxr-x.  8 konrad konrad     4096 Apr 15 14:17 .git
-rw-rw-r--.  1 konrad konrad       44 Apr 15 14:17 .gitignore
lrwxrwxrwx.  1 konrad konrad       10 Apr 15 14:24 Image -> ../vmlinuz
-rw-rw-r--.  1 konrad konrad     1508 Apr 15 14:17 LICENSE.txt
-rw-rw-r--.  1 konrad konrad     3701 Apr 15 22:53 Makefile
-rw-rw-r--.  1 konrad konrad      935 Apr 15 14:17 model.lds.S
-rw-rw-r--.  1 konrad konrad     2457 Aug 15 11:46 model.xen.lds
-rw-rw-r--.  1 konrad konrad      667 Apr 15 14:17 README
lrwxrwxrwx.  1 konrad konrad       41 Apr 15 15:26 rtsm_ve-aemv8a.dts -> 
../arm-dts/fast_models/rtsm_ve-aemv8a.dts
-rw-rw-r--.  1 konrad konrad     6007 Apr 15 15:28 rtsm_ve-motherboard.dtsi
lrwxrwxrwx.  1 konrad konrad       14 Apr 22 15:19 Xen -> ../xen/xen/xen
-rwxrwxr-x.  1 konrad konrad   853552 Apr 15 15:40 xen64
-rwxrwxr-x.  1 konrad konrad   853552 Apr 15 23:12 Xen.ok
lrwxrwxrwx.  1 konrad konrad       24 Apr 15 21:55 Xen.old -> 
/home/konrad/xen/xen/xen
-rwxrwxr-x.  1 konrad konrad  6761469 Aug 15 11:46 xen-system.axf
-rw-rw-r--.  1 konrad konrad 64854103 Apr 15 15:46 z

aarch64 <konrad@localhost:~/ARM/arm-dts> git log --oneline | head -1
cbfbe3d versatile_express: Update to 3.19 state

With this change:

diff --git a/fast_models/rtsm_ve-aemv8a.dts b/fast_models/rtsm_ve-aemv8a.dts
index 50b544d..6c6240c 100644
--- a/fast_models/rtsm_ve-aemv8a.dts
+++ b/fast_models/rtsm_ve-aemv8a.dts
@@ -18,7 +18,17 @@
        #address-cells = <2>;
        #size-cells = <2>;
 
-       chosen { };
+       chosen {
+               #address-cells = <1>;
+               #size-cells = <1>;
+
+               xen,xen-bootargs = "dtuart=serial0 loglvl=all guesd_loglvl=all 
dom0_mem=512M,max:512";
+               module@1 {
+                       compatible = "xen,linux-zimage", "xen,multiboot-module";
+                       reg = <0x80080000 0x800000>;
+                       bootargs = "";
+               };
+       };
 
        aliases {
                serial0 = &v2m_serial0;

> Cheers,
> 
> -- 
> Julien Grall

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.