64658743fd
Currently kernel images are limited to 8MB in size, and this causes problems especially when enabling features that take up a lot of kernel image space such as lockdep. The code now will align the kernel image size up to 4MB and map that many locked TLB entries. So, the only practical limitation is the number of available locked TLB entries which is 16 on Cheetah and 64 on pre-Cheetah sparc64 cpus. Niagara cpus don't actually have hw locked TLB entry support. Rather, the hypervisor transparently provides support for "locked" TLB entries since it runs with physical addressing and does the initial TLB miss processing. Fully utilizing this change requires some help from SILO, a patch for which will be submitted to the maintainer. Essentially, SILO will only currently map up to 8MB for the kernel image and that needs to be increased. Note that neither this patch nor the SILO bits will help with network booting. The openfirmware code will only map up to a certain amount of kernel image during a network boot and there isn't much we can to about that other than to implemented a layered network booting facility. Solaris has this, and calls it "wanboot" and we may implement something similar at some point. Signed-off-by: David S. Miller <davem@davemloft.net>
37 lines
750 B
C
37 lines
750 B
C
#ifndef _SPARC64_HVTRAP_H
|
|
#define _SPARC64_HVTRAP_H
|
|
|
|
#ifndef __ASSEMBLY__
|
|
|
|
#include <linux/types.h>
|
|
|
|
struct hvtramp_mapping {
|
|
__u64 vaddr;
|
|
__u64 tte;
|
|
};
|
|
|
|
struct hvtramp_descr {
|
|
__u32 cpu;
|
|
__u32 num_mappings;
|
|
__u64 fault_info_va;
|
|
__u64 fault_info_pa;
|
|
__u64 thread_reg;
|
|
struct hvtramp_mapping maps[1];
|
|
};
|
|
|
|
extern void hv_cpu_startup(unsigned long hvdescr_pa);
|
|
|
|
#endif
|
|
|
|
#define HVTRAMP_DESCR_CPU 0x00
|
|
#define HVTRAMP_DESCR_NUM_MAPPINGS 0x04
|
|
#define HVTRAMP_DESCR_FAULT_INFO_VA 0x08
|
|
#define HVTRAMP_DESCR_FAULT_INFO_PA 0x10
|
|
#define HVTRAMP_DESCR_THREAD_REG 0x18
|
|
#define HVTRAMP_DESCR_MAPS 0x20
|
|
|
|
#define HVTRAMP_MAPPING_VADDR 0x00
|
|
#define HVTRAMP_MAPPING_TTE 0x08
|
|
#define HVTRAMP_MAPPING_SIZE 0x10
|
|
|
|
#endif /* _SPARC64_HVTRAP_H */
|