diff --git a/Makefile b/Makefile
index 4c16ce1..1121cf6 100644
--- a/Makefile
+++ b/Makefile
@@ -9,7 +9,7 @@ KDIR    := /usr/lib/modules/$(KVER)/build
 PWD    := $(shell pwd)

 default:
-	$(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules
+	$(MAKE) -C $(KDIR) M=$(PWD) SUBDIRS=$(PWD) modules
	
 clean:
-	$(MAKE) -C $(KDIR) SUBDIRS=$(PWD) clean
+	$(MAKE) -C $(KDIR) M=$(PWD) SUBDIRS=$(PWD) clean
diff --git a/nvidia_bl.c b/nvidia_bl.c
index c1d3593..e7dfccb 100644
--- a/nvidia_bl.c
+++ b/nvidia_bl.c
@@ -538,17 +538,17 @@ static const unsigned nvidia_bl_subvendors[] __initdata = {
 /*
  * Machine specific quirks used below.
  */
-static const struct machine_quirks apple_quirks __initdata = {
+static const struct machine_quirks apple_quirks = {
	.dev_id		= PCI_ANY_ID,
	.max_level	= 1023
 };

-static const struct machine_quirks apple_quirks_320m __initdata = {
+static const struct machine_quirks apple_quirks_320m = {
	.dev_id		= PCI_ANY_ID,
	.max_level	= 44000
 };

-static const struct machine_quirks max_level_0x1ffff __initdata = {
+static const struct machine_quirks max_level_0x1ffff = {
	.dev_id		= PCI_ANY_ID,
	.max_level	= 0x1ffff
 };
@@ -565,7 +565,7 @@ static int nvidia_bl_dmi_match(const struct dmi_system_id *id)
    return 1;
 }

-static const struct dmi_system_id nvidia_bl_machine_table[] __initdata = {
+static const struct dmi_system_id nvidia_bl_machine_table[] = {
	/*
	* Apple machines: Intel chipset, Nvidia graphics
	*/
@@ -925,7 +925,7 @@ static int nvidia_bl_map_smartdimmer(struct driver_data *dd)
		        "smartdimmer at 0x%lx\n", dd->bar, bar_start, reg_addr);

	/* Now really map (The address need not be page-aligned.) */
-	dd->smartdimmer = ioremap_nocache(reg_addr, dd->reg_size);
+	dd->smartdimmer = ioremap_cache(reg_addr, dd->reg_size);
	if (!dd->smartdimmer)
		return -ENXIO;
