|
@@ -45,6 +45,7 @@
|
|
|
#include <linux/moduleparam.h>
|
|
|
#include <linux/firmware.h>
|
|
|
#include <linux/dma-mapping.h>
|
|
|
+#include <asm/set_memory.h>
|
|
|
|
|
|
MODULE_AUTHOR("Abhay Salunke <abhay_salunke@dell.com>");
|
|
|
MODULE_DESCRIPTION("Driver for updating BIOS image on DELL systems");
|
|
@@ -181,6 +182,11 @@ static int create_packet(void *data, size_t length)
|
|
|
packet_data_temp_buf = NULL;
|
|
|
}
|
|
|
}
|
|
|
+ /*
|
|
|
+ * set to uncachable or it may never get written back before reboot
|
|
|
+ */
|
|
|
+ set_memory_uc((unsigned long)packet_data_temp_buf, 1 << ordernum);
|
|
|
+
|
|
|
spin_lock(&rbu_data.lock);
|
|
|
|
|
|
newpacket->data = packet_data_temp_buf;
|
|
@@ -349,6 +355,8 @@ static void packet_empty_list(void)
|
|
|
* to make sure there are no stale RBU packets left in memory
|
|
|
*/
|
|
|
memset(newpacket->data, 0, rbu_data.packetsize);
|
|
|
+ set_memory_wb((unsigned long)newpacket->data,
|
|
|
+ 1 << newpacket->ordernum);
|
|
|
free_pages((unsigned long) newpacket->data,
|
|
|
newpacket->ordernum);
|
|
|
kfree(newpacket);
|