User-space program determines block device major number using sysfs.
acpi_get_object_info external interface updated.
ACPI bit register access function renamed.
acpi_bus_get_power() changed to acpi_bus_update_power()
Added block device queue to fix NULL dereference.
Added acpi functions return status checks.
printk(KERN_ALERT ...) changed to pr_alert(...).

Signed-off-by: Alexey Kodanev <[email protected]>
---
 testcases/kernel/device-drivers/Makefile           |    2 +-
 testcases/kernel/device-drivers/acpi/.gitignore    |    7 +
 testcases/kernel/device-drivers/acpi/LtpAcpi.h     |    4 +-
 testcases/kernel/device-drivers/acpi/LtpAcpiCmds.c |  432 +++++++++++---------
 testcases/kernel/device-drivers/acpi/LtpAcpiMain.c |   12 +-
 testcases/kernel/device-drivers/acpi/Makefile      |   48 ++-
 6 files changed, 288 insertions(+), 217 deletions(-)
 create mode 100644 testcases/kernel/device-drivers/acpi/.gitignore

diff --git a/testcases/kernel/device-drivers/Makefile 
b/testcases/kernel/device-drivers/Makefile
index c402702..999d889 100644
--- a/testcases/kernel/device-drivers/Makefile
+++ b/testcases/kernel/device-drivers/Makefile
@@ -21,7 +21,7 @@ include $(top_srcdir)/include/mk/env_pre.mk
 SUBDIRS                =
 
 ifeq ($(WITH_MODULES),yes)
-
+SUBDIRS                += acpi
 endif
 
 include $(top_srcdir)/include/mk/generic_trunk_target.mk
diff --git a/testcases/kernel/device-drivers/acpi/.gitignore 
b/testcases/kernel/device-drivers/acpi/.gitignore
new file mode 100644
index 0000000..bbf7287
--- /dev/null
+++ b/testcases/kernel/device-drivers/acpi/.gitignore
@@ -0,0 +1,7 @@
+/LtpAcpiMain
+/LtpAcpiCmds.ko
+/*.cmd
+/modules.order
+/Module.symvers
+/LtpAcpiCmds.mod.c
+/.tmp_versions/
diff --git a/testcases/kernel/device-drivers/acpi/LtpAcpi.h 
b/testcases/kernel/device-drivers/acpi/LtpAcpi.h
index 5c0c37b..c1d1798 100644
--- a/testcases/kernel/device-drivers/acpi/LtpAcpi.h
+++ b/testcases/kernel/device-drivers/acpi/LtpAcpi.h
@@ -63,7 +63,7 @@
 #define ACPI_TYPE_DEBUG_OBJECT          0x10
 
 #define ACPI_TYPE_EXTERNAL_MAX          0x10
-#define LTPMAJOR                        252
+
 
 /* Use 'k' as magic number */
 #define LTPACPI_IOC_MAGIC  'k'
@@ -92,6 +92,6 @@ typedef enum ltpdev_ioctl_cmds_s {
        LTP_IOCTL_NUMBER = 0x5500
 } ltpdev_ioctl_cmds_t;
 
+int LTPMAJOR;
 // define the ioctl cmds
 #define LTPDEV_CMD       _IOR( LTPMAJOR, LTP_IOCTL_NUMBER, ltpdev_cmd_t **)
-
diff --git a/testcases/kernel/device-drivers/acpi/LtpAcpiCmds.c 
b/testcases/kernel/device-drivers/acpi/LtpAcpiCmds.c
index 26fcc15..1e85242 100644
--- a/testcases/kernel/device-drivers/acpi/LtpAcpiCmds.c
+++ b/testcases/kernel/device-drivers/acpi/LtpAcpiCmds.c
@@ -28,6 +28,8 @@
  *  01/03/2009 Márton Németh <[email protected]>
  *   - Updated for Linux kernel 2.6.28
  *
+ *  09/2013 Alexey Kodanev <[email protected]>
+ *   - Updated for Linux kernel 2.6.37
  */
 
 #include <linux/kernel.h>
@@ -80,7 +82,8 @@ release:ltpdev_release,
 ioctl: ltpdev_ioctl,
 };
 
-int ltp_acpi_major = LTPMAJOR;
+ACPI_MODULE_NAME("LTP_ACPI")
+
 int test_iteration = 0;
 
 static char genhd_flags = 0;
@@ -109,26 +112,26 @@ extern struct acpi_device *acpi_root;
 
 static int ltpdev_open(struct block_device *dev, fmode_t mode)
 {
-       printk(KERN_ALERT "ltpdev_open \n");
+       pr_alert("ltpdev_open \n");
        return 0;
 }
 
 static int ltpdev_release(struct gendisk *disk, fmode_t mode)
 {
 
-       printk(KERN_ALERT "ltpdev_release \n");
+       pr_alert("ltpdev_release \n");
        return 0;
 }
 
 static u32 ltp_test_power_button_ev_handler(void *context)
 {
-       printk(KERN_ALERT "ltp_test_power_button_ev_handler \n");
+       pr_alert("ltp_test_power_button_ev_handler \n");
        return 1;
 }
 
 static u32 ltp_test_sleep_button_ev_handler(void *context)
 {
-       printk(KERN_ALERT "ltp_test_sleep_button_ev_handler \n");
+       pr_alert("ltp_test_sleep_button_ev_handler \n");
        return 1;
 }
 
@@ -145,6 +148,7 @@ static int ltpdev_ioctl(struct block_device *bdev, fmode_t 
mode, unsigned cmd,
        struct acpi_ec *ec;
        struct acpi_device *device;
        struct acpi_buffer buffer = { ACPI_ALLOCATE_BUFFER, NULL };
+       struct acpi_device_info *dev_info;
 
 #if 0
        acpi_handle tmp_handle;
@@ -164,43 +168,79 @@ static int ltpdev_ioctl(struct block_device *bdev, 
fmode_t mode, unsigned cmd,
        u32 global_lock = 0;
        int state = 0;
 
-    
/*****************************************************************************/
-
-       printk(KERN_ALERT "ltpdev_ioctl \n");
-       switch (cmd) {
-       case LTPDEV_CMD:
-
-               parent_handle = start_handle;
-               child_handle = 0;
-               level = 1;
-               test_iteration++;
-
-               printk(KERN_ALERT
-                      "-- IOCTL called to start ACPI tests -- Iteration:%d\n",
-                      test_iteration);
-
-               printk(KERN_ALERT "TEST -- acpi_get_handle \n");
-
-               status = acpi_get_handle(0, ACPI_NS_SYSTEM_BUS, &parent_handle);
+       if (cmd != (LTPDEV_CMD))
+               return 0;
 
-               printk(KERN_ALERT "TEST -- acpi_get_object_info \n");
+       /**********************************************************************/
 
-               status = acpi_get_object_info(parent_handle, &buffer);
+       pr_alert("ltpdev_ioctl, cmd\n");
 
-               printk(KERN_ALERT "TEST -- acpi_get_next_object \n");
+       parent_handle = start_handle;
+       child_handle = 0;
+       level = 1;
+       test_iteration++;
 
-               status = acpi_get_next_object(ACPI_TYPE_ANY, parent_handle,
-                                             child_handle, &next_child_handle);
+       pr_alert("-- IOCTL called to start ACPI tests -- Iteration:%d\n",
+                test_iteration);
 
-               printk(KERN_ALERT "TEST -- acpi_get_parent \n");
+       pr_alert("TEST -- acpi_get_handle \n");
+       status = acpi_get_handle(NULL, "\\_SB", &parent_handle);
+       if (ACPI_FAILURE(status))
+               ACPI_EXCEPTION((AE_INFO, status, "acpi_get_handle"));
 
-               status = acpi_get_parent(parent_handle, &parent_handle);
+       pr_alert("TEST -- acpi_get_object_info \n");
+       /*
+        * ACPICA: Major update for acpi_get_object_info external interface
+        * http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/
+        * commit/?id=15b8dd53f5ffaf8e2d9095c423f713423f576c0f
+        */
+       status = acpi_get_object_info(parent_handle, &dev_info);
+       if (ACPI_FAILURE(status))
+               ACPI_EXCEPTION((AE_INFO, status, "acpi_object_info failed"));
+       else {
+               pr_alert("ACPI object name %4.4s, type %d",
+                       (char *)&dev_info->name,
+                       dev_info->type);
+               kfree(dev_info);
+       }
 
-               printk(KERN_ALERT "TEST -- acpi_evaluate_object \n");
+       pr_alert("TEST -- acpi_get_next_object \n");
+       status = acpi_get_next_object(ACPI_TYPE_DEVICE, parent_handle,
+                                     child_handle, &next_child_handle);
+       child_handle = next_child_handle;
+
+       if (ACPI_FAILURE(status))
+               ACPI_EXCEPTION((AE_INFO, status, "acpi_get_next_object"));
+       status = acpi_get_object_info(next_child_handle, &dev_info);
+       if (ACPI_FAILURE(status))
+               ACPI_EXCEPTION((AE_INFO, status, "acpi_object_info failed"));
+       else {
+               pr_alert("ACPI object name %4.4s, type %d",
+                       (char *)&dev_info->name,
+                       dev_info->type);
+               kfree(dev_info);
+       }
 
-               status = acpi_evaluate_object(parent_handle, "_ON", NULL, NULL);
+       pr_alert("TEST -- acpi_evaluate_object \n");
+       status = acpi_evaluate_object(parent_handle, "_INI", NULL, NULL);
+       if (ACPI_FAILURE(status))
+               ACPI_EXCEPTION((AE_INFO, status, "acpi_evaluate_object"));
+
+       pr_alert("TEST -- acpi_get_parent \n");
+       status = acpi_get_parent(parent_handle, &parent_handle);
+       if (ACPI_FAILURE(status))
+               ACPI_EXCEPTION((AE_INFO, status, "acpi_get_parent failed"));
+       status = acpi_get_object_info(parent_handle, &dev_info);
+       if (ACPI_FAILURE(status))
+               ACPI_EXCEPTION((AE_INFO, status, "acpi_object_info failed"));
+       else {
+               pr_alert("ACPI object name %4.4s, type %d",
+                       (char *)&dev_info->name,
+                       dev_info->type);
+                       kfree(dev_info);
+       }
 
-               printk(KERN_ALERT "TEST -- acpi_get_table \n");
+//     pr_alert("TEST -- acpi_get_table \n");
 
 //        status = acpi_get_table(ACPI_TABLE_RSDP, 1, &dsdt);
 //        status = acpi_get_table(ACPI_TABLE_DSDT, 1, &dsdt);
@@ -218,92 +258,99 @@ static int ltpdev_ioctl(struct block_device *bdev, 
fmode_t mode, unsigned cmd,
                                            (struct acpi_table_header **)&dsdt);
 #endif
 
-               printk(KERN_ALERT "TEST -- acpi_install_notify_handler \n");
-
-               status =
-                   acpi_install_notify_handler(ACPI_ROOT_OBJECT,
-                                               ACPI_SYSTEM_NOTIFY,
-                                               &acpi_bus_notify, NULL);
-
-               printk(KERN_ALERT "TEST -- acpi_remove_notify_handler \n");
-
-               status =
-                   acpi_remove_notify_handler(ACPI_ROOT_OBJECT,
-                                              ACPI_SYSTEM_NOTIFY,
-                                              &acpi_bus_notify);
+       pr_alert("TEST -- acpi_install_notify_handler \n");
 
-               printk(KERN_ALERT
-                      "TEST -- acpi_install_fixed_event_handler \n");
-               status =
-                   acpi_install_fixed_event_handler(ACPI_EVENT_POWER_BUTTON,
-                                                    
ltp_test_power_button_ev_handler,
-                                                    NULL);
-               if (status)
-                       printk(KERN_ALERT
-                              "Failed installing fixed event handler \n");
+       status = acpi_install_notify_handler(next_child_handle,
+               ACPI_SYSTEM_NOTIFY, &acpi_bus_notify, NULL);
+       if (ACPI_FAILURE(status)) {
+               ACPI_EXCEPTION((AE_INFO, status,
+                       "acpi_install_notify_handler"));
+       }
 
-               printk(KERN_ALERT "TEST -- acpi_remove_fixed_event_handler \n");
-               status =
-                   acpi_remove_fixed_event_handler(ACPI_EVENT_POWER_BUTTON,
-                                                   
ltp_test_power_button_ev_handler);
-               if (status)
-                       printk(KERN_ALERT
-                              "Failed removing fixed event handler \n");
+       pr_alert("TEST -- acpi_remove_notify_handler \n");
+       status = acpi_remove_notify_handler(next_child_handle,
+               ACPI_SYSTEM_NOTIFY, &acpi_bus_notify);
+       if (ACPI_FAILURE(status))
+               ACPI_EXCEPTION((AE_INFO, status, "acpi_remove_notify_handler"));
+
+       pr_alert("TEST -- acpi_install_fixed_event_handler \n");
+       status =  acpi_install_fixed_event_handler(ACPI_EVENT_POWER_BUTTON,
+               ltp_test_power_button_ev_handler, NULL);
+       if (ACPI_FAILURE(status)) {
+               ACPI_EXCEPTION((AE_INFO, status,
+                       "failed installing fixed event handler"));
+       }
 
-               printk(KERN_ALERT
-                      "TEST -- acpi_install_fixed_event_handler \n");
-               status =
-                   acpi_install_fixed_event_handler(ACPI_EVENT_SLEEP_BUTTON,
-                                                    
ltp_test_sleep_button_ev_handler,
-                                                    NULL);
-               if (status)
-                       printk(KERN_ALERT
-                              "Failed installing fixed event handler \n");
+       pr_alert("TEST -- acpi_remove_fixed_event_handler \n");
+       status = acpi_remove_fixed_event_handler(ACPI_EVENT_POWER_BUTTON,
+               ltp_test_power_button_ev_handler);
+       if (ACPI_FAILURE(status)) {
+               ACPI_EXCEPTION((AE_INFO, status,
+                       "failed removing fixed event handler"));
+       }
 
-               printk(KERN_ALERT "TEST -- acpi_remove_fixed_event_handler \n");
-               status =
-                   acpi_remove_fixed_event_handler(ACPI_EVENT_SLEEP_BUTTON,
-                                                   
ltp_test_sleep_button_ev_handler);
-               if (status)
-                       printk(KERN_ALERT
-                              "Failed removing fixed event handler \n");
+       pr_alert("TEST -- acpi_install_fixed_event_handler \n");
+       status = acpi_install_fixed_event_handler(ACPI_EVENT_SLEEP_BUTTON,
+               ltp_test_sleep_button_ev_handler, NULL);
+       if (ACPI_FAILURE(status)) {
+               ACPI_EXCEPTION((AE_INFO, status,
+                       "failed installing fixed event handler"));
+       }
 
-               printk(KERN_ALERT "TEST -- acpi_acquire_global_lock \n");
-               status =
-                   acpi_acquire_global_lock(ACPI_EC_UDELAY_GLK, &global_lock);
+       pr_alert("TEST -- acpi_remove_fixed_event_handler \n");
+       status = acpi_remove_fixed_event_handler(ACPI_EVENT_SLEEP_BUTTON,
+               ltp_test_sleep_button_ev_handler);
+       if (ACPI_FAILURE(status)) {
+               ACPI_EXCEPTION((AE_INFO, status,
+                       "removing fixed event handler"));
+       }
 
-               printk(KERN_ALERT "TEST -- acpi_release_global_lock \n");
-               status = acpi_release_global_lock(global_lock);
+       pr_alert("TEST -- acpi_acquire_global_lock \n");
+       status = acpi_acquire_global_lock(ACPI_EC_UDELAY_GLK, &global_lock);
+       if (ACPI_FAILURE(status))
+               ACPI_EXCEPTION((AE_INFO, status, "acpi_acquire_global_lock"));
 
-               printk(KERN_ALERT "TEST -- acpi_bus_get_device \n");
+       pr_alert("TEST -- acpi_release_global_lock \n");
+       status = acpi_release_global_lock(global_lock);
+       if (ACPI_FAILURE(status))
+               ACPI_EXCEPTION((AE_INFO, status, "acpi_release_global_lock"));
 
-               status = acpi_bus_get_device(next_child_handle, &device);
+       pr_alert("TEST -- acpi_bus_get_device \n");
+       status = acpi_bus_get_device(next_child_handle, &device);
+       if (ACPI_FAILURE(status))
+               ACPI_EXCEPTION((AE_INFO, status, "acpi_bus_get_device"));
 
 #if 0
                printk(KERN_ALERT "TEST -- acpi_bus_find_driver \n");
                status = acpi_bus_find_driver(device);
 #endif
 
-               printk(KERN_ALERT "TEST -- acpi_bus_get_power \n");
-               status = acpi_bus_get_power(next_child_handle, &state);
-               if (status)
-                       printk(KERN_ALERT "Error reading power state \n");
-
-               printk(KERN_ALERT "TEST -- acpi_driver_data \n");
-
-               ec = acpi_driver_data(device);
-
-               if (!ec) {
-                       printk(KERN_ALERT "Failure getting device data \n");
-               } else {
-
-                       printk(KERN_ALERT
-                              "TEST -- acpi_install_gpe_handler \n");
+       pr_alert("TEST -- acpi_bus_update_power \n");
+       status = acpi_bus_update_power(next_child_handle, &state);
+       if (ACPI_FAILURE(status))
+               ACPI_EXCEPTION((AE_INFO, status, "error reading power state"));
+       else
+               pr_info("acpi bus power state is %d\n", state);
+
+       pr_alert("TEST -- acpi_driver_data \n");
+
+       ec = acpi_driver_data(device);
+       if (!ec) {
+               pr_alert("Failure getting device data \n");
+       } else {
+               /*
+               pr_alert(
+                      "TEST -- acpi_install_gpe_handler \n");
                        ec->status_addr = ec->command_addr;
                        status =
                            acpi_install_gpe_handler(device, ec->gpe_bit,
                                                     ACPI_GPE_EDGE_TRIGGERED,
                                                     &acpi_ec_gpe_handler, ec);
+               if (ACPI_FAILURE(status)) {
+                       ACPI_EXCEPTION((AE_INFO, status,
+                               "acpi_install_gpe_handler failed"));
+               }
+               */
 /*
             status = acpi_install_address_space_handler (ACPI_ROOT_OBJECT,
                     ACPI_ADR_SPACE_EC, &acpi_ec_space_handler,
@@ -316,18 +363,24 @@ static int ltpdev_ioctl(struct block_device *bdev, 
fmode_t mode, unsigned cmd,
             acpi_remove_address_space_handler(ACPI_ROOT_OBJECT,
                 ACPI_ADR_SPACE_EC, &acpi_ec_space_handler);
 */
-                       printk(KERN_ALERT "TEST -- acpi_remove_gpe_handler \n");
-                       acpi_remove_gpe_handler(device, ec->gpe_bit,
-                                               &acpi_ec_gpe_handler);
+               /*
+               pr_alert("TEST -- acpi_remove_gpe_handler \n");
+               acpi_remove_gpe_handler(device, ec->gpe_bit,
+                                       &acpi_ec_gpe_handler);
+               if (ACPI_FAILURE(status)) {
+                       ACPI_EXCEPTION((AE_INFO, status,
+                               "acpi_remove_gpe_handler failed"));
                }
+               */
+       }
 
-               printk(KERN_ALERT "TEST -- acpi_get_current_resources \n");
-               status = acpi_get_current_resources(next_child_handle, &buffer);
+       pr_alert("TEST -- acpi_get_current_resources \n");
+       status = acpi_get_current_resources(next_child_handle, &buffer);
+       if (ACPI_FAILURE(status)) {
+               ACPI_EXCEPTION((AE_INFO, status,
+                       "failed get_current_resources"));
+       }
 
-               if (status) {
-                       printk(KERN_ALERT "Failed get_current_resources %d\n",
-                              status);
-               }
 #ifdef ACPI_FUTURE_USAGE
                printk(KERN_ALERT "TEST -- acpi_get_possible_resources \n");
                status =
@@ -339,21 +392,23 @@ static int ltpdev_ioctl(struct block_device *bdev, 
fmode_t mode, unsigned cmd,
                }
 #endif
 
-               printk(KERN_ALERT "TEST -- acpi_walk_resources \n");
-               status = acpi_walk_resources(ec->handle, METHOD_NAME__CRS,
-                                            acpi_ec_io_ports, ec);
+       /*
+       pr_alert("TEST -- acpi_walk_resources \n");
+       status = acpi_walk_resources(ec->handle, METHOD_NAME__CRS,
+                                    acpi_ec_io_ports, ec);
 
-               if (status) {
-                       printk(KERN_ALERT "Failed walk_resources %d\n", status);
-               }
+       if (status) {
+               pr_alert("Failed walk_resources %d\n", status);
+       }
 
-               printk(KERN_ALERT "TEST -- acpi_evaluate_integer \n");
-               status =
-                   acpi_evaluate_integer(ec->handle, "_GPE", NULL,
-                                         &ec->gpe_bit);
-               if (status)
-                       printk(KERN_ALERT
-                              "Error obtaining GPE bit assignment\n");
+       pr_alert("TEST -- acpi_evaluate_integer \n");
+       status =
+           acpi_evaluate_integer(ec->handle, "_GPE", NULL,
+                                 &ec->gpe_bit);
+       if (status)
+               pr_alert(
+                      "Error obtaining GPE bit assignment\n");
+       */
 
 #if 0
                printk(KERN_ALERT "TEST -- acpi_get_timer \n");
@@ -383,37 +438,39 @@ static int ltpdev_ioctl(struct block_device *bdev, 
fmode_t mode, unsigned cmd,
                }
 #endif
 
-               for (i = 0; i < ACPI_S_STATE_COUNT; i++) {
-                       printk(KERN_ALERT
-                              "TEST -- acpi_get_sleep_type_data \n");
-                       status = acpi_get_sleep_type_data(i, &type_a, &type_b);
+       for (i = 0; i < ACPI_S_STATE_COUNT; i++) {
+               pr_alert("TEST -- acpi_get_sleep_type_data \n");
+               status = acpi_get_sleep_type_data(i, &type_a, &type_b);
 
-                       if (status) {
-                               printk(KERN_ALERT
-                                      "Failed get_sleep_type_data %d\n",
-                                      status);
-                       } else {
-                               printk(KERN_ALERT
-                                      "get_sleep_type_data [%d] type_a:%d 
type_b:%d\n",
-                                      i, type_a, type_b);
-                       }
+               if (ACPI_FAILURE(status)) {
+                       ACPI_EXCEPTION((AE_INFO, status,
+                               "failed get_sleep_type_data"));
+               } else {
+                       pr_alert(
+                              "get_sleep_type_data [%d] type_a:%d type_b:%d\n",
+                              i, type_a, type_b);
                }
+       }
 
-               printk(KERN_ALERT "TEST -- acpi_get_register \n");
+       pr_alert("TEST -- acpi_get_register \n");
 
-/*
- * ACPICA: Remove obsolete Flags parameter.
- * 
http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=d8c71b6d3b21cf21ad775e1cf6da95bf87bd5ad4
- *
- */
-               acpi_get_register(ACPI_BITREG_BUS_MASTER_STATUS, &bm_status);
+       /*
+        * ACPICA: Remove obsolete Flags parameter.
+        * http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;
+        * a=commitdiff;h=d8c71b6d3b21cf21ad775e1cf6da95bf87bd5ad4
+        *
+        * ACPICA: Rename ACPI bit register access functions
+        * http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/
+        * commit/?id=50ffba1bd3120b069617455545bc27bcf3cf7579
+        */
+       acpi_read_bit_register(ACPI_BITREG_BUS_MASTER_STATUS, &bm_status);
 
-               if (!bm_status) {
-                       printk(KERN_ALERT "Failed get_register [%d]\n",
-                              bm_status);
-               } else {
-                       printk(KERN_ALERT "get_register [%d] \n", bm_status);
-               }
+       if (!bm_status) {
+               pr_alert("Failed get_register [%d]\n",
+                      bm_status);
+       } else {
+               pr_alert("get_register [%d] \n", bm_status);
+       }
 
 //        Puts system to sleep, permenately !!!
 //        status = acpi_enter_sleep_state(ACPI_STATE_S1);
@@ -438,26 +495,25 @@ static int ltpdev_ioctl(struct block_device *bdev, 
fmode_t mode, unsigned cmd,
                }
 #endif
 
-               printk(KERN_ALERT "TEST -- acpi_get_devices \n");
-               status =
-                   acpi_get_devices(NULL, ltp_get_dev_callback, "LTP0001",
-                                    NULL);
+       pr_alert("TEST -- acpi_get_devices \n");
+       status = acpi_get_devices(NULL, ltp_get_dev_callback, "LTP0001", NULL);
+       if (ACPI_FAILURE(status))
+               ACPI_EXCEPTION((AE_INFO, status, "Failed get_devices"));
 
-               if (status) {
-                       printk(KERN_ALERT "Failed get_devices %d\n", status);
-               }
-//        status = acpi_os_create_semaphore(1, 1, &tmp_handle);
+       /*
+       status = acpi_os_create_semaphore(1, 1, &tmp_handle);
 
-               if (status) {
-                       printk(KERN_ALERT "Failed os_create_semaphore %d\n",
-                              status);
-               } else {
-                       printk(KERN_ALERT
-                              "os_create_semaphore OK, no deleteing %d\n",
-                              status);
-//            acpi_os_delete_semaphore(tmp_handle);
+       if (status) {
+               pr_alert("Failed os_create_semaphore %d\n",
+                      status);
+       } else {
+               pr_alert("os_create_semaphore OK, no deleteing %d\n",
+                        status);
 
-               }
+       acpi_os_delete_semaphore(tmp_handle);
+
+       }
+       */
 
 #if 0
                printk(KERN_ALERT "TEST -- acpi_get_system_info \n");
@@ -499,12 +555,8 @@ static int ltpdev_ioctl(struct block_device *bdev, fmode_t 
mode, unsigned cmd,
                }
 #endif
 
-               printk(KERN_ALERT
-                      "-- IOCTL ACPI tests Complete -- Iteration:%d\n",
-                      test_iteration);
-
-               break;
-       }
+       pr_alert("-- IOCTL ACPI tests Complete -- Iteration:%d\n",
+                test_iteration);
 
        return 0;
 }
@@ -617,42 +669,38 @@ static acpi_status acpi_ec_space_setup(acpi_handle 
region_handle,
 
 int init_module(void)
 {
-       int result;
-
-       printk(KERN_ALERT "ltpdev_init_module \n");
-
-       result = register_blkdev(ltp_acpi_major, LTP_ACPI_DEV_NAME);
+       pr_alert("ltpdev_init_module\n");
 
-       printk(KERN_ALERT "LTP ACPI: register_blkdev result=%d major %d\n",
-              result, ltp_acpi_major);
+       LTPMAJOR = register_blkdev(0, LTP_ACPI_DEV_NAME);
 
-       if (result < 0) {
-               printk(KERN_ALERT "LTP ACPI: can't get major %d\n",
-                      ltp_acpi_major);
-               return result;
+       if (LTPMAJOR < 0) {
+               pr_alert("LTP ACPI: can't get major %d\n",
+                      LTPMAJOR);
+               return LTPMAJOR;
        }
-//    if (ltp_acpi_major == 0)
-//      ltp_acpi_major = result; /* dynamic */
+
+       pr_alert("register_blkdev major %d\n",
+                LTPMAJOR);
 
        gd_ptr = kmalloc(sizeof(struct gendisk *), GFP_KERNEL);
 
        if (!gd_ptr) {
-               printk(KERN_ALERT "ERROR getting memory !!!\n");
+               pr_alert("ERROR getting memory !!!\n");
                return 0;
        }
 
        gd_ptr = alloc_disk(1);
 
-       printk(KERN_ALERT "gd_ptr after alloc = %p \n", gd_ptr);
+       pr_alert("gd_ptr after alloc = %p \n", gd_ptr);
 
-       gd_ptr->major = ltp_acpi_major;
+       gd_ptr->major = LTPMAJOR;
        gd_ptr->first_minor = 0;
        gd_ptr->fops = &blkops;
 //    gd_ptr->minor_shift = MINOR_SHIFT_BITS;
        gd_ptr->driverfs_dev = NULL;
 //    gd_ptr->disk_de = NULL;
        gd_ptr->flags = genhd_flags;
-
+       gd_ptr->queue = blk_alloc_queue(GFP_KERNEL);
        sprintf(gd_ptr->disk_name, LTP_ACPI_DEV_NAME);
 
        add_disk(gd_ptr);
@@ -662,13 +710,13 @@ int init_module(void)
 
 void cleanup_module(void)
 {
+       pr_alert("Exiting module and cleaning up \n");
 
-       printk(KERN_ALERT "Exiting module and cleaning up \n");
-
-       put_disk(gd_ptr);
+       blk_cleanup_queue(gd_ptr->queue);
 
        del_gendisk(gd_ptr);
 
-       unregister_blkdev(ltp_acpi_major, LTP_ACPI_DEV_NAME);
+       put_disk(gd_ptr);
 
+       unregister_blkdev(LTPMAJOR, LTP_ACPI_DEV_NAME);
 }
diff --git a/testcases/kernel/device-drivers/acpi/LtpAcpiMain.c 
b/testcases/kernel/device-drivers/acpi/LtpAcpiMain.c
index c3e9c91..ed90784 100644
--- a/testcases/kernel/device-drivers/acpi/LtpAcpiMain.c
+++ b/testcases/kernel/device-drivers/acpi/LtpAcpiMain.c
@@ -42,6 +42,10 @@
 
 #include "LtpAcpi.h"
 
+#include "test.h"
+
+char *TCID = "LTP_ACPI";
+
 int LTP_acpi_open_block_device(void);
 
 int ltp_block_dev_handle = 0;  /* handle to LTP Test block device */
@@ -66,7 +70,6 @@ int main(int argc, char **argv)
                             LTP_ACPI_DEVICE_NAME, ltp_block_dev_handle, errno);
                } else {
                        rc = ioctl(ltp_block_dev_handle, LTPDEV_CMD, &cmd);
-
                        printf("return from ioctl %d \n", rc);
                }
 
@@ -81,7 +84,7 @@ int LTP_acpi_open_block_device()
 {
        dev_t devt;
        struct stat statbuf;
-       int rc;
+       int rc = -1;
 
        if (ltp_block_dev_handle == 0) {
 
@@ -90,6 +93,11 @@ int LTP_acpi_open_block_device()
                 * If devfs is running and mounted on /dev, these checks will 
all pass,
                 * so a new node will not be created.
                 */
+
+               SAFE_FILE_SCANF(NULL, "/sys/devices/virtual/block/"
+                       LTP_ACPI_DEV_NAME"/dev",
+                       "%d:0", &LTPMAJOR);
+
                devt = makedev(LTPMAJOR, 0);
 
                rc = stat(LTP_ACPI_DEV_NODE_PATH, &statbuf);
diff --git a/testcases/kernel/device-drivers/acpi/Makefile 
b/testcases/kernel/device-drivers/acpi/Makefile
index afec680..c73589d 100644
--- a/testcases/kernel/device-drivers/acpi/Makefile
+++ b/testcases/kernel/device-drivers/acpi/Makefile
@@ -1,34 +1,42 @@
+# Copyright (c) 2013 Oracle and/or its affiliates. All Rights Reserved.
 #
-# Makefile for GCOV profiling kernel module
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; either version 2 of
+# the License, or (at your option) any later version.
 #
-#  1 Mar 2009 Márton Németh <[email protected]>
-#   - Updated for Linux kernel 2.6.28
+# This program is distributed in the hope that it would be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
 #
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write the Free Software Foundation,
+# Inc.,  51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 
-#KERNELDIR := /usr/src/linux-2.5.64-gcov
-EXTRA_CFLAGS := -Wall -g -W -Wno-unused-parameter
+MODULE_NAME    = LtpAcpiCmds
 
 ifneq ($(KERNELRELEASE),)
 
-obj-m  := LtpAcpiCmds.o
-obj-p   := Test
+obj-m          := $(MODULE_NAME).o
+
 else
-KDIR   := /lib/modules/$(shell uname -r)/build
-PWD    := $(shell pwd)
 
-modules:
-       $(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules
-       ${CC}  $(CFLAGS) -o LtpAcpiMain  LtpAcpiMain.c
+top_srcdir     ?= ../../../..
+include $(top_srcdir)/include/mk/testcases.mk
 
-clean:
-       $(MAKE) -C $(KDIR) SUBDIRS=$(PWD) clean
-       rm -f modules.order
-       rm -f LtpAcpiMain
+MAKE_TARGETS   := $(MODULE_NAME).ko LtpAcpiMain
 
-help:
-       $(MAKE) -C $(KDIR) SUBDIRS=$(PWD) help
+# Ignoring the exit status of commands is done to be forward compatible with
+# kernel internal API changes. The user-space test will return TCONF, if it
+# doesn't find the module (i.e. it wasn't built either due to kernel-devel
+# missing or module build failure).
+$(MODULE_NAME).ko: $(MODULE_NAME).c
+       -$(MAKE) -C $(LINUX_DIR) M=$(abs_srcdir)
+       -mv $(MODULE_NAME).ko $(MODULE_NAME).ko~
+       -$(MAKE) -C $(LINUX_DIR) M=$(abs_srcdir) clean
+       -mv $(MODULE_NAME).ko~ $(MODULE_NAME).ko
 
-modules_install:
-       $(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules_install
+include $(top_srcdir)/include/mk/generic_leaf_target.mk
 
 endif
-- 
1.7.1


------------------------------------------------------------------------------
Learn the latest--Visual Studio 2012, SharePoint 2013, SQL 2012, more!
Discover the easy way to master current and previous Microsoft technologies
and advance your career. Get an incredible 1,500+ hours of step-by-step
tutorial videos with LearnDevNow. Subscribe today and save!
http://pubads.g.doubleclick.net/gampad/clk?id=58040911&iu=/4140/ostg.clktrk
_______________________________________________
Ltp-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list

Reply via email to