On 11/21/2017 04:17 PM, Andy Lutomirski wrote:
> On Tue, Nov 21, 2017 at 3:42 PM, Dave Hansen
> unsigned long start = (unsigned long)get_cpu_entry_area(cpu);
> for (unsigned long addr = start; addr < start + sizeof(struct
> cpu_entry_area); addr += PAGE_SIZE) {
> pte_t pte = *pte_offset_k(addr);
On 11/21/2017 04:17 PM, Andy Lutomirski wrote:
> On Tue, Nov 21, 2017 at 3:42 PM, Dave Hansen
> unsigned long start = (unsigned long)get_cpu_entry_area(cpu);
> for (unsigned long addr = start; addr < start + sizeof(struct
> cpu_entry_area); addr += PAGE_SIZE) {
> pte_t pte = *pte_offset_k(addr);
On Tue, Nov 21, 2017 at 3:42 PM, Dave Hansen
wrote:
> On 11/21/2017 03:32 PM, Andy Lutomirski wrote:
>>> To do this, we need to special-case the kernel page table walker to deal
>>> with PTEs only since we can't just grab PMD or PUD flags and stick them
>>> in a PTE.
On Tue, Nov 21, 2017 at 3:42 PM, Dave Hansen
wrote:
> On 11/21/2017 03:32 PM, Andy Lutomirski wrote:
>>> To do this, we need to special-case the kernel page table walker to deal
>>> with PTEs only since we can't just grab PMD or PUD flags and stick them
>>> in a PTE. We would only be able to use
On 11/21/2017 03:32 PM, Andy Lutomirski wrote:
>> To do this, we need to special-case the kernel page table walker to deal
>> with PTEs only since we can't just grab PMD or PUD flags and stick them
>> in a PTE. We would only be able to use this path when populating things
>> that we know are
On 11/21/2017 03:32 PM, Andy Lutomirski wrote:
>> To do this, we need to special-case the kernel page table walker to deal
>> with PTEs only since we can't just grab PMD or PUD flags and stick them
>> in a PTE. We would only be able to use this path when populating things
>> that we know are
On Tue, Nov 21, 2017 at 3:17 PM, Dave Hansen
wrote:
> On 11/21/2017 02:46 PM, Andy Lutomirski wrote:
>>> GDT: R/O TSS: R/W at least because of trampoline stack entry code:
>>> EXEC+R/O exception stacks: R/W
>> Can you avoid code duplication by adding some logic right
On Tue, Nov 21, 2017 at 3:17 PM, Dave Hansen
wrote:
> On 11/21/2017 02:46 PM, Andy Lutomirski wrote:
>>> GDT: R/O TSS: R/W at least because of trampoline stack entry code:
>>> EXEC+R/O exception stacks: R/W
>> Can you avoid code duplication by adding some logic right after the
>> kernel
On 11/21/2017 02:46 PM, Andy Lutomirski wrote:
>> GDT: R/O TSS: R/W at least because of trampoline stack entry code:
>> EXEC+R/O exception stacks: R/W
> Can you avoid code duplication by adding some logic right after the
> kernel cpu_entry_area is set up to iterate page by page over the PTEs
> in
On 11/21/2017 02:46 PM, Andy Lutomirski wrote:
>> GDT: R/O TSS: R/W at least because of trampoline stack entry code:
>> EXEC+R/O exception stacks: R/W
> Can you avoid code duplication by adding some logic right after the
> kernel cpu_entry_area is set up to iterate page by page over the PTEs
> in
> On Nov 21, 2017, at 2:19 PM, Dave Hansen wrote:
>
> On 11/20/2017 12:46 PM, Andy Lutomirski wrote:
+ /*
+ * We could theoretically do this in setup_fixmap_gdt().
+ * But, we would need to rewrite the above page table
+ *
> On Nov 21, 2017, at 2:19 PM, Dave Hansen wrote:
>
> On 11/20/2017 12:46 PM, Andy Lutomirski wrote:
+ /*
+ * We could theoretically do this in setup_fixmap_gdt().
+ * But, we would need to rewrite the above page table
+ * allocation code to use the
On 11/20/2017 12:22 PM, Thomas Gleixner wrote:
> On Fri, 10 Nov 2017, Dave Hansen wrote:
>> __set_fixmap(get_cpu_gdt_ro_index(cpu), get_cpu_gdt_paddr(cpu), prot);
>> +
>> +/* CPU 0's mapping is done in kaiser_init() */
>> +if (cpu) {
>> +int ret;
>> +
>> +ret =
On 11/20/2017 12:22 PM, Thomas Gleixner wrote:
> On Fri, 10 Nov 2017, Dave Hansen wrote:
>> __set_fixmap(get_cpu_gdt_ro_index(cpu), get_cpu_gdt_paddr(cpu), prot);
>> +
>> +/* CPU 0's mapping is done in kaiser_init() */
>> +if (cpu) {
>> +int ret;
>> +
>> +ret =
On 11/20/2017 12:46 PM, Andy Lutomirski wrote:
>>> + /*
>>> + * We could theoretically do this in setup_fixmap_gdt().
>>> + * But, we would need to rewrite the above page table
>>> + * allocation code to use the bootmem allocator. The
>>> + * buddy allocator is not
On 11/20/2017 12:46 PM, Andy Lutomirski wrote:
>>> + /*
>>> + * We could theoretically do this in setup_fixmap_gdt().
>>> + * But, we would need to rewrite the above page table
>>> + * allocation code to use the bootmem allocator. The
>>> + * buddy allocator is not
On Mon, 20 Nov 2017, Andy Lutomirski wrote:
> On Mon, Nov 20, 2017 at 12:22 PM, Thomas Gleixner wrote:
> > On Fri, 10 Nov 2017, Dave Hansen wrote:
> >> __set_fixmap(get_cpu_gdt_ro_index(cpu), get_cpu_gdt_paddr(cpu),
> >> prot);
> >> +
> >> + /* CPU 0's mapping is
On Mon, 20 Nov 2017, Andy Lutomirski wrote:
> On Mon, Nov 20, 2017 at 12:22 PM, Thomas Gleixner wrote:
> > On Fri, 10 Nov 2017, Dave Hansen wrote:
> >> __set_fixmap(get_cpu_gdt_ro_index(cpu), get_cpu_gdt_paddr(cpu),
> >> prot);
> >> +
> >> + /* CPU 0's mapping is done in kaiser_init()
On Mon, Nov 20, 2017 at 12:22 PM, Thomas Gleixner wrote:
> On Fri, 10 Nov 2017, Dave Hansen wrote:
>> __set_fixmap(get_cpu_gdt_ro_index(cpu), get_cpu_gdt_paddr(cpu), prot);
>> +
>> + /* CPU 0's mapping is done in kaiser_init() */
>> + if (cpu) {
>> +
On Mon, Nov 20, 2017 at 12:22 PM, Thomas Gleixner wrote:
> On Fri, 10 Nov 2017, Dave Hansen wrote:
>> __set_fixmap(get_cpu_gdt_ro_index(cpu), get_cpu_gdt_paddr(cpu), prot);
>> +
>> + /* CPU 0's mapping is done in kaiser_init() */
>> + if (cpu) {
>> + int ret;
>> +
>> +
On Fri, 10 Nov 2017, Dave Hansen wrote:
> __set_fixmap(get_cpu_gdt_ro_index(cpu), get_cpu_gdt_paddr(cpu), prot);
> +
> + /* CPU 0's mapping is done in kaiser_init() */
> + if (cpu) {
> + int ret;
> +
> + ret = kaiser_add_mapping((unsigned long)
On Fri, 10 Nov 2017, Dave Hansen wrote:
> __set_fixmap(get_cpu_gdt_ro_index(cpu), get_cpu_gdt_paddr(cpu), prot);
> +
> + /* CPU 0's mapping is done in kaiser_init() */
> + if (cpu) {
> + int ret;
> +
> + ret = kaiser_add_mapping((unsigned long)
22 matches
Mail list logo