Move whatever possible into .init.*, and some data items into .data.read_mostly. Signed-off-by: Jan Beulich --- 2011-01-17.orig/xen/drivers/passthrough/vtd/dmar.c +++ 2011-01-17/xen/drivers/passthrough/vtd/dmar.c @@ -41,13 +41,12 @@ #define MIN_SCOPE_LEN (sizeof(struct acpi_pci_path) + \ sizeof(struct acpi_dev_scope)) -LIST_HEAD(acpi_drhd_units); -LIST_HEAD(acpi_rmrr_units); -LIST_HEAD(acpi_atsr_units); -LIST_HEAD(acpi_rhsa_units); +LIST_HEAD_READ_MOSTLY(acpi_drhd_units); +LIST_HEAD_READ_MOSTLY(acpi_rmrr_units); +static LIST_HEAD_READ_MOSTLY(acpi_atsr_units); +static LIST_HEAD_READ_MOSTLY(acpi_rhsa_units); -static u64 igd_drhd_address; -u8 dmar_host_address_width; +static u64 __read_mostly igd_drhd_address; void dmar_scope_add_buses(struct dmar_scope *scope, u16 sec_bus, u16 sub_bus) { @@ -679,6 +678,7 @@ static int __init acpi_parse_dmar(struct { struct acpi_table_dmar *dmar; struct acpi_dmar_entry_header *entry_header; + u8 dmar_host_address_width; int ret = 0; dmar = (struct acpi_table_dmar *)table; --- 2011-01-17.orig/xen/drivers/passthrough/vtd/dmar.h +++ 2011-01-17/xen/drivers/passthrough/vtd/dmar.h @@ -24,8 +24,6 @@ #include #include -extern u8 dmar_host_address_width; - /* This one is for interrupt remapping */ struct acpi_ioapic_unit { struct list_head list; --- 2011-01-17.orig/xen/include/xen/list.h +++ 2011-01-17/xen/include/xen/list.h @@ -36,6 +36,9 @@ struct list_head { #define LIST_HEAD(name) \ struct list_head name = LIST_HEAD_INIT(name) +#define LIST_HEAD_READ_MOSTLY(name) \ + struct list_head __read_mostly name = LIST_HEAD_INIT(name) + static inline void INIT_LIST_HEAD(struct list_head *list) { list->next = list;