Message ID | 20210104192602.10131-1-nramas@linux.microsoft.com |
---|---|
Headers | show |
Series | Carry forward IMA measurement log on kexec on ARM64 | expand |
On Mon, Jan 04, 2021 at 11:25:56AM -0800, Lakshmi Ramasubramanian wrote: > On kexec file load Integrity Measurement Architecture (IMA) subsystem > may verify the IMA signature of the kernel and initramfs, and measure > it. The command line parameters passed to the kernel in the kexec call > may also be measured by IMA. A remote attestation service can verify > a TPM quote based on the TPM event log, the IMA measurement list, and > the TPM PCR data. This can be achieved only if the IMA measurement log > is carried over from the current kernel to the next kernel across > the kexec call. > > powerpc already supports carrying forward the IMA measurement log on > kexec. This patch set adds support for carrying forward the IMA > measurement log on kexec on ARM64. > > This patch set moves the platform independent code defined for powerpc > such that it can be reused for other platforms as well. A chosen node > "linux,ima-kexec-buffer" is added to the DTB for ARM64 to hold > the address and the size of the memory reserved to carry > the IMA measurement log. > > This patch set has been tested for ARM64 platform using QEMU. > I would like help from the community for testing this change on powerpc. > Thanks. > > This patch set is based on > commit a29a64445089 ("powerpc: Use common of_kexec_setup_new_fdt()") > in https://git.kernel.org/pub/scm/linux/kernel/git/robh/linux.git > "dt/kexec" branch. This all looks good to me. I'd suggest you send the above patches out as part of this series because I don't plan to do so. I would like to also resolve the vmalloc vs. kmalloc difference for allocating the FDT. Then we can further consolidate the DT kexec code. It all needs some acks from arm64 and powerpc maintainers. As far as merging, I think via the integrity tree makes the most sense. Rob
On Tue, 2021-01-12 at 08:42 -0600, Rob Herring wrote: > On Mon, Jan 04, 2021 at 11:25:56AM -0800, Lakshmi Ramasubramanian wrote: > > On kexec file load Integrity Measurement Architecture (IMA) subsystem > > may verify the IMA signature of the kernel and initramfs, and measure > > it. The command line parameters passed to the kernel in the kexec call > > may also be measured by IMA. A remote attestation service can verify > > a TPM quote based on the TPM event log, the IMA measurement list, and > > the TPM PCR data. This can be achieved only if the IMA measurement log > > is carried over from the current kernel to the next kernel across > > the kexec call. > > > > powerpc already supports carrying forward the IMA measurement log on > > kexec. This patch set adds support for carrying forward the IMA > > measurement log on kexec on ARM64. > > > > This patch set moves the platform independent code defined for powerpc > > such that it can be reused for other platforms as well. A chosen node > > "linux,ima-kexec-buffer" is added to the DTB for ARM64 to hold > > the address and the size of the memory reserved to carry > > the IMA measurement log. > > > > This patch set has been tested for ARM64 platform using QEMU. > > I would like help from the community for testing this change on powerpc. > > Thanks. > > > > This patch set is based on > > commit a29a64445089 ("powerpc: Use common of_kexec_setup_new_fdt()") > > in https://git.kernel.org/pub/scm/linux/kernel/git/robh/linux.git > > "dt/kexec" branch. > > This all looks good to me. I'd suggest you send the above patches out as > part of this series because I don't plan to do so. > > I would like to also resolve the vmalloc vs. kmalloc difference for > allocating the FDT. Then we can further consolidate the DT kexec code. > > It all needs some acks from arm64 and powerpc maintainers. As far as > merging, I think via the integrity tree makes the most sense. Thanks, Rob. Lakshmi, please update Rob's patches to include patch descriptions before re-posting. Mimi
On 1/12/21 6:42 AM, Rob Herring wrote: > On Mon, Jan 04, 2021 at 11:25:56AM -0800, Lakshmi Ramasubramanian wrote: >> On kexec file load Integrity Measurement Architecture (IMA) subsystem >> may verify the IMA signature of the kernel and initramfs, and measure >> it. The command line parameters passed to the kernel in the kexec call >> may also be measured by IMA. A remote attestation service can verify >> a TPM quote based on the TPM event log, the IMA measurement list, and >> the TPM PCR data. This can be achieved only if the IMA measurement log >> is carried over from the current kernel to the next kernel across >> the kexec call. >> >> powerpc already supports carrying forward the IMA measurement log on >> kexec. This patch set adds support for carrying forward the IMA >> measurement log on kexec on ARM64. >> >> This patch set moves the platform independent code defined for powerpc >> such that it can be reused for other platforms as well. A chosen node >> "linux,ima-kexec-buffer" is added to the DTB for ARM64 to hold >> the address and the size of the memory reserved to carry >> the IMA measurement log. >> >> This patch set has been tested for ARM64 platform using QEMU. >> I would like help from the community for testing this change on powerpc. >> Thanks. >> >> This patch set is based on >> commit a29a64445089 ("powerpc: Use common of_kexec_setup_new_fdt()") >> in https://git.kernel.org/pub/scm/linux/kernel/git/robh/linux.git >> "dt/kexec" branch. > > This all looks good to me. I'd suggest you send the above patches out as > part of this series because I don't plan to do so. Thanks for reviewing the patches Rob. Sure - I'll add your patches to this series. > I would like to also resolve the vmalloc vs. kmalloc difference for > allocating the FDT. Then we can further consolidate the DT kexec code. I think FDT allocation using vmalloc for ARM64 can be changed to kmalloc. What are the other changes you'd like me to do in arm64/powerpc DT kexec code in this patch series? @AKASHI Takahiro - could you please let me know if the above sounds right? > > It all needs some acks from arm64 and powerpc maintainers. As far as > merging, I think via the integrity tree makes the most sense. I'll create the patch series in "next-integrity" branch. Thiago/Mimi have acked some of the patches. Please review the remaining patches in this version. Could arm64 maintainers please review the patches and respond? thanks, -lakshmi
On 1/12/21 10:05 AM, Mimi Zohar wrote: > On Tue, 2021-01-12 at 08:42 -0600, Rob Herring wrote: >> On Mon, Jan 04, 2021 at 11:25:56AM -0800, Lakshmi Ramasubramanian wrote: >>> On kexec file load Integrity Measurement Architecture (IMA) subsystem >>> may verify the IMA signature of the kernel and initramfs, and measure >>> it. The command line parameters passed to the kernel in the kexec call >>> may also be measured by IMA. A remote attestation service can verify >>> a TPM quote based on the TPM event log, the IMA measurement list, and >>> the TPM PCR data. This can be achieved only if the IMA measurement log >>> is carried over from the current kernel to the next kernel across >>> the kexec call. >>> >>> powerpc already supports carrying forward the IMA measurement log on >>> kexec. This patch set adds support for carrying forward the IMA >>> measurement log on kexec on ARM64. >>> >>> This patch set moves the platform independent code defined for powerpc >>> such that it can be reused for other platforms as well. A chosen node >>> "linux,ima-kexec-buffer" is added to the DTB for ARM64 to hold >>> the address and the size of the memory reserved to carry >>> the IMA measurement log. >>> >>> This patch set has been tested for ARM64 platform using QEMU. >>> I would like help from the community for testing this change on powerpc. >>> Thanks. >>> >>> This patch set is based on >>> commit a29a64445089 ("powerpc: Use common of_kexec_setup_new_fdt()") >>> in https://git.kernel.org/pub/scm/linux/kernel/git/robh/linux.git >>> "dt/kexec" branch. >> >> This all looks good to me. I'd suggest you send the above patches out as >> part of this series because I don't plan to do so. >> >> I would like to also resolve the vmalloc vs. kmalloc difference for >> allocating the FDT. Then we can further consolidate the DT kexec code. >> >> It all needs some acks from arm64 and powerpc maintainers. As far as >> merging, I think via the integrity tree makes the most sense. > > Thanks, Rob. Lakshmi, please update Rob's patches to include patch > descriptions before re-posting. > Will do Mimi. thanks, -lakshmi
Mimi Zohar <zohar@linux.ibm.com> writes: > On Tue, 2021-01-12 at 08:42 -0600, Rob Herring wrote: >> On Mon, Jan 04, 2021 at 11:25:56AM -0800, Lakshmi Ramasubramanian wrote: >> > On kexec file load Integrity Measurement Architecture (IMA) subsystem >> > may verify the IMA signature of the kernel and initramfs, and measure >> > it. The command line parameters passed to the kernel in the kexec call >> > may also be measured by IMA. A remote attestation service can verify >> > a TPM quote based on the TPM event log, the IMA measurement list, and >> > the TPM PCR data. This can be achieved only if the IMA measurement log >> > is carried over from the current kernel to the next kernel across >> > the kexec call. >> > >> > powerpc already supports carrying forward the IMA measurement log on >> > kexec. This patch set adds support for carrying forward the IMA >> > measurement log on kexec on ARM64. >> > >> > This patch set moves the platform independent code defined for powerpc >> > such that it can be reused for other platforms as well. A chosen node >> > "linux,ima-kexec-buffer" is added to the DTB for ARM64 to hold >> > the address and the size of the memory reserved to carry >> > the IMA measurement log. >> > >> > This patch set has been tested for ARM64 platform using QEMU. >> > I would like help from the community for testing this change on powerpc. >> > Thanks. >> > >> > This patch set is based on >> > commit a29a64445089 ("powerpc: Use common of_kexec_setup_new_fdt()") >> > in https://git.kernel.org/pub/scm/linux/kernel/git/robh/linux.git >> > "dt/kexec" branch. >> >> This all looks good to me. I'd suggest you send the above patches out as >> part of this series because I don't plan to do so. >> >> I would like to also resolve the vmalloc vs. kmalloc difference for >> allocating the FDT. Then we can further consolidate the DT kexec code. >> >> It all needs some acks from arm64 and powerpc maintainers. As far as >> merging, I think via the integrity tree makes the most sense. > > Thanks, Rob. Lakshmi, please update Rob's patches to include patch > descriptions before re-posting. Also please update the powerpc mailing list address to linuxppc-dev@lists.ozlabs.org -- Thiago Jung Bauermann IBM Linux Technology Center
Hi Lakshmi, On Mon, 2021-01-04 at 11:26 -0800, Lakshmi Ramasubramanian wrote: > diff --git a/arch/powerpc/kexec/file_load_64.c b/arch/powerpc/kexec/file_load_64.c > index a05c19b3cc60..3cab318aa3b9 100644 > --- a/arch/powerpc/kexec/file_load_64.c > +++ b/arch/powerpc/kexec/file_load_64.c > @@ -17,6 +17,7 @@ > #include <linux/kexec.h> > #include <linux/of_fdt.h> > #include <linux/libfdt.h> > +#include <linux/of.h> > #include <linux/of_device.h> > #include <linux/memblock.h> > #include <linux/slab.h> > @@ -944,7 +945,8 @@ int setup_new_fdt_ppc64(const struct kimage *image, void *fdt, > struct crash_mem *umem = NULL, *rmem = NULL; > int i, nr_ranges, ret; > > - ret = setup_new_fdt(image, fdt, initrd_load_addr, initrd_len, cmdline); > + ret = of_kexec_setup_new_fdt(image, fdt, initrd_load_addr, initrd_len, > + cmdline); > if (ret) > goto out; > The "powerpc: Move arch independent ima kexec functions to drivers/of/kexec.c" moved setup_ima_buffer() to of_kexec_setup_new_fdt(). Defering making the change from setup_new_fdt() to of_kexec_setup_new_fdt() here, is not bisect safe. Mimi
On 1/12/21 3:30 PM, Mimi Zohar wrote: > Hi Lakshmi, > > On Mon, 2021-01-04 at 11:26 -0800, Lakshmi Ramasubramanian wrote: > >> diff --git a/arch/powerpc/kexec/file_load_64.c b/arch/powerpc/kexec/file_load_64.c >> index a05c19b3cc60..3cab318aa3b9 100644 >> --- a/arch/powerpc/kexec/file_load_64.c >> +++ b/arch/powerpc/kexec/file_load_64.c >> @@ -17,6 +17,7 @@ >> #include <linux/kexec.h> >> #include <linux/of_fdt.h> >> #include <linux/libfdt.h> >> +#include <linux/of.h> >> #include <linux/of_device.h> >> #include <linux/memblock.h> >> #include <linux/slab.h> >> @@ -944,7 +945,8 @@ int setup_new_fdt_ppc64(const struct kimage *image, void *fdt, >> struct crash_mem *umem = NULL, *rmem = NULL; >> int i, nr_ranges, ret; >> >> - ret = setup_new_fdt(image, fdt, initrd_load_addr, initrd_len, cmdline); >> + ret = of_kexec_setup_new_fdt(image, fdt, initrd_load_addr, initrd_len, >> + cmdline); >> if (ret) >> goto out; >> > > The "powerpc: Move arch independent ima kexec functions to > drivers/of/kexec.c" moved setup_ima_buffer() to > of_kexec_setup_new_fdt(). Defering making the change from > setup_new_fdt() to of_kexec_setup_new_fdt() here, is not bisect safe. > Agreed - I will move this change to "powerpc: Move arch independent ima kexec functions to drivers/of/kexec.c" patch. thanks, -lakshmi
Lakshmi Ramasubramanian <nramas@linux.microsoft.com> writes: > delete_fdt_mem_rsv() defined in "arch/powerpc/kexec/file_load.c" > has been renamed to fdt_find_and_del_mem_rsv(), and moved to > "drivers/of/kexec.c". > > Remove delete_fdt_mem_rsv() in "arch/powerpc/kexec/file_load.c". > > Call of_kexec_setup_new_fdt() from setup_new_fdt_ppc64() and > remove setup_new_fdt() in "arch/powerpc/kexec/file_load.c". > > Co-developed-by: Prakhar Srivastava <prsriva@linux.microsoft.com> > Signed-off-by: Prakhar Srivastava <prsriva@linux.microsoft.com> > Signed-off-by: Lakshmi Ramasubramanian <nramas@linux.microsoft.com> > --- > arch/powerpc/include/asm/kexec.h | 4 --- > arch/powerpc/kexec/file_load.c | 60 ------------------------------- > arch/powerpc/kexec/file_load_64.c | 4 ++- > 3 files changed, 3 insertions(+), 65 deletions(-) Reviewed-by: Thiago Jung Bauermann <bauerman@linux.ibm.com> -- Thiago Jung Bauermann IBM Linux Technology Center