From: Vivek Goyal <vgoyal@redhat.com>
To: Borislav Petkov <bp@alien8.de>
Cc: mjg59@srcf.ucam.org, bhe@redhat.com, jkosina@suse.cz,
greg@kroah.com, kexec@lists.infradead.org,
linux-kernel@vger.kernel.org, ebiederm@xmission.com,
hpa@zytor.com, akpm@linux-foundation.org, dyoung@redhat.com,
chaowang@redhat.com
Subject: Re: [PATCH 07/13] kexec: Implementation of new syscall kexec_file_load
Date: Wed, 11 Jun 2014 13:04:21 -0400 [thread overview]
Message-ID: <20140611170421.GE10723@redhat.com> (raw)
In-Reply-To: <20140611141320.GA30685@nazgul.tnic>
On Wed, Jun 11, 2014 at 04:13:20PM +0200, Borislav Petkov wrote:
> On Fri, Jun 06, 2014 at 02:02:14PM -0400, Vivek Goyal wrote:
> > > If you want to make it more explicit, you could do
> > >
> > > #define RES_OK 0
> > > #define RES_ERR 1
> > > #define RES_STOP 2
> >
> > You are saying that called back function should return this to walk_*
> > functions? But then we lose the actual error code which should be
> > passed to parent function which actually called walk_* function.
>
> Well, RES_STOP could implicitly mean stop and no error. Also, if
> you really want to return back the retval, you could slice it into
> bitfields:
>
> retval = [ ... 8 | 7 ... 0]
>
> where [7:0] is the return value and bits from 8 onwards contain
> different flags like RES_STOP. I did it just for the fun of it and it
> looks like below. I honestly can't say that I'm crazy about it though.
You are doing the same thing as I am doing. The only difference is that
I am using separate bool variable and you are trying to use upper bits
of return code to carry that extra information.
I personally think that using separate bool variable is simpler as
compared to using upper bits in return code.
Thanks
Vivek
>
> --
> Index: b/kernel/resource.c
> ===================================================================
> --- a/kernel/resource.c 2014-06-11 14:49:35.865426300 +0200
> +++ b/kernel/resource.c 2014-06-11 15:37:50.050299684 +0200
> @@ -371,7 +371,7 @@ static int find_next_iomem_res(struct re
> }
>
> int walk_ram_res(char *name, unsigned long flags, u64 start, u64 end,
> - void *arg, int (*func)(u64, u64, void *))
> + void *arg, int (*func)(u64, u64, void *))
> {
> struct resource res;
> u64 orig_end;
> @@ -384,12 +384,12 @@ int walk_ram_res(char *name, unsigned lo
> while ((res.start < res.end) &&
> (find_next_iomem_res(&res, name) >= 0)) {
> ret = (*func)(res.start, res.end, arg);
> - if (ret)
> + if (ret & RES_STOP)
> break;
> res.start = res.end + 1;
> res.end = orig_end;
> }
> - return ret;
> + return RETVAL(ret);
> }
>
> /*
> @@ -441,7 +441,7 @@ static int find_next_system_ram(struct r
> * with pfn can truncate ranges.
> */
> int walk_system_ram_res(u64 start, u64 end, void *arg,
> - int (*func)(u64, u64, void *))
> + int (*func)(u64, u64, void *))
> {
> struct resource res;
> u64 orig_end;
> @@ -454,12 +454,13 @@ int walk_system_ram_res(u64 start, u64 e
> while ((res.start < res.end) &&
> (find_next_system_ram(&res, "System RAM") >= 0)) {
> ret = (*func)(res.start, res.end, arg);
> - if (ret)
> + if (ret & RES_STOP)
> break;
> res.start = res.end + 1;
> res.end = orig_end;
> }
> - return ret;
> +
> + return RETVAL(ret);
> }
>
> #if !defined(CONFIG_ARCH_HAS_WALK_MEMORY)
> Index: b/kernel/kexec.c
> ===================================================================
> --- a/kernel/kexec.c 2014-06-11 14:49:35.865426300 +0200
> +++ b/kernel/kexec.c 2014-06-11 16:03:26.264232477 +0200
> @@ -2063,8 +2063,9 @@ static int __kexec_add_segment(struct ki
> }
>
> static int locate_mem_hole_top_down(unsigned long start, unsigned long end,
> - struct kexec_buf *kbuf)
> + struct kexec_buf *kbuf)
> {
> + int ret = 0;
> struct kimage *image = kbuf->image;
> unsigned long temp_start, temp_end;
>
> @@ -2076,7 +2077,7 @@ static int locate_mem_hole_top_down(unsi
> temp_start = temp_start & (~(kbuf->buf_align - 1));
>
> if (temp_start < start || temp_start < kbuf->buf_min)
> - return 0;
> + return EADDRNOTAVAIL;
>
> temp_end = temp_start + kbuf->memsz - 1;
>
> @@ -2098,12 +2099,15 @@ static int locate_mem_hole_top_down(unsi
> kbuf->memsz);
>
> /* Stop navigating through remaining System RAM ranges */
> - return 1;
> + ret |= RES_STOP;
> +
> + return ret;
> }
>
> static int locate_mem_hole_bottom_up(unsigned long start, unsigned long end,
> - struct kexec_buf *kbuf)
> + struct kexec_buf *kbuf)
> {
> + int ret = 0;
> struct kimage *image = kbuf->image;
> unsigned long temp_start, temp_end;
>
> @@ -2114,7 +2118,7 @@ static int locate_mem_hole_bottom_up(uns
> temp_end = temp_start + kbuf->memsz - 1;
>
> if (temp_end > end || temp_end > kbuf->buf_max)
> - return 0;
> + return EADDRNOTAVAIL;
> /*
> * Make sure this does not conflict with any of existing
> * segments
> @@ -2133,7 +2137,9 @@ static int locate_mem_hole_bottom_up(uns
> kbuf->memsz);
>
> /* Stop navigating through remaining System RAM ranges */
> - return 1;
> + ret |= RES_STOP;
> +
> + return ret;
> }
>
> static int walk_ram_range_callback(u64 start, u64 end, void *arg)
> @@ -2141,12 +2147,11 @@ static int walk_ram_range_callback(u64 s
> struct kexec_buf *kbuf = (struct kexec_buf *)arg;
> unsigned long sz = end - start + 1;
>
> - /* Returning 0 will take to next memory range */
> if (sz < kbuf->memsz)
> - return 0;
> + return EADDRNOTAVAIL;
>
> if (end < kbuf->buf_min || start > kbuf->buf_max)
> - return 0;
> + return EADDRNOTAVAIL;
>
> /*
> * Allocate memory top down with-in ram range. Otherwise bottom up
> @@ -2168,15 +2173,15 @@ int kexec_add_buffer(struct kimage *imag
> unsigned long buf_max, bool top_down, unsigned long *load_addr)
> {
>
> - unsigned long nr_segments = image->nr_segments, new_nr_segments;
> struct kexec_segment *ksegment;
> struct kexec_buf buf, *kbuf;
> + int ret;
>
> /* Currently adding segment this way is allowed only in file mode */
> if (!image->file_mode)
> return -EINVAL;
>
> - if (nr_segments >= KEXEC_SEGMENT_MAX)
> + if (image->nr_segments >= KEXEC_SEGMENT_MAX)
> return -EINVAL;
>
> /*
> @@ -2208,25 +2213,18 @@ int kexec_add_buffer(struct kimage *imag
>
> /* Walk the RAM ranges and allocate a suitable range for the buffer */
> if (image->type == KEXEC_TYPE_CRASH)
> - walk_ram_res("Crash kernel", IORESOURCE_MEM | IORESOURCE_BUSY,
> - crashk_res.start, crashk_res.end, kbuf,
> - walk_ram_range_callback);
> + ret = walk_ram_res("Crash kernel",
> + IORESOURCE_MEM | IORESOURCE_BUSY,
> + crashk_res.start, crashk_res.end, kbuf,
> + walk_ram_range_callback);
> else
> - walk_system_ram_res(0, -1, kbuf, walk_ram_range_callback);
> -
> - /*
> - * If range could be found successfully, it would have incremented
> - * the nr_segments value.
> - */
> - new_nr_segments = image->nr_segments;
> + ret = walk_system_ram_res(0, -1, kbuf, walk_ram_range_callback);
>
> - /* A suitable memory range could not be found for buffer */
> - if (new_nr_segments == nr_segments)
> + if (ret)
> return -EADDRNOTAVAIL;
>
> /* Found a suitable memory range */
> -
> - ksegment = &image->segment[new_nr_segments - 1];
> + ksegment = &image->segment[image->nr_segments - 1];
> *load_addr = ksegment->mem;
> return 0;
> }
> Index: b/include/linux/ioport.h
> ===================================================================
> --- a/include/linux/ioport.h 2014-06-11 14:49:35.865426300 +0200
> +++ b/include/linux/ioport.h 2014-06-11 16:02:12.775235692 +0200
> @@ -237,6 +237,16 @@ extern int iomem_is_exclusive(u64 addr);
> extern int
> walk_system_ram_range(unsigned long start_pfn, unsigned long nr_pages,
> void *arg, int (*func)(unsigned long, unsigned long, void *));
> +
> +#define RET_BITS 8
> +#define RET_MASK ((1U << RET_BITS) - 1)
> +#define RETVAL(r) (-((r) & RET_MASK))
> +
> +#define RET_OK 0
> +#define RET_ERR 1
> +
> +#define RES_STOP BIT(0 + RET_BITS)
> +
> extern int
> walk_system_ram_res(u64 start, u64 end, void *arg,
> int (*func)(u64, u64, void *));
_______________________________________________
kexec mailing list
kexec@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/kexec
WARNING: multiple messages have this Message-ID (diff)
From: Vivek Goyal <vgoyal@redhat.com>
To: Borislav Petkov <bp@alien8.de>
Cc: linux-kernel@vger.kernel.org, kexec@lists.infradead.org,
ebiederm@xmission.com, hpa@zytor.com, mjg59@srcf.ucam.org,
greg@kroah.com, jkosina@suse.cz, dyoung@redhat.com,
chaowang@redhat.com, bhe@redhat.com, akpm@linux-foundation.org
Subject: Re: [PATCH 07/13] kexec: Implementation of new syscall kexec_file_load
Date: Wed, 11 Jun 2014 13:04:21 -0400 [thread overview]
Message-ID: <20140611170421.GE10723@redhat.com> (raw)
In-Reply-To: <20140611141320.GA30685@nazgul.tnic>
On Wed, Jun 11, 2014 at 04:13:20PM +0200, Borislav Petkov wrote:
> On Fri, Jun 06, 2014 at 02:02:14PM -0400, Vivek Goyal wrote:
> > > If you want to make it more explicit, you could do
> > >
> > > #define RES_OK 0
> > > #define RES_ERR 1
> > > #define RES_STOP 2
> >
> > You are saying that called back function should return this to walk_*
> > functions? But then we lose the actual error code which should be
> > passed to parent function which actually called walk_* function.
>
> Well, RES_STOP could implicitly mean stop and no error. Also, if
> you really want to return back the retval, you could slice it into
> bitfields:
>
> retval = [ ... 8 | 7 ... 0]
>
> where [7:0] is the return value and bits from 8 onwards contain
> different flags like RES_STOP. I did it just for the fun of it and it
> looks like below. I honestly can't say that I'm crazy about it though.
You are doing the same thing as I am doing. The only difference is that
I am using separate bool variable and you are trying to use upper bits
of return code to carry that extra information.
I personally think that using separate bool variable is simpler as
compared to using upper bits in return code.
Thanks
Vivek
>
> --
> Index: b/kernel/resource.c
> ===================================================================
> --- a/kernel/resource.c 2014-06-11 14:49:35.865426300 +0200
> +++ b/kernel/resource.c 2014-06-11 15:37:50.050299684 +0200
> @@ -371,7 +371,7 @@ static int find_next_iomem_res(struct re
> }
>
> int walk_ram_res(char *name, unsigned long flags, u64 start, u64 end,
> - void *arg, int (*func)(u64, u64, void *))
> + void *arg, int (*func)(u64, u64, void *))
> {
> struct resource res;
> u64 orig_end;
> @@ -384,12 +384,12 @@ int walk_ram_res(char *name, unsigned lo
> while ((res.start < res.end) &&
> (find_next_iomem_res(&res, name) >= 0)) {
> ret = (*func)(res.start, res.end, arg);
> - if (ret)
> + if (ret & RES_STOP)
> break;
> res.start = res.end + 1;
> res.end = orig_end;
> }
> - return ret;
> + return RETVAL(ret);
> }
>
> /*
> @@ -441,7 +441,7 @@ static int find_next_system_ram(struct r
> * with pfn can truncate ranges.
> */
> int walk_system_ram_res(u64 start, u64 end, void *arg,
> - int (*func)(u64, u64, void *))
> + int (*func)(u64, u64, void *))
> {
> struct resource res;
> u64 orig_end;
> @@ -454,12 +454,13 @@ int walk_system_ram_res(u64 start, u64 e
> while ((res.start < res.end) &&
> (find_next_system_ram(&res, "System RAM") >= 0)) {
> ret = (*func)(res.start, res.end, arg);
> - if (ret)
> + if (ret & RES_STOP)
> break;
> res.start = res.end + 1;
> res.end = orig_end;
> }
> - return ret;
> +
> + return RETVAL(ret);
> }
>
> #if !defined(CONFIG_ARCH_HAS_WALK_MEMORY)
> Index: b/kernel/kexec.c
> ===================================================================
> --- a/kernel/kexec.c 2014-06-11 14:49:35.865426300 +0200
> +++ b/kernel/kexec.c 2014-06-11 16:03:26.264232477 +0200
> @@ -2063,8 +2063,9 @@ static int __kexec_add_segment(struct ki
> }
>
> static int locate_mem_hole_top_down(unsigned long start, unsigned long end,
> - struct kexec_buf *kbuf)
> + struct kexec_buf *kbuf)
> {
> + int ret = 0;
> struct kimage *image = kbuf->image;
> unsigned long temp_start, temp_end;
>
> @@ -2076,7 +2077,7 @@ static int locate_mem_hole_top_down(unsi
> temp_start = temp_start & (~(kbuf->buf_align - 1));
>
> if (temp_start < start || temp_start < kbuf->buf_min)
> - return 0;
> + return EADDRNOTAVAIL;
>
> temp_end = temp_start + kbuf->memsz - 1;
>
> @@ -2098,12 +2099,15 @@ static int locate_mem_hole_top_down(unsi
> kbuf->memsz);
>
> /* Stop navigating through remaining System RAM ranges */
> - return 1;
> + ret |= RES_STOP;
> +
> + return ret;
> }
>
> static int locate_mem_hole_bottom_up(unsigned long start, unsigned long end,
> - struct kexec_buf *kbuf)
> + struct kexec_buf *kbuf)
> {
> + int ret = 0;
> struct kimage *image = kbuf->image;
> unsigned long temp_start, temp_end;
>
> @@ -2114,7 +2118,7 @@ static int locate_mem_hole_bottom_up(uns
> temp_end = temp_start + kbuf->memsz - 1;
>
> if (temp_end > end || temp_end > kbuf->buf_max)
> - return 0;
> + return EADDRNOTAVAIL;
> /*
> * Make sure this does not conflict with any of existing
> * segments
> @@ -2133,7 +2137,9 @@ static int locate_mem_hole_bottom_up(uns
> kbuf->memsz);
>
> /* Stop navigating through remaining System RAM ranges */
> - return 1;
> + ret |= RES_STOP;
> +
> + return ret;
> }
>
> static int walk_ram_range_callback(u64 start, u64 end, void *arg)
> @@ -2141,12 +2147,11 @@ static int walk_ram_range_callback(u64 s
> struct kexec_buf *kbuf = (struct kexec_buf *)arg;
> unsigned long sz = end - start + 1;
>
> - /* Returning 0 will take to next memory range */
> if (sz < kbuf->memsz)
> - return 0;
> + return EADDRNOTAVAIL;
>
> if (end < kbuf->buf_min || start > kbuf->buf_max)
> - return 0;
> + return EADDRNOTAVAIL;
>
> /*
> * Allocate memory top down with-in ram range. Otherwise bottom up
> @@ -2168,15 +2173,15 @@ int kexec_add_buffer(struct kimage *imag
> unsigned long buf_max, bool top_down, unsigned long *load_addr)
> {
>
> - unsigned long nr_segments = image->nr_segments, new_nr_segments;
> struct kexec_segment *ksegment;
> struct kexec_buf buf, *kbuf;
> + int ret;
>
> /* Currently adding segment this way is allowed only in file mode */
> if (!image->file_mode)
> return -EINVAL;
>
> - if (nr_segments >= KEXEC_SEGMENT_MAX)
> + if (image->nr_segments >= KEXEC_SEGMENT_MAX)
> return -EINVAL;
>
> /*
> @@ -2208,25 +2213,18 @@ int kexec_add_buffer(struct kimage *imag
>
> /* Walk the RAM ranges and allocate a suitable range for the buffer */
> if (image->type == KEXEC_TYPE_CRASH)
> - walk_ram_res("Crash kernel", IORESOURCE_MEM | IORESOURCE_BUSY,
> - crashk_res.start, crashk_res.end, kbuf,
> - walk_ram_range_callback);
> + ret = walk_ram_res("Crash kernel",
> + IORESOURCE_MEM | IORESOURCE_BUSY,
> + crashk_res.start, crashk_res.end, kbuf,
> + walk_ram_range_callback);
> else
> - walk_system_ram_res(0, -1, kbuf, walk_ram_range_callback);
> -
> - /*
> - * If range could be found successfully, it would have incremented
> - * the nr_segments value.
> - */
> - new_nr_segments = image->nr_segments;
> + ret = walk_system_ram_res(0, -1, kbuf, walk_ram_range_callback);
>
> - /* A suitable memory range could not be found for buffer */
> - if (new_nr_segments == nr_segments)
> + if (ret)
> return -EADDRNOTAVAIL;
>
> /* Found a suitable memory range */
> -
> - ksegment = &image->segment[new_nr_segments - 1];
> + ksegment = &image->segment[image->nr_segments - 1];
> *load_addr = ksegment->mem;
> return 0;
> }
> Index: b/include/linux/ioport.h
> ===================================================================
> --- a/include/linux/ioport.h 2014-06-11 14:49:35.865426300 +0200
> +++ b/include/linux/ioport.h 2014-06-11 16:02:12.775235692 +0200
> @@ -237,6 +237,16 @@ extern int iomem_is_exclusive(u64 addr);
> extern int
> walk_system_ram_range(unsigned long start_pfn, unsigned long nr_pages,
> void *arg, int (*func)(unsigned long, unsigned long, void *));
> +
> +#define RET_BITS 8
> +#define RET_MASK ((1U << RET_BITS) - 1)
> +#define RETVAL(r) (-((r) & RET_MASK))
> +
> +#define RET_OK 0
> +#define RET_ERR 1
> +
> +#define RES_STOP BIT(0 + RET_BITS)
> +
> extern int
> walk_system_ram_res(u64 start, u64 end, void *arg,
> int (*func)(u64, u64, void *));
next prev parent reply other threads:[~2014-06-11 17:05 UTC|newest]
Thread overview: 214+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-06-03 13:06 [RFC PATCH 00/13][V3] kexec: A new system call to allow in kernel loading Vivek Goyal
2014-06-03 13:06 ` Vivek Goyal
2014-06-03 13:06 ` [PATCH 01/13] bin2c: Move bin2c in scripts/basic Vivek Goyal
2014-06-03 13:06 ` Vivek Goyal
2014-06-03 16:01 ` Borislav Petkov
2014-06-03 16:01 ` Borislav Petkov
2014-06-03 17:13 ` Vivek Goyal
2014-06-03 17:13 ` Vivek Goyal
2014-06-03 13:06 ` [PATCH 02/13] kernel: Build bin2c based on config option CONFIG_BUILD_BIN2C Vivek Goyal
2014-06-03 13:06 ` Vivek Goyal
2014-06-04 9:13 ` Borislav Petkov
2014-06-04 9:13 ` Borislav Petkov
2014-06-03 13:06 ` [PATCH 03/13] kexec: Move segment verification code in a separate function Vivek Goyal
2014-06-03 13:06 ` Vivek Goyal
2014-06-04 9:32 ` Borislav Petkov
2014-06-04 9:32 ` Borislav Petkov
2014-06-04 18:47 ` Vivek Goyal
2014-06-04 18:47 ` Vivek Goyal
2014-06-04 20:30 ` Borislav Petkov
2014-06-04 20:30 ` Borislav Petkov
2014-06-05 14:05 ` Vivek Goyal
2014-06-05 14:05 ` Vivek Goyal
2014-06-05 14:07 ` Borislav Petkov
2014-06-05 14:07 ` Borislav Petkov
2014-06-03 13:06 ` [PATCH 04/13] resource: Provide new functions to walk through resources Vivek Goyal
2014-06-03 13:06 ` Vivek Goyal
2014-06-04 10:24 ` Borislav Petkov
2014-06-04 10:24 ` Borislav Petkov
2014-06-05 13:58 ` Vivek Goyal
2014-06-05 13:58 ` Vivek Goyal
2014-06-03 13:06 ` [PATCH 05/13] kexec: Make kexec_segment user buffer pointer a union Vivek Goyal
2014-06-03 13:06 ` Vivek Goyal
2014-06-04 10:34 ` Borislav Petkov
2014-06-04 10:34 ` Borislav Petkov
2014-06-03 13:06 ` [PATCH 06/13] kexec: New syscall kexec_file_load() declaration Vivek Goyal
2014-06-03 13:06 ` Vivek Goyal
2014-06-04 15:18 ` Borislav Petkov
2014-06-04 15:18 ` Borislav Petkov
2014-06-05 9:56 ` WANG Chao
2014-06-05 9:56 ` WANG Chao
2014-06-05 15:16 ` Vivek Goyal
2014-06-05 15:16 ` Vivek Goyal
2014-06-05 15:22 ` Vivek Goyal
2014-06-05 15:22 ` Vivek Goyal
2014-06-06 6:34 ` WANG Chao
2014-06-06 6:34 ` WANG Chao
2014-06-03 13:06 ` [PATCH 07/13] kexec: Implementation of new syscall kexec_file_load Vivek Goyal
2014-06-03 13:06 ` Vivek Goyal
2014-06-05 11:15 ` Borislav Petkov
2014-06-05 11:15 ` Borislav Petkov
2014-06-05 20:17 ` Vivek Goyal
2014-06-05 20:17 ` Vivek Goyal
2014-06-06 2:11 ` Borislav Petkov
2014-06-06 2:11 ` Borislav Petkov
2014-06-06 18:02 ` Vivek Goyal
2014-06-06 18:02 ` Vivek Goyal
2014-06-11 14:13 ` Borislav Petkov
2014-06-11 14:13 ` Borislav Petkov
2014-06-11 17:04 ` Vivek Goyal [this message]
2014-06-11 17:04 ` Vivek Goyal
2014-06-06 6:56 ` WANG Chao
2014-06-06 6:56 ` WANG Chao
2014-06-06 18:19 ` Vivek Goyal
2014-06-06 18:19 ` Vivek Goyal
2014-06-09 2:11 ` Dave Young
2014-06-09 2:11 ` Dave Young
2014-06-09 5:35 ` WANG Chao
2014-06-09 5:35 ` WANG Chao
2014-06-09 15:41 ` Vivek Goyal
2014-06-09 15:41 ` Vivek Goyal
2014-06-13 7:50 ` Borislav Petkov
2014-06-13 7:50 ` Borislav Petkov
2014-06-13 8:00 ` WANG Chao
2014-06-13 8:00 ` WANG Chao
2014-06-13 8:10 ` Borislav Petkov
2014-06-13 8:10 ` Borislav Petkov
2014-06-13 8:24 ` WANG Chao
2014-06-13 8:24 ` WANG Chao
2014-06-13 8:30 ` Borislav Petkov
2014-06-13 8:30 ` Borislav Petkov
2014-06-13 12:49 ` Vivek Goyal
2014-06-13 12:49 ` Vivek Goyal
2014-06-13 12:46 ` Vivek Goyal
2014-06-13 12:46 ` Vivek Goyal
2014-06-13 15:36 ` Borislav Petkov
2014-06-13 15:36 ` Borislav Petkov
2014-06-16 17:38 ` Vivek Goyal
2014-06-16 17:38 ` Vivek Goyal
2014-06-16 20:05 ` Borislav Petkov
2014-06-16 20:05 ` Borislav Petkov
2014-06-16 20:53 ` Vivek Goyal
2014-06-16 20:53 ` Vivek Goyal
2014-06-16 21:09 ` Borislav Petkov
2014-06-16 21:09 ` Borislav Petkov
2014-06-16 21:25 ` H. Peter Anvin
2014-06-16 21:25 ` H. Peter Anvin
2014-06-16 21:43 ` Vivek Goyal
2014-06-16 21:43 ` Vivek Goyal
2014-06-16 22:10 ` Borislav Petkov
2014-06-16 22:10 ` Borislav Petkov
2014-06-16 22:49 ` H. Peter Anvin
2014-06-16 22:49 ` H. Peter Anvin
2014-06-09 15:30 ` Vivek Goyal
2014-06-09 15:30 ` Vivek Goyal
2014-06-03 13:06 ` [PATCH 08/13] purgatory/sha256: Provide implementation of sha256 in purgaotory context Vivek Goyal
2014-06-03 13:06 ` Vivek Goyal
2014-06-03 13:06 ` [PATCH 09/13] purgatory: Core purgatory functionality Vivek Goyal
2014-06-03 13:06 ` Vivek Goyal
2014-06-05 20:05 ` Borislav Petkov
2014-06-05 20:05 ` Borislav Petkov
2014-06-06 19:51 ` Vivek Goyal
2014-06-06 19:51 ` Vivek Goyal
2014-06-13 10:17 ` Borislav Petkov
2014-06-13 10:17 ` Borislav Petkov
2014-06-16 17:25 ` Vivek Goyal
2014-06-16 17:25 ` Vivek Goyal
2014-06-16 20:10 ` Borislav Petkov
2014-06-16 20:10 ` Borislav Petkov
2014-06-03 13:06 ` [PATCH 10/13] kexec: Load and Relocate purgatory at kernel load time Vivek Goyal
2014-06-03 13:06 ` Vivek Goyal
2014-06-10 16:31 ` Borislav Petkov
2014-06-10 16:31 ` Borislav Petkov
2014-06-11 19:24 ` Vivek Goyal
2014-06-11 19:24 ` Vivek Goyal
2014-06-13 16:14 ` Borislav Petkov
2014-06-13 16:14 ` Borislav Petkov
2014-06-03 13:07 ` [PATCH 11/13] kexec-bzImage: Support for loading bzImage using 64bit entry Vivek Goyal
2014-06-03 13:07 ` Vivek Goyal
2014-06-15 16:35 ` Borislav Petkov
2014-06-15 16:35 ` Borislav Petkov
2014-06-15 16:56 ` H. Peter Anvin
2014-06-15 16:56 ` H. Peter Anvin
2014-06-16 20:06 ` Vivek Goyal
2014-06-16 20:06 ` Vivek Goyal
2014-06-16 20:57 ` Borislav Petkov
2014-06-16 20:57 ` Borislav Petkov
2014-06-16 21:15 ` Vivek Goyal
2014-06-16 21:15 ` Vivek Goyal
2014-06-16 21:27 ` Borislav Petkov
2014-06-16 21:27 ` Borislav Petkov
2014-06-16 21:45 ` Vivek Goyal
2014-06-16 21:45 ` Vivek Goyal
2014-06-24 17:31 ` Vivek Goyal
2014-06-24 17:31 ` Vivek Goyal
2014-06-24 18:23 ` Borislav Petkov
2014-06-24 18:23 ` Borislav Petkov
2014-06-03 13:07 ` [PATCH 12/13] kexec: Support for Kexec on panic using new system call Vivek Goyal
2014-06-03 13:07 ` Vivek Goyal
2014-06-17 21:43 ` Borislav Petkov
2014-06-17 21:43 ` Borislav Petkov
2014-06-18 14:20 ` Vivek Goyal
2014-06-18 14:20 ` Vivek Goyal
2014-06-03 13:07 ` [PATCH 13/13] kexec: Support kexec/kdump on EFI systems Vivek Goyal
2014-06-03 13:07 ` Vivek Goyal
2014-06-18 15:43 ` Borislav Petkov
2014-06-18 15:43 ` Borislav Petkov
2014-06-18 16:06 ` Borislav Petkov
2014-06-18 16:06 ` Borislav Petkov
2014-06-18 16:06 ` Borislav Petkov
2014-06-18 17:39 ` Vivek Goyal
2014-06-18 17:39 ` Vivek Goyal
2014-06-18 17:39 ` Vivek Goyal
2014-06-03 13:12 ` [RFC PATCH 00/13][V3] kexec: A new system call to allow in kernel loading Vivek Goyal
2014-06-03 13:12 ` Vivek Goyal
2014-06-04 9:22 ` WANG Chao
2014-06-04 9:22 ` WANG Chao
2014-06-04 17:50 ` Vivek Goyal
2014-06-04 17:50 ` Vivek Goyal
2014-06-04 19:39 ` Michael Kerrisk
2014-06-04 19:39 ` Michael Kerrisk
2014-06-04 19:39 ` Michael Kerrisk
2014-06-05 14:04 ` Vivek Goyal
2014-06-05 14:04 ` Vivek Goyal
2014-06-05 14:04 ` Vivek Goyal
2014-06-06 5:45 ` Michael Kerrisk (man-pages)
2014-06-06 5:45 ` Michael Kerrisk (man-pages)
2014-06-06 5:45 ` Michael Kerrisk (man-pages)
2014-06-06 18:04 ` Vivek Goyal
2014-06-06 18:04 ` Vivek Goyal
2014-06-06 18:04 ` Vivek Goyal
2014-06-05 8:31 ` Dave Young
2014-06-05 8:31 ` Dave Young
2014-06-05 15:01 ` Vivek Goyal
2014-06-05 15:01 ` Vivek Goyal
2014-06-06 7:37 ` Dave Young
2014-06-06 7:37 ` Dave Young
2014-06-06 20:04 ` Vivek Goyal
2014-06-06 20:04 ` Vivek Goyal
2014-06-09 1:57 ` Dave Young
2014-06-09 1:57 ` Dave Young
2014-06-06 20:37 ` H. Peter Anvin
2014-06-06 20:37 ` H. Peter Anvin
2014-06-06 20:58 ` Matt Fleming
2014-06-06 20:58 ` Matt Fleming
2014-06-06 21:00 ` H. Peter Anvin
2014-06-06 21:00 ` H. Peter Anvin
2014-06-06 21:02 ` Matt Fleming
2014-06-06 21:02 ` Matt Fleming
2014-06-12 5:42 ` Dave Young
2014-06-12 5:42 ` Dave Young
2014-06-12 12:36 ` Vivek Goyal
2014-06-12 12:36 ` Vivek Goyal
2014-06-17 14:24 ` Vivek Goyal
2014-06-17 14:24 ` Vivek Goyal
2014-06-18 1:45 ` Dave Young
2014-06-18 1:45 ` Dave Young
2014-06-18 1:52 ` Dave Young
2014-06-18 1:52 ` Dave Young
2014-06-18 12:40 ` Vivek Goyal
2014-06-18 12:40 ` Vivek Goyal
2014-06-16 21:13 ` Borislav Petkov
2014-06-16 21:13 ` Borislav Petkov
2014-06-17 13:24 ` Vivek Goyal
2014-06-17 13:24 ` Vivek Goyal
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20140611170421.GE10723@redhat.com \
--to=vgoyal@redhat.com \
--cc=akpm@linux-foundation.org \
--cc=bhe@redhat.com \
--cc=bp@alien8.de \
--cc=chaowang@redhat.com \
--cc=dyoung@redhat.com \
--cc=ebiederm@xmission.com \
--cc=greg@kroah.com \
--cc=hpa@zytor.com \
--cc=jkosina@suse.cz \
--cc=kexec@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mjg59@srcf.ucam.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.